Merge "Notify System UI about taskbar state" into sc-v2-dev
This commit is contained in:
commit
6224eaea29
|
@ -37,6 +37,7 @@ import com.android.quickstep.AnimatedFloat;
|
|||
import com.android.quickstep.RecentsAnimationCallbacks;
|
||||
import com.android.quickstep.RecentsAnimationCallbacks.RecentsAnimationListener;
|
||||
import com.android.quickstep.RecentsAnimationController;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.systemui.shared.recents.model.ThumbnailData;
|
||||
|
||||
|
||||
|
@ -152,6 +153,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
|||
TaskbarStashController stashController = mControllers.taskbarStashController;
|
||||
stashController.animateToIsStashed(stashController.isStashedInApp(), duration);
|
||||
}
|
||||
SystemUiProxy.INSTANCE.get(mContext).notifyTaskbarStatus(!isResumed,
|
||||
mControllers.taskbarStashController.isStashedInApp());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -36,6 +36,7 @@ import com.android.launcher3.util.DisplayController;
|
|||
import com.android.launcher3.util.DisplayController.Info;
|
||||
import com.android.quickstep.SysUINavigationMode;
|
||||
import com.android.quickstep.SysUINavigationMode.Mode;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
import com.android.quickstep.TouchInteractionService;
|
||||
|
||||
/**
|
||||
|
@ -127,16 +128,19 @@ public class TaskbarManager implements DisplayController.DisplayInfoChangeListen
|
|||
|
||||
private void recreateTaskbar() {
|
||||
destroyExistingTaskbar();
|
||||
if (!FeatureFlags.ENABLE_TASKBAR.get()) {
|
||||
return;
|
||||
}
|
||||
if (!mUserUnlocked) {
|
||||
return;
|
||||
}
|
||||
DeviceProfile dp = LauncherAppState.getIDP(mContext).getDeviceProfile(mContext);
|
||||
if (!dp.isTaskbarPresent) {
|
||||
|
||||
DeviceProfile dp =
|
||||
mUserUnlocked ? LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null;
|
||||
|
||||
boolean isTaskBarEnabled =
|
||||
FeatureFlags.ENABLE_TASKBAR.get() && dp != null && dp.isTaskbarPresent;
|
||||
|
||||
if (!isTaskBarEnabled) {
|
||||
SystemUiProxy.INSTANCE.get(mContext)
|
||||
.notifyTaskbarStatus(/* visible */ false, /* stashed */ false);
|
||||
return;
|
||||
}
|
||||
|
||||
mTaskbarActivityContext = new TaskbarActivityContext(
|
||||
mContext, dp.copy(mContext), mNavButtonController);
|
||||
mTaskbarActivityContext.init();
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.android.launcher3.R;
|
|||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.util.MultiValueAlpha.AlphaProperty;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
|
||||
/**
|
||||
* Coordinates between controllers such as TaskbarViewController and StashedHandleViewController to
|
||||
|
@ -104,6 +105,9 @@ public class TaskbarStashController {
|
|||
|
||||
mIsStashedInApp = supportsStashing()
|
||||
&& mPrefs.getBoolean(SHARED_PREFS_STASHED_KEY, DEFAULT_STASHED_PREF);
|
||||
|
||||
SystemUiProxy.INSTANCE.get(mActivity)
|
||||
.notifyTaskbarStatus(/* visible */ true, /* stashed */ mIsStashedInApp);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -166,6 +170,8 @@ public class TaskbarStashController {
|
|||
mPrefs.edit().putBoolean(SHARED_PREFS_STASHED_KEY, mIsStashedInApp).apply();
|
||||
boolean isStashed = mIsStashedInApp;
|
||||
if (wasStashed != isStashed) {
|
||||
SystemUiProxy.INSTANCE.get(mActivity)
|
||||
.notifyTaskbarStatus(/* visible */ true, /* stashed */ isStashed);
|
||||
createAnimToIsStashed(isStashed, TASKBAR_STASH_DURATION).start();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -399,6 +399,18 @@ public class SystemUiProxy implements ISystemUiProxy,
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyTaskbarStatus(boolean visible, boolean stashed) {
|
||||
if (mSystemUiProxy != null) {
|
||||
try {
|
||||
mSystemUiProxy.notifyTaskbarStatus(visible, stashed);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Failed call notifyTaskbarStatus with arg: " +
|
||||
visible + ", " + stashed, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleImageBundleAsScreenshot(Bundle screenImageBundle, Rect locationInScreen,
|
||||
Insets visibleInsets, Task.TaskKey task) {
|
||||
|
|
|
@ -2495,14 +2495,11 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
resetTaskVisuals();
|
||||
|
||||
int pageToSnapTo = mCurrentPage;
|
||||
if ((dismissedIndex < pageToSnapTo && !showAsGrid)
|
||||
|| pageToSnapTo == taskCount - 1) {
|
||||
pageToSnapTo -= 1;
|
||||
if (finalNextFocusedTaskView != null) {
|
||||
pageToSnapTo = indexOfChild(finalNextFocusedTaskView);
|
||||
}
|
||||
if (showAsGrid) {
|
||||
int primaryScroll = mOrientationHandler.getPrimaryScroll(RecentsView.this);
|
||||
int currentPageScroll = getScrollForPage(pageToSnapTo);
|
||||
mCurrentPageScrollDiff = primaryScroll - currentPageScroll;
|
||||
if (dismissedIndex < pageToSnapTo || pageToSnapTo == (taskCount - 1)) {
|
||||
pageToSnapTo -= 1;
|
||||
}
|
||||
removeViewInLayout(dismissedTaskView);
|
||||
mTopRowIdSet.remove(dismissedTaskId);
|
||||
|
@ -2516,11 +2513,12 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
|
|||
mFocusedTaskId = finalNextFocusedTaskView.getTaskId();
|
||||
mTopRowIdSet.remove(mFocusedTaskId);
|
||||
finalNextFocusedTaskView.animateIconScaleAndDimIntoView();
|
||||
setCurrentPage(pageToSnapTo);
|
||||
}
|
||||
updateTaskSize(true);
|
||||
// Update scroll and snap to page.
|
||||
updateScrollSynchronously();
|
||||
setCurrentPage(pageToSnapTo);
|
||||
snapToPageImmediately(pageToSnapTo);
|
||||
dispatchScrollChanged();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -104,10 +104,6 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
protected int mCurrentPage;
|
||||
// Difference between current scroll position and mCurrentPage's page scroll. Used to maintain
|
||||
// relative scroll position unchanged in updateCurrentPageScroll. Cleared when snapping to a
|
||||
// page.
|
||||
protected int mCurrentPageScrollDiff;
|
||||
|
||||
@ViewDebug.ExportedProperty(category = "launcher")
|
||||
protected int mNextPage = INVALID_PAGE;
|
||||
|
@ -251,7 +247,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
// If the current page is invalid, just reset the scroll position to zero
|
||||
int newPosition = 0;
|
||||
if (0 <= mCurrentPage && mCurrentPage < getPageCount()) {
|
||||
newPosition = getScrollForPage(mCurrentPage) + mCurrentPageScrollDiff;
|
||||
newPosition = getScrollForPage(mCurrentPage);
|
||||
}
|
||||
mOrientationHandler.set(this, VIEW_SCROLL_TO, newPosition);
|
||||
mScroller.startScroll(mScroller.getCurrX(), 0, newPosition - mScroller.getCurrX(), 0);
|
||||
|
@ -456,7 +452,6 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
|||
* to provide custom behavior during animation.
|
||||
*/
|
||||
protected void onPageEndTransition() {
|
||||
mCurrentPageScrollDiff = 0;
|
||||
AccessibilityManagerCompat.sendScrollFinishedEventToTest(getContext());
|
||||
AccessibilityManagerCompat.sendCustomAccessibilityEvent(getPageAt(mCurrentPage),
|
||||
AccessibilityEvent.TYPE_VIEW_FOCUSED, null);
|
||||
|
|
Loading…
Reference in New Issue