diff options
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemePackageHelper.java')
-rw-r--r-- | src/org/cyanogenmod/themes/provider/ThemePackageHelper.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java b/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java index 7a6fe42..bc367e0 100644 --- a/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java +++ b/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java @@ -19,6 +19,7 @@ import android.content.ContentValues; import android.content.Context; import android.content.pm.LegacyThemeInfo; import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.ThemeInfo; import android.content.res.AssetManager; @@ -68,6 +69,11 @@ public class ThemePackageHelper { insertPackageInternal(context, pi, capabilities); } else if (pi.legacyThemeInfos != null && pi.legacyThemeInfos.length > 0) { insertLegacyPackageInternal(context, pi, capabilities); + } else if (pi.isLegacyIconPackApk){ + // We must be here because it is a legacy icon pack + capabilities = new HashMap<String, Boolean>(); + capabilities.put(ThemesColumns.MODIFIES_ICONS, true); + insertLegacyIconPackInternal(context, pi, capabilities); } return true; } @@ -119,6 +125,30 @@ public class ThemePackageHelper { context.getContentResolver().insert(ThemesColumns.CONTENT_URI, values); } + private static void insertLegacyIconPackInternal(Context context, PackageInfo pi, + Map<String, Boolean> capabilities) { + PackageManager pm = context.getPackageManager(); + CharSequence labelName = pm.getApplicationLabel(pi.applicationInfo); + if (labelName == null) labelName = context.getString(R.string.unknown_app_name); + + ContentValues values = new ContentValues(); + values.put(ThemesColumns.PKG_NAME, pi.packageName); + values.put(ThemesColumns.TITLE, labelName.toString()); + values.put(ThemesColumns.AUTHOR, ""); + values.put(ThemesColumns.DATE_CREATED, System.currentTimeMillis()); + values.put(ThemesColumns.LAST_UPDATE_TIME, pi.lastUpdateTime); + values.put(ThemesColumns.IS_LEGACY_ICONPACK, 1); + + // Insert theme capabilities + for (Map.Entry<String, Boolean> entry : capabilities.entrySet()) { + String component = entry.getKey(); + Boolean isImplemented = entry.getValue(); + values.put(component, isImplemented); + } + + context.getContentResolver().insert(ThemesColumns.CONTENT_URI, values); + } + public static void updatePackage(Context context, String pkgName) throws NameNotFoundException { PackageInfo pi = context.getPackageManager().getPackageInfo(pkgName, 0); Map<String, Boolean> capabilities = getCapabilities(context, pkgName); @@ -126,6 +156,8 @@ public class ThemePackageHelper { updatePackageInternal(context, pi, capabilities); } else if (pi.legacyThemeInfos != null && pi.legacyThemeInfos.length > 0) { updateLegacyPackageInternal(context, pi, capabilities); + } else if (pi.isLegacyIconPackApk) { + updateLegacyIconPackInternal(context, pi, capabilities); } } @@ -164,6 +196,24 @@ public class ThemePackageHelper { context.getContentResolver().update(ThemesColumns.CONTENT_URI, values, where, args); } + private static void updateLegacyIconPackInternal(Context context, PackageInfo pi, + Map<String, Boolean> capabilities) { + PackageManager pm = context.getPackageManager(); + CharSequence labelName = pm.getApplicationLabel(pi.applicationInfo); + if (labelName == null) labelName = context.getString(R.string.unknown_app_name); + + boolean isPresentableTheme = ThemePackageHelper.isPresentableTheme(capabilities); + ContentValues values = new ContentValues(); + values.put(ThemesColumns.PKG_NAME, pi.packageName); + values.put(ThemesColumns.TITLE, labelName.toString()); + values.put(ThemesColumns.DATE_CREATED, System.currentTimeMillis()); + values.put(ThemesColumns.LAST_UPDATE_TIME, pi.lastUpdateTime); + + String where = ThemesColumns.PKG_NAME + "=?"; + String[] args = { pi.packageName }; + context.getContentResolver().update(ThemesColumns.CONTENT_URI, values, where, args); + } + public static void removePackage(Context context, String pkgToRemove) { // Check currently applied components (fonts, wallpapers etc) and verify the theme is still // installed if it is not installed, we need to set the component back to the default theme |