summaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorAndy Mast <andy@cyngn.com>2014-07-24 15:11:47 -0700
committerAndy Mast <andy@cyngn.com>2014-07-25 08:15:36 -0700
commit1c5c22eba5d052cee87991f1de9826104933c71a (patch)
treebdbf955362d12415d6b9812144baae530e7fc100 /src/org
parent471f9d6ff507cf9dea3d00d9b0cd349727909eeb (diff)
downloadpackages_apps_ThemeChooser-1c5c22eba5d052cee87991f1de9826104933c71a.zip
packages_apps_ThemeChooser-1c5c22eba5d052cee87991f1de9826104933c71a.tar.gz
packages_apps_ThemeChooser-1c5c22eba5d052cee87991f1de9826104933c71a.tar.bz2
Allow themes to be deleted from chooser
Change-Id: I782404044e66707f06366c3c69db67a3eeb7dd55
Diffstat (limited to 'src/org')
-rw-r--r--src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java10
-rw-r--r--src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java60
2 files changed, 61 insertions, 9 deletions
diff --git a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
index 3f8002b..e748e05 100644
--- a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
+++ b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
@@ -52,6 +52,7 @@ import static android.provider.ThemesContract.ThemesColumns.MODIFIES_RINGTONES;
public class ChooserActivity extends FragmentActivity
implements LoaderManager.LoaderCallbacks<Cursor>, ThemeManager.ThemeChangeListener {
public static final String DEFAULT = ThemeConfig.HOLO_DEFAULT;
+ public static final int REQUEST_UNINSTALL = 1; // Request code
private static final long SLIDE_CONTENT_ANIM_DURATION = 300L;
private static final long MOVE_TO_MY_THEME_DELAY = 750L;
@@ -407,6 +408,15 @@ public class ChooserActivity extends FragmentActivity
return ThemeFragment.newInstance(pkgName);
}
+ @Override
+ public int getItemPosition(Object object) {
+ ThemeFragment fragment = (ThemeFragment) object;
+ if (fragment.isUninstalled()) {
+ return POSITION_NONE;
+ }
+ return super.getItemPosition(object);
+ }
+
/**
* The first card should be the user's currently applied theme components so we
* will always return at least 1 or mCursor.getCount() + 1
diff --git a/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java b/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java
index 6415e5e..5d26aad 100644
--- a/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java
+++ b/src/org/cyanogenmod/theme/chooserv2/ThemeFragment.java
@@ -20,6 +20,8 @@ import android.animation.ValueAnimator;
import android.app.WallpaperManager;
import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.ThemeUtils;
import android.content.res.AssetManager;
@@ -56,6 +58,7 @@ import android.util.SparseArray;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
+import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -70,7 +73,6 @@ import android.widget.LinearLayout;
import android.widget.PopupMenu;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
-
import android.widget.ScrollView;
import android.widget.TextView;
import android.widget.Toast;
@@ -120,6 +122,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
public static final int ANIMATE_TITLE_OUT_DURATION = 400;
public static final int ANIMATE_PROGRESS_OUT_DURATION = 400;
public static final int ANIMATE_TITLE_IN_DURATION = 500;
+ public static final int REQUEST_UNINSTALL = 1; // Request code
private static final String NAVIGATION_BAR_BACKGROUND = "navbar_background";
@@ -222,6 +225,7 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
private Handler mHandler;
+ private boolean mIsUninstalled;
private int mActiveCardId = -1;
private ComponentSelector mSelector;
// Supported components for the theme this fragment represents
@@ -320,18 +324,34 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
mOverflow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- PopupMenu menu = new PopupMenu(getActivity(), mTitleCard, Gravity.END);
- menu.getMenuInflater().inflate(R.menu.overflow, menu.getMenu());
- menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ PopupMenu popupmenu = new PopupMenu(getActivity(), mTitleCard, Gravity.END);
+ popupmenu.getMenuInflater().inflate(R.menu.overflow, 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);
+ }
+
+ popupmenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- Toast.makeText(getActivity(),
- item.toString(),
- Toast.LENGTH_LONG).show();
+ 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;
}
});
- menu.show();
+ popupmenu.show();
}
});
mApply = (ImageView) v.findViewById(R.id.apply);
@@ -1744,6 +1764,29 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
getLoaderManager().restartLoader(LOADER_ID_ALL, null, ThemeFragment.this);
}
+ private void uninstallTheme() {
+ Uri packageURI = Uri.parse("package:" + mPkgName);
+ Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
+ uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, true);
+ startActivityForResult(uninstallIntent,
+ ChooserActivity.REQUEST_UNINSTALL);
+ }
+
+ public void onActivityResult (int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQUEST_UNINSTALL) {
+ try {
+ ApplicationInfo ainfo = getActivity()
+ .getPackageManager().getApplicationInfo(mPkgName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ mIsUninstalled = true;
+ }
+ }
+ }
+
+ public boolean isUninstalled() {
+ return mIsUninstalled;
+ }
+
class AnimationLoader extends AsyncTask<Void, Void, Boolean> {
Context mContext;
String mPkgName;
@@ -1765,7 +1808,6 @@ public class ThemeFragment extends Fragment implements LoaderManager.LoaderCallb
@Override
protected void onPreExecute() {
super.onPreExecute();
- mBootAnim.setImageDrawable(null);
}
@Override