Loading quickstep/res/values/override.xml +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ <string name="taskbar_model_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarModelCallbacksFactory</string> <string name="taskbar_view_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarViewCallbacksFactory</string> <string name="assist_state_manager_class" translatable="false"></string> <string name="launcher_restore_event_logger_class" translatable="false">com.android.quickstep.LauncherRestoreEventLoggerImpl</string> Loading quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +1 −2 Original line number Diff line number Diff line Loading @@ -120,8 +120,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * * Use {@link #getStashDuration()} to query duration */ private static final long TASKBAR_STASH_DURATION = InsetsController.ANIMATION_DURATION_RESIZE; private static final long TASKBAR_STASH_DURATION = InsetsController.ANIMATION_DURATION_RESIZE; /** * How long to stash/unstash transient taskbar. Loading quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +6 −2 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar private final TaskbarActivityContext mActivityContext; // Initialized in init. private TaskbarViewController.TaskbarViewCallbacks mControllerCallbacks; private TaskbarViewCallbacks mControllerCallbacks; private View.OnClickListener mIconClickListener; private View.OnLongClickListener mIconLongClickListener; Loading Loading @@ -258,7 +258,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar return mIconTouchSize; } protected void init(TaskbarViewController.TaskbarViewCallbacks callbacks) { protected void init(TaskbarViewCallbacks callbacks) { // set taskbar pane title so that accessibility service know it window and focuses. setAccessibilityPaneTitle(getContext().getString(R.string.taskbar_a11y_title)); mControllerCallbacks = callbacks; Loading @@ -267,6 +267,10 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar if (mAllAppsButton != null) { mAllAppsButton.setOnClickListener(mControllerCallbacks.getAllAppsButtonClickListener()); mAllAppsButton.setOnLongClickListener( mControllerCallbacks.getAllAppsButtonLongClickListener()); mAllAppsButton.setHapticFeedbackEnabled( mControllerCallbacks.isAllAppsButtonHapticFeedbackEnabled()); } if (mTaskbarDivider != null) { mTaskbarDivider.setOnLongClickListener( Loading quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java 0 → 100644 +105 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.taskbar; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_LONG_PRESS; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP; import android.view.InputDevice; import android.view.MotionEvent; import android.view.View; /** * Callbacks for {@link TaskbarView} to interact with its controller. */ public class TaskbarViewCallbacks { private final TaskbarActivityContext mActivity; private final TaskbarControllers mControllers; private final TaskbarView mTaskbarView; public TaskbarViewCallbacks(TaskbarActivityContext activity, TaskbarControllers controllers, TaskbarView taskbarView) { mActivity = activity; mControllers = controllers; mTaskbarView = taskbarView; } public View.OnClickListener getIconOnClickListener() { return mActivity.getItemOnClickListener(); } public View.OnClickListener getAllAppsButtonClickListener() { return v -> { mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP); mControllers.taskbarAllAppsController.toggle(); }; } public View.OnLongClickListener getAllAppsButtonLongClickListener() { return v -> { mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_ALLAPPS_BUTTON_LONG_PRESS); return true; }; } public boolean isAllAppsButtonHapticFeedbackEnabled() { return false; } public View.OnLongClickListener getTaskbarDividerLongClickListener() { return v -> { mControllers.taskbarPinningController.showPinningView(v); return true; }; } public View.OnTouchListener getTaskbarDividerRightClickListener() { return (v, event) -> { if (event.isFromSource(InputDevice.SOURCE_MOUSE) && event.getButtonState() == MotionEvent.BUTTON_SECONDARY) { mControllers.taskbarPinningController.showPinningView(v); return true; } return false; }; } public View.OnLongClickListener getIconOnLongClickListener() { return mControllers.taskbarDragController::startDragOnLongClick; } /** Gets the hover listener for the provided icon view. */ public View.OnHoverListener getIconOnHoverListener(View icon) { return new TaskbarHoverToolTipController(mActivity, mTaskbarView, icon); } /** * Notifies launcher to update icon alignment. */ public void notifyIconLayoutBoundsChanged() { mControllers.uiController.onIconLayoutBoundsChanged(); } /** * Notifies the taskbar scrim when the visibility of taskbar changes. */ public void notifyVisibilityChanged() { mControllers.taskbarScrimViewController.onTaskbarVisibilityChanged( mTaskbarView.getVisibility()); } } quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacksFactory.kt 0 → 100644 +43 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.taskbar import android.content.Context import com.android.launcher3.R import com.android.launcher3.util.ResourceBasedOverride import com.android.launcher3.util.ResourceBasedOverride.Overrides /** Creates [TaskbarViewCallbacks] instances. */ open class TaskbarViewCallbacksFactory : ResourceBasedOverride { open fun create( activity: TaskbarActivityContext, controllers: TaskbarControllers, taskbarView: TaskbarView, ): TaskbarViewCallbacks = TaskbarViewCallbacks(activity, controllers, taskbarView) companion object { @JvmStatic fun newInstance(context: Context): TaskbarViewCallbacksFactory { return Overrides.getObject( TaskbarViewCallbacksFactory::class.java, context, R.string.taskbar_view_callbacks_factory_class, ) } } } Loading
quickstep/res/values/override.xml +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,8 @@ <string name="taskbar_model_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarModelCallbacksFactory</string> <string name="taskbar_view_callbacks_factory_class" translatable="false">com.android.launcher3.taskbar.TaskbarViewCallbacksFactory</string> <string name="assist_state_manager_class" translatable="false"></string> <string name="launcher_restore_event_logger_class" translatable="false">com.android.quickstep.LauncherRestoreEventLoggerImpl</string> Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +1 −2 Original line number Diff line number Diff line Loading @@ -120,8 +120,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba * * Use {@link #getStashDuration()} to query duration */ private static final long TASKBAR_STASH_DURATION = InsetsController.ANIMATION_DURATION_RESIZE; private static final long TASKBAR_STASH_DURATION = InsetsController.ANIMATION_DURATION_RESIZE; /** * How long to stash/unstash transient taskbar. Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +6 −2 Original line number Diff line number Diff line Loading @@ -85,7 +85,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar private final TaskbarActivityContext mActivityContext; // Initialized in init. private TaskbarViewController.TaskbarViewCallbacks mControllerCallbacks; private TaskbarViewCallbacks mControllerCallbacks; private View.OnClickListener mIconClickListener; private View.OnLongClickListener mIconLongClickListener; Loading Loading @@ -258,7 +258,7 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar return mIconTouchSize; } protected void init(TaskbarViewController.TaskbarViewCallbacks callbacks) { protected void init(TaskbarViewCallbacks callbacks) { // set taskbar pane title so that accessibility service know it window and focuses. setAccessibilityPaneTitle(getContext().getString(R.string.taskbar_a11y_title)); mControllerCallbacks = callbacks; Loading @@ -267,6 +267,10 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar if (mAllAppsButton != null) { mAllAppsButton.setOnClickListener(mControllerCallbacks.getAllAppsButtonClickListener()); mAllAppsButton.setOnLongClickListener( mControllerCallbacks.getAllAppsButtonLongClickListener()); mAllAppsButton.setHapticFeedbackEnabled( mControllerCallbacks.isAllAppsButtonHapticFeedbackEnabled()); } if (mTaskbarDivider != null) { mTaskbarDivider.setOnLongClickListener( Loading
quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacks.java 0 → 100644 +105 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.taskbar; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_LONG_PRESS; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP; import android.view.InputDevice; import android.view.MotionEvent; import android.view.View; /** * Callbacks for {@link TaskbarView} to interact with its controller. */ public class TaskbarViewCallbacks { private final TaskbarActivityContext mActivity; private final TaskbarControllers mControllers; private final TaskbarView mTaskbarView; public TaskbarViewCallbacks(TaskbarActivityContext activity, TaskbarControllers controllers, TaskbarView taskbarView) { mActivity = activity; mControllers = controllers; mTaskbarView = taskbarView; } public View.OnClickListener getIconOnClickListener() { return mActivity.getItemOnClickListener(); } public View.OnClickListener getAllAppsButtonClickListener() { return v -> { mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP); mControllers.taskbarAllAppsController.toggle(); }; } public View.OnLongClickListener getAllAppsButtonLongClickListener() { return v -> { mActivity.getStatsLogManager().logger().log(LAUNCHER_TASKBAR_ALLAPPS_BUTTON_LONG_PRESS); return true; }; } public boolean isAllAppsButtonHapticFeedbackEnabled() { return false; } public View.OnLongClickListener getTaskbarDividerLongClickListener() { return v -> { mControllers.taskbarPinningController.showPinningView(v); return true; }; } public View.OnTouchListener getTaskbarDividerRightClickListener() { return (v, event) -> { if (event.isFromSource(InputDevice.SOURCE_MOUSE) && event.getButtonState() == MotionEvent.BUTTON_SECONDARY) { mControllers.taskbarPinningController.showPinningView(v); return true; } return false; }; } public View.OnLongClickListener getIconOnLongClickListener() { return mControllers.taskbarDragController::startDragOnLongClick; } /** Gets the hover listener for the provided icon view. */ public View.OnHoverListener getIconOnHoverListener(View icon) { return new TaskbarHoverToolTipController(mActivity, mTaskbarView, icon); } /** * Notifies launcher to update icon alignment. */ public void notifyIconLayoutBoundsChanged() { mControllers.uiController.onIconLayoutBoundsChanged(); } /** * Notifies the taskbar scrim when the visibility of taskbar changes. */ public void notifyVisibilityChanged() { mControllers.taskbarScrimViewController.onTaskbarVisibilityChanged( mTaskbarView.getVisibility()); } }
quickstep/src/com/android/launcher3/taskbar/TaskbarViewCallbacksFactory.kt 0 → 100644 +43 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher3.taskbar import android.content.Context import com.android.launcher3.R import com.android.launcher3.util.ResourceBasedOverride import com.android.launcher3.util.ResourceBasedOverride.Overrides /** Creates [TaskbarViewCallbacks] instances. */ open class TaskbarViewCallbacksFactory : ResourceBasedOverride { open fun create( activity: TaskbarActivityContext, controllers: TaskbarControllers, taskbarView: TaskbarView, ): TaskbarViewCallbacks = TaskbarViewCallbacks(activity, controllers, taskbarView) companion object { @JvmStatic fun newInstance(context: Context): TaskbarViewCallbacksFactory { return Overrides.getObject( TaskbarViewCallbacksFactory::class.java, context, R.string.taskbar_view_callbacks_factory_class, ) } } }