diff options
-rw-r--r-- | src/org/cyanogenmod/theme/chooser/ChooserDetailFragment.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/org/cyanogenmod/theme/chooser/ChooserDetailFragment.java b/src/org/cyanogenmod/theme/chooser/ChooserDetailFragment.java index d217eb6..db6af82 100644 --- a/src/org/cyanogenmod/theme/chooser/ChooserDetailFragment.java +++ b/src/org/cyanogenmod/theme/chooser/ChooserDetailFragment.java @@ -101,6 +101,7 @@ public class ChooserDetailFragment extends Fragment implements LoaderManager.Loa private boolean mLoadInitialCheckboxStates = true; private SparseArray<Boolean> mInitialCheckboxStates = new SparseArray<Boolean>(); private SparseArray<Boolean> mCurrentCheckboxStates = new SparseArray<Boolean>(); + private SparseArray<Boolean> mSavedCheckboxStates = new SparseArray<Boolean>(); // allows emphasis on a particular aspect of a theme. ex "mods_icons" would // uncheck all components but icons and sets the first preview image to be the icon pack @@ -187,6 +188,10 @@ public class ChooserDetailFragment extends Fragment implements LoaderManager.Loa CheckBox componentCheckbox = (CheckBox) v.findViewById(entry.getValue()); mComponentToCheckbox.put(entry.getKey(), componentCheckbox); componentCheckbox.setOnCheckedChangeListener(mComponentCheckChangedListener); + if (savedInstanceState != null) { + mSavedCheckboxStates.put(entry.getValue(), + savedInstanceState.getBoolean(entry.getKey())); + } } getLoaderManager().initLoader(LOADER_ID_THEME_INFO, null, this); @@ -195,6 +200,16 @@ public class ChooserDetailFragment extends Fragment implements LoaderManager.Loa return v; } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + for (Map.Entry<String, CheckBox> entry : mComponentToCheckbox.entrySet()) { + String component = entry.getKey(); + CheckBox checkBox = entry.getValue(); + outState.putBoolean(component, checkBox.isChecked()); + } + } + private List<String> getCheckedComponents() { // Get all checked components List<String> components = new ArrayList<String>(); @@ -421,7 +436,13 @@ public class ChooserDetailFragment extends Fragment implements LoaderManager.Loa CheckBox componentCheckbox = entry.getValue(); if (appliedComponents.contains(componentName)) { - componentCheckbox.setChecked(true); + if (mSavedCheckboxStates.size() > 0 && + mSavedCheckboxStates.get(componentCheckbox.getId()) != null) { + componentCheckbox.setChecked(mSavedCheckboxStates.get( + componentCheckbox.getId())); + } else { + componentCheckbox.setChecked(true); + } } if (mLoadInitialCheckboxStates) { mInitialCheckboxStates.put(componentCheckbox.getId(), |