From 6b8b93e8450e902eacc0bcd6be57edcfe7a9bed4 Mon Sep 17 00:00:00 2001 From: Maryam Dehaini Date: Wed, 26 Jul 2023 11:03:46 -0700 Subject: [PATCH] Add maximize button to caption Adds a maximize button to the desktop mode caption which resizes the task to the stable bounds when clicked. Bug: 292090446 Test: Manual Testing Change-Id: If927e4932945887c1fc0906e5cfb0e259dd2a75d --- ...ecor_desktop_mode_maximize_button_dark.xml | 26 +++++++++++++++++++ ...desktop_mode_app_controls_window_decor.xml | 13 ++++++++++ .../WindowManager/Shell/res/values/colors.xml | 2 ++ .../DesktopModeWindowDecorViewModel.java | 5 ++++ ...deAppControlsWindowDecorationViewHolder.kt | 12 +++++++++ 5 files changed, 58 insertions(+) create mode 100644 libs/WindowManager/Shell/res/drawable/decor_desktop_mode_maximize_button_dark.xml diff --git a/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_maximize_button_dark.xml b/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_maximize_button_dark.xml new file mode 100644 index 0000000000000..02b707568cd06 --- /dev/null +++ b/libs/WindowManager/Shell/res/drawable/decor_desktop_mode_maximize_button_dark.xml @@ -0,0 +1,26 @@ + + + + + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml index fb1980a526014..7e0c2071dc868 100644 --- a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml +++ b/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml @@ -77,6 +77,19 @@ android:layout_height="40dp" android:layout_weight="1"/> + + #48473A #EFF1F2 #1C1C17 + #EFF1F2 + #1C1C17 #EFF1F2 #1C1C17 #191C1D diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index 2d7e6a602f2f9..8f04aa0f77c5b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -372,6 +372,11 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mDesktopTasksController.ifPresent(c -> c.moveToNextDisplay(mTaskId)); decoration.closeHandleMenu(); } + } else if (id == R.id.maximize_window) { + final RunningTaskInfo taskInfo = decoration.mTaskInfo; + mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize( + taskInfo, decoration)); + decoration.closeHandleMenu(); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt index b67acd5c15bbe..672e57aab5adc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt @@ -28,6 +28,7 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder( private val openMenuButton: View = rootView.findViewById(R.id.open_menu_button) private val closeWindowButton: ImageButton = rootView.findViewById(R.id.close_window) private val expandMenuButton: ImageButton = rootView.findViewById(R.id.expand_menu_button) + private val maximizeWindowButton: ImageButton = rootView.findViewById(R.id.maximize_window) private val appNameTextView: TextView = rootView.findViewById(R.id.application_name) private val appIconImageView: ImageView = rootView.findViewById(R.id.application_icon) @@ -37,6 +38,7 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder( openMenuButton.setOnClickListener(onCaptionButtonClickListener) openMenuButton.setOnTouchListener(onCaptionTouchListener) closeWindowButton.setOnClickListener(onCaptionButtonClickListener) + maximizeWindowButton.setOnClickListener(onCaptionButtonClickListener) closeWindowButton.setOnTouchListener(onCaptionTouchListener) appNameTextView.text = appName appIconImageView.setImageDrawable(appIcon) @@ -49,6 +51,8 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder( closeWindowButton.imageTintList = ColorStateList.valueOf( getCaptionCloseButtonColor(taskInfo)) + maximizeWindowButton.imageTintList = ColorStateList.valueOf( + getCaptionMaximizeButtonColor(taskInfo)) expandMenuButton.imageTintList = ColorStateList.valueOf( getCaptionExpandButtonColor(taskInfo)) appNameTextView.setTextColor(getCaptionAppNameTextColor(taskInfo)) @@ -70,6 +74,14 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder( } } + private fun getCaptionMaximizeButtonColor(taskInfo: RunningTaskInfo): Int { + return if (shouldUseLightCaptionColors(taskInfo)) { + context.getColor(R.color.desktop_mode_caption_maximize_button_light) + } else { + context.getColor(R.color.desktop_mode_caption_maximize_button_dark) + } + } + private fun getCaptionExpandButtonColor(taskInfo: RunningTaskInfo): Int { return if (shouldUseLightCaptionColors(taskInfo)) { context.getColor(R.color.desktop_mode_caption_expand_button_light)