summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMario Bertschler <bmario@google.com>2018-01-12 10:23:16 -0800
committerMario Bertschler <bmario@google.com>2018-01-16 11:29:34 -0800
commit7662a3e917f87a00c89177137d733b978dd8851a (patch)
tree83e7c757040b640bc88ba9dc4c756af453269f97
parentcf9f8d71f5576f80ab38a371cdae0211a9e9780b (diff)
downloadandroid_packages_apps_Trebuchet-7662a3e917f87a00c89177137d733b978dd8851a.tar.gz
android_packages_apps_Trebuchet-7662a3e917f87a00c89177137d733b978dd8851a.tar.bz2
android_packages_apps_Trebuchet-7662a3e917f87a00c89177137d733b978dd8851a.zip
Enabling to retrieve a badge-package as an extra in ShortcutInfoCompat for
whitelisted package. > badging respects the badge-package extra Change-Id: I4e06cd497dff91949f8b0a42c7f3d5aaa724c038
-rw-r--r--res/values/config.xml3
-rw-r--r--src/com/android/launcher3/dragndrop/DragView.java6
-rw-r--r--src/com/android/launcher3/graphics/LauncherIcons.java9
-rw-r--r--src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java14
4 files changed, 24 insertions, 8 deletions
diff --git a/res/values/config.xml b/res/values/config.xml
index f48d47406..209620038 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -101,6 +101,9 @@
<!-- Package name of the default wallpaper picker. -->
<string name="wallpaper_picker_package" translatable="false"></string>
+ <!-- Whitelisted package to retrieve packagename for badge. Can be empty. -->
+ <string name="shortcutinfocompat_badgepkg_whitelist" translatable="false"></string>
+
<!-- View ID to use for QSB widget -->
<item type="id" name="qsb_widget" />
diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java
index 973226117..a59b8996b 100644
--- a/src/com/android/launcher3/dragndrop/DragView.java
+++ b/src/com/android/launcher3/dragndrop/DragView.java
@@ -369,9 +369,9 @@ public class DragView extends View {
return new FixedSizeEmptyDrawable(iconSize);
}
ShortcutInfoCompat si = (ShortcutInfoCompat) obj;
- Bitmap badge = LauncherIcons.getShortcutInfoBadge(si, appState.getIconCache())
- .iconBitmap;
-
+ LauncherIcons li = LauncherIcons.obtain(appState.getContext());
+ Bitmap badge = li.getShortcutInfoBadge(si, appState.getIconCache()).iconBitmap;
+ li.recycle();
float badgeSize = mLauncher.getResources().getDimension(R.dimen.profile_badge_size);
float insetFraction = (iconSize - badgeSize) / iconSize;
return new InsetDrawable(new FastBitmapDrawable(badge),
diff --git a/src/com/android/launcher3/graphics/LauncherIcons.java b/src/com/android/launcher3/graphics/LauncherIcons.java
index 0c9f4d9f0..34fc921a6 100644
--- a/src/com/android/launcher3/graphics/LauncherIcons.java
+++ b/src/com/android/launcher3/graphics/LauncherIcons.java
@@ -356,10 +356,11 @@ public class LauncherIcons implements AutoCloseable {
return result;
}
- public static ItemInfoWithIcon getShortcutInfoBadge(
- ShortcutInfoCompat shortcutInfo, IconCache cache) {
+ public ItemInfoWithIcon getShortcutInfoBadge(ShortcutInfoCompat shortcutInfo, IconCache cache) {
ComponentName cn = shortcutInfo.getActivity();
- if (cn != null) {
+ String badgePkg = shortcutInfo.getBadgePackage(mContext);
+ boolean hasBadgePkgSet = !badgePkg.equals(shortcutInfo.getPackage());
+ if (cn != null && !hasBadgePkgSet) {
// Get the app info for the source activity.
AppInfo appInfo = new AppInfo();
appInfo.user = shortcutInfo.getUserHandle();
@@ -370,7 +371,7 @@ public class LauncherIcons implements AutoCloseable {
cache.getTitleAndIcon(appInfo, false);
return appInfo;
} else {
- PackageItemInfo pkgInfo = new PackageItemInfo(shortcutInfo.getPackage());
+ PackageItemInfo pkgInfo = new PackageItemInfo(badgePkg);
cache.getTitleAndIconForApp(pkgInfo, false);
return pkgInfo;
}
diff --git a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java
index 9c91c87b2..325777d7f 100644
--- a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java
+++ b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java
@@ -18,11 +18,14 @@ package com.android.launcher3.shortcuts;
import android.annotation.TargetApi;
import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.os.Build;
import android.os.UserHandle;
+import com.android.launcher3.R;
+
/**
* Wrapper class for {@link android.content.pm.ShortcutInfo}, representing deep shortcuts into apps.
*
@@ -31,8 +34,8 @@ import android.os.UserHandle;
@TargetApi(Build.VERSION_CODES.N)
public class ShortcutInfoCompat {
private static final String INTENT_CATEGORY = "com.android.launcher3.DEEP_SHORTCUT";
+ private static final String EXTRA_BADGEPKG = "badge_package";
public static final String EXTRA_SHORTCUT_ID = "shortcut_id";
-
private ShortcutInfo mShortcutInfo;
public ShortcutInfoCompat(ShortcutInfo shortcutInfo) {
@@ -57,6 +60,15 @@ public class ShortcutInfoCompat {
return mShortcutInfo.getPackage();
}
+ public String getBadgePackage(Context context) {
+ String whitelistedPkg = context.getString(R.string.shortcutinfocompat_badgepkg_whitelist);
+ if (whitelistedPkg.equals(getPackage())
+ && mShortcutInfo.getExtras().containsKey(EXTRA_BADGEPKG)) {
+ return mShortcutInfo.getExtras().getString(EXTRA_BADGEPKG);
+ }
+ return getPackage();
+ }
+
public String getId() {
return mShortcutInfo.getId();
}