summaryrefslogtreecommitdiffstats
path: root/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/cyanogenmod/themes/provider/ThemePackageHelper.java')
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemePackageHelper.java50
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