| Index: src/org/adblockplus/android/Preferences.java |
| diff --git a/src/org/adblockplus/android/Preferences.java b/src/org/adblockplus/android/Preferences.java |
| index 91f79ef2b3d353a160d8dc9c73e34001a6d0b599..190344e8103386c076584ae58931b22598544c21 100755 |
| --- a/src/org/adblockplus/android/Preferences.java |
| +++ b/src/org/adblockplus/android/Preferences.java |
| @@ -28,19 +28,16 @@ import org.jraf.android.backport.switchwidget.SwitchPreference; |
| import android.app.AlertDialog; |
| import android.app.Dialog; |
| import android.content.BroadcastReceiver; |
| -import android.content.ComponentName; |
| import android.content.Context; |
| import android.content.DialogInterface; |
| import android.content.Intent; |
| import android.content.IntentFilter; |
| -import android.content.ServiceConnection; |
| import android.content.SharedPreferences; |
| import android.content.pm.PackageManager.NameNotFoundException; |
| import android.content.res.AssetManager; |
| import android.net.Uri; |
| import android.os.Build; |
| import android.os.Bundle; |
| -import android.os.IBinder; |
| import android.preference.CheckBoxPreference; |
| import android.preference.ListPreference; |
| import android.preference.PreferenceManager; |
| @@ -66,17 +63,30 @@ public class Preferences extends SummarizedPreferences |
| private static final int ABOUT_DIALOG = 1; |
| private static final int HIDEICONWARNING_DIALOG = 2; |
| - private static ProxyService proxyService = null; |
| private static boolean firstRunActionsPending = true; |
| private RefreshableListPreference subscriptionList; |
| private String subscriptionSummary; |
| + private ServiceBinder serviceBinder = null; |
| + |
| @Override |
| public void onCreate(final Bundle savedInstanceState) |
| { |
| super.onCreate(savedInstanceState); |
| + this.serviceBinder = new ServiceBinder(this).setOnConnectHandler(new ServiceBinder.OnConnectHandler() |
| + { |
| + @Override |
| + public void onConnect(final ProxyService proxyService) |
| + { |
| + if (proxyService.isManual() && !proxyService.isRegistered()) |
| + { |
| + Preferences.this.showConfigurationMsg(Preferences.this.getString(R.string.msg_configuration)); |
| + } |
| + } |
| + }); |
| + |
| PreferenceManager.setDefaultValues(this, R.xml.preferences, true); |
| PreferenceManager.setDefaultValues(this, R.xml.preferences_advanced, true); |
| setContentView(R.layout.preferences); |
| @@ -204,7 +214,7 @@ public class Preferences extends SummarizedPreferences |
| if (enabled || firstRun || (proxyenabled && !autoconfigured)) |
| setProxyEnabled(true); |
| - bindService(new Intent(this, ProxyService.class), proxyServiceConnection, 0); |
| + this.serviceBinder.bind(); |
| } |
| private void showNotificationDialog(final String title, String message, String url) |
| @@ -236,8 +246,7 @@ public class Preferences extends SummarizedPreferences |
| // ignore - it is thrown if receiver is not registered but it can not be |
| // true in normal conditions |
| } |
| - unbindService(proxyServiceConnection); |
| - proxyService = null; |
| + this.serviceBinder.unbind(); |
| hideConfigurationMsg(); |
| } |
| @@ -350,7 +359,11 @@ public class Preferences extends SummarizedPreferences |
| public void showProxySettings(final View v) |
| { |
| - startActivity(new Intent(this, ProxyConfigurationActivity.class).putExtra("port", proxyService.port)); |
| + final ProxyService proxyService = this.serviceBinder.get(); |
| + if (proxyService != null) |
| + { |
| + startActivity(new Intent(this, ProxyConfigurationActivity.class).putExtra("port", proxyService.port)); |
| + } |
| } |
| @Override |
| @@ -435,6 +448,7 @@ public class Preferences extends SummarizedPreferences |
| final boolean hideIcon = sharedPreferences.getBoolean(key, false); |
| if (hideIcon) |
| showDialog(HIDEICONWARNING_DIALOG); |
| + final ProxyService proxyService = this.serviceBinder.get(); |
| if (proxyService != null) |
| proxyService.setEmptyIcon(hideIcon); |
| } |
| @@ -559,24 +573,4 @@ public class Preferences extends SummarizedPreferences |
| outState.putString("subscriptionSummary", subscriptionSummary); |
| super.onSaveInstanceState(outState); |
| } |
| - |
| - private final ServiceConnection proxyServiceConnection = new ServiceConnection() |
| - { |
| - @Override |
| - public void onServiceConnected(final ComponentName className, final IBinder service) |
| - { |
| - proxyService = ((ProxyService.LocalBinder) service).getService(); |
| - Log.d(TAG, "Proxy service connected"); |
| - |
| - if (proxyService.isManual() && proxyService.noTraffic()) |
| - showConfigurationMsg(getString(R.string.msg_configuration)); |
| - } |
| - |
| - @Override |
| - public void onServiceDisconnected(final ComponentName className) |
| - { |
| - proxyService = null; |
| - Log.d(TAG, "Proxy service disconnected"); |
| - } |
| - }; |
| } |