diff --git a/res/values/strings.xml b/res/values/strings.xml index aaef15b2af..9f4d308877 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -50,6 +50,8 @@ This app pair isn\'t supported on this device Unfold device to use this app pair + + App pair isn\'t available diff --git a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt index ed593ae16e..a974133755 100644 --- a/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt +++ b/src/com/android/launcher3/apppairs/AppPairIconGraphic.kt @@ -26,7 +26,6 @@ import androidx.annotation.OpenForTesting import com.android.launcher3.DeviceProfile import com.android.launcher3.DeviceProfile.OnDeviceProfileChangeListener import com.android.launcher3.icons.BitmapInfo -import com.android.launcher3.icons.FastBitmapDrawable.getDisabledColorFilter import com.android.launcher3.model.data.AppPairInfo import com.android.launcher3.util.Themes import com.android.launcher3.views.ActivityContext @@ -62,21 +61,10 @@ constructor(context: Context, attrs: AttributeSet? = null) : appIcon1.setBounds(0, 0, p.memberIconSize.toInt(), p.memberIconSize.toInt()) appIcon2.setBounds(0, 0, p.memberIconSize.toInt(), p.memberIconSize.toInt()) - val shouldDrawAsDisabled = - appPairInfo.isDisabled || !appPairInfo.isLaunchable(p.context) - - // Set disabled status on icons. - appIcon1.setIsDisabled(shouldDrawAsDisabled) - appIcon2.setIsDisabled(shouldDrawAsDisabled) - // Create icon drawable. val fullIconDrawable = AppPairIconDrawable(p, appIcon1, appIcon2) fullIconDrawable.setBounds(0, 0, p.iconSize, p.iconSize) - // Set disabled color filter on background paint. - fullIconDrawable.colorFilter = - if (shouldDrawAsDisabled) getDisabledColorFilter() else null - return fullIconDrawable } } diff --git a/src/com/android/launcher3/touch/ItemClickHandler.java b/src/com/android/launcher3/touch/ItemClickHandler.java index de24be7b8a..816d5e9f44 100644 --- a/src/com/android/launcher3/touch/ItemClickHandler.java +++ b/src/com/android/launcher3/touch/ItemClickHandler.java @@ -158,20 +158,27 @@ public class ItemClickHandler { ? R.string.app_pair_needs_unfold : R.string.app_pair_unlaunchable_at_screen_size, Toast.LENGTH_SHORT).show(); + return; } else if (appPairIcon.getInfo().isDisabled()) { WorkspaceItemInfo app1 = appPairIcon.getInfo().getFirstApp(); WorkspaceItemInfo app2 = appPairIcon.getInfo().getSecondApp(); // Show the user why the app pair is disabled. - if (app1.isDisabled() && !handleDisabledItemClicked(app1, launcher)) { - // If handleDisabledItemClicked() did not handle the error message, we initiate an - // app launch so Framework can tell the user why the app is suspended. - onClickAppShortcut(v, app1, launcher); - } else if (app2.isDisabled() && !handleDisabledItemClicked(app2, launcher)) { - onClickAppShortcut(v, app2, launcher); + if (app1.isDisabled() && app2.isDisabled()) { + // Both apps are disabled, show "app pair is not available" toast. + Toast.makeText(launcher, R.string.app_pair_not_available, Toast.LENGTH_SHORT) + .show(); + return; + } else if ((app1.isDisabled() && handleDisabledItemClicked(app1, launcher)) + || (app2.isDisabled() && handleDisabledItemClicked(app2, launcher))) { + // Only one is disabled, and handleDisabledItemClicked() will show a toast, so we + // are done. + return; } - } else { - launcher.launchAppPair(appPairIcon); } + + // Either the app pair is not disabled, or it is a disabled state that can be handled by + // framework directly (e.g. one app is paused), so go ahead and launch. + launcher.launchAppPair(appPairIcon); } /**