diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_handle.xml similarity index 100% rename from libs/WindowManager/Shell/res/layout/desktop_mode_focused_window_decor.xml rename to libs/WindowManager/Shell/res/layout/desktop_mode_app_handle.xml diff --git a/libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml b/libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml similarity index 100% rename from libs/WindowManager/Shell/res/layout/desktop_mode_app_controls_window_decor.xml rename to libs/WindowManager/Shell/res/layout/desktop_mode_app_header.xml diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index eced07831ff744e361689c99047a6a1a46afcc9f..644fd4ba5a541295136798a0a60694f42b3df610 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -69,9 +69,9 @@ import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.shared.DesktopModeStatus; import com.android.wm.shell.windowdecor.extension.TaskInfoKt; -import com.android.wm.shell.windowdecor.viewholder.DesktopModeAppControlsWindowDecorationViewHolder; -import com.android.wm.shell.windowdecor.viewholder.DesktopModeFocusedWindowDecorationViewHolder; -import com.android.wm.shell.windowdecor.viewholder.DesktopModeWindowDecorationViewHolder; +import com.android.wm.shell.windowdecor.viewholder.AppHandleViewHolder; +import com.android.wm.shell.windowdecor.viewholder.AppHeaderViewHolder; +import com.android.wm.shell.windowdecor.viewholder.WindowDecorationViewHolder; import kotlin.Unit; @@ -90,7 +90,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin private final Choreographer mChoreographer; private final SyncTransactionQueue mSyncQueue; - private DesktopModeWindowDecorationViewHolder mWindowDecorViewHolder; + private WindowDecorationViewHolder mWindowDecorViewHolder; private View.OnClickListener mOnCaptionButtonClickListener; private View.OnTouchListener mOnCaptionTouchListener; private View.OnLongClickListener mOnCaptionLongClickListener; @@ -232,16 +232,16 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } if (oldRootView != mResult.mRootView) { - if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_focused_window_decor) { - mWindowDecorViewHolder = new DesktopModeFocusedWindowDecorationViewHolder( + if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_app_handle) { + mWindowDecorViewHolder = new AppHandleViewHolder( mResult.mRootView, mOnCaptionTouchListener, mOnCaptionButtonClickListener ); } else if (mRelayoutParams.mLayoutResId - == R.layout.desktop_mode_app_controls_window_decor) { + == R.layout.desktop_mode_app_header) { loadAppInfoIfNeeded(); - mWindowDecorViewHolder = new DesktopModeAppControlsWindowDecorationViewHolder( + mWindowDecorViewHolder = new AppHeaderViewHolder( mResult.mRootView, mOnCaptionTouchListener, mOnCaptionButtonClickListener, @@ -331,8 +331,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin boolean shouldSetTaskPositionAndCrop) { final int captionLayoutId = getDesktopModeWindowDecorLayoutId(taskInfo.getWindowingMode()); final boolean isAppHeader = - captionLayoutId == R.layout.desktop_mode_app_controls_window_decor; - final boolean isAppHandle = captionLayoutId == R.layout.desktop_mode_focused_window_decor; + captionLayoutId == R.layout.desktop_mode_app_header; + final boolean isAppHandle = captionLayoutId == R.layout.desktop_mode_app_handle; relayoutParams.reset(); relayoutParams.mRunningTaskInfo = taskInfo; relayoutParams.mLayoutResId = captionLayoutId; @@ -405,7 +405,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin * resource. Otherwise, return ID_NULL and caption width be set to task width. */ private static int getCaptionWidthId(int layoutResId) { - if (layoutResId == R.layout.desktop_mode_focused_window_decor) { + if (layoutResId == R.layout.desktop_mode_app_handle) { return R.dimen.desktop_mode_fullscreen_decor_caption_width; } return Resources.ID_NULL; @@ -568,7 +568,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin @Override @NonNull Rect calculateValidDragArea() { - final int appTextWidth = ((DesktopModeAppControlsWindowDecorationViewHolder) + final int appTextWidth = ((AppHeaderViewHolder) mWindowDecorViewHolder).getAppNameTextWidth(); final int leftButtonsWidth = loadDimensionPixelSize(mContext.getResources(), R.dimen.desktop_mode_app_details_width_minus_text) + appTextWidth; @@ -747,7 +747,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin */ boolean checkTouchEventInFocusedCaptionHandle(MotionEvent ev) { if (isHandleMenuActive() || !(mWindowDecorViewHolder - instanceof DesktopModeFocusedWindowDecorationViewHolder)) { + instanceof AppHandleViewHolder)) { return false; } @@ -836,8 +836,8 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin private static int getDesktopModeWindowDecorLayoutId(@WindowingMode int windowingMode) { return windowingMode == WINDOWING_MODE_FREEFORM - ? R.layout.desktop_mode_app_controls_window_decor - : R.layout.desktop_mode_focused_window_decor; + ? R.layout.desktop_mode_app_header + : R.layout.desktop_mode_app_handle; } private void updatePositionInParent() { @@ -889,20 +889,20 @@ public class DesktopModeWindowDecoration extends WindowDecoration<WindowDecorLin } void setAnimatingTaskResize(boolean animatingTaskResize) { - if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_focused_window_decor) return; - ((DesktopModeAppControlsWindowDecorationViewHolder) mWindowDecorViewHolder) + if (mRelayoutParams.mLayoutResId == R.layout.desktop_mode_app_handle) return; + ((AppHeaderViewHolder) mWindowDecorViewHolder) .setAnimatingTaskResize(animatingTaskResize); } /** Called when there is a {@Link ACTION_HOVER_EXIT} on the maximize window button. */ void onMaximizeWindowHoverExit() { - ((DesktopModeAppControlsWindowDecorationViewHolder) mWindowDecorViewHolder) + ((AppHeaderViewHolder) mWindowDecorViewHolder) .onMaximizeWindowHoverExit(); } /** Called when there is a {@Link ACTION_HOVER_ENTER} on the maximize window button. */ void onMaximizeWindowHoverEnter() { - ((DesktopModeAppControlsWindowDecorationViewHolder) mWindowDecorViewHolder) + ((AppHeaderViewHolder) mWindowDecorViewHolder) .onMaximizeWindowHoverEnter(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java index 65adcee1567cfd73cd0bf7c425d6c2a994a9427f..c22b621f2111bbcfbf3bcf1a4fc587f020768857 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java @@ -218,8 +218,7 @@ class HandleMenu { final int menuX, menuY; final int captionWidth = mTaskInfo.getConfiguration() .windowConfiguration.getBounds().width(); - if (mLayoutResId - == R.layout.desktop_mode_app_controls_window_decor) { + if (mLayoutResId == R.layout.desktop_mode_app_header) { // Align the handle menu to the left of the caption. menuX = mMarginMenuStart; menuY = mMarginMenuTop; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt similarity index 78% rename from libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt rename to libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt index 96bc4a146ebd739b6c9cff849087c1e6758a5ec3..8d822c2522882ed97878180ea1038132ca9fff87 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeFocusedWindowDecorationViewHolder.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHandleViewHolder.kt @@ -1,3 +1,18 @@ +/* + * 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.wm.shell.windowdecor.viewholder import android.animation.ObjectAnimator @@ -12,14 +27,14 @@ import com.android.wm.shell.R import com.android.wm.shell.animation.Interpolators /** - * A desktop mode window decoration used when the window is in full "focus" (i.e. fullscreen). It - * hosts a simple handle bar from which to initiate a drag motion to enter desktop mode. + * A desktop mode window decoration used when the window is in full "focus" (i.e. fullscreen/split). + * It hosts a simple handle bar from which to initiate a drag motion to enter desktop mode. */ -internal class DesktopModeFocusedWindowDecorationViewHolder( +internal class AppHandleViewHolder( rootView: View, onCaptionTouchListener: View.OnTouchListener, onCaptionButtonClickListener: View.OnClickListener -) : DesktopModeWindowDecorationViewHolder(rootView) { +) : WindowDecorationViewHolder(rootView) { companion object { private const val CAPTION_HANDLE_ANIMATION_DURATION: Long = 100 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/AppHeaderViewHolder.kt similarity index 97% rename from libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeAppControlsWindowDecorationViewHolder.kt rename to libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/AppHeaderViewHolder.kt index 3c12da2d6620f31e7a7e596e5febc28c2a527767..3b714b173a1df0eda1676c915067c005b2245dc4 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/AppHeaderViewHolder.kt @@ -1,3 +1,18 @@ +/* + * 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.wm.shell.windowdecor.viewholder import android.annotation.ColorInt @@ -38,7 +53,7 @@ import com.android.wm.shell.windowdecor.extension.isTransparentCaptionBarAppeara * finer controls such as a close window button and an "app info" section to pull up additional * controls. */ -internal class DesktopModeAppControlsWindowDecorationViewHolder( +internal class AppHeaderViewHolder( rootView: View, onCaptionTouchListener: View.OnTouchListener, onCaptionButtonClickListener: View.OnClickListener, @@ -47,7 +62,7 @@ internal class DesktopModeAppControlsWindowDecorationViewHolder( appName: CharSequence, appIconBitmap: Bitmap, onMaximizeHoverAnimationFinishedListener: () -> Unit -) : DesktopModeWindowDecorationViewHolder(rootView) { +) : WindowDecorationViewHolder(rootView) { /** * The corner radius to apply to the app chip, maximize and close button's background drawable. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/WindowDecorationViewHolder.kt similarity index 52% rename from libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt rename to libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/WindowDecorationViewHolder.kt index 81bc34c876b6f0d19d574769aeb3f7f3a4ce77a2..5ae8d252a9082f0d6de94b1485ed195aafc4a795 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/DesktopModeWindowDecorationViewHolder.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/viewholder/WindowDecorationViewHolder.kt @@ -1,3 +1,18 @@ +/* + * 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.wm.shell.windowdecor.viewholder import android.app.ActivityManager.RunningTaskInfo @@ -8,7 +23,7 @@ import android.view.View * Encapsulates the root [View] of a window decoration and its children to facilitate looking up * children (via findViewById) and updating to the latest data from [RunningTaskInfo]. */ -internal abstract class DesktopModeWindowDecorationViewHolder(rootView: View) { +internal abstract class WindowDecorationViewHolder(rootView: View) { val context: Context = rootView.context /**