| OLD | NEW | 
|---|
| (Empty) |  | 
|  | 1 /* | 
|  | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
|  | 3  * Copyright (C) 2006-2016 Eyeo GmbH | 
|  | 4  * | 
|  | 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 | 
|  | 7  * published by the Free Software Foundation. | 
|  | 8  * | 
|  | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
|  | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | 12  * GNU General Public License for more details. | 
|  | 13  * | 
|  | 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/>. | 
|  | 16  */ | 
|  | 17 | 
|  | 18 package org.adblockplus.libadblockplus.android.settings; | 
|  | 19 | 
|  | 20 import android.app.Activity; | 
|  | 21 import android.os.Bundle; | 
|  | 22 import android.preference.PreferenceFragment; | 
|  | 23 import android.util.Log; | 
|  | 24 | 
|  | 25 import org.adblockplus.libadblockplus.android.AdblockEngine; | 
|  | 26 import org.adblockplus.libadblockplus.android.Utils; | 
|  | 27 | 
|  | 28 public abstract class AdblockSettingsFragment | 
|  | 29   <ListenerClass extends AdblockSettingsFragment.Listener> | 
|  | 30   extends PreferenceFragment | 
|  | 31 { | 
|  | 32   protected final String TAG = Utils.getTag(this.getClass()); | 
|  | 33 | 
|  | 34   /** | 
|  | 35    * Provides AdblockEngine and SharedPreferences to store settings | 
|  | 36    * (activity holding AdblockGeneralSettingsFragment fragment should implement 
     this interface) | 
|  | 37    */ | 
|  | 38   public interface Provider | 
|  | 39   { | 
|  | 40     AdblockEngine getAdblockEngine(); | 
|  | 41     AdblockSettingsStorage getAdblockSettingsStorage(); | 
|  | 42   } | 
|  | 43 | 
|  | 44   /** | 
|  | 45    * Listens for Adblock settings events | 
|  | 46    */ | 
|  | 47   public interface Listener | 
|  | 48   { | 
|  | 49     /** | 
|  | 50      * `Settings were changed` callback | 
|  | 51      * Note: settings are available using AdblockSettingsFragment.getSettings() | 
|  | 52      * | 
|  | 53      * @param fragment fragment | 
|  | 54      */ | 
|  | 55     void onAdblockSettingsChanged(AdblockSettingsFragment fragment); | 
|  | 56   } | 
|  | 57 | 
|  | 58   protected Provider provider; | 
|  | 59   protected ListenerClass listener; | 
|  | 60 | 
|  | 61   protected <T> T castOrThrow(Activity activity, Class<T> clazz) | 
|  | 62   { | 
|  | 63     if (!(activity instanceof Provider)) | 
|  | 64     { | 
|  | 65       String message = activity.getClass().getSimpleName() | 
|  | 66         + " should implement " | 
|  | 67         + clazz.getSimpleName() | 
|  | 68         + " interface"; | 
|  | 69 | 
|  | 70       Log.e(TAG, message); | 
|  | 71       throw new RuntimeException(message); | 
|  | 72     } | 
|  | 73 | 
|  | 74     return (T) activity; | 
|  | 75   } | 
|  | 76 | 
|  | 77   public void loadSettings() | 
|  | 78   { | 
|  | 79     settings = provider.getAdblockSettingsStorage().load(); | 
|  | 80     if (settings == null) | 
|  | 81     { | 
|  | 82       Log.w(TAG, "No adblock settings, yet. Using defdault ones from adblock eng
     ine"); | 
|  | 83 | 
|  | 84       // null because it was not saved yet | 
|  | 85       settings = AdblockSettingsStorage.getDefaultSettings(provider.getAdblockEn
     gine()); | 
|  | 86     } | 
|  | 87   } | 
|  | 88 | 
|  | 89   @Override | 
|  | 90   public void onCreate(Bundle savedInstanceState) | 
|  | 91   { | 
|  | 92     super.onCreate(savedInstanceState); | 
|  | 93     loadSettings(); | 
|  | 94   } | 
|  | 95 | 
|  | 96   @Override | 
|  | 97   public void onAttach(Activity activity) | 
|  | 98   { | 
|  | 99     super.onAttach(activity); | 
|  | 100     provider = castOrThrow(activity, Provider.class); | 
|  | 101   } | 
|  | 102 | 
|  | 103   @Override | 
|  | 104   public void onResume() | 
|  | 105   { | 
|  | 106     super.onResume(); | 
|  | 107     loadSettings(); | 
|  | 108   } | 
|  | 109 | 
|  | 110   protected AdblockSettings settings; | 
|  | 111 | 
|  | 112   public AdblockSettings getSettings() | 
|  | 113   { | 
|  | 114     return settings; | 
|  | 115   } | 
|  | 116 | 
|  | 117   @Override | 
|  | 118   public void onDetach() | 
|  | 119   { | 
|  | 120     super.onDetach(); | 
|  | 121     provider = null; | 
|  | 122     listener = null; | 
|  | 123   } | 
|  | 124 } | 
| OLD | NEW | 
|---|