| OLD | NEW | 
|    1 /* |    1 /* | 
|    2  * This file is part of Adblock Plus <https://adblockplus.org/>, |    2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|    3  * Copyright (C) 2006-2016 Eyeo GmbH |    3  * Copyright (C) 2006-2016 Eyeo GmbH | 
|    4  * |    4  * | 
|    5  * Adblock Plus is free software: you can redistribute it and/or modify |    5  * Adblock Plus is free software: you can redistribute it and/or modify | 
|    6  * it under the terms of the GNU General Public License version 3 as |    6  * it under the terms of the GNU General Public License version 3 as | 
|    7  * published by the Free Software Foundation. |    7  * published by the Free Software Foundation. | 
|    8  * |    8  * | 
|    9  * Adblock Plus is distributed in the hope that it will be useful, |    9  * Adblock Plus is distributed in the hope that it will be useful, | 
|   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of |   10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the |   11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|   12  * GNU General Public License for more details. |   12  * GNU General Public License for more details. | 
|   13  * |   13  * | 
|   14  * You should have received a copy of the GNU General Public License |   14  * You should have received a copy of the GNU General Public License | 
|   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. |   15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
|   16  */ |   16  */ | 
|   17  |   17  | 
|   18 package org.adblockplus.libadblockplus.android.settings; |   18 package org.adblockplus.libadblockplus.android.settings; | 
|   19  |   19  | 
|   20 import android.app.Activity; |   20 import android.app.Activity; | 
|   21 import android.os.Bundle; |   21 import android.os.Bundle; | 
 |   22 import android.preference.ListPreference; | 
|   22 import android.preference.MultiSelectListPreference; |   23 import android.preference.MultiSelectListPreference; | 
|   23 import android.preference.Preference; |   24 import android.preference.Preference; | 
|   24 import android.preference.SwitchPreference; |   25 import android.preference.SwitchPreference; | 
|   25 import android.util.Log; |   26 import android.util.Log; | 
|   26  |   27  | 
|   27 import org.adblockplus.libadblockplus.android.Subscription; |   28 import org.adblockplus.libadblockplus.android.Subscription; | 
|   28  |   29  | 
|   29 import java.util.HashSet; |   30 import java.util.HashSet; | 
|   30 import java.util.LinkedList; |   31 import java.util.LinkedList; | 
|   31 import java.util.List; |   32 import java.util.List; | 
|   32 import java.util.Set; |   33 import java.util.Set; | 
|   33  |   34  | 
|   34 /** |   35 /** | 
|   35  * General Adblock settings fragment. |   36  * General Adblock settings fragment. | 
|   36  * Use the {@link GeneralSettingsFragment#newInstance} factory method to |   37  * Use the {@link GeneralSettingsFragment#newInstance} factory method to | 
|   37  * create an instance of this fragment. |   38  * create an instance of this fragment. | 
|   38  */ |   39  */ | 
|   39 public class GeneralSettingsFragment |   40 public class GeneralSettingsFragment | 
|   40   extends BaseSettingsFragment<GeneralSettingsFragment.Listener> |   41   extends BaseSettingsFragment<GeneralSettingsFragment.Listener> | 
|   41   implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClick
     Listener |   42   implements Preference.OnPreferenceChangeListener, Preference.OnPreferenceClick
     Listener | 
|   42 { |   43 { | 
|   43   private String SETTINGS_ENABLED_KEY; |   44   private String SETTINGS_ENABLED_KEY; | 
|   44   private String SETTINGS_FILTER_LISTS_KEY; |   45   private String SETTINGS_FILTER_LISTS_KEY; | 
|   45   private String SETTINGS_AA_ENABLED_KEY; |   46   private String SETTINGS_AA_ENABLED_KEY; | 
|   46   private String SETTINGS_WL_DOMAINS_KEY; |   47   private String SETTINGS_WL_DOMAINS_KEY; | 
 |   48   private String SETTINGS_ALLOWED_CONNECTION_TYPE_KEY; | 
|   47  |   49  | 
|   48   private SwitchPreference adblockEnabled; |   50   private SwitchPreference adblockEnabled; | 
|   49   private MultiSelectListPreference filterLists; |   51   private MultiSelectListPreference filterLists; | 
|   50   private SwitchPreference acceptableAdsEnabled; |   52   private SwitchPreference acceptableAdsEnabled; | 
|   51   private Preference whitelistedDomains; |   53   private Preference whitelistedDomains; | 
 |   54   private ListPreference allowedConnectionType; | 
|   52  |   55  | 
|   53   /** |   56   /** | 
|   54    * Listener with additional `onWhitelistedDomainsClicked` event |   57    * Listener with additional `onWhitelistedDomainsClicked` event | 
|   55    */ |   58    */ | 
|   56   public interface Listener extends BaseSettingsFragment.Listener |   59   public interface Listener extends BaseSettingsFragment.Listener | 
|   57   { |   60   { | 
|   58     void onWhitelistedDomainsClicked(GeneralSettingsFragment fragment); |   61     void onWhitelistedDomainsClicked(GeneralSettingsFragment fragment); | 
|   59   } |   62   } | 
|   60  |   63  | 
|   61   /** |   64   /** | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   96     super.onResume(); |   99     super.onResume(); | 
|   97     initPreferences(); |  100     initPreferences(); | 
|   98   } |  101   } | 
|   99  |  102  | 
|  100   private void readKeys() |  103   private void readKeys() | 
|  101   { |  104   { | 
|  102     SETTINGS_ENABLED_KEY = getString(R.string.fragment_adblock_settings_enabled_
     key); |  105     SETTINGS_ENABLED_KEY = getString(R.string.fragment_adblock_settings_enabled_
     key); | 
|  103     SETTINGS_FILTER_LISTS_KEY = getString(R.string.fragment_adblock_settings_fil
     ter_lists_key); |  106     SETTINGS_FILTER_LISTS_KEY = getString(R.string.fragment_adblock_settings_fil
     ter_lists_key); | 
|  104     SETTINGS_AA_ENABLED_KEY = getString(R.string.fragment_adblock_settings_aa_en
     abled_key); |  107     SETTINGS_AA_ENABLED_KEY = getString(R.string.fragment_adblock_settings_aa_en
     abled_key); | 
|  105     SETTINGS_WL_DOMAINS_KEY = getString(R.string.fragment_adblock_settings_wl_ke
     y); |  108     SETTINGS_WL_DOMAINS_KEY = getString(R.string.fragment_adblock_settings_wl_ke
     y); | 
 |  109     SETTINGS_ALLOWED_CONNECTION_TYPE_KEY = getString(R.string.fragment_adblock_s
     ettings_allowed_connection_type_key); | 
|  106   } |  110   } | 
|  107  |  111  | 
|  108   private void bindPreferences() |  112   private void bindPreferences() | 
|  109   { |  113   { | 
|  110     adblockEnabled = (SwitchPreference) findPreference(SETTINGS_ENABLED_KEY); |  114     adblockEnabled = (SwitchPreference) findPreference(SETTINGS_ENABLED_KEY); | 
|  111     filterLists = (MultiSelectListPreference) findPreference(SETTINGS_FILTER_LIS
     TS_KEY); |  115     filterLists = (MultiSelectListPreference) findPreference(SETTINGS_FILTER_LIS
     TS_KEY); | 
|  112     acceptableAdsEnabled = (SwitchPreference) findPreference(SETTINGS_AA_ENABLED
     _KEY); |  116     acceptableAdsEnabled = (SwitchPreference) findPreference(SETTINGS_AA_ENABLED
     _KEY); | 
|  113     whitelistedDomains = findPreference(SETTINGS_WL_DOMAINS_KEY); |  117     whitelistedDomains = findPreference(SETTINGS_WL_DOMAINS_KEY); | 
 |  118     allowedConnectionType = (ListPreference) findPreference(SETTINGS_ALLOWED_CON
     NECTION_TYPE_KEY); | 
|  114   } |  119   } | 
|  115  |  120  | 
|  116   private void initPreferences() |  121   private void initPreferences() | 
|  117   { |  122   { | 
|  118     initEnabled(); |  123     initEnabled(); | 
|  119     initFilterLists(); |  124     initFilterLists(); | 
|  120     initAcceptableAdsEnabled(); |  125     initAcceptableAdsEnabled(); | 
|  121     initWhitelistedDomains(); |  126     initWhitelistedDomains(); | 
 |  127     initUpdatesConnection(); | 
 |  128   } | 
 |  129  | 
 |  130   private void initUpdatesConnection() | 
 |  131   { | 
 |  132     CharSequence[] values = | 
 |  133     { | 
 |  134       ConnectionType.WIFI_NON_METERED.getValue(), | 
 |  135       ConnectionType.WIFI.getValue(), | 
 |  136       ConnectionType.ANY.getValue() | 
 |  137     }; | 
 |  138  | 
 |  139     CharSequence[] titles = | 
 |  140     { | 
 |  141       getString(R.string.fragment_adblock_settings_allowed_connection_type_wifi_
     non_metered), | 
 |  142       getString(R.string.fragment_adblock_settings_allowed_connection_type_wifi)
     , | 
 |  143       getString(R.string.fragment_adblock_settings_allowed_connection_type_all), | 
 |  144     }; | 
 |  145  | 
 |  146     allowedConnectionType.setEntryValues(values); | 
 |  147     allowedConnectionType.setEntries(titles); | 
 |  148  | 
 |  149     // selected value | 
 |  150     ConnectionType connectionType = settings.getAllowedConnectionType(); | 
 |  151     if (connectionType == null) | 
 |  152     { | 
 |  153       connectionType = ConnectionType.ANY; | 
 |  154     } | 
 |  155     allowedConnectionType.setValue(connectionType.getValue()); | 
 |  156     allowedConnectionType.setOnPreferenceChangeListener(this); | 
|  122   } |  157   } | 
|  123  |  158  | 
|  124   private void initWhitelistedDomains() |  159   private void initWhitelistedDomains() | 
|  125   { |  160   { | 
|  126     whitelistedDomains.setOnPreferenceClickListener(this); |  161     whitelistedDomains.setOnPreferenceClickListener(this); | 
|  127   } |  162   } | 
|  128  |  163  | 
|  129   private void initAcceptableAdsEnabled() |  164   private void initAcceptableAdsEnabled() | 
|  130   { |  165   { | 
|  131     acceptableAdsEnabled.setChecked(settings.isAcceptableAdsEnabled()); |  166     acceptableAdsEnabled.setChecked(settings.isAcceptableAdsEnabled()); | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  174       handleEnabledChanged((Boolean)newValue); |  209       handleEnabledChanged((Boolean)newValue); | 
|  175     } |  210     } | 
|  176     else if (preference.getKey().equals(SETTINGS_FILTER_LISTS_KEY)) |  211     else if (preference.getKey().equals(SETTINGS_FILTER_LISTS_KEY)) | 
|  177     { |  212     { | 
|  178       handleFilterListsChanged((Set<String>) newValue); |  213       handleFilterListsChanged((Set<String>) newValue); | 
|  179     } |  214     } | 
|  180     else if (preference.getKey().equals(SETTINGS_AA_ENABLED_KEY)) |  215     else if (preference.getKey().equals(SETTINGS_AA_ENABLED_KEY)) | 
|  181     { |  216     { | 
|  182       handleAcceptableAdsEnabledChanged((Boolean) newValue); |  217       handleAcceptableAdsEnabledChanged((Boolean) newValue); | 
|  183     } |  218     } | 
 |  219     else if (preference.getKey().equals(SETTINGS_ALLOWED_CONNECTION_TYPE_KEY)) | 
 |  220     { | 
 |  221       handleAllowedConnectionTypeChanged((String) newValue); | 
 |  222     } | 
|  184     else |  223     else | 
|  185     { |  224     { | 
|  186       // handle other values if changed |  225       // handle other values if changed | 
|  187       // `false` for NOT update preference view state |  226       // `false` for NOT update preference view state | 
|  188       return false; |  227       return false; | 
|  189     } |  228     } | 
|  190  |  229  | 
|  191     // `true` for update preference view state |  230     // `true` for update preference view state | 
|  192     return true; |  231     return true; | 
|  193   } |  232   } | 
|  194  |  233  | 
 |  234   private void handleAllowedConnectionTypeChanged(String value) | 
 |  235   { | 
 |  236     // update and save settings | 
 |  237     settings.setAllowedConnectionType(ConnectionType.findByValue(value)); | 
 |  238     provider.getAdblockSettingsStorage().save(settings); | 
 |  239  | 
 |  240     // apply settings | 
 |  241     allowedConnectionType.setValue(value); | 
 |  242     provider.getAdblockEngine().getFilterEngine().setAllowedConnectionType(value
     ); | 
 |  243  | 
 |  244     // signal event | 
 |  245     listener.onAdblockSettingsChanged(this); | 
 |  246  | 
 |  247   } | 
 |  248  | 
|  195   private void handleAcceptableAdsEnabledChanged(Boolean newValue) |  249   private void handleAcceptableAdsEnabledChanged(Boolean newValue) | 
|  196   { |  250   { | 
|  197     boolean enabledValue = newValue; |  251     boolean enabledValue = newValue; | 
|  198  |  252  | 
|  199     // update and save settings |  253     // update and save settings | 
|  200     settings.setAcceptableAdsEnabled(enabledValue); |  254     settings.setAcceptableAdsEnabled(enabledValue); | 
|  201     provider.getAdblockSettingsStorage().save(settings); |  255     provider.getAdblockSettingsStorage().save(settings); | 
|  202  |  256  | 
|  203     // apply settings |  257     // apply settings | 
|  204     provider.getAdblockEngine().setAcceptableAdsEnabled(enabledValue); |  258     provider.getAdblockEngine().setAcceptableAdsEnabled(enabledValue); | 
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  247  |  301  | 
|  248     // all other settings are meaningless if adblocking is disabled |  302     // all other settings are meaningless if adblocking is disabled | 
|  249     applyAdblockEnabled(newValue); |  303     applyAdblockEnabled(newValue); | 
|  250   } |  304   } | 
|  251  |  305  | 
|  252   private void applyAdblockEnabled(boolean enabledValue) |  306   private void applyAdblockEnabled(boolean enabledValue) | 
|  253   { |  307   { | 
|  254     filterLists.setEnabled(enabledValue); |  308     filterLists.setEnabled(enabledValue); | 
|  255     acceptableAdsEnabled.setEnabled(enabledValue); |  309     acceptableAdsEnabled.setEnabled(enabledValue); | 
|  256     whitelistedDomains.setEnabled(enabledValue); |  310     whitelistedDomains.setEnabled(enabledValue); | 
 |  311     allowedConnectionType.setEnabled(enabledValue); | 
|  257   } |  312   } | 
|  258  |  313  | 
|  259   @Override |  314   @Override | 
|  260   public boolean onPreferenceClick(Preference preference) |  315   public boolean onPreferenceClick(Preference preference) | 
|  261   { |  316   { | 
|  262     if (preference.getKey().equals(SETTINGS_WL_DOMAINS_KEY)) |  317     if (preference.getKey().equals(SETTINGS_WL_DOMAINS_KEY)) | 
|  263     { |  318     { | 
|  264       listener.onWhitelistedDomainsClicked(this); |  319       listener.onWhitelistedDomainsClicked(this); | 
|  265     } |  320     } | 
|  266     else |  321     else | 
|  267     { |  322     { | 
|  268       // should not be invoked as only 'wl' preference is subscribed for callbac
     k |  323       // should not be invoked as only 'wl' preference is subscribed for callbac
     k | 
|  269       return false; |  324       return false; | 
|  270     } |  325     } | 
|  271  |  326  | 
|  272     return true; |  327     return true; | 
|  273   } |  328   } | 
|  274 } |  329 } | 
| OLD | NEW |