diff options
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/AppInfo.java | 8 | ||||
-rw-r--r-- | src/com/android/launcher3/ShortcutInfo.java | 14 | ||||
-rw-r--r-- | src/com/android/launcher3/util/ManagedProfileHeuristic.java | 51 |
3 files changed, 32 insertions, 41 deletions
diff --git a/src/com/android/launcher3/AppInfo.java b/src/com/android/launcher3/AppInfo.java index 7249c6406..1923df76a 100644 --- a/src/com/android/launcher3/AppInfo.java +++ b/src/com/android/launcher3/AppInfo.java @@ -49,11 +49,6 @@ public class AppInfo extends ItemInfo { */ boolean usingLowResIcon; - /** - * The time at which the app was first installed. - */ - long firstInstallTime; - public ComponentName componentName; static final int DOWNLOADED_FLAG = 1; @@ -82,7 +77,6 @@ public class AppInfo extends ItemInfo { this.container = ItemInfo.NO_ID; flags = initFlags(info); - firstInstallTime = info.getFirstInstallTime(); iconCache.getTitleAndIcon(this, info, true /* useLowResIcon */); intent = makeLaunchIntent(context, info, user); this.user = user; @@ -107,7 +101,6 @@ public class AppInfo extends ItemInfo { title = Utilities.trim(info.title); intent = new Intent(info.intent); flags = info.flags; - firstInstallTime = info.firstInstallTime; iconBitmap = info.iconBitmap; } @@ -126,7 +119,6 @@ public class AppInfo extends ItemInfo { Log.d(tag, label + " size=" + list.size()); for (AppInfo info: list) { Log.d(tag, " title=\"" + info.title + "\" iconBitmap=" + info.iconBitmap - + " firstInstallTime=" + info.firstInstallTime + " componentName=" + info.componentName.getPackageName()); } } diff --git a/src/com/android/launcher3/ShortcutInfo.java b/src/com/android/launcher3/ShortcutInfo.java index db0f84591..baa3cd02c 100644 --- a/src/com/android/launcher3/ShortcutInfo.java +++ b/src/com/android/launcher3/ShortcutInfo.java @@ -51,7 +51,7 @@ public class ShortcutInfo extends ItemInfo { public static final int FLAG_AUTOINTALL_ICON = 2; //0B10; /** - * The icon is being installed. If {@link FLAG_RESTORED_ICON} or {@link FLAG_AUTOINTALL_ICON} + * The icon is being installed. If {@link #FLAG_RESTORED_ICON} or {@link #FLAG_AUTOINTALL_ICON} * is set, then the icon is either being installed or is in a broken state. */ public static final int FLAG_INSTALL_SESSION_ACTIVE = 4; // 0B100; @@ -125,19 +125,14 @@ public class ShortcutInfo extends ItemInfo { private int mInstallProgress; /** - * Refer {@link AppInfo#firstInstallTime}. - */ - public long firstInstallTime; - - /** - * TODO move this to {@link status} + * TODO move this to {@link #status} */ int flags = 0; /** * If this shortcut is a placeholder, then intent will be a market intent for the package, and * this will hold the original intent from the database. Otherwise, null. - * Refer {@link #FLAG_RESTORE_PENDING}, {@link #FLAG_INSTALL_PENDING} + * Refer {@link #FLAG_RESTORED_ICON}, {@link #FLAG_AUTOINTALL_ICON} */ Intent promisedIntent; @@ -171,7 +166,6 @@ public class ShortcutInfo extends ItemInfo { mIcon = info.mIcon; // TODO: should make a copy here. maybe we don't need this ctor at all customIcon = info.customIcon; flags = info.flags; - firstInstallTime = info.firstInstallTime; user = info.user; status = info.status; } @@ -183,7 +177,6 @@ public class ShortcutInfo extends ItemInfo { intent = new Intent(info.intent); customIcon = false; flags = info.flags; - firstInstallTime = info.firstInstallTime; } public void setIcon(Bitmap b) { @@ -283,7 +276,6 @@ public class ShortcutInfo extends ItemInfo { shortcut.intent = AppInfo.makeLaunchIntent(context, info, info.getUser()); shortcut.itemType = LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; shortcut.flags = AppInfo.initFlags(info); - shortcut.firstInstallTime = info.getFirstInstallTime(); return shortcut; } } diff --git a/src/com/android/launcher3/util/ManagedProfileHeuristic.java b/src/com/android/launcher3/util/ManagedProfileHeuristic.java index 849b05c0a..fb9bbb29c 100644 --- a/src/com/android/launcher3/util/ManagedProfileHeuristic.java +++ b/src/com/android/launcher3/util/ManagedProfileHeuristic.java @@ -42,6 +42,7 @@ import com.android.launcher3.compat.UserManagerCompat; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -85,6 +86,7 @@ public class ManagedProfileHeuristic { private ArrayList<ShortcutInfo> mHomescreenApps; private ArrayList<ShortcutInfo> mWorkFolderApps; + private HashMap<ShortcutInfo, Long> mShortcutToInstallTimeMap; private ManagedProfileHeuristic(Context context, UserHandleCompat user) { mContext = context; @@ -100,32 +102,29 @@ public class ManagedProfileHeuristic { Context.MODE_PRIVATE); } + private void initVars() { + mHomescreenApps = new ArrayList<>(); + mWorkFolderApps = new ArrayList<>(); + mShortcutToInstallTimeMap = new HashMap<>(); + } + /** * Checks the list of user apps and adds icons for newly installed apps on the homescreen or * workfolder. */ public void processUserApps(List<LauncherActivityInfoCompat> apps) { - mHomescreenApps = new ArrayList<>(); - mWorkFolderApps = new ArrayList<>(); + initVars(); HashSet<String> packageSet = new HashSet<>(); final boolean userAppsExisted = getUserApps(packageSet); boolean newPackageAdded = false; - for (LauncherActivityInfoCompat info : apps) { String packageName = info.getComponentName().getPackageName(); if (!packageSet.contains(packageName)) { packageSet.add(packageName); newPackageAdded = true; - - try { - PackageInfo pkgInfo = mContext.getPackageManager() - .getPackageInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES); - markForAddition(info, pkgInfo.firstInstallTime); - } catch (NameNotFoundException e) { - Log.e(TAG, "Unknown package " + packageName, e); - } + markForAddition(info, info.getFirstInstallTime()); } } @@ -142,7 +141,22 @@ public class ManagedProfileHeuristic { ArrayList<ShortcutInfo> targetList = (installTime <= mUserCreationTime + AUTO_ADD_TO_FOLDER_DURATION) ? mWorkFolderApps : mHomescreenApps; - targetList.add(ShortcutInfo.fromActivityInfo(info, mContext)); + ShortcutInfo si = ShortcutInfo.fromActivityInfo(info, mContext); + mShortcutToInstallTimeMap.put(si, installTime); + targetList.add(si); + } + + private void sortList(ArrayList<ShortcutInfo> infos) { + Collections.sort(infos, new Comparator<ShortcutInfo>() { + + @Override + public int compare(ShortcutInfo lhs, ShortcutInfo rhs) { + Long lhsTime = mShortcutToInstallTimeMap.get(lhs); + Long rhsTime = mShortcutToInstallTimeMap.get(rhs); + return Utilities.longCompare(lhsTime == null ? 0 : lhsTime, + rhsTime == null ? 0 : rhsTime); + } + }); } /** @@ -152,13 +166,7 @@ public class ManagedProfileHeuristic { if (mWorkFolderApps.isEmpty()) { return; } - Collections.sort(mWorkFolderApps, new Comparator<ShortcutInfo>() { - - @Override - public int compare(ShortcutInfo lhs, ShortcutInfo rhs) { - return Utilities.longCompare(lhs.firstInstallTime, rhs.firstInstallTime); - } - }); + sortList(mWorkFolderApps); // Try to get a work folder. String folderIdKey = USER_FOLDER_ID_PREFIX + mUserSerial; @@ -222,6 +230,7 @@ public class ManagedProfileHeuristic { finalizeWorkFolder(); if (addHomeScreenShortcuts && !mHomescreenApps.isEmpty()) { + sortList(mHomescreenApps); mModel.addAndBindAddedWorkspaceItems(mContext, mHomescreenApps); } } @@ -230,9 +239,7 @@ public class ManagedProfileHeuristic { * Updates the list of installed apps and adds any new icons on homescreen or work folder. */ public void processPackageAdd(String[] packages) { - mHomescreenApps = new ArrayList<>(); - mWorkFolderApps = new ArrayList<>(); - + initVars(); HashSet<String> packageSet = new HashSet<>(); final boolean userAppsExisted = getUserApps(packageSet); |