diff --git a/res/layout/appinfo.xml b/res/layout/appinfo.xml index 6c86329d0..57a695b3e 100644 --- a/res/layout/appinfo.xml +++ b/res/layout/appinfo.xml @@ -43,4 +43,19 @@ android:layout_height="wrap_content" android:singleLine="false" /> + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index cf78e881b..360004ffd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -103,17 +103,27 @@ Download cancelled Anti-Features + This application has the following anti-features: Advertising Show apps that contain advertising + This app contains advertising + Tracking Show apps that track and report your activity + This app tracks and reports your activity + Add-ons Show apps that promote non-free add-ons + This app promotes non-free add-ons + Network Services Show apps that promote non-free network services + This app promotes non-free network services + Dependencies Show apps that depend on other non-free apps + This app depends on other non-free apps Display diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index 7a0235d0e..576d85035 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -244,6 +244,11 @@ public class AppDetails extends ListActivity { pref_expert = prefs.getBoolean("expert", false); pref_permissions = prefs.getBoolean("showPermissions", false); pref_incompatible = prefs.getBoolean("showIncompatible", false); + pref_antiAds = prefs.getBoolean("antiAds", false); + pref_antiTracking = prefs.getBoolean("antiTracking", false); + pref_antiNonFreeAdd = prefs.getBoolean("antiNonFreeAdd", false); + pref_antiNonFreeNet = prefs.getBoolean("antiNonFreeNet", false); + pref_antiNonFreeDep = prefs.getBoolean("antiNonFreeDep", false); ignoreToggled = false; @@ -256,6 +261,12 @@ public class AppDetails extends ListActivity { private boolean pref_incompatible; private boolean resetRequired; + private boolean pref_antiAds; + private boolean pref_antiTracking; + private boolean pref_antiNonFreeAdd; + private boolean pref_antiNonFreeNet; + private boolean pref_antiNonFreeDep; + // The signature of the installed version. private Signature mInstalledSignature; private String mInstalledSigID; @@ -471,12 +482,15 @@ public class AppDetails extends ListActivity { new HtmlTagHandler())); tv = (TextView) infoView.findViewById(R.id.appid); - tv.setText(app.id); + if (pref_expert) + tv.setText(app.id); + else + tv.setVisibility(View.GONE); tv = (TextView) infoView.findViewById(R.id.summary); tv.setText(app.summary); - if (!app.apks.isEmpty()) { + if (pref_permissions && !app.apks.isEmpty()) { tv = (TextView) infoView.findViewById(R.id.permissions_list); CommaSeparatedList permsList = app.apks.get(0).detail_permissions; @@ -500,7 +514,34 @@ public class AppDetails extends ListActivity { tv = (TextView) infoView.findViewById(R.id.permissions); tv.setText(getString( R.string.permissions_for_long, app.apks.get(0).version)); + } else { + infoView.findViewById(R.id.permissions).setVisibility(View.GONE); + infoView.findViewById(R.id.permissions_list).setVisibility(View.GONE); } + + if (app.antiFeatures != null) { + tv = (TextView) infoView.findViewById(R.id.antifeatures_list); + StringBuilder sb = new StringBuilder(); + for (String af : app.antiFeatures) + sb.append("
  • "+af+": "+descAntiFeature(af)+"
  • "); + tv.setText(Html.fromHtml(sb.toString(), null, new HtmlTagHandler())); + } else { + infoView.findViewById(R.id.antifeatures).setVisibility(View.GONE); + } + } + + private String descAntiFeature(String antiFeature) { + if (antiFeature.equals("Ads")) + return getString(R.string.antiadslist); + if (antiFeature.equals("Tracking")) + return getString(R.string.antitracklist); + if (antiFeature.equals("NonFreeNet")) + return getString(R.string.antinonfreenetlist); + if (antiFeature.equals("NonFreeAdd")) + return getString(R.string.antinonfreeadlist); + if (antiFeature.equals("NonFreeDep")) + return getString(R.string.antinonfreedeplist); + return ""; } private void updateViews() { @@ -518,13 +559,6 @@ public class AppDetails extends ListActivity { tv.setText(getString(R.string.details_installed, app.installedVersion)); - tv = (TextView) infoView.findViewById(R.id.appid); - if (pref_expert) { - tv.setVisibility(View.VISIBLE); - } else { - tv.setVisibility(View.GONE); - } - tv = (TextView) infoView.findViewById(R.id.signature); if (pref_expert && mInstalledSignature != null) { tv.setVisibility(View.VISIBLE); @@ -533,18 +567,6 @@ public class AppDetails extends ListActivity { tv.setVisibility(View.GONE); } - if (pref_permissions) { - tv = (TextView) infoView.findViewById(R.id.permissions); - tv.setVisibility(View.VISIBLE); - tv = (TextView) infoView.findViewById(R.id.permissions_list); - tv.setVisibility(View.VISIBLE); - } else { - tv = (TextView) infoView.findViewById(R.id.permissions); - tv.setVisibility(View.GONE); - tv = (TextView) infoView.findViewById(R.id.permissions_list); - tv.setVisibility(View.GONE); - } - } @Override