mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-01 00:06:47 +00:00
Merge "Restore proper nav buttons translation when taskbar is recreated" into tm-qpr-dev
This commit is contained in:
@@ -66,9 +66,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
public static final int WIDGETS_PAGE_PROGRESS_INDEX = 2;
|
||||
public static final int SYSUI_SURFACE_PROGRESS_INDEX = 3;
|
||||
|
||||
private static final int DISPLAY_PROGRESS_COUNT = 4;
|
||||
public static final int DISPLAY_PROGRESS_COUNT = 4;
|
||||
|
||||
private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat();
|
||||
private final AnimatedFloat mTaskbarInAppDisplayProgress = new AnimatedFloat(
|
||||
this::onInAppDisplayProgressChanged);
|
||||
private final MultiPropertyFactory<AnimatedFloat> mTaskbarInAppDisplayProgressMultiProp =
|
||||
new MultiPropertyFactory<>(mTaskbarInAppDisplayProgress,
|
||||
AnimatedFloat.VALUE, DISPLAY_PROGRESS_COUNT, Float::max);
|
||||
@@ -105,6 +106,12 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
mTaskbarLauncherStateController.updateStateForSysuiFlags(
|
||||
mControllers.getSharedState().sysuiStateFlags, true /* fromInit */);
|
||||
mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener);
|
||||
|
||||
// Restore the in-app display progress from before Taskbar was recreated.
|
||||
float[] prevProgresses = mControllers.getSharedState().inAppDisplayProgressMultiPropValues;
|
||||
for (int i = 0; i < prevProgresses.length; i++) {
|
||||
mTaskbarInAppDisplayProgressMultiProp.get(i).setValue(prevProgresses[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -118,6 +125,18 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
updateTaskTransitionSpec(true);
|
||||
}
|
||||
|
||||
private void onInAppDisplayProgressChanged() {
|
||||
if (mControllers != null) {
|
||||
// Update our shared state so we can restore it if taskbar gets recreated.
|
||||
for (int i = 0; i < DISPLAY_PROGRESS_COUNT; i++) {
|
||||
mControllers.getSharedState().inAppDisplayProgressMultiPropValues[i] =
|
||||
mTaskbarInAppDisplayProgressMultiProp.get(i).getValue();
|
||||
}
|
||||
// Ensure nav buttons react to our latest state if necessary.
|
||||
mControllers.navbarButtonsViewController.updateNavButtonTranslationY();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isTaskbarTouchable() {
|
||||
return !(mTaskbarLauncherStateController.isAnimatingToLauncher()
|
||||
@@ -360,9 +379,10 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
public void dumpLogs(String prefix, PrintWriter pw) {
|
||||
super.dumpLogs(prefix, pw);
|
||||
|
||||
pw.println(String.format("%s\tTaskbar in-app display progress:", prefix));
|
||||
pw.println(String.format("%s\tTaskbar in-app display progress: %.2f", prefix,
|
||||
mTaskbarInAppDisplayProgress.value));
|
||||
mTaskbarInAppDisplayProgressMultiProp.dump(
|
||||
prefix + "\t",
|
||||
prefix + "\t\t",
|
||||
pw,
|
||||
"mTaskbarInAppDisplayProgressMultiProp",
|
||||
"MINUS_ONE_PAGE_PROGRESS_INDEX",
|
||||
|
||||
@@ -159,6 +159,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
this::updateNavButtonTranslationY);
|
||||
private final AnimatedFloat mTaskbarNavButtonTranslationYForIme = new AnimatedFloat(
|
||||
this::updateNavButtonTranslationY);
|
||||
private float mLastSetNavButtonTranslationY;
|
||||
// Used for System UI state updates that should translate the nav button for in-app display.
|
||||
private final AnimatedFloat mNavButtonInAppDisplayProgressForSysui = new AnimatedFloat(
|
||||
this::updateNavButtonInAppDisplayProgressForSysui);
|
||||
@@ -606,7 +607,10 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
}
|
||||
}
|
||||
|
||||
private void updateNavButtonTranslationY() {
|
||||
/**
|
||||
* Sets the translationY of the nav buttons based on the current device state.
|
||||
*/
|
||||
public void updateNavButtonTranslationY() {
|
||||
if (isPhoneButtonNavMode(mContext)) {
|
||||
return;
|
||||
}
|
||||
@@ -618,9 +622,10 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
&& ((LauncherTaskbarUIController) uiController).shouldUseInAppLayout())
|
||||
? mTaskbarNavButtonTranslationYForInAppDisplay.value : 0;
|
||||
|
||||
mNavButtonsView.setTranslationY(normalTranslationY
|
||||
mLastSetNavButtonTranslationY = normalTranslationY
|
||||
+ imeAdjustmentTranslationY
|
||||
+ inAppDisplayAdjustmentTranslationY);
|
||||
+ inAppDisplayAdjustmentTranslationY;
|
||||
mNavButtonsView.setTranslationY(mLastSetNavButtonTranslationY);
|
||||
}
|
||||
|
||||
private void updateNavButtonColor() {
|
||||
@@ -924,6 +929,13 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
pw.println(prefix + "\tmFloatingRotationButtonBounds=" + mFloatingRotationButtonBounds);
|
||||
pw.println(prefix + "\tmSysuiStateFlags=" + QuickStepContract.getSystemUiStateString(
|
||||
mSysuiStateFlags));
|
||||
pw.println(prefix + "\tLast set nav button translationY=" + mLastSetNavButtonTranslationY);
|
||||
pw.println(prefix + "\t\tmTaskbarNavButtonTranslationY="
|
||||
+ mTaskbarNavButtonTranslationY.value);
|
||||
pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForInAppDisplay="
|
||||
+ mTaskbarNavButtonTranslationYForInAppDisplay.value);
|
||||
pw.println(prefix + "\t\tmTaskbarNavButtonTranslationYForIme="
|
||||
+ mTaskbarNavButtonTranslationYForIme.value);
|
||||
}
|
||||
|
||||
private static String getStateString(int flags) {
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static com.android.launcher3.taskbar.LauncherTaskbarUIController.DISPLAY_PROGRESS_COUNT;
|
||||
|
||||
/**
|
||||
* State shared across different taskbar instance
|
||||
*/
|
||||
@@ -38,4 +40,7 @@ public class TaskbarSharedState {
|
||||
public boolean setupUIVisible = false;
|
||||
|
||||
public boolean allAppsVisible = false;
|
||||
|
||||
// LauncherTaskbarUIController#mTaskbarInAppDisplayProgressMultiProp
|
||||
public float[] inAppDisplayProgressMultiPropValues = new float[DISPLAY_PROGRESS_COUNT];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user