| 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 |
| index beceab0d192234e4ef419c940f889b0c7fe0e563..3b29ff01ff8bdc2baff6e24d09b56260263d0de5 100644 |
| --- a/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/GeneralSettingsFragment.java |
| +++ b/libadblockplus-android-settings/src/org/adblockplus/libadblockplus/android/settings/GeneralSettingsFragment.java |
| @@ -19,6 +19,7 @@ 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; |
| @@ -44,11 +45,13 @@ public class GeneralSettingsFragment |
| 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 |
| @@ -103,6 +106,7 @@ public class GeneralSettingsFragment |
| 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() |
| @@ -111,6 +115,7 @@ public class GeneralSettingsFragment |
| 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() |
| @@ -119,6 +124,36 @@ public class GeneralSettingsFragment |
| 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() |
| @@ -181,6 +216,10 @@ public class GeneralSettingsFragment |
| { |
| handleAcceptableAdsEnabledChanged((Boolean) newValue); |
| } |
| + else if (preference.getKey().equals(SETTINGS_ALLOWED_CONNECTION_TYPE_KEY)) |
| + { |
| + handleAllowedConnectionTypeChanged((String) newValue); |
| + } |
| else |
| { |
| // handle other values if changed |
| @@ -192,6 +231,21 @@ public class GeneralSettingsFragment |
| 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; |
| @@ -254,6 +308,7 @@ public class GeneralSettingsFragment |
| filterLists.setEnabled(enabledValue); |
| acceptableAdsEnabled.setEnabled(enabledValue); |
| whitelistedDomains.setEnabled(enabledValue); |
| + allowedConnectionType.setEnabled(enabledValue); |
| } |
| @Override |