Index: libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/GeneralSettingsFragment.java |
diff --git a/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/GeneralSettingsFragment.java b/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/GeneralSettingsFragment.java |
deleted file mode 100644 |
index 8cc3a95edb141fdb86befda943a5a117b8d11547..0000000000000000000000000000000000000000 |
--- a/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/GeneralSettingsFragment.java |
+++ /dev/null |
@@ -1,330 +0,0 @@ |
-/* |
- * This file is part of Adblock Plus <https://adblockplus.org/>, |
- * Copyright (C) 2006-present eyeo GmbH |
- * |
- * Adblock Plus is free software: you can redistribute it and/or modify |
- * it under the terms of the GNU General Public License version 3 as |
- * published by the Free Software Foundation. |
- * |
- * Adblock Plus is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
- * GNU General Public License for more details. |
- * |
- * You should have received a copy of the GNU General Public License |
- * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
- */ |
- |
-package org.adblockplus.libadblockplus.android.settings; |
- |
-import android.app.Activity; |
-import android.os.Bundle; |
-import android.preference.ListPreference; |
-import android.preference.MultiSelectListPreference; |
-import android.preference.Preference; |
-import android.preference.SwitchPreference; |
-import android.util.Log; |
- |
-import org.adblockplus.libadblockplus.android.ConnectionType; |
-import org.adblockplus.libadblockplus.android.Subscription; |
- |
-import java.util.HashSet; |
-import java.util.LinkedList; |
-import java.util.List; |
-import java.util.Set; |
- |
-/** |
- * General Adblock settings fragment. |
- * Use the {@link GeneralSettingsFragment#newInstance} factory method to |
- * create an instance of this fragment. |
- */ |
-public class GeneralSettingsFragment |
- extends BaseSettingsFragment<GeneralSettingsFragment.Listener> |
- implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClickListener |
-{ |
- private String SETTINGS_ENABLED_KEY; |
- private String SETTINGS_FILTER_LISTS_KEY; |
- private String SETTINGS_AA_ENABLED_KEY; |
- private String SETTINGS_WL_DOMAINS_KEY; |
- private String SETTINGS_ALLOWED_CONNECTION_TYPE_KEY; |
- |
- private SwitchPreference adblockEnabled; |
- private MultiSelectListPreference filterLists; |
- private SwitchPreference acceptableAdsEnabled; |
- private Preference whitelistedDomains; |
- private ListPreference allowedConnectionType; |
- |
- /** |
- * Listener with additional `onWhitelistedDomainsClicked` event |
- */ |
- public interface Listener extends BaseSettingsFragment.Listener |
- { |
- void onWhitelistedDomainsClicked(GeneralSettingsFragment fragment); |
- } |
- |
- /** |
- * Use this factory method to create a new instance of |
- * this fragment using the provided parameters. |
- * @return A new instance of fragment GeneralSettingsFragment. |
- */ |
- public static GeneralSettingsFragment newInstance() |
- { |
- return new GeneralSettingsFragment(); |
- } |
- |
- public GeneralSettingsFragment() |
- { |
- // required empty public constructor |
- } |
- |
- @Override |
- public void onAttach(Activity activity) |
- { |
- super.onAttach(activity); |
- listener = castOrThrow(activity, Listener.class); |
- } |
- |
- @Override |
- public void onCreate(Bundle savedInstanceState) |
- { |
- super.onCreate(savedInstanceState); |
- readKeys(); |
- |
- addPreferencesFromResource(R.xml.preference_adblock_general); |
- bindPreferences(); |
- } |
- |
- @Override |
- public void onResume() |
- { |
- super.onResume(); |
- initPreferences(); |
- } |
- |
- private void readKeys() |
- { |
- SETTINGS_ENABLED_KEY = getString(R.string.fragment_adblock_settings_enabled_key); |
- SETTINGS_FILTER_LISTS_KEY = getString(R.string.fragment_adblock_settings_filter_lists_key); |
- SETTINGS_AA_ENABLED_KEY = getString(R.string.fragment_adblock_settings_aa_enabled_key); |
- SETTINGS_WL_DOMAINS_KEY = getString(R.string.fragment_adblock_settings_wl_key); |
- SETTINGS_ALLOWED_CONNECTION_TYPE_KEY = getString(R.string.fragment_adblock_settings_allowed_connection_type_key); |
- } |
- |
- private void bindPreferences() |
- { |
- adblockEnabled = (SwitchPreference) findPreference(SETTINGS_ENABLED_KEY); |
- filterLists = (MultiSelectListPreference) findPreference(SETTINGS_FILTER_LISTS_KEY); |
- acceptableAdsEnabled = (SwitchPreference) findPreference(SETTINGS_AA_ENABLED_KEY); |
- whitelistedDomains = findPreference(SETTINGS_WL_DOMAINS_KEY); |
- allowedConnectionType = (ListPreference) findPreference(SETTINGS_ALLOWED_CONNECTION_TYPE_KEY); |
- } |
- |
- private void initPreferences() |
- { |
- initEnabled(); |
- initFilterLists(); |
- initAcceptableAdsEnabled(); |
- initWhitelistedDomains(); |
- initUpdatesConnection(); |
- } |
- |
- private void initUpdatesConnection() |
- { |
- CharSequence[] values = |
- { |
- ConnectionType.WIFI_NON_METERED.getValue(), |
- ConnectionType.WIFI.getValue(), |
- ConnectionType.ANY.getValue() |
- }; |
- |
- CharSequence[] titles = |
- { |
- getString(R.string.fragment_adblock_settings_allowed_connection_type_wifi_non_metered), |
- getString(R.string.fragment_adblock_settings_allowed_connection_type_wifi), |
- getString(R.string.fragment_adblock_settings_allowed_connection_type_all), |
- }; |
- |
- allowedConnectionType.setEntryValues(values); |
- allowedConnectionType.setEntries(titles); |
- |
- // selected value |
- ConnectionType connectionType = settings.getAllowedConnectionType(); |
- if (connectionType == null) |
- { |
- connectionType = ConnectionType.ANY; |
- } |
- allowedConnectionType.setValue(connectionType.getValue()); |
- allowedConnectionType.setOnPreferenceChangeListener(this); |
- } |
- |
- private void initWhitelistedDomains() |
- { |
- whitelistedDomains.setOnPreferenceClickListener(this); |
- } |
- |
- private void initAcceptableAdsEnabled() |
- { |
- acceptableAdsEnabled.setChecked(settings.isAcceptableAdsEnabled()); |
- acceptableAdsEnabled.setOnPreferenceChangeListener(this); |
- } |
- |
- private void initFilterLists() |
- { |
- // all available values |
- Subscription[] availableSubscriptions = provider.getAdblockEngine().getRecommendedSubscriptions(); |
- CharSequence[] availableSubscriptionsTitles = new CharSequence[availableSubscriptions.length]; |
- CharSequence[] availableSubscriptionsValues = new CharSequence[availableSubscriptions.length]; |
- for (int i = 0; i < availableSubscriptions.length; i++) |
- { |
- availableSubscriptionsTitles[i] = availableSubscriptions[i].specialization; |
- availableSubscriptionsValues[i] = availableSubscriptions[i].url; |
- } |
- filterLists.setEntries(availableSubscriptionsTitles); |
- filterLists.setEntryValues(availableSubscriptionsValues); |
- |
- // selected values |
- Set<String> selectedSubscriptionValues = new HashSet<String>(); |
- for (Subscription eachSubscription : settings.getSubscriptions()) |
- { |
- selectedSubscriptionValues.add(eachSubscription.url); |
- } |
- filterLists.setValues(selectedSubscriptionValues); |
- filterLists.setOnPreferenceChangeListener(this); |
- } |
- |
- private void initEnabled() |
- { |
- boolean enabled = settings.isAdblockEnabled(); |
- adblockEnabled.setChecked(enabled); |
- adblockEnabled.setOnPreferenceChangeListener(this); |
- applyAdblockEnabled(enabled); |
- } |
- |
- @Override |
- public boolean onPreferenceChange(Preference preference, Object newValue) |
- { |
- Log.d(TAG, "\"" + preference.getTitle() + "\" new value is " + newValue); |
- |
- if (preference.getKey().equals(SETTINGS_ENABLED_KEY)) |
- { |
- handleEnabledChanged((Boolean)newValue); |
- } |
- else if (preference.getKey().equals(SETTINGS_FILTER_LISTS_KEY)) |
- { |
- handleFilterListsChanged((Set<String>) newValue); |
- } |
- else if (preference.getKey().equals(SETTINGS_AA_ENABLED_KEY)) |
- { |
- handleAcceptableAdsEnabledChanged((Boolean) newValue); |
- } |
- else if (preference.getKey().equals(SETTINGS_ALLOWED_CONNECTION_TYPE_KEY)) |
- { |
- handleAllowedConnectionTypeChanged((String) newValue); |
- } |
- else |
- { |
- // handle other values if changed |
- // `false` for NOT update preference view state |
- return false; |
- } |
- |
- // `true` for update preference view state |
- return true; |
- } |
- |
- private void handleAllowedConnectionTypeChanged(String value) |
- { |
- // update and save settings |
- settings.setAllowedConnectionType(ConnectionType.findByValue(value)); |
- provider.getAdblockSettingsStorage().save(settings); |
- |
- // apply settings |
- allowedConnectionType.setValue(value); |
- provider.getAdblockEngine().getFilterEngine().setAllowedConnectionType(value); |
- |
- // signal event |
- listener.onAdblockSettingsChanged(this); |
- |
- } |
- |
- private void handleAcceptableAdsEnabledChanged(Boolean newValue) |
- { |
- boolean enabledValue = newValue; |
- |
- // update and save settings |
- settings.setAcceptableAdsEnabled(enabledValue); |
- provider.getAdblockSettingsStorage().save(settings); |
- |
- // apply settings |
- provider.getAdblockEngine().setAcceptableAdsEnabled(enabledValue); |
- |
- // signal event |
- listener.onAdblockSettingsChanged(this); |
- } |
- |
- private void handleFilterListsChanged(Set<String> newValue) |
- { |
- List<Subscription> selectedSubscriptions = new LinkedList<Subscription>(); |
- |
- for (Subscription eachSubscription : provider.getAdblockEngine().getRecommendedSubscriptions()) |
- { |
- if (newValue.contains(eachSubscription.url)) |
- { |
- selectedSubscriptions.add(eachSubscription); |
- } |
- } |
- |
- // update and save settings |
- settings.setSubscriptions(selectedSubscriptions); |
- provider.getAdblockSettingsStorage().save(settings); |
- |
- // apply settings |
- provider.getAdblockEngine().setSubscriptions(newValue); |
- |
- // since 'aa enabled' setting affects subscriptions list, we need to set it again |
- provider.getAdblockEngine().setAcceptableAdsEnabled(settings.isAcceptableAdsEnabled()); |
- |
- // signal event |
- listener.onAdblockSettingsChanged(this); |
- } |
- |
- private void handleEnabledChanged(boolean newValue) |
- { |
- // update and save settings |
- settings.setAdblockEnabled(newValue); |
- provider.getAdblockSettingsStorage().save(settings); |
- |
- // apply settings |
- provider.getAdblockEngine().setEnabled(newValue); |
- |
- // signal event |
- listener.onAdblockSettingsChanged(this); |
- |
- // all other settings are meaningless if adblocking is disabled |
- applyAdblockEnabled(newValue); |
- } |
- |
- private void applyAdblockEnabled(boolean enabledValue) |
- { |
- filterLists.setEnabled(enabledValue); |
- acceptableAdsEnabled.setEnabled(enabledValue); |
- whitelistedDomains.setEnabled(enabledValue); |
- allowedConnectionType.setEnabled(enabledValue); |
- } |
- |
- @Override |
- public boolean onPreferenceClick(Preference preference) |
- { |
- if (preference.getKey().equals(SETTINGS_WL_DOMAINS_KEY)) |
- { |
- listener.onWhitelistedDomainsClicked(this); |
- } |
- else |
- { |
- // should not be invoked as only 'wl' preference is subscribed for callback |
- return false; |
- } |
- |
- return true; |
- } |
-} |