summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClark Scheff <clark@cyngn.com>2014-08-14 13:13:04 -0700
committerClark Scheff <clark@cyngn.com>2014-08-14 13:13:04 -0700
commit953efda32a778054740d2f71d8905f23f67bc7d5 (patch)
treea1b71739678a18caa4266c1cafb5a34a9d024462
parentcbac0b24090917aa07ed8f08211bb731b378a195 (diff)
downloadpackages_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.xml4
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/com/cyngn/theme/chooser/MyThemeFragment.java36
-rw-r--r--src/com/cyngn/theme/chooser/ThemeFragment.java47
-rw-r--r--src/com/cyngn/theme/widget/ThemeTagLayout.java4
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;