Index: mobile/android/thirdparty/org/adblockplus/browser/MoreSubscriptionsPreferenceGroup.java |
=================================================================== |
--- a/mobile/android/thirdparty/org/adblockplus/browser/MoreSubscriptionsPreferenceGroup.java |
+++ b/mobile/android/thirdparty/org/adblockplus/browser/MoreSubscriptionsPreferenceGroup.java |
@@ -34,25 +34,25 @@ import android.preference.CheckBoxPrefer |
import android.preference.Preference; |
import android.preference.PreferenceGroup; |
import android.util.AttributeSet; |
import android.util.Log; |
import android.view.View; |
import android.view.ViewGroup; |
public class MoreSubscriptionsPreferenceGroup extends PreferenceGroup implements |
- UrlInputDialog.UrlReadyCallback |
+ InputValidatorDialogPreference.OnInputReadyListener |
{ |
private static final String TAG = "AdblockBrowser.OtherPreferenceGroup"; |
private static final HashMap<String, Integer> BUILTIN_URL_TO_INDEX = new HashMap<String, Integer>(); |
private static final HashSet<String> IGNORED_URLS = new HashSet<String>(); |
private static SubscriptionContainer recommendedSubscriptions = null; |
private final CheckBoxChangeListener checkBoxChangeListener = new CheckBoxChangeListener(); |
- private final ActiveSubscriptionContainer activeSubscriptions; |
+ private final ActiveSubscriptionContainer activeSubscriptions = new ActiveSubscriptionContainer(); |
private ProgressDialog progressDialog; |
private static final int[] BUILTIN_TITLES = |
{ |
R.string.abb_subscription_disable_tracking, |
R.string.abb_subscription_disable_malware, |
R.string.abb_subscription_disable_anti_adblock, |
R.string.abb_subscription_disable_social_media |
@@ -65,16 +65,18 @@ public class MoreSubscriptionsPreference |
"Malware Domains", |
"https://easylist-downloads.adblockplus.org/malwaredomains_full.txt", |
"Adblock Warning Removal List", |
"https://easylist-downloads.adblockplus.org/antiadblockfilters.txt", |
"Fanboy's Social Blocking List", |
"https://easylist-downloads.adblockplus.org/fanboy-social.txt" |
}; |
+ private static final String USER_SUBSCRIPTION_PREFIX = "~user~"; |
+ |
static |
{ |
for (int i = 0; i < BUILTIN_TITLES.length; i++) |
{ |
BUILTIN_URL_TO_INDEX.put(BUILTIN_LISTS[i * 2 + 1], Integer.valueOf(i)); |
} |
IGNORED_URLS.add("https://easylist-downloads.adblockplus.org/exceptionrules.txt"); |
@@ -97,17 +99,16 @@ public class MoreSubscriptionsPreference |
{ |
this(context, attrs, 0); |
} |
public MoreSubscriptionsPreferenceGroup(final Context context, final AttributeSet attrs, |
final int defStyleAttr) |
{ |
super(context, attrs, defStyleAttr); |
- this.activeSubscriptions = new ActiveSubscriptionContainer(context); |
} |
@Override |
protected View onCreateView(final ViewGroup parent) |
{ |
this.setLayoutResource(R.layout.abb_minimal_widget); |
return super.onCreateView(parent); |
} |
@@ -139,18 +140,16 @@ public class MoreSubscriptionsPreference |
super.onAttachedToActivity(); |
this.progressDialog = new ProgressDialog(this.getContext()); |
this.progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); |
this.progressDialog.setMessage(this.getContext().getString(R.string.abb_adblocking_waiting)); |
this.progressDialog.show(); |
- UrlInputOpenerPreference.setRedirectUrlReadyCallback(this); |
- |
AddOnBridge.postToHandler(new Runnable() |
{ |
@Override |
public void run() |
{ |
initRecommendedSubscriptions(); |
MoreSubscriptionsPreferenceGroup.this.activeSubscriptions.refresh(); |
@@ -164,45 +163,50 @@ public class MoreSubscriptionsPreference |
}); |
} |
}); |
} |
private void initEntries() |
{ |
this.removeAll(); |
- int i = 0; |
- for (; i < BUILTIN_TITLES.length; i++) |
+ for (int i = 0; i < BUILTIN_TITLES.length; i++) |
{ |
final CheckBoxPreference cbp = new CustomCheckBoxPreference(this.getContext()); |
final String url = BUILTIN_LISTS[i * 2 + 1]; |
- cbp.setOrder(i); |
cbp.setTitle(BUILTIN_TITLES[i]); |
cbp.setKey(url); |
cbp.setChecked(this.activeSubscriptions.enabledSubscriptions.containsKey(url)); |
cbp.setOnPreferenceChangeListener(this.checkBoxChangeListener); |
cbp.setPersistent(false); |
this.addPreference(cbp); |
} |
for (Entry<String, String> e : this.activeSubscriptions.enabledSubscriptions.entrySet()) |
{ |
if (!BUILTIN_URL_TO_INDEX.containsKey(e.getKey())) |
{ |
final CheckBoxPreference cbp = new CustomCheckBoxPreference(this.getContext()); |
- cbp.setOrder(i++); |
cbp.setTitle(e.getValue()); |
cbp.setKey(e.getKey()); |
cbp.setChecked(true); |
cbp.setOnPreferenceChangeListener(this.checkBoxChangeListener); |
cbp.setPersistent(false); |
this.addPreference(cbp); |
} |
} |
+ final InputValidatorDialogPreference inputPreference = new InputValidatorDialogPreference( |
+ this.getContext()); |
+ inputPreference.setTitle(R.string.abb_pref_category_add_other_list); |
+ inputPreference.setDialogTitle(R.string.abb_pref_category_add_other_list); |
+ inputPreference.getEditText().setHint(R.string.abb_add_subscription_url); |
+ inputPreference.setOnInputReadyListener(this); |
+ this.addPreference(inputPreference); |
+ |
this.setEnabled(true); |
this.setShouldDisableView(false); |
if (this.progressDialog != null) |
{ |
this.progressDialog.dismiss(); |
this.progressDialog = null; |
} |
} |
@@ -260,37 +264,26 @@ public class MoreSubscriptionsPreference |
MoreSubscriptionsPreferenceGroup.this.progressDialog = null; |
} |
} |
} |
}); |
} |
@Override |
- public void callback(final String url) |
+ public void onInputReady(String input) |
{ |
- if (url == null) |
- { |
- return; |
- } |
- |
- Log.d(TAG, "Adding: " + url); |
- this.addNewSubscription(url); |
+ Log.d(TAG, "Adding: " + input); |
+ this.addNewSubscription(input); |
} |
private static class ActiveSubscriptionContainer implements AdblockPlusApiCallback |
{ |
public final HashMap<String, String> enabledSubscriptions = new HashMap<String, String>(); |
private final Semaphore entriesReady = new Semaphore(0); |
- private final Context context; |
- |
- ActiveSubscriptionContainer(Context context) |
- { |
- this.context = context; |
- } |
public void refresh() |
{ |
AddOnBridge.queryActiveSubscriptions(this); |
this.entriesReady.acquireUninterruptibly(); |
} |
@Override |
@@ -300,24 +293,19 @@ public class MoreSubscriptionsPreference |
{ |
this.enabledSubscriptions.clear(); |
if (jsObject.getBoolean("success")) |
{ |
NativeJSObject[] subs = jsObject.getObjectArray("value"); |
for (int i = 0; i < subs.length; i++) |
{ |
final String url = subs[i].getString("url"); |
+ final String title = subs[i].has("title") ? subs[i].getString("title") : url; |
- String title = subs[i].has("title") ? subs[i].getString("title") : url; |
- if (title.startsWith("~user~")) |
- { |
- title = this.context.getString(R.string.abb_pref_category_whitelisted_sites); |
- } |
- |
- if (!IGNORED_URLS.contains(url)) |
+ if (!IGNORED_URLS.contains(url) && !url.startsWith(USER_SUBSCRIPTION_PREFIX)) |
{ |
Log.d(TAG, "Adding: " + url + ", " + title); |
this.enabledSubscriptions.put(url, title); |
} |
} |
} |
} |
finally |