mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-03 09:26:51 +00:00
Merge "Remove floating task button from taskbar" into tm-qpr-dev am: 9eed65de62
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/20307070 Change-Id: I3b1009b79874321a4162c0048dff1335577e5e80 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ 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">
|
||||
<group
|
||||
android:pivotY="12"
|
||||
android:pivotX="12"
|
||||
android:scaleX=".75"
|
||||
android:scaleY=".75">
|
||||
<path
|
||||
android:pathData="M17.6258,4.96L19.0358,6.37L7.4058,18.01L5.9958,16.6L17.6258,4.96ZM16.1358,3.62L4.1258,15.63L3.0158,19.83C2.9058,20.45 3.3858,21 3.9958,21C4.0558,21 4.1058,21 4.1658,20.99L8.3658,19.88L20.3758,7.86C20.7758,7.46 20.9958,6.93 20.9958,6.37C20.9958,5.81 20.7758,5.28 20.3758,4.88L19.1058,3.61C18.7158,3.22 18.1858,3 17.6258,3C17.0658,3 16.5358,3.22 16.1358,3.62Z"
|
||||
android:fillColor="#636C6F"/>
|
||||
<path
|
||||
android:pathData="M20.1936,15.3369C20.3748,16.3837 19.9151,17.5414 18.8846,18.7597C19.1546,18.872 19.4576,18.9452 19.7724,18.9867C20.0839,19.0278 20.3683,19.0325 20.5749,19.0266C20.6772,19.0236 20.7578,19.0181 20.8101,19.0138C20.8362,19.0116 20.855,19.0097 20.8657,19.0085L20.8754,19.0074L20.875,19.0075C21.4217,18.9385 21.9214,19.325 21.9918,19.8718C22.0624,20.4195 21.6756,20.9208 21.1279,20.9914L21,19.9996C21.1279,20.9914 21.1265,20.9916 21.1265,20.9916L21.1249,20.9918L21.1211,20.9923L21.1107,20.9935L21.0795,20.997C21.0542,20.9998 21.0199,21.0032 20.9775,21.0067C20.8929,21.0138 20.7753,21.0216 20.6323,21.0257C20.3481,21.0339 19.9533,21.0279 19.5109,20.9695C18.873,20.8854 18.0393,20.6793 17.3106,20.1662C16.9605,20.3559 16.5876,20.4952 16.2299,20.6003C15.5742,20.7927 14.8754,20.8968 14.2534,20.9534C13.6801,21.0055 13.4553,21.0037 13.1015,21.0008C13.0689,21.0005 13.0352,21.0002 13,21H12.8594C12.8214,21.0002 12.785,21.0006 12.7504,21.0009C12.6524,21.0019 12.5683,21.0027 12.5,21H12.0562C12.0277,21.0003 12.0054,21.0006 11.9926,21.001L11.9751,21H9L11,19H11.9795C11.9929,18.9997 12.0064,18.9997 12.0199,19H12.4117C12.4534,18.9996 12.4864,18.9995 12.5,19H12.9675C12.977,18.9999 12.9878,18.9999 13,19C13.0446,19.0003 13.0859,19.0007 13.1249,19.0011C13.4259,19.0038 13.591,19.0054 14.0723,18.9616C14.6201,18.9118 15.1795,18.8242 15.6665,18.6813C15.753,18.6559 15.8346,18.6295 15.9114,18.6022C15.0315,17.2981 14.7125,16.1044 15.015,15.0829C15.4095,13.7511 16.6784,13.2418 17.7026,13.2864C18.7262,13.3309 19.954,13.9529 20.1936,15.3369ZM16.9327,15.6508C16.873,15.8523 16.8651,16.3878 17.4697,17.334C18.2007,16.4284 18.2585,15.8839 18.2229,15.6781C18.1939,15.5108 18.0297,15.3025 17.6157,15.2845C17.2025,15.2665 16.9885,15.4626 16.9327,15.6508Z"
|
||||
android:fillColor="#636C6F"
|
||||
android:fillType="evenOdd"/>
|
||||
</group>
|
||||
</vector>
|
||||
@@ -1,21 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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.
|
||||
-->
|
||||
<com.android.launcher3.views.IconButtonView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/taskbar_icon_touch_size"
|
||||
android:layout_height="@dimen/taskbar_icon_touch_size"
|
||||
android:icon="@drawable/ic_floating_task_button"
|
||||
/>
|
||||
@@ -1,97 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.content.pm.PackageManager.MATCH_DEFAULT_ONLY;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
|
||||
// TODO: This would be replaced by the thing that has the role and provides the intent.
|
||||
/**
|
||||
* Helper to determine what intent should be used to display in a floating window, if one
|
||||
* exists.
|
||||
*/
|
||||
public class FloatingTaskIntentResolver {
|
||||
private static final String TAG = FloatingTaskIntentResolver.class.getSimpleName();
|
||||
|
||||
@Nullable
|
||||
/** Gets an intent for a floating task, if one exists. */
|
||||
public static Intent getIntent(Context context) {
|
||||
PackageManager pm = context.getPackageManager();
|
||||
String pkg = context.getString(R.string.floating_task_package);
|
||||
String action = context.getString(R.string.floating_task_action);
|
||||
if (TextUtils.isEmpty(pkg) || TextUtils.isEmpty(action)) {
|
||||
Log.d(TAG, "intent could not be found, pkg= " + pkg + " action= " + action);
|
||||
return null;
|
||||
}
|
||||
Intent intent = createIntent(pm, null, pkg, action);
|
||||
if (intent != null) {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
return intent;
|
||||
}
|
||||
Log.d(TAG, "No valid intent found!");
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Intent createIntent(PackageManager pm, @Nullable String activityName,
|
||||
String packageName, String action) {
|
||||
if (TextUtils.isEmpty(activityName)) {
|
||||
activityName = queryActivityForAction(pm, packageName, action);
|
||||
}
|
||||
if (TextUtils.isEmpty(activityName)) {
|
||||
Log.d(TAG, "Activity name is empty even after action search: " + action);
|
||||
return null;
|
||||
}
|
||||
ComponentName component = new ComponentName(packageName, activityName);
|
||||
Intent intent = new Intent(action).setComponent(component).setPackage(packageName);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
Log.d(TAG, "createIntent returning: " + intent);
|
||||
return intent;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String queryActivityForAction(PackageManager pm, String packageName,
|
||||
String action) {
|
||||
Intent intent = new Intent(action).setPackage(packageName);
|
||||
ResolveInfo resolveInfo = pm.resolveActivity(intent, MATCH_DEFAULT_ONLY);
|
||||
if (resolveInfo == null || resolveInfo.activityInfo == null) {
|
||||
Log.d(TAG, "queryActivityForAction: + " + resolveInfo);
|
||||
return null;
|
||||
}
|
||||
ActivityInfo info = resolveInfo.activityInfo;
|
||||
if (!info.exported) {
|
||||
Log.d(TAG, "queryActivityForAction: + " + info + " not exported");
|
||||
return null;
|
||||
}
|
||||
if (!info.enabled) {
|
||||
Log.d(TAG, "queryActivityForAction: + " + info + " not enabled");
|
||||
return null;
|
||||
}
|
||||
return resolveInfo.activityInfo.name;
|
||||
}
|
||||
}
|
||||
@@ -16,14 +16,11 @@
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Rect;
|
||||
import android.os.SystemProperties;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
@@ -85,12 +82,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
|
||||
private View mQsb;
|
||||
|
||||
// Only non-null when device supports having a floating task.
|
||||
private @Nullable View mFloatingTaskButton;
|
||||
private @Nullable Intent mFloatingTaskIntent;
|
||||
private static final boolean FLOATING_TASKS_ENABLED =
|
||||
SystemProperties.getBoolean("persist.wm.debug.floating_tasks", false);
|
||||
|
||||
public TaskbarView(@NonNull Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -139,17 +130,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
// TODO: Disable touch events on QSB otherwise it can crash.
|
||||
mQsb = LayoutInflater.from(context).inflate(R.layout.search_container_hotseat, this, false);
|
||||
|
||||
if (FLOATING_TASKS_ENABLED) {
|
||||
mFloatingTaskIntent = FloatingTaskIntentResolver.getIntent(context);
|
||||
if (mFloatingTaskIntent != null) {
|
||||
mFloatingTaskButton = LayoutInflater.from(context)
|
||||
.inflate(R.layout.taskbar_floating_task_button, this, false);
|
||||
mFloatingTaskButton.setPadding(mItemPadding, mItemPadding, mItemPadding,
|
||||
mItemPadding);
|
||||
} else {
|
||||
Log.d(TAG, "Floating tasks is enabled but no intent was found!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int getColorWithGivenLuminance(int color, float luminance) {
|
||||
@@ -177,10 +157,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
if (mAllAppsButton != null) {
|
||||
mAllAppsButton.setOnClickListener(mControllerCallbacks.getAllAppsButtonClickListener());
|
||||
}
|
||||
if (mFloatingTaskButton != null) {
|
||||
mFloatingTaskButton.setOnClickListener(
|
||||
mControllerCallbacks.getFloatingTaskButtonListener(mFloatingTaskIntent));
|
||||
}
|
||||
}
|
||||
|
||||
private void removeAndRecycle(View view) {
|
||||
@@ -205,9 +181,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
}
|
||||
removeView(mQsb);
|
||||
|
||||
if (mFloatingTaskButton != null) {
|
||||
removeView(mFloatingTaskButton);
|
||||
}
|
||||
|
||||
for (int i = 0; i < hotseatItemInfos.length; i++) {
|
||||
ItemInfo hotseatItemInfo = hotseatItemInfos[i];
|
||||
@@ -290,11 +263,6 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar
|
||||
mQsb.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
if (mFloatingTaskButton != null) {
|
||||
int index = Utilities.isRtl(getResources()) ? 0 : getChildCount();
|
||||
addView(mFloatingTaskButton, index);
|
||||
}
|
||||
|
||||
mThemeIconsBackground = calculateThemeIconsBackground();
|
||||
setThemedIconsBackgroundColor(mThemeIconsBackground);
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import static com.android.launcher3.taskbar.TaskbarManager.isPhoneMode;
|
||||
import static com.android.quickstep.AnimatedFloat.VALUE;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Rect;
|
||||
import android.util.FloatProperty;
|
||||
import android.util.Log;
|
||||
@@ -55,7 +54,6 @@ import com.android.launcher3.util.LauncherBindableItemsContainer;
|
||||
import com.android.launcher3.util.MultiPropertyFactory;
|
||||
import com.android.launcher3.util.MultiValueAlpha;
|
||||
import com.android.quickstep.AnimatedFloat;
|
||||
import com.android.quickstep.SystemUiProxy;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.function.Predicate;
|
||||
@@ -447,13 +445,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar
|
||||
};
|
||||
}
|
||||
|
||||
public View.OnClickListener getFloatingTaskButtonListener(@NonNull Intent intent) {
|
||||
return v -> {
|
||||
SystemUiProxy proxy = SystemUiProxy.INSTANCE.get(v.getContext());
|
||||
proxy.showFloatingTask(intent);
|
||||
};
|
||||
}
|
||||
|
||||
public View.OnLongClickListener getIconOnLongClickListener() {
|
||||
return mControllers.taskbarDragController::startDragOnLongClick;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,6 @@ import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationContro
|
||||
import com.android.systemui.shared.system.smartspace.SmartspaceState;
|
||||
import com.android.wm.shell.back.IBackAnimation;
|
||||
import com.android.wm.shell.desktopmode.IDesktopMode;
|
||||
import com.android.wm.shell.floating.IFloatingTasks;
|
||||
import com.android.wm.shell.onehanded.IOneHanded;
|
||||
import com.android.wm.shell.pip.IPip;
|
||||
import com.android.wm.shell.pip.IPipAnimationListener;
|
||||
@@ -90,7 +89,6 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
private IPip mPip;
|
||||
private ISysuiUnlockAnimationController mSysuiUnlockAnimationController;
|
||||
private ISplitScreen mSplitScreen;
|
||||
private IFloatingTasks mFloatingTasks;
|
||||
private IOneHanded mOneHanded;
|
||||
private IShellTransitions mShellTransitions;
|
||||
private IStartingWindow mStartingWindow;
|
||||
@@ -168,7 +166,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
}
|
||||
|
||||
public void setProxy(ISystemUiProxy proxy, IPip pip, ISplitScreen splitScreen,
|
||||
IFloatingTasks floatingTasks, IOneHanded oneHanded, IShellTransitions shellTransitions,
|
||||
IOneHanded oneHanded, IShellTransitions shellTransitions,
|
||||
IStartingWindow startingWindow, IRecentTasks recentTasks,
|
||||
ISysuiUnlockAnimationController sysuiUnlockAnimationController,
|
||||
IBackAnimation backAnimation, IDesktopMode desktopMode) {
|
||||
@@ -176,7 +174,6 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
mSystemUiProxy = proxy;
|
||||
mPip = pip;
|
||||
mSplitScreen = splitScreen;
|
||||
mFloatingTasks = floatingTasks;
|
||||
mOneHanded = oneHanded;
|
||||
mShellTransitions = shellTransitions;
|
||||
mStartingWindow = startingWindow;
|
||||
@@ -210,7 +207,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
}
|
||||
|
||||
public void clearProxy() {
|
||||
setProxy(null, null, null, null, null, null, null, null, null, null, null);
|
||||
setProxy(null, null, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
|
||||
// TODO(141886704): Find a way to remove this
|
||||
@@ -695,20 +692,6 @@ public class SystemUiProxy implements ISystemUiProxy {
|
||||
return null;
|
||||
}
|
||||
|
||||
//
|
||||
// Floating tasks
|
||||
//
|
||||
|
||||
public void showFloatingTask(Intent intent) {
|
||||
if (mFloatingTasks != null) {
|
||||
try {
|
||||
mFloatingTasks.showTask(intent);
|
||||
} catch (RemoteException e) {
|
||||
Log.w(TAG, "Launcher: Failed call showFloatingTask", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// One handed
|
||||
//
|
||||
|
||||
@@ -32,7 +32,6 @@ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_N
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_TRACING_ENABLED;
|
||||
import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_BACK_ANIMATION;
|
||||
import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_DESKTOP_MODE;
|
||||
import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_FLOATING_TASKS;
|
||||
import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_ONE_HANDED;
|
||||
import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_PIP;
|
||||
import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_RECENT_TASKS;
|
||||
@@ -114,7 +113,6 @@ import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationContro
|
||||
import com.android.systemui.shared.tracing.ProtoTraceable;
|
||||
import com.android.wm.shell.back.IBackAnimation;
|
||||
import com.android.wm.shell.desktopmode.IDesktopMode;
|
||||
import com.android.wm.shell.floating.IFloatingTasks;
|
||||
import com.android.wm.shell.onehanded.IOneHanded;
|
||||
import com.android.wm.shell.pip.IPip;
|
||||
import com.android.wm.shell.recents.IRecentTasks;
|
||||
@@ -172,8 +170,6 @@ public class TouchInteractionService extends Service
|
||||
IPip pip = IPip.Stub.asInterface(bundle.getBinder(KEY_EXTRA_SHELL_PIP));
|
||||
ISplitScreen splitscreen = ISplitScreen.Stub.asInterface(bundle.getBinder(
|
||||
KEY_EXTRA_SHELL_SPLIT_SCREEN));
|
||||
IFloatingTasks floatingTasks = IFloatingTasks.Stub.asInterface(bundle.getBinder(
|
||||
KEY_EXTRA_SHELL_FLOATING_TASKS));
|
||||
IOneHanded onehanded = IOneHanded.Stub.asInterface(
|
||||
bundle.getBinder(KEY_EXTRA_SHELL_ONE_HANDED));
|
||||
IShellTransitions shellTransitions = IShellTransitions.Stub.asInterface(
|
||||
@@ -191,7 +187,7 @@ public class TouchInteractionService extends Service
|
||||
bundle.getBinder(KEY_EXTRA_SHELL_DESKTOP_MODE));
|
||||
MAIN_EXECUTOR.execute(() -> {
|
||||
SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip,
|
||||
splitscreen, floatingTasks, onehanded, shellTransitions, startingWindow,
|
||||
splitscreen, onehanded, shellTransitions, startingWindow,
|
||||
recentTasks, launcherUnlockAnimationController, backAnimation, desktopMode);
|
||||
TouchInteractionService.this.initInputMonitor("TISBinder#onInitialize()");
|
||||
preloadOverview(true /* fromInit */);
|
||||
|
||||
@@ -205,6 +205,4 @@
|
||||
<!-- The max scale for the wallpaper when it's zoomed in -->
|
||||
<item name="config_wallpaperMaxScale" format="float" type="dimen">0</item>
|
||||
|
||||
<string name="floating_task_package" translatable="false"></string>
|
||||
<string name="floating_task_action" translatable="false"></string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user