diff options
Diffstat (limited to 'src/com/cyngn/theme/chooser/ThemeFragment.java')
-rw-r--r-- | src/com/cyngn/theme/chooser/ThemeFragment.java | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/src/com/cyngn/theme/chooser/ThemeFragment.java b/src/com/cyngn/theme/chooser/ThemeFragment.java index 5f1e8ac..6812c43 100644 --- a/src/com/cyngn/theme/chooser/ThemeFragment.java +++ b/src/com/cyngn/theme/chooser/ThemeFragment.java @@ -884,9 +884,9 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb content.setPadding(leftRightPadding, 0, leftRightPadding, 0); if (applyTheme) { - final boolean changed = componentsChanged(); - mThemeTagLayout.setCustomizedTagEnabled(changed); - mReset.setVisibility(changed ? View.VISIBLE : View.GONE); + final boolean customized = isThemeCustomized(); + mThemeTagLayout.setCustomizedTagEnabled(customized); + mReset.setVisibility(customized ? View.VISIBLE : View.GONE); } //Move the theme preview so that it is near the center of page per spec @@ -2207,7 +2207,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb Map<String, String> originalMap) { HashMap newMap = new HashMap<String, String>(); newMap.putAll(originalMap); - Map<String, String> defaultMap = ThemeUtils.getDefaultComponents(getActivity()); + Map<String, String> defaultMap = getEmptyComponentsMap(); for(Map.Entry<String, String> entry : defaultMap.entrySet()) { String component = entry.getKey(); String defaultPkg = entry.getValue(); @@ -2218,6 +2218,15 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb return newMap; } + protected Map<String, String> getEmptyComponentsMap() { + List<String> componentsList = ThemeUtils.getAllComponents(); + Map<String, String> defaultMap = new HashMap<>(componentsList.size()); + for (String component : componentsList) { + defaultMap.put(component, ""); + } + return defaultMap; + } + /** * This is the method that will be called when applying a theme and the idea is to override * it in MyThemeFragment and pass in a different RequestType, once we have a type that indicates @@ -2731,6 +2740,25 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb return false; } + protected boolean isThemeCustomized() { + final String themePkgName = getThemePackageName(); + for (String key : mSelectedComponentsMap.keySet()) { + final String selectedPkgName = mSelectedComponentsMap.get(key); + if (!themePkgName.equals(selectedPkgName)) { + return true; + } + if (mBaseThemeSupportedComponents.size() > 0 && + !mBaseThemeSupportedComponents.contains(key)) { + return true; + } + } + // finally check if we're missing anything from mBaseThemeSupportedComponents + for (String component : mBaseThemeSupportedComponents) { + if (!mSelectedComponentsMap.containsKey(component)) return true; + } + return false; + } + public void clearChanges() { mSelectedComponentsMap.clear(); mExternalWallpaperUri = null; |