diff options
author | Clark Scheff <clark@cyngn.com> | 2014-08-14 13:13:04 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2014-08-14 13:13:04 -0700 |
commit | 953efda32a778054740d2f71d8905f23f67bc7d5 (patch) | |
tree | a1b71739678a18caa4266c1cafb5a34a9d024462 | |
parent | cbac0b24090917aa07ed8f08211bb731b378a195 (diff) | |
download | packages_apps_ThemeChooser-953efda32a778054740d2f71d8905f23f67bc7d5.tar.gz packages_apps_ThemeChooser-953efda32a778054740d2f71d8905f23f67bc7d5.tar.bz2 packages_apps_ThemeChooser-953efda32a778054740d2f71d8905f23f67bc7d5.zip |
Allow the user to reset their customized theme
This makes it possible for the user to select "Reset theme" and
have their customizations revertted.
Change-Id: I1c12630e67ae68026d78bfdd3acc9508875c772a
-rw-r--r-- | res/menu/overflow.xml | 4 | ||||
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/com/cyngn/theme/chooser/MyThemeFragment.java | 36 | ||||
-rw-r--r-- | src/com/cyngn/theme/chooser/ThemeFragment.java | 47 | ||||
-rw-r--r-- | src/com/cyngn/theme/widget/ThemeTagLayout.java | 4 |
5 files changed, 73 insertions, 19 deletions
diff --git a/res/menu/overflow.xml b/res/menu/overflow.xml index ce8e56d..cc438c5 100644 --- a/res/menu/overflow.xml +++ b/res/menu/overflow.xml @@ -4,6 +4,8 @@ <item android:id="@+id/menu_delete" android:title="@string/menu_delete"/> <item android:id="@+id/menu_author" - android:title="@string/menu_author_info"/> + android:title="@string/menu_author_info"/> + <item android:id="@+id/menu_reset" + android:title="@string/menu_reset"/> </group> </menu>
\ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index 1bc0040..88c26f3 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -50,6 +50,7 @@ <string name="menu_author_info">Author</string> <string name="menu_delete">Delete</string> + <string name="menu_reset">Reset theme</string> <string name="shop_themes">Shop themes</string> <string name="themes_showcase_link">https://play.google.com/store/apps/details?id=com.cyngn.theme.store</string> diff --git a/src/com/cyngn/theme/chooser/MyThemeFragment.java b/src/com/cyngn/theme/chooser/MyThemeFragment.java index 71d3578..8cb1732 100644 --- a/src/com/cyngn/theme/chooser/MyThemeFragment.java +++ b/src/com/cyngn/theme/chooser/MyThemeFragment.java @@ -23,6 +23,7 @@ import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.util.Log; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -107,11 +108,36 @@ public class MyThemeFragment extends ThemeFragment { } @Override + protected boolean onPopupMenuItemClick(MenuItem item) { + switch(item.getItemId()) { + case R.id.menu_reset: + resetTheme(); + return true; + } + + return super.onPopupMenuItemClick(item); + } + + private void resetTheme() { + mSelectedComponentsMap.clear(); + Bundle args = new Bundle(); + args.putString("pkgName", mBaseThemePkgName); + getLoaderManager().restartLoader(LOADER_ID_ALL, args, this); + mThemeResetting = true; + } + + @Override public Loader<Cursor> onCreateLoader(int id, Bundle args) { Uri uri; String[] projection; switch (id) { case LOADER_ID_ALL: + if (args != null) { + String pkgName = args.getString("pkgName"); + if (pkgName != null) { + return super.onCreateLoader(id, args); + } + } projection = new String[]{ PreviewColumns.WALLPAPER_PREVIEW, PreviewColumns.STATUSBAR_BACKGROUND, @@ -142,6 +168,16 @@ public class MyThemeFragment extends ThemeFragment { } @Override + public void onLoadFinished(Loader<Cursor> loader, Cursor c) { + super.onLoadFinished(loader, c); + // if the theme is resetting, we need to apply these changes now that the supported + // theme components have been properly set. + if (mThemeResetting && loader.getId() == LOADER_ID_ALL) { + applyTheme(); + } + } + + @Override protected void populateSupportedComponents(Cursor c) { } diff --git a/src/com/cyngn/theme/chooser/ThemeFragment.java b/src/com/cyngn/theme/chooser/ThemeFragment.java index 9c53152..e506d90 100644 --- a/src/com/cyngn/theme/chooser/ThemeFragment.java +++ b/src/com/cyngn/theme/chooser/ThemeFragment.java @@ -233,6 +233,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb protected Map<String, String> mCurrentTheme = new HashMap<String, String>(); protected Cursor mCurrentCursor; protected int mCurrentLoaderId; + protected boolean mThemeResetting; protected View mApplyThemeLayout; protected View mApplyButton; @@ -292,6 +293,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb mScrollContent = (ViewGroup) mScrollView.getChildAt(0); mPreviewContent = (ViewGroup) v.findViewById(R.id.preview_container); mLoadingView = v.findViewById(R.id.loading_view); + mThemeTagLayout = (ThemeTagLayout) v.findViewById(R.id.tag_layout); // Status Bar mStatusBarCard = (ComponentCardView) v.findViewById(R.id.status_bar_container); @@ -340,28 +342,20 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb PopupMenu popupmenu = new PopupMenu(getActivity(), mTitleCard, Gravity.END); popupmenu.getMenuInflater().inflate(R.menu.overflow, popupmenu.getMenu()); + Menu menu = popupmenu.getMenu(); if (CURRENTLY_APPLIED_THEME.equals(mPkgName) || mPkgName.equals(ThemeUtils.getDefaultThemePackageName(getActivity())) || mPkgName.equals(ThemeConfig.HOLO_DEFAULT)) { - Menu menu = popupmenu.getMenu(); menu.findItem(R.id.menu_delete).setEnabled(false); } + if (!mThemeTagLayout.isCustomizedTagEnabled()) { + menu.findItem(R.id.menu_reset).setVisible(false); + } popupmenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { - switch(item.getItemId()) { - case R.id.menu_author: - Toast.makeText(getActivity(), - "Not supported", - Toast.LENGTH_LONG).show(); - break; - case R.id.menu_delete: - uninstallTheme(); - break; - } - - return true; + return onPopupMenuItemClick(item); } }); popupmenu.show(); @@ -390,8 +384,6 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb mCancelButton = mApplyThemeLayout.findViewById(R.id.apply_cancel); mCancelButton.setOnClickListener(mApplyCancelClickListener); - mThemeTagLayout = (ThemeTagLayout) v.findViewById(R.id.tag_layout); - if (mPkgName.equals(ThemeUtils.getDefaultThemePackageName(getActivity()))) { mThemeTagLayout.setDefaultTagEnabled(true); } @@ -456,6 +448,21 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb } } + protected boolean onPopupMenuItemClick(MenuItem item) { + switch(item.getItemId()) { + case R.id.menu_author: + Toast.makeText(getActivity(), + "Not supported", + Toast.LENGTH_LONG).show(); + break; + case R.id.menu_delete: + uninstallTheme(); + break; + } + + return true; + } + public void expand() { if (mCurrentLoaderId == LOADER_ID_ALL && mCurrentCursor != null) { loadAndRemoveAdditionalCards(mCurrentCursor); @@ -1757,7 +1764,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb } }; - private void applyTheme() { + protected void applyTheme() { if (mSelectedComponentsMap == null || mSelectedComponentsMap.size() <= 0) return; ((ChooserActivity) getActivity()).themeChangeStarted(); animateProgressIn(mApplyThemeRunnable); @@ -1773,7 +1780,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb scaleAnim.setDuration(ANIMATE_PROGRESS_IN_DURATION); mTitleLayout.animate() - .translationXBy(-(pivotX / 4)) + .translationXBy(-(pivotX / 3)) .alpha(0f) .setDuration(ANIMATE_TITLE_OUT_DURATION) .setInterpolator(new AccelerateInterpolator()) @@ -1797,6 +1804,10 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb @Override public void onAnimationEnd(Animation animation) { mProgress.setVisibility(View.GONE); + if (mThemeResetting) { + mThemeResetting = false; + mThemeTagLayout.setCustomizedTagEnabled(false); + } } @Override @@ -1805,7 +1816,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb }); mTitleLayout.animate() - .translationXBy((pivotX / 4)) + .translationXBy((pivotX / 3)) .alpha(1f) .setDuration(ANIMATE_TITLE_IN_DURATION) .setInterpolator(new AccelerateInterpolator()) diff --git a/src/com/cyngn/theme/widget/ThemeTagLayout.java b/src/com/cyngn/theme/widget/ThemeTagLayout.java index 6554bab..0d11348 100644 --- a/src/com/cyngn/theme/widget/ThemeTagLayout.java +++ b/src/com/cyngn/theme/widget/ThemeTagLayout.java @@ -72,6 +72,10 @@ public class ThemeTagLayout extends LinearLayout { } } + public boolean isCustomizedTagEnabled() { + return findViewById(R.id.tag_customized) != null; + } + public void setUpdatedTagEnabled(boolean enabled) { if (enabled) { if (findViewById(R.id.tag_updated) != null) return; |