summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authord34d <clark@cyngn.com>2015-04-23 09:16:29 -0700
committerd34d <clark@cyngn.com>2015-04-23 09:16:29 -0700
commit51ac3404940c161a88382fdf833925a0382a4bf4 (patch)
treec182a4284784ee4633364fdea6bda9c73b66319d
parente989ef7492ce30022d004c9c34f86770078bc164 (diff)
downloadandroid_packages_providers_ThemesProvider-51ac3404940c161a88382fdf833925a0382a4bf4.tar.gz
android_packages_providers_ThemesProvider-51ac3404940c161a88382fdf833925a0382a4bf4.tar.bz2
android_packages_providers_ThemesProvider-51ac3404940c161a88382fdf833925a0382a4bf4.zip
Don't assume all default components come from one package
When uninstalling a theme, we check for any components that may have been applied from that theme and change them back to the default. It is possible the default theme does not have all the components that need to be returned to defaults which causes the mixnmatch table to be out of sync. This patch uses the default components map to correctly set the components to the correct default, which can include components from System theme. Change-Id: I78cbe874110d32998969b56dd9076f1439e61664 REF: LETTUCE-245
-rw-r--r--src/org/cyanogenmod/themes/provider/ThemePackageHelper.java8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java b/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
index 8a20a61..93d1d58 100644
--- a/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
+++ b/src/org/cyanogenmod/themes/provider/ThemePackageHelper.java
@@ -230,7 +230,7 @@ public class ThemePackageHelper {
// 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
ThemeChangeRequest.Builder builder = new ThemeChangeRequest.Builder();
- String defaultPkgName = ThemeUtils.getDefaultThemePackageName(context);
+ Map<String, String> defaultComponents = ThemeUtils.getDefaultComponents(context);
Cursor mixnmatch = context.getContentResolver().query(MixnMatchColumns.CONTENT_URI, null,
null, null, null);
@@ -241,7 +241,7 @@ public class ThemePackageHelper {
.mixNMatchKeyToComponent(mixnmatchKey);
String pkg = mixnmatch.getString(mixnmatch.getColumnIndex(MixnMatchColumns.COL_VALUE));
if (pkgToRemove.equals(pkg)) {
- builder.setComponent(component, defaultPkgName);
+ builder.setComponent(component, defaultComponents.get(component));
}
}
@@ -250,10 +250,12 @@ public class ThemePackageHelper {
final ThemeConfig themeConfig = config != null ? config.themeConfig : null;
if (themeConfig != null) {
final Map<String, ThemeConfig.AppTheme> themes = themeConfig.getAppThemes();
+ final String defaultOverlayPkgName
+ = defaultComponents.get(ThemesColumns.MODIFIES_OVERLAYS);
for (String appPkgName : themes.keySet()) {
if (ThemeUtils.isPerAppThemeComponent(appPkgName) &&
pkgToRemove.equals(themes.get(appPkgName).getOverlayPkgName())) {
- builder.setAppOverlay(appPkgName, defaultPkgName);
+ builder.setAppOverlay(appPkgName, defaultOverlayPkgName);
}
}
}