Merge "Adding A Minimize Button" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
15f10cc98f
@@ -0,0 +1,24 @@
|
||||
<!--
|
||||
~ Copyright (C) 2022 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white" android:pathData="M6,21V19H18V21Z"/>
|
||||
</vector>
|
||||
@@ -21,6 +21,17 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="end"
|
||||
android:background="@drawable/decor_caption_title">
|
||||
<Button
|
||||
android:id="@+id/minimize_window"
|
||||
android:visibility="gone"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_margin="5dp"
|
||||
android:padding="4dp"
|
||||
android:layout_gravity="top|end"
|
||||
android:contentDescription="@string/maximize_button_text"
|
||||
android:background="@drawable/decor_minimize_button_dark"
|
||||
android:duplicateParentState="true"/>
|
||||
<Button
|
||||
android:id="@+id/maximize_window"
|
||||
android:layout_width="32dp"
|
||||
@@ -42,4 +53,3 @@
|
||||
android:background="@drawable/decor_close_button_dark"
|
||||
android:duplicateParentState="true"/>
|
||||
</com.android.wm.shell.windowdecor.WindowDecorLinearLayout>
|
||||
|
||||
|
||||
@@ -192,6 +192,8 @@
|
||||
<!-- Freeform window caption strings -->
|
||||
<!-- Accessibility text for the maximize window button [CHAR LIMIT=NONE] -->
|
||||
<string name="maximize_button_text">Maximize</string>
|
||||
<!-- Accessibility text for the minimize window button [CHAR LIMIT=NONE] -->
|
||||
<string name="minimize_button_text">Minimize</string>
|
||||
<!-- Accessibility text for the close window button [CHAR LIMIT=NONE] -->
|
||||
<string name="close_button_text">Close</string>
|
||||
</resources>
|
||||
|
||||
@@ -91,6 +91,12 @@ public class FreeformTaskTransitionHandler
|
||||
mPendingTransitionTokens.add(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startMinimizedModeTransition(WindowContainerTransaction wct) {
|
||||
final int type = WindowManager.TRANSIT_TO_BACK;
|
||||
mPendingTransitionTokens.add(mTransitions.startTransition(type, wct, this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info,
|
||||
@NonNull SurfaceControl.Transaction startT,
|
||||
@@ -121,6 +127,8 @@ public class FreeformTaskTransitionHandler
|
||||
transition, info.getType(), change, startT, finishT);
|
||||
break;
|
||||
case WindowManager.TRANSIT_TO_BACK:
|
||||
transitionHandled |= startMinimizeTransition(transition);
|
||||
break;
|
||||
case WindowManager.TRANSIT_TO_FRONT:
|
||||
break;
|
||||
}
|
||||
@@ -169,6 +177,13 @@ public class FreeformTaskTransitionHandler
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean startMinimizeTransition(IBinder transition) {
|
||||
if (!mPendingTransitionTokens.contains(transition)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean startChangeTransition(
|
||||
IBinder transition,
|
||||
int type,
|
||||
@@ -243,4 +258,5 @@ public class FreeformTaskTransitionHandler
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -29,6 +29,15 @@ public interface FreeformTaskTransitionStarter {
|
||||
*
|
||||
* @param targetWindowingMode the target windowing mode
|
||||
* @param wct the {@link WindowContainerTransaction} that changes the windowing mode
|
||||
*
|
||||
*/
|
||||
void startWindowingModeTransition(int targetWindowingMode, WindowContainerTransaction wct);
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts window minimization transition
|
||||
*
|
||||
* @param wct the {@link WindowContainerTransaction} that changes the windowing mode
|
||||
*
|
||||
*/
|
||||
void startMinimizedModeTransition(WindowContainerTransaction wct);
|
||||
}
|
||||
@@ -51,7 +51,6 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel<Caption
|
||||
private final Choreographer mMainChoreographer;
|
||||
private final DisplayController mDisplayController;
|
||||
private final SyncTransactionQueue mSyncQueue;
|
||||
|
||||
private FreeformTaskTransitionStarter mTransitionStarter;
|
||||
|
||||
public CaptionWindowDecorViewModel(
|
||||
@@ -168,6 +167,14 @@ public class CaptionWindowDecorViewModel implements WindowDecorViewModel<Caption
|
||||
} else {
|
||||
mSyncQueue.queue(wct);
|
||||
}
|
||||
} else if (id == R.id.minimize_window) {
|
||||
WindowContainerTransaction wct = new WindowContainerTransaction();
|
||||
wct.reorder(mTaskToken, false);
|
||||
if (Transitions.ENABLE_SHELL_TRANSITIONS) {
|
||||
mTransitionStarter.startMinimizedModeTransition(wct);
|
||||
} else {
|
||||
mSyncQueue.queue(wct);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -161,12 +161,13 @@ public class CaptionWindowDecoration extends WindowDecoration<WindowDecorLinearL
|
||||
*/
|
||||
private void setupRootView() {
|
||||
View caption = mResult.mRootView.findViewById(R.id.caption);
|
||||
|
||||
caption.setOnTouchListener(mOnCaptionTouchListener);
|
||||
View maximize = caption.findViewById(R.id.maximize_window);
|
||||
maximize.setOnClickListener(mOnCaptionButtonClickListener);
|
||||
View close = caption.findViewById(R.id.close_window);
|
||||
close.setOnClickListener(mOnCaptionButtonClickListener);
|
||||
View minimize = caption.findViewById(R.id.minimize_window);
|
||||
minimize.setOnClickListener(mOnCaptionButtonClickListener);
|
||||
}
|
||||
|
||||
void setCaptionColor(int captionColor) {
|
||||
|
||||
Reference in New Issue
Block a user