diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2019-08-06 09:48:36 -0700 |
---|---|---|
committer | Alex Mang <alexmang@google.com> | 2019-08-14 22:12:49 +0000 |
commit | 934ebd087b90ad0afbb620f16c14843ea640cc3b (patch) | |
tree | bb17e955bb6fd373e17a98c14f495340d0d5a54b /iconloaderlib | |
parent | 22edac9bf5b2bde5555eab1b8bb0027f86935577 (diff) | |
download | android_packages_apps_Trebuchet-934ebd087b90ad0afbb620f16c14843ea640cc3b.tar.gz android_packages_apps_Trebuchet-934ebd087b90ad0afbb620f16c14843ea640cc3b.tar.bz2 android_packages_apps_Trebuchet-934ebd087b90ad0afbb620f16c14843ea640cc3b.zip |
Adding support for storing keywords in iconCache
Change-Id: I1183e63a6556ebfb3eee5df23d149e09728193a9
Merged-In: I1183e63a6556ebfb3eee5df23d149e09728193a9
(cherry picked from commit e529a86fbd2eaf7b13575af6b6adf0eb6e25e45c)
Diffstat (limited to 'iconloaderlib')
-rw-r--r-- | iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java | 91 | ||||
-rw-r--r-- | iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java | 11 |
2 files changed, 65 insertions, 37 deletions
diff --git a/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java b/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java index d84633d56..36d1c3ecc 100644 --- a/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java +++ b/iconloaderlib/src/com/android/launcher3/icons/cache/BaseIconCache.java @@ -36,12 +36,16 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Handler; +import android.os.LocaleList; import android.os.Looper; import android.os.Process; import android.os.UserHandle; import android.text.TextUtils; import android.util.Log; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.BitmapRenderer; @@ -57,8 +61,6 @@ import java.util.Map; import java.util.Set; import java.util.function.Supplier; -import androidx.annotation.NonNull; - public abstract class BaseIconCache { private static final String TAG = "BaseIconCache"; @@ -84,6 +86,7 @@ public abstract class BaseIconCache { protected int mIconDpi; protected IconDB mIconDb; + protected LocaleList mLocaleList = LocaleList.getEmptyLocaleList(); protected String mSystemState = ""; private final String mDbFileName; @@ -227,12 +230,12 @@ public abstract class BaseIconCache { /** * Refreshes the system state definition used to check the validity of the cache. It - * incorporates all the properties that can affect the cache like locale and system-version. + * incorporates all the properties that can affect the cache like the list of enabled locale + * and system-version. */ private void updateSystemState() { - final String locale = - mContext.getResources().getConfiguration().getLocales().toLanguageTags(); - mSystemState = locale + "," + Build.VERSION.SDK_INT; + mLocaleList = mContext.getResources().getConfiguration().getLocales(); + mSystemState = mLocaleList.toLanguageTags() + "," + Build.VERSION.SDK_INT; } protected String getIconSystemState(String packageName) { @@ -269,7 +272,7 @@ public abstract class BaseIconCache { mCache.put(key, entry); ContentValues values = newContentValues(entry, entry.title.toString(), - componentName.getPackageName()); + componentName.getPackageName(), cachingLogic.getKeywords(object, mLocaleList)); addIconToDB(values, componentName, info, userSerial); } @@ -445,7 +448,7 @@ public abstract class BaseIconCache { // Add the icon in the DB here, since these do not get written during // package updates. ContentValues values = newContentValues( - iconInfo, entry.title.toString(), packageName); + iconInfo, entry.title.toString(), packageName, null); addIconToDB(values, cacheKey.componentName, info, getSerialNumberForUser(user)); } catch (NameNotFoundException e) { @@ -504,23 +507,35 @@ public abstract class BaseIconCache { return false; } - static final class IconDB extends SQLiteCacheHelper { - private final static int RELEASE_VERSION = 26; - - public final static String TABLE_NAME = "icons"; - public final static String COLUMN_ROWID = "rowid"; - public final static String COLUMN_COMPONENT = "componentName"; - public final static String COLUMN_USER = "profileId"; - public final static String COLUMN_LAST_UPDATED = "lastUpdated"; - public final static String COLUMN_VERSION = "version"; - public final static String COLUMN_ICON = "icon"; - public final static String COLUMN_ICON_COLOR = "icon_color"; - public final static String COLUMN_LABEL = "label"; - public final static String COLUMN_SYSTEM_STATE = "system_state"; - - public final static String[] COLUMNS_HIGH_RES = new String[] { + /** + * Returns a cursor for an arbitrary query to the cache db + */ + public synchronized Cursor queryCacheDb(String[] columns, String selection, + String[] selectionArgs) { + return mIconDb.query(columns, selection, selectionArgs); + } + + /** + * Cache class to store the actual entries on disk + */ + public static final class IconDB extends SQLiteCacheHelper { + private static final int RELEASE_VERSION = 27; + + public static final String TABLE_NAME = "icons"; + public static final String COLUMN_ROWID = "rowid"; + public static final String COLUMN_COMPONENT = "componentName"; + public static final String COLUMN_USER = "profileId"; + public static final String COLUMN_LAST_UPDATED = "lastUpdated"; + public static final String COLUMN_VERSION = "version"; + public static final String COLUMN_ICON = "icon"; + public static final String COLUMN_ICON_COLOR = "icon_color"; + public static final String COLUMN_LABEL = "label"; + public static final String COLUMN_SYSTEM_STATE = "system_state"; + public static final String COLUMN_KEYWORDS = "keywords"; + + public static final String[] COLUMNS_HIGH_RES = new String[] { IconDB.COLUMN_ICON_COLOR, IconDB.COLUMN_LABEL, IconDB.COLUMN_ICON }; - public final static String[] COLUMNS_LOW_RES = new String[] { + public static final String[] COLUMNS_LOW_RES = new String[] { IconDB.COLUMN_ICON_COLOR, IconDB.COLUMN_LABEL }; public IconDB(Context context, String dbFileName, int iconPixelSize) { @@ -529,21 +544,23 @@ public abstract class BaseIconCache { @Override protected void onCreateTable(SQLiteDatabase db) { - db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + - COLUMN_COMPONENT + " TEXT NOT NULL, " + - COLUMN_USER + " INTEGER NOT NULL, " + - COLUMN_LAST_UPDATED + " INTEGER NOT NULL DEFAULT 0, " + - COLUMN_VERSION + " INTEGER NOT NULL DEFAULT 0, " + - COLUMN_ICON + " BLOB, " + - COLUMN_ICON_COLOR + " INTEGER NOT NULL DEFAULT 0, " + - COLUMN_LABEL + " TEXT, " + - COLUMN_SYSTEM_STATE + " TEXT, " + - "PRIMARY KEY (" + COLUMN_COMPONENT + ", " + COLUMN_USER + ") " + - ");"); + db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + + COLUMN_COMPONENT + " TEXT NOT NULL, " + + COLUMN_USER + " INTEGER NOT NULL, " + + COLUMN_LAST_UPDATED + " INTEGER NOT NULL DEFAULT 0, " + + COLUMN_VERSION + " INTEGER NOT NULL DEFAULT 0, " + + COLUMN_ICON + " BLOB, " + + COLUMN_ICON_COLOR + " INTEGER NOT NULL DEFAULT 0, " + + COLUMN_LABEL + " TEXT, " + + COLUMN_SYSTEM_STATE + " TEXT, " + + COLUMN_KEYWORDS + " TEXT, " + + "PRIMARY KEY (" + COLUMN_COMPONENT + ", " + COLUMN_USER + ") " + + ");"); } } - private ContentValues newContentValues(BitmapInfo bitmapInfo, String label, String packageName) { + private ContentValues newContentValues(BitmapInfo bitmapInfo, String label, + String packageName, @Nullable String keywords) { ContentValues values = new ContentValues(); values.put(IconDB.COLUMN_ICON, bitmapInfo.isLowRes() ? null : GraphicsUtils.flattenBitmap(bitmapInfo.icon)); @@ -551,7 +568,7 @@ public abstract class BaseIconCache { values.put(IconDB.COLUMN_LABEL, label); values.put(IconDB.COLUMN_SYSTEM_STATE, getIconSystemState(packageName)); - + values.put(IconDB.COLUMN_KEYWORDS, keywords); return values; } diff --git a/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java b/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java index addb51fa7..09f59b84c 100644 --- a/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java +++ b/iconloaderlib/src/com/android/launcher3/icons/cache/CachingLogic.java @@ -17,8 +17,11 @@ package com.android.launcher3.icons.cache; import android.content.ComponentName; import android.content.Context; +import android.os.LocaleList; import android.os.UserHandle; +import androidx.annotation.Nullable; + import com.android.launcher3.icons.BitmapInfo; public interface CachingLogic<T> { @@ -30,4 +33,12 @@ public interface CachingLogic<T> { CharSequence getLabel(T object); void loadIcon(Context context, T object, BitmapInfo target); + + /** + * Provides a option list of keywords to associate with this object + */ + @Nullable + default String getKeywords(T object, LocaleList localeList) { + return null; + } } |