Always show apps with AFs; Always display AF list in bold red at top of AppDetails

This commit is contained in:
Daniel Martí 2013-10-23 00:18:19 +02:00
parent 38b16f3f8f
commit 19712433bc
5 changed files with 22 additions and 122 deletions

View File

@ -29,10 +29,19 @@
android:textSize="12sp" />
<TextView
android:id="@+id/description"
android:id="@+id/antifeatures"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="6sp"
android:textSize="14sp"
android:textStyle="bold"
android:textColor="#ff0000" />
<TextView
android:id="@+id/description"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8sp"
android:singleLine="false" />
<TextView
@ -50,20 +59,4 @@
android:layout_height="wrap_content"
android:singleLine="false" />
<TextView
android:id="@+id/antifeatures"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8sp"
android:singleLine="true"
android:textSize="14sp"
android:textStyle="bold"
android:text="@string/antifeatures_list" />
<TextView
android:id="@+id/antifeatures_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:singleLine="false" />
</LinearLayout>

View File

@ -98,27 +98,10 @@
<string name="corrupt_download">Downloaded file is corrupt</string>
<string name="download_cancelled">Download cancelled</string>
<string name="antifeatures">Anti-Features</string>
<string name="antifeatures_list">This application has the following anti-features:</string>
<string name="antiads">Advertising</string>
<string name="antiadslong">Show apps that contain advertising</string>
<string name="antiadslist">This app contains advertising</string>
<string name="antitrack">Tracking</string>
<string name="antitracklong">Show apps that track and report your activity</string>
<string name="antitracklist">This app tracks and reports your activity</string>
<string name="antinonfreead">Add-ons</string>
<string name="antinonfreeadlong">Show apps that promote non-free add-ons</string>
<string name="antinonfreeadlist">This app promotes non-free add-ons</string>
<string name="antinonfreenet">Network Services</string>
<string name="antinonfreenetlong">Show apps that promote non-free network services</string>
<string name="antinonfreenetlist">This app promotes non-free network services</string>
<string name="antinonfreedep">Dependencies</string>
<string name="antinonfreedeplong">Show apps that depend on other non-free apps</string>
<string name="antinonfreedeplist">This app depends on other non-free apps</string>
<string name="display">Display</string>

View File

@ -24,23 +24,6 @@
android:defaultValue="false" android:summary="@string/compactlayout_long"
android:key="compactlayout"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/antifeatures">
<CheckBoxPreference android:title="@string/antiads"
android:defaultValue="false" android:summary="@string/antiadslong"
android:key="antiAds" />
<CheckBoxPreference android:title="@string/antitrack"
android:defaultValue="false" android:summary="@string/antitracklong"
android:key="antiTracking" />
<CheckBoxPreference android:title="@string/antinonfreead"
android:defaultValue="false" android:summary="@string/antinonfreeadlong"
android:key="antiNonFreeAdd" />
<CheckBoxPreference android:title="@string/antinonfreenet"
android:defaultValue="false" android:summary="@string/antinonfreenetlong"
android:key="antiNonFreeNet" />
<CheckBoxPreference android:title="@string/antinonfreedep"
android:defaultValue="false" android:summary="@string/antinonfreedeplong"
android:key="antiNonFreeDep" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/appcompatibility">
<CheckBoxPreference android:title="@string/showincompat"
android:defaultValue="false" android:summary="@string/showincompat_long"

View File

@ -257,11 +257,6 @@ 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);
startViews();
@ -272,12 +267,6 @@ 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;
@ -403,13 +392,11 @@ public class AppDetails extends ListActivity {
private void startViews() {
// Populate the list...
if (!app.filtered) {
ApkListAdapter la = (ApkListAdapter) getListAdapter();
for (DB.Apk apk : app.apks)
if (pref_incompatible || apk.compatible)
la.addItem(apk);
la.notifyDataSetChanged();
}
ApkListAdapter la = (ApkListAdapter) getListAdapter();
for (DB.Apk apk : app.apks)
if (pref_incompatible || apk.compatible)
la.addItem(apk);
la.notifyDataSetChanged();
// Insert the 'infoView' (which contains the summary, various odds and
// ends, and the description) into the appropriate place, if we're in
@ -537,38 +524,18 @@ public class AppDetails extends ListActivity {
infoView.findViewById(R.id.permissions_list).setVisibility(View.GONE);
}
tv = (TextView) infoView.findViewById(R.id.antifeatures);
if (app.antiFeatures != null) {
tv = (TextView) infoView.findViewById(R.id.antifeatures_list);
StringBuilder sb = new StringBuilder();
for (String af : app.antiFeatures)
sb.append("<li>"+titleAntiFeature(af)+": "+descAntiFeature(af)+"</li>");
Spanned afs = Html.fromHtml(sb.toString(), null, new HtmlTagHandler());
tv.setText(afs.subSequence(0, afs.length() - 2));
sb.append("\t• " + descAntiFeature(af) + "\n");
sb.setLength(sb.length() - 1);
tv.setText(sb.toString());
} else {
infoView.findViewById(R.id.antifeatures).setVisibility(View.GONE);
infoView.findViewById(R.id.antifeatures_list).setVisibility(View.GONE);
tv.setVisibility(View.GONE);
}
}
private String titleAntiFeature(String af) {
if (af.equals("Ads")) {
if (!pref_antiAds) return "</b>"+af+"</b>";
return "<b><font color='red'>"+af+"</font></b>";
} if (af.equals("Tracking")) {
if (pref_antiTracking) return "</b>"+af+"</b>";
return "<b><font color='red'>"+af+"</font></b>";
} if (af.equals("NonFreeNet")) {
if (pref_antiNonFreeNet) return "</b>"+af+"</b>";
return "<b><font color='red'>"+af+"</font></b>";
} if (af.equals("NonFreeAdd")) {
if (pref_antiNonFreeAdd) return "</b>"+af+"</b>";
return "<b><font color='red'>"+af+"</font></b>";
} if (af.equals("NonFreeDep")) {
if (pref_antiNonFreeDep) return "</b>"+af+"</b>";
return "<b><font color='red'>"+af+"</font></b>";
} return "";
}
private String descAntiFeature(String af) {
if (af.equals("Ads"))
return getString(R.string.antiadslist);
@ -586,10 +553,8 @@ public class AppDetails extends ListActivity {
private void updateViews() {
// Refresh the list...
if (!app.filtered) {
ApkListAdapter la = (ApkListAdapter) getListAdapter();
la.notifyDataSetChanged();
}
ApkListAdapter la = (ApkListAdapter) getListAdapter();
la.notifyDataSetChanged();
TextView tv = (TextView) findViewById(R.id.status);
if (app.installedVersion == null)

View File

@ -24,11 +24,6 @@ import android.preference.PreferenceManager;
public class AppFilter {
boolean pref_antiAds;
boolean pref_antiTracking;
boolean pref_antiNonFreeAdd;
boolean pref_antiNonFreeNet;
boolean pref_antiNonFreeDep;
boolean pref_rooted;
public AppFilter(Context ctx) {
@ -36,11 +31,6 @@ public class AppFilter {
// Read preferences and cache them so we can do quick lookups.
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(ctx);
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);
pref_rooted = prefs.getBoolean("rooted", true);
}
@ -48,20 +38,6 @@ public class AppFilter {
// preferences, and false otherwise.
public boolean filter(DB.App app) {
boolean filtered = false;
if (app.antiFeatures != null) {
for (String af : app.antiFeatures) {
if (af.equals("Ads") && !pref_antiAds)
filtered = true;
else if (af.equals("Tracking") && !pref_antiTracking)
filtered = true;
else if (af.equals("NonFreeNet") && !pref_antiNonFreeNet)
filtered = true;
else if (af.equals("NonFreeAdd") && !pref_antiNonFreeAdd)
filtered = true;
else if (af.equals("NonFreeDep") && !pref_antiNonFreeDep)
filtered = true;
}
}
if (app.requirements != null) {
for (String r : app.requirements) {
if (r.equals("root") && !pref_rooted)