Disable uninstall button if the app cannot be uninstalled

Fixes #329
This commit is contained in:
Daniel Martí 2015-08-09 22:48:46 -07:00
parent ba54e8b798
commit 79b1396e4a
2 changed files with 22 additions and 20 deletions

View File

@ -1074,8 +1074,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
view_more_description.setImageResource(R.drawable.ic_expand_more_grey600);
view_more_description.setOnClickListener(expander_description);
}
else {
} else {
view_more_description.setVisibility(View.GONE);
}
}
@ -1226,7 +1225,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
private final View.OnClickListener mOnClickListener = new View.OnClickListener() {
public void onClick(View v) {
switch(v.getId()) {
switch (v.getId()) {
case R.id.website:
((AppDetails) getActivity()).tryOpenUri(getApp().webURL);
break;
@ -1522,12 +1521,9 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
if (activity.downloadHandler != null) {
btMain.setText(R.string.downloading);
btMain.setEnabled(false);
}
/*
Check count > 0 due to incompatible apps resulting in an empty list.
If App isn't installed
*/
else if (!getApp().isInstalled() && getApp().suggestedVercode > 0 &&
// Check count > 0 due to incompatible apps resulting in an empty list.
// If App isn't installed
} else if (!getApp().isInstalled() && getApp().suggestedVercode > 0 &&
((AppDetails)getActivity()).adapter.getCount() > 0) {
installed = false;
statusView.setText(getString(R.string.details_notinstalled));
@ -1536,22 +1532,23 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
btMain.setText(R.string.menu_install);
btMain.setOnClickListener(mOnClickListener);
btMain.setEnabled(true);
}
// If App is installed
else if (getApp().isInstalled()) {
} else if (getApp().isInstalled()) {
installed = true;
statusView.setText(getString(R.string.details_installed, getApp().installedVersionName));
NfcHelper.setAndroidBeam(getActivity(), getApp().id);
if (getApp().canAndWantToUpdate()) {
updateWanted = true;
btMain.setText(R.string.menu_upgrade);
}else {
} else {
updateWanted = false;
if (((AppDetails)getActivity()).mPm.getLaunchIntentForPackage(getApp().id) != null){
btMain.setText(R.string.menu_launch);
}
else {
} else {
btMain.setText(R.string.menu_uninstall);
if (!getApp().uninstallable) {
btMain.setVisibility(View.GONE);
}
}
}
btMain.setOnClickListener(mOnClickListener);
@ -1560,7 +1557,7 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
TextView currentVersion = (TextView) view.findViewById(R.id.current_version);
if (!getApks().isEmpty()) {
currentVersion.setText(getApks().getItem(0).version);
}else {
} else {
currentVersion.setVisibility(View.GONE);
btMain.setVisibility(View.GONE);
}
@ -1581,14 +1578,11 @@ public class AppDetails extends AppCompatActivity implements ProgressListener, A
// If "launchable", launch
if (((AppDetails)getActivity()).mPm.getLaunchIntentForPackage(getApp().id) != null) {
((AppDetails)getActivity()).launchApk(getApp().id);
}
else {
} else {
((AppDetails)getActivity()).removeApk(getApp().id);
}
}
// If not installed, install
else if (getApp().suggestedVercode > 0) {
} else if (getApp().suggestedVercode > 0) {
btMain.setEnabled(false);
btMain.setText(R.string.system_install_installing);
final Apk apkToInstall = ApkProvider.Helper.find(getActivity(), getApp().id, getApp().suggestedVercode);

View File

@ -102,6 +102,11 @@ public class App extends ValueObject implements Comparable<App> {
public Apk installedApk; // might be null if not installed
public boolean system;
public boolean updatedSystemApp;
public boolean uninstallable;
@Override
public int compareTo(App app) {
return name.compareToIgnoreCase(app.name);
@ -340,6 +345,9 @@ public class App extends ValueObject implements Comparable<App> {
apk.sig = Utils.hashBytes(fdroidSig, "md5");
this.installedApk = apk;
this.system = ((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0);
this.updatedSystemApp = ((appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
this.uninstallable = !this.system || this.updatedSystemApp;
}
public boolean isValid() {