diff options
author | Steven Ng <stevenckng@google.com> | 2021-06-29 15:10:17 +0100 |
---|---|---|
committer | Steven Ng <stevenckng@google.com> | 2021-06-29 18:04:09 +0100 |
commit | 12f7a59e5ccb4d287f6418607df33e1302c2a946 (patch) | |
tree | ddf37c43ffb3f8c581dad7a70ee0286c0b3ba287 | |
parent | bf60673bbbc08002688b14e1b856eec925895afd (diff) | |
download | Launcher3-12f7a59e5ccb4d287f6418607df33e1302c2a946.tar.gz |
Use category icon for pending conversation widgets
Fix: 192333050
Test: Manual
Change-Id: Ie3895cd4747f1bec1c8ca9af82347bb0eafa7415
4 files changed, 50 insertions, 8 deletions
diff --git a/go/src/com/android/launcher3/model/WidgetsModel.java b/go/src/com/android/launcher3/model/WidgetsModel.java index cc5e1cbb46..f8448daf3d 100644 --- a/go/src/com/android/launcher3/model/WidgetsModel.java +++ b/go/src/com/android/launcher3/model/WidgetsModel.java @@ -24,6 +24,7 @@ import androidx.annotation.Nullable; import com.android.launcher3.LauncherAppState; import com.android.launcher3.icons.ComponentWithLabelAndIcon; +import com.android.launcher3.model.data.PackageItemInfo; import com.android.launcher3.util.PackageUserKey; import com.android.launcher3.widget.model.WidgetsListBaseEntry; @@ -81,4 +82,9 @@ public class WidgetsModel { ComponentName providerName) { return null; } + + /** Returns {@link PackageItemInfo} of a pending widget. */ + public static PackageItemInfo newPendingItemInfo(ComponentName provider) { + return new PackageItemInfo(provider.getPackageName()); + } }
\ No newline at end of file diff --git a/src/com/android/launcher3/model/LoaderTask.java b/src/com/android/launcher3/model/LoaderTask.java index 318496ad19..ad2d7c281e 100644 --- a/src/com/android/launcher3/model/LoaderTask.java +++ b/src/com/android/launcher3/model/LoaderTask.java @@ -75,7 +75,6 @@ import com.android.launcher3.model.data.FolderInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.ItemInfoWithIcon; import com.android.launcher3.model.data.LauncherAppWidgetInfo; -import com.android.launcher3.model.data.PackageItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.pm.InstallSessionHelper; import com.android.launcher3.pm.PackageInstallInfo; @@ -791,8 +790,8 @@ public class LoaderTask implements Runnable { if (appWidgetInfo.restoreStatus != LauncherAppWidgetInfo.RESTORE_COMPLETED) { - String pkg = appWidgetInfo.providerName.getPackageName(); - appWidgetInfo.pendingItemInfo = new PackageItemInfo(pkg); + appWidgetInfo.pendingItemInfo = WidgetsModel.newPendingItemInfo( + appWidgetInfo.providerName); appWidgetInfo.pendingItemInfo.user = appWidgetInfo.user; mIconCache.getTitleAndIconForApp( appWidgetInfo.pendingItemInfo, false); diff --git a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java index 47a8914d2a..47f30be04f 100644 --- a/src/com/android/launcher3/widget/PendingAppWidgetHostView.java +++ b/src/com/android/launcher3/widget/PendingAppWidgetHostView.java @@ -17,6 +17,7 @@ package com.android.launcher3.widget; import static com.android.launcher3.graphics.PreloadIconDrawable.newPendingIcon; +import static com.android.launcher3.model.data.PackageItemInfo.CONVERSATIONS; import android.content.Context; import android.graphics.Canvas; @@ -35,6 +36,8 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.RemoteViews; +import androidx.annotation.Nullable; + import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.icons.FastBitmapDrawable; @@ -146,21 +149,32 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView mCenterDrawable = null; } if (info.bitmap.icon != null) { + Drawable widgetCategoryIcon = getWidgetCategoryIcon(); // The view displays three modes, // 1) App icon in the center // 2) Preload icon in the center // 3) App icon in the center with a setup icon on the top left corner. if (mDisabledForSafeMode) { - FastBitmapDrawable disabledIcon = info.newIcon(getContext()); - disabledIcon.setIsDisabled(true); - mCenterDrawable = disabledIcon; + if (widgetCategoryIcon == null) { + FastBitmapDrawable disabledIcon = info.newIcon(getContext()); + disabledIcon.setIsDisabled(true); + mCenterDrawable = disabledIcon; + } else { + widgetCategoryIcon.setColorFilter( + FastBitmapDrawable.getDisabledFColorFilter(/* disabledAlpha= */ 1f)); + mCenterDrawable = widgetCategoryIcon; + } mSettingIconDrawable = null; } else if (isReadyForClickSetup()) { - mCenterDrawable = info.newIcon(getContext()); + mCenterDrawable = widgetCategoryIcon == null + ? info.newIcon(getContext()) + : widgetCategoryIcon; mSettingIconDrawable = getResources().getDrawable(R.drawable.ic_setting).mutate(); updateSettingColor(info.bitmap.color); } else { - mCenterDrawable = newPendingIcon(getContext(), info); + mCenterDrawable = widgetCategoryIcon == null + ? newPendingIcon(getContext(), info) + : widgetCategoryIcon; mSettingIconDrawable = null; applyState(); } @@ -316,4 +330,19 @@ public class PendingAppWidgetHostView extends LauncherAppWidgetHostView } } + + /** + * Returns the widget category icon for {@link #mInfo}. + * + * <p>If {@link #mInfo}'s category is {@code PackageItemInfo#NO_CATEGORY} or unknown, returns + * {@code null}. + */ + @Nullable + private Drawable getWidgetCategoryIcon() { + switch (mInfo.pendingItemInfo.category) { + case CONVERSATIONS: + return getContext().getDrawable(R.drawable.ic_conversations_widget_category); + } + return null; + } } diff --git a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java index a66b031719..631067b929 100644 --- a/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java +++ b/src_shortcuts_overrides/com/android/launcher3/model/WidgetsModel.java @@ -225,6 +225,14 @@ public class WidgetsModel { return null; } + /** Returns {@link PackageItemInfo} of a pending widget. */ + public static PackageItemInfo newPendingItemInfo(ComponentName provider) { + if (CONVERSATION_WIDGET.equals(provider)) { + return new PackageItemInfo(provider.getPackageName(), PackageItemInfo.CONVERSATIONS); + } + return new PackageItemInfo(provider.getPackageName()); + } + private WidgetPackageOrCategoryKey getWidgetPackageOrCategoryKey(WidgetItem item) { if (CONVERSATION_WIDGET.equals(item.componentName)) { return new WidgetPackageOrCategoryKey(PackageItemInfo.CONVERSATIONS, item.user); |