| 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; | 
| - } | 
| -} |