Loading quickstep/res/layout/taskbar.xml +2 −2 Original line number Original line Diff line number Diff line Loading @@ -14,7 +14,7 @@ limitations under the License. limitations under the License. --> --> <com.android.launcher3.taskbar.TaskbarContainerView <com.android.launcher3.taskbar.TaskbarDragLayer xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/taskbar_container" android:id="@+id/taskbar_container" android:layout_width="wrap_content" android:layout_width="wrap_content" Loading Loading @@ -52,4 +52,4 @@ android:layout_height="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> android:visibility="gone"/> </com.android.launcher3.taskbar.TaskbarContainerView> </com.android.launcher3.taskbar.TaskbarDragLayer> No newline at end of file No newline at end of file quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { private final TaskbarHotseatController mHotseatController; private final TaskbarHotseatController mHotseatController; private final TaskbarActivityContext mContext; private final TaskbarActivityContext mContext; final TaskbarContainerView mTaskbarContainerView; final TaskbarDragLayer mTaskbarDragLayer; final TaskbarView mTaskbarView; final TaskbarView mTaskbarView; private @Nullable Animator mAnimator; private @Nullable Animator mAnimator; Loading @@ -55,8 +55,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public LauncherTaskbarUIController( public LauncherTaskbarUIController( BaseQuickstepLauncher launcher, TaskbarActivityContext context) { BaseQuickstepLauncher launcher, TaskbarActivityContext context) { mContext = context; mContext = context; mTaskbarContainerView = context.getDragLayer(); mTaskbarDragLayer = context.getDragLayer(); mTaskbarView = mTaskbarContainerView.findViewById(R.id.taskbar_view); mTaskbarView = mTaskbarDragLayer.findViewById(R.id.taskbar_view); mLauncher = launcher; mLauncher = launcher; mTaskbarStateHandler = mLauncher.getTaskbarStateHandler(); mTaskbarStateHandler = mLauncher.getTaskbarStateHandler(); Loading Loading @@ -99,7 +99,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { return new TaskbarAnimationControllerCallbacks() { return new TaskbarAnimationControllerCallbacks() { @Override @Override public void updateTaskbarBackgroundAlpha(float alpha) { public void updateTaskbarBackgroundAlpha(float alpha) { mTaskbarContainerView.setTaskbarBackgroundAlpha(alpha); mTaskbarDragLayer.setTaskbarBackgroundAlpha(alpha); } } @Override @Override Loading @@ -109,7 +109,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { @Override @Override public void updateImeBarVisibilityAlpha(float alpha) { public void updateImeBarVisibilityAlpha(float alpha) { mTaskbarContainerView.updateImeBarVisibilityAlpha(alpha); mTaskbarDragLayer.updateImeBarVisibilityAlpha(alpha); } } @Override @Override Loading Loading @@ -202,7 +202,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } } @Override @Override protected void onImeVisible(TaskbarContainerView containerView, boolean isVisible) { protected void onImeVisible(TaskbarDragLayer containerView, boolean isVisible) { mTaskbarAnimationController.animateToVisibilityForIme(isVisible ? 0 : 1); mTaskbarAnimationController.animateToVisibilityForIme(isVisible ? 0 : 1); } } Loading quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +24 −11 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private final DeviceProfile mDeviceProfile; private final DeviceProfile mDeviceProfile; private final LayoutInflater mLayoutInflater; private final LayoutInflater mLayoutInflater; private final TaskbarContainerView mTaskbarContainerView; private final TaskbarDragLayer mDragLayer; private final TaskbarIconController mIconController; private final TaskbarIconController mIconController; private final MyDragController mDragController; private final MyDragController mDragController; Loading Loading @@ -123,9 +123,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mDeviceProfile.updateIconSize(iconScale, getResources()); mDeviceProfile.updateIconSize(iconScale, getResources()); mLayoutInflater = LayoutInflater.from(this).cloneInContext(this); mLayoutInflater = LayoutInflater.from(this).cloneInContext(this); mTaskbarContainerView = (TaskbarContainerView) mLayoutInflater mDragLayer = (TaskbarDragLayer) mLayoutInflater .inflate(R.layout.taskbar, null, false); .inflate(R.layout.taskbar, null, false); mIconController = new TaskbarIconController(this, mTaskbarContainerView); mIconController = new TaskbarIconController(this, mDragLayer); mDragController = new MyDragController(this); mDragController = new MyDragController(this); Display display = windowContext.getDisplay(); Display display = windowContext.getDisplay(); Loading Loading @@ -157,7 +157,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ ); ); mIconController.init(mOnTaskbarIconClickListener, mOnTaskbarIconLongClickListener); mIconController.init(mOnTaskbarIconClickListener, mOnTaskbarIconLongClickListener); mWindowManager.addView(mTaskbarContainerView, mWindowLayoutParams); mWindowManager.addView(mDragLayer, mWindowLayoutParams); } } /** /** Loading @@ -168,7 +168,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ return; return; } } mWindowLayoutParams.height = height; mWindowLayoutParams.height = height; mWindowManager.updateViewLayout(mTaskbarContainerView, mWindowLayoutParams); mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams); } } public boolean canShowNavButtons() { public boolean canShowNavButtons() { Loading @@ -181,8 +181,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ } } @Override @Override public TaskbarContainerView getDragLayer() { public TaskbarDragLayer getDragLayer() { return mTaskbarContainerView; return mDragLayer; } } @Override @Override Loading @@ -192,7 +192,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ @Override @Override public Rect getFolderBoundingBox() { public Rect getFolderBoundingBox() { return mTaskbarContainerView.getFolderBoundingBox(); return mDragLayer.getFolderBoundingBox(); } } @Override @Override Loading @@ -216,15 +216,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ public void onDestroy() { public void onDestroy() { setUIController(TaskbarUIController.DEFAULT); setUIController(TaskbarUIController.DEFAULT); mIconController.onDestroy(); mIconController.onDestroy(); mWindowManager.removeViewImmediate(mTaskbarContainerView); mWindowManager.removeViewImmediate(mDragLayer); } } void onNavigationButtonClick(@TaskbarButton int buttonType) { void onNavigationButtonClick(@TaskbarButton int buttonType) { mNavButtonController.onButtonClick(buttonType); mNavButtonController.onButtonClick(buttonType); } } public TaskbarIconController getIconController() { /** return mIconController; * Should be called when the IME visibility changes, so we can hide/show Taskbar accordingly. */ public void setImeIsVisible(boolean isImeVisible) { mIconController.setImeIsVisible(isImeVisible); } /** * When in 3 button nav, the above doesn't get called since we prevent sysui nav bar from * instantiating at all, which is what's responsible for sending sysui state flags over. * * @param vis IME visibility flag */ public void updateImeStatus(int displayId, int vis, boolean showImeSwitcher) { mIconController.updateImeStatus(displayId, vis, showImeSwitcher); } } /** /** Loading quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java→quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -35,7 +35,7 @@ import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInset /** /** * Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder. * Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder. */ */ public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> { public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { private final int mFolderMargin; private final int mFolderMargin; private final Paint mTaskbarBackgroundPaint; private final Paint mTaskbarBackgroundPaint; Loading @@ -45,20 +45,20 @@ public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; public TaskbarContainerView(@NonNull Context context) { public TaskbarDragLayer(@NonNull Context context) { this(context, null); this(context, null); } } public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs) { public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); this(context, attrs, 0); } } public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs, public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { int defStyleAttr) { this(context, attrs, defStyleAttr, 0); this(context, attrs, defStyleAttr, 0); } } public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs, public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { int defStyleAttr, int defStyleRes) { super(context, attrs, 1 /* alphaChannelCount */); super(context, attrs, 1 /* alphaChannelCount */); mFolderMargin = getResources().getDimensionPixelSize(R.dimen.taskbar_folder_margin); mFolderMargin = getResources().getDimensionPixelSize(R.dimen.taskbar_folder_margin); Loading Loading @@ -118,7 +118,7 @@ public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> public void onViewRemoved(View child) { public void onViewRemoved(View child) { super.onViewRemoved(child); super.onViewRemoved(child); if (mControllerCallbacks != null) { if (mControllerCallbacks != null) { mControllerCallbacks.onContainerViewRemoved(); mControllerCallbacks.onDragLayerViewRemoved(); } } } } Loading quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java +17 −17 Original line number Original line Diff line number Diff line Loading @@ -41,7 +41,7 @@ public class TaskbarIconController { private final Rect mTempRect = new Rect(); private final Rect mTempRect = new Rect(); private final TaskbarActivityContext mActivity; private final TaskbarActivityContext mActivity; private final TaskbarContainerView mContainerView; private final TaskbarDragLayer mDragLayer; private final TaskbarView mTaskbarView; private final TaskbarView mTaskbarView; private final ImeBarView mImeBarView; private final ImeBarView mImeBarView; Loading @@ -49,15 +49,15 @@ public class TaskbarIconController { @NonNull @NonNull private TaskbarUIController mUIController = TaskbarUIController.DEFAULT; private TaskbarUIController mUIController = TaskbarUIController.DEFAULT; TaskbarIconController(TaskbarActivityContext activity, TaskbarContainerView containerView) { TaskbarIconController(TaskbarActivityContext activity, TaskbarDragLayer dragLayer) { mActivity = activity; mActivity = activity; mContainerView = containerView; mDragLayer = dragLayer; mTaskbarView = mContainerView.findViewById(R.id.taskbar_view); mTaskbarView = mDragLayer.findViewById(R.id.taskbar_view); mImeBarView = mContainerView.findViewById(R.id.ime_bar_view); mImeBarView = mDragLayer.findViewById(R.id.ime_bar_view); } } public void init(OnClickListener clickListener, OnLongClickListener longClickListener) { public void init(OnClickListener clickListener, OnLongClickListener longClickListener) { mContainerView.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) -> mDragLayer.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) -> mUIController.alignRealHotseatWithTaskbar()); mUIController.alignRealHotseatWithTaskbar()); ButtonProvider buttonProvider = new ButtonProvider(mActivity); ButtonProvider buttonProvider = new ButtonProvider(mActivity); Loading @@ -65,11 +65,11 @@ public class TaskbarIconController { mTaskbarView.construct(clickListener, longClickListener, buttonProvider); mTaskbarView.construct(clickListener, longClickListener, buttonProvider); mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize; mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize; mContainerView.init(new Callbacks(), mTaskbarView); mDragLayer.init(new Callbacks(), mTaskbarView); } } public void onDestroy() { public void onDestroy() { mContainerView.onDestroy(); mDragLayer.onDestroy(); } } public void setUIController(@NonNull TaskbarUIController uiController) { public void setUIController(@NonNull TaskbarUIController uiController) { Loading @@ -96,11 +96,11 @@ public class TaskbarIconController { */ */ public void setImeIsVisible(boolean isImeVisible) { public void setImeIsVisible(boolean isImeVisible) { mTaskbarView.setTouchesEnabled(!isImeVisible); mTaskbarView.setTouchesEnabled(!isImeVisible); mUIController.onImeVisible(mContainerView, isImeVisible); mUIController.onImeVisible(mDragLayer, isImeVisible); } } /** /** * Callbacks for {@link TaskbarContainerView} to interact with the icon controller * Callbacks for {@link TaskbarDragLayer} to interact with the icon controller */ */ public class Callbacks { public class Callbacks { Loading @@ -109,7 +109,7 @@ public class TaskbarIconController { */ */ public void updateInsetsTouchability(InsetsInfo insetsInfo) { public void updateInsetsTouchability(InsetsInfo insetsInfo) { insetsInfo.touchableRegion.setEmpty(); insetsInfo.touchableRegion.setEmpty(); if (mContainerView.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { if (mDragLayer.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { // Let touches pass through us. // Let touches pass through us. insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION); insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION); } else if (mImeBarView.getVisibility() == VISIBLE) { } else if (mImeBarView.getVisibility() == VISIBLE) { Loading @@ -122,7 +122,7 @@ public class TaskbarIconController { insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME); insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME); } else { } else { if (mTaskbarView.mSystemButtonContainer.getVisibility() == VISIBLE) { if (mTaskbarView.mSystemButtonContainer.getVisibility() == VISIBLE) { mContainerView.getDescendantRectRelativeToSelf( mDragLayer.getDescendantRectRelativeToSelf( mTaskbarView.mSystemButtonContainer, mTempRect); mTaskbarView.mSystemButtonContainer, mTempRect); insetsInfo.touchableRegion.set(mTempRect); insetsInfo.touchableRegion.set(mTempRect); } } Loading @@ -135,15 +135,15 @@ public class TaskbarIconController { // mTaskbarView is, since its position never changes and insets rather than overlays. // mTaskbarView is, since its position never changes and insets rather than overlays. insetsInfo.contentInsets.left = mTaskbarView.getLeft(); insetsInfo.contentInsets.left = mTaskbarView.getLeft(); insetsInfo.contentInsets.top = mTaskbarView.getTop(); insetsInfo.contentInsets.top = mTaskbarView.getTop(); insetsInfo.contentInsets.right = mContainerView.getWidth() - mTaskbarView.getRight(); insetsInfo.contentInsets.right = mDragLayer.getWidth() - mTaskbarView.getRight(); insetsInfo.contentInsets.bottom = mContainerView.getHeight() - mTaskbarView.getBottom(); insetsInfo.contentInsets.bottom = mDragLayer.getHeight() - mTaskbarView.getBottom(); } } public void onContainerViewRemoved() { public void onDragLayerViewRemoved() { int count = mContainerView.getChildCount(); int count = mDragLayer.getChildCount(); // Ensure no other children present (like Folders, etc) // Ensure no other children present (like Folders, etc) for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) { View v = mContainerView.getChildAt(i); View v = mDragLayer.getChildAt(i); if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))) { if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))) { return; return; } } Loading Loading
quickstep/res/layout/taskbar.xml +2 −2 Original line number Original line Diff line number Diff line Loading @@ -14,7 +14,7 @@ limitations under the License. limitations under the License. --> --> <com.android.launcher3.taskbar.TaskbarContainerView <com.android.launcher3.taskbar.TaskbarDragLayer xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/taskbar_container" android:id="@+id/taskbar_container" android:layout_width="wrap_content" android:layout_width="wrap_content" Loading Loading @@ -52,4 +52,4 @@ android:layout_height="wrap_content" android:layout_height="wrap_content" android:visibility="gone"/> android:visibility="gone"/> </com.android.launcher3.taskbar.TaskbarContainerView> </com.android.launcher3.taskbar.TaskbarDragLayer> No newline at end of file No newline at end of file
quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -46,7 +46,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { private final TaskbarHotseatController mHotseatController; private final TaskbarHotseatController mHotseatController; private final TaskbarActivityContext mContext; private final TaskbarActivityContext mContext; final TaskbarContainerView mTaskbarContainerView; final TaskbarDragLayer mTaskbarDragLayer; final TaskbarView mTaskbarView; final TaskbarView mTaskbarView; private @Nullable Animator mAnimator; private @Nullable Animator mAnimator; Loading @@ -55,8 +55,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { public LauncherTaskbarUIController( public LauncherTaskbarUIController( BaseQuickstepLauncher launcher, TaskbarActivityContext context) { BaseQuickstepLauncher launcher, TaskbarActivityContext context) { mContext = context; mContext = context; mTaskbarContainerView = context.getDragLayer(); mTaskbarDragLayer = context.getDragLayer(); mTaskbarView = mTaskbarContainerView.findViewById(R.id.taskbar_view); mTaskbarView = mTaskbarDragLayer.findViewById(R.id.taskbar_view); mLauncher = launcher; mLauncher = launcher; mTaskbarStateHandler = mLauncher.getTaskbarStateHandler(); mTaskbarStateHandler = mLauncher.getTaskbarStateHandler(); Loading Loading @@ -99,7 +99,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { return new TaskbarAnimationControllerCallbacks() { return new TaskbarAnimationControllerCallbacks() { @Override @Override public void updateTaskbarBackgroundAlpha(float alpha) { public void updateTaskbarBackgroundAlpha(float alpha) { mTaskbarContainerView.setTaskbarBackgroundAlpha(alpha); mTaskbarDragLayer.setTaskbarBackgroundAlpha(alpha); } } @Override @Override Loading @@ -109,7 +109,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { @Override @Override public void updateImeBarVisibilityAlpha(float alpha) { public void updateImeBarVisibilityAlpha(float alpha) { mTaskbarContainerView.updateImeBarVisibilityAlpha(alpha); mTaskbarDragLayer.updateImeBarVisibilityAlpha(alpha); } } @Override @Override Loading Loading @@ -202,7 +202,7 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } } @Override @Override protected void onImeVisible(TaskbarContainerView containerView, boolean isVisible) { protected void onImeVisible(TaskbarDragLayer containerView, boolean isVisible) { mTaskbarAnimationController.animateToVisibilityForIme(isVisible ? 0 : 1); mTaskbarAnimationController.animateToVisibilityForIme(isVisible ? 0 : 1); } } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +24 −11 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ private final DeviceProfile mDeviceProfile; private final DeviceProfile mDeviceProfile; private final LayoutInflater mLayoutInflater; private final LayoutInflater mLayoutInflater; private final TaskbarContainerView mTaskbarContainerView; private final TaskbarDragLayer mDragLayer; private final TaskbarIconController mIconController; private final TaskbarIconController mIconController; private final MyDragController mDragController; private final MyDragController mDragController; Loading Loading @@ -123,9 +123,9 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ mDeviceProfile.updateIconSize(iconScale, getResources()); mDeviceProfile.updateIconSize(iconScale, getResources()); mLayoutInflater = LayoutInflater.from(this).cloneInContext(this); mLayoutInflater = LayoutInflater.from(this).cloneInContext(this); mTaskbarContainerView = (TaskbarContainerView) mLayoutInflater mDragLayer = (TaskbarDragLayer) mLayoutInflater .inflate(R.layout.taskbar, null, false); .inflate(R.layout.taskbar, null, false); mIconController = new TaskbarIconController(this, mTaskbarContainerView); mIconController = new TaskbarIconController(this, mDragLayer); mDragController = new MyDragController(this); mDragController = new MyDragController(this); Display display = windowContext.getDisplay(); Display display = windowContext.getDisplay(); Loading Loading @@ -157,7 +157,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ ); ); mIconController.init(mOnTaskbarIconClickListener, mOnTaskbarIconLongClickListener); mIconController.init(mOnTaskbarIconClickListener, mOnTaskbarIconLongClickListener); mWindowManager.addView(mTaskbarContainerView, mWindowLayoutParams); mWindowManager.addView(mDragLayer, mWindowLayoutParams); } } /** /** Loading @@ -168,7 +168,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ return; return; } } mWindowLayoutParams.height = height; mWindowLayoutParams.height = height; mWindowManager.updateViewLayout(mTaskbarContainerView, mWindowLayoutParams); mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams); } } public boolean canShowNavButtons() { public boolean canShowNavButtons() { Loading @@ -181,8 +181,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ } } @Override @Override public TaskbarContainerView getDragLayer() { public TaskbarDragLayer getDragLayer() { return mTaskbarContainerView; return mDragLayer; } } @Override @Override Loading @@ -192,7 +192,7 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ @Override @Override public Rect getFolderBoundingBox() { public Rect getFolderBoundingBox() { return mTaskbarContainerView.getFolderBoundingBox(); return mDragLayer.getFolderBoundingBox(); } } @Override @Override Loading @@ -216,15 +216,28 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ public void onDestroy() { public void onDestroy() { setUIController(TaskbarUIController.DEFAULT); setUIController(TaskbarUIController.DEFAULT); mIconController.onDestroy(); mIconController.onDestroy(); mWindowManager.removeViewImmediate(mTaskbarContainerView); mWindowManager.removeViewImmediate(mDragLayer); } } void onNavigationButtonClick(@TaskbarButton int buttonType) { void onNavigationButtonClick(@TaskbarButton int buttonType) { mNavButtonController.onButtonClick(buttonType); mNavButtonController.onButtonClick(buttonType); } } public TaskbarIconController getIconController() { /** return mIconController; * Should be called when the IME visibility changes, so we can hide/show Taskbar accordingly. */ public void setImeIsVisible(boolean isImeVisible) { mIconController.setImeIsVisible(isImeVisible); } /** * When in 3 button nav, the above doesn't get called since we prevent sysui nav bar from * instantiating at all, which is what's responsible for sending sysui state flags over. * * @param vis IME visibility flag */ public void updateImeStatus(int displayId, int vis, boolean showImeSwitcher) { mIconController.updateImeStatus(displayId, vis, showImeSwitcher); } } /** /** Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarContainerView.java→quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +6 −6 Original line number Original line Diff line number Diff line Loading @@ -35,7 +35,7 @@ import com.android.systemui.shared.system.ViewTreeObserverWrapper.OnComputeInset /** /** * Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder. * Top-level ViewGroup that hosts the TaskbarView as well as Views created by it such as Folder. */ */ public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> { public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> { private final int mFolderMargin; private final int mFolderMargin; private final Paint mTaskbarBackgroundPaint; private final Paint mTaskbarBackgroundPaint; Loading @@ -45,20 +45,20 @@ public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; private final OnComputeInsetsListener mTaskbarInsetsComputer = this::onComputeTaskbarInsets; public TaskbarContainerView(@NonNull Context context) { public TaskbarDragLayer(@NonNull Context context) { this(context, null); this(context, null); } } public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs) { public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); this(context, attrs, 0); } } public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs, public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { int defStyleAttr) { this(context, attrs, defStyleAttr, 0); this(context, attrs, defStyleAttr, 0); } } public TaskbarContainerView(@NonNull Context context, @Nullable AttributeSet attrs, public TaskbarDragLayer(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { int defStyleAttr, int defStyleRes) { super(context, attrs, 1 /* alphaChannelCount */); super(context, attrs, 1 /* alphaChannelCount */); mFolderMargin = getResources().getDimensionPixelSize(R.dimen.taskbar_folder_margin); mFolderMargin = getResources().getDimensionPixelSize(R.dimen.taskbar_folder_margin); Loading Loading @@ -118,7 +118,7 @@ public class TaskbarContainerView extends BaseDragLayer<TaskbarActivityContext> public void onViewRemoved(View child) { public void onViewRemoved(View child) { super.onViewRemoved(child); super.onViewRemoved(child); if (mControllerCallbacks != null) { if (mControllerCallbacks != null) { mControllerCallbacks.onContainerViewRemoved(); mControllerCallbacks.onDragLayerViewRemoved(); } } } } Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarIconController.java +17 −17 Original line number Original line Diff line number Diff line Loading @@ -41,7 +41,7 @@ public class TaskbarIconController { private final Rect mTempRect = new Rect(); private final Rect mTempRect = new Rect(); private final TaskbarActivityContext mActivity; private final TaskbarActivityContext mActivity; private final TaskbarContainerView mContainerView; private final TaskbarDragLayer mDragLayer; private final TaskbarView mTaskbarView; private final TaskbarView mTaskbarView; private final ImeBarView mImeBarView; private final ImeBarView mImeBarView; Loading @@ -49,15 +49,15 @@ public class TaskbarIconController { @NonNull @NonNull private TaskbarUIController mUIController = TaskbarUIController.DEFAULT; private TaskbarUIController mUIController = TaskbarUIController.DEFAULT; TaskbarIconController(TaskbarActivityContext activity, TaskbarContainerView containerView) { TaskbarIconController(TaskbarActivityContext activity, TaskbarDragLayer dragLayer) { mActivity = activity; mActivity = activity; mContainerView = containerView; mDragLayer = dragLayer; mTaskbarView = mContainerView.findViewById(R.id.taskbar_view); mTaskbarView = mDragLayer.findViewById(R.id.taskbar_view); mImeBarView = mContainerView.findViewById(R.id.ime_bar_view); mImeBarView = mDragLayer.findViewById(R.id.ime_bar_view); } } public void init(OnClickListener clickListener, OnLongClickListener longClickListener) { public void init(OnClickListener clickListener, OnLongClickListener longClickListener) { mContainerView.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) -> mDragLayer.addOnLayoutChangeListener((v, a, b, c, d, e, f, g, h) -> mUIController.alignRealHotseatWithTaskbar()); mUIController.alignRealHotseatWithTaskbar()); ButtonProvider buttonProvider = new ButtonProvider(mActivity); ButtonProvider buttonProvider = new ButtonProvider(mActivity); Loading @@ -65,11 +65,11 @@ public class TaskbarIconController { mTaskbarView.construct(clickListener, longClickListener, buttonProvider); mTaskbarView.construct(clickListener, longClickListener, buttonProvider); mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize; mTaskbarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarSize; mContainerView.init(new Callbacks(), mTaskbarView); mDragLayer.init(new Callbacks(), mTaskbarView); } } public void onDestroy() { public void onDestroy() { mContainerView.onDestroy(); mDragLayer.onDestroy(); } } public void setUIController(@NonNull TaskbarUIController uiController) { public void setUIController(@NonNull TaskbarUIController uiController) { Loading @@ -96,11 +96,11 @@ public class TaskbarIconController { */ */ public void setImeIsVisible(boolean isImeVisible) { public void setImeIsVisible(boolean isImeVisible) { mTaskbarView.setTouchesEnabled(!isImeVisible); mTaskbarView.setTouchesEnabled(!isImeVisible); mUIController.onImeVisible(mContainerView, isImeVisible); mUIController.onImeVisible(mDragLayer, isImeVisible); } } /** /** * Callbacks for {@link TaskbarContainerView} to interact with the icon controller * Callbacks for {@link TaskbarDragLayer} to interact with the icon controller */ */ public class Callbacks { public class Callbacks { Loading @@ -109,7 +109,7 @@ public class TaskbarIconController { */ */ public void updateInsetsTouchability(InsetsInfo insetsInfo) { public void updateInsetsTouchability(InsetsInfo insetsInfo) { insetsInfo.touchableRegion.setEmpty(); insetsInfo.touchableRegion.setEmpty(); if (mContainerView.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { if (mDragLayer.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) { // Let touches pass through us. // Let touches pass through us. insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION); insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION); } else if (mImeBarView.getVisibility() == VISIBLE) { } else if (mImeBarView.getVisibility() == VISIBLE) { Loading @@ -122,7 +122,7 @@ public class TaskbarIconController { insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME); insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_FRAME); } else { } else { if (mTaskbarView.mSystemButtonContainer.getVisibility() == VISIBLE) { if (mTaskbarView.mSystemButtonContainer.getVisibility() == VISIBLE) { mContainerView.getDescendantRectRelativeToSelf( mDragLayer.getDescendantRectRelativeToSelf( mTaskbarView.mSystemButtonContainer, mTempRect); mTaskbarView.mSystemButtonContainer, mTempRect); insetsInfo.touchableRegion.set(mTempRect); insetsInfo.touchableRegion.set(mTempRect); } } Loading @@ -135,15 +135,15 @@ public class TaskbarIconController { // mTaskbarView is, since its position never changes and insets rather than overlays. // mTaskbarView is, since its position never changes and insets rather than overlays. insetsInfo.contentInsets.left = mTaskbarView.getLeft(); insetsInfo.contentInsets.left = mTaskbarView.getLeft(); insetsInfo.contentInsets.top = mTaskbarView.getTop(); insetsInfo.contentInsets.top = mTaskbarView.getTop(); insetsInfo.contentInsets.right = mContainerView.getWidth() - mTaskbarView.getRight(); insetsInfo.contentInsets.right = mDragLayer.getWidth() - mTaskbarView.getRight(); insetsInfo.contentInsets.bottom = mContainerView.getHeight() - mTaskbarView.getBottom(); insetsInfo.contentInsets.bottom = mDragLayer.getHeight() - mTaskbarView.getBottom(); } } public void onContainerViewRemoved() { public void onDragLayerViewRemoved() { int count = mContainerView.getChildCount(); int count = mDragLayer.getChildCount(); // Ensure no other children present (like Folders, etc) // Ensure no other children present (like Folders, etc) for (int i = 0; i < count; i++) { for (int i = 0; i < count; i++) { View v = mContainerView.getChildAt(i); View v = mDragLayer.getChildAt(i); if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))) { if (!((v instanceof TaskbarView) || (v instanceof ImeBarView))) { return; return; } } Loading