| Index: src/org/adblockplus/android/ProxyService.java | 
| =================================================================== | 
| --- a/src/org/adblockplus/android/ProxyService.java | 
| +++ b/src/org/adblockplus/android/ProxyService.java | 
| @@ -70,9 +70,10 @@ | 
| } | 
|  | 
| private static final String TAG = "ProxyService"; | 
| -  private static final boolean logRequests = false; | 
| +  private static final boolean logRequests = true; | 
|  | 
| -  private static final int[] portVariants = new int[] {8080, 8888, 1111, 2222, 3333, 4444, 5555, 6666, 7777, 9999, 26571, 0}; | 
| +  // Do not use 8080 because it is a "dirty" port, Android uses it if something goes wrong | 
| +  private static final int[] portVariants = new int[] {8888, 1111, 2222, 3333, 4444, 5555, 6666, 7777, 9999, 26571, 0}; | 
|  | 
| private final static int DEFAULT_TIMEOUT = 3000; | 
| private final static int NO_TRAFFIC_TIMEOUT = 5 * 60 * 1000; // 5 minutes | 
| @@ -203,12 +204,16 @@ | 
| registerReceiver(connectionReceiver, new IntentFilter(Proxy.PROXY_CHANGE_ACTION)); | 
| } | 
| } | 
| - | 
| -    // Start engine | 
| -    AdblockPlus.getApplication().startEngine(); | 
| + | 
| +    // Save current native proxy situation. The service is always started on the first run so | 
| +    // we will always have a correct value from the box | 
| +    SharedPreferences.Editor editor = prefs.edit(); | 
| +    editor.putBoolean(getString(R.string.pref_proxyautoconfigured), transparent || nativeProxyAutoConfigured); | 
| +    editor.commit(); | 
|  | 
| registerReceiver(proxyReceiver, new IntentFilter(ProxyService.BROADCAST_PROXY_FAILED)); | 
| -    registerReceiver(matchesReceiver, new IntentFilter(AdblockPlus.BROADCAST_FILTER_MATCHES)); | 
| +    registerReceiver(filterReceiver, new IntentFilter(AdblockPlus.BROADCAST_FILTERING_CHANGE)); | 
| +    registerReceiver(filterReceiver, new IntentFilter(AdblockPlus.BROADCAST_FILTER_MATCHES)); | 
|  | 
| // Start proxy | 
| if (proxy == null) | 
| @@ -291,7 +296,7 @@ | 
|  | 
| stopNoTrafficCheck(); | 
|  | 
| -    unregisterReceiver(matchesReceiver); | 
| +    unregisterReceiver(filterReceiver); | 
| unregisterReceiver(proxyReceiver); | 
|  | 
| // Stop IP redirecting | 
| @@ -329,6 +334,7 @@ | 
| if (proxy != null) | 
| proxy.close(); | 
|  | 
| +    // TODO Do we have to check current state? | 
| // Stop engine if not in interactive mode | 
| AdblockPlus.getApplication().stopEngine(false); | 
|  | 
| @@ -642,6 +648,7 @@ | 
| sendStateChangedBroadcast(); | 
| NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); | 
| notificationManager.notify(ONGOING_NOTIFICATION_ID, getNotification()); | 
| +      notificationManager.cancel(NOTRAFFIC_NOTIFICATION_ID); | 
| } | 
| notrafficHandler = null; | 
| } | 
| @@ -649,9 +656,11 @@ | 
| @SuppressLint("NewApi") | 
| private Notification getNotification() | 
| { | 
| +    boolean filtering = AdblockPlus.getApplication().isFilteringEnabled(); | 
| + | 
| int msgId = R.string.notif_waiting; | 
| if (nativeProxyAutoConfigured || proxyManualyConfigured) | 
| -      msgId = R.string.notif_wifi; | 
| +      msgId = filtering ? R.string.notif_wifi : R.string.notif_wifi_nofiltering; | 
| if (transparent) | 
| msgId = R.string.notif_all; | 
|  | 
| @@ -671,6 +680,7 @@ | 
| builder.setContentIntent(contentIntent); | 
| builder.setContentTitle(getText(R.string.app_name)); | 
| builder.setContentText(getText(msgId)); | 
| +    builder.setOngoing(true); | 
|  | 
| Notification notification = builder.getNotification(); | 
| return notification; | 
| @@ -740,11 +750,16 @@ | 
| /** | 
| * Stops no traffic check if traffic is detected by proxy service. | 
| */ | 
| -  private BroadcastReceiver matchesReceiver = new BroadcastReceiver() | 
| +  private BroadcastReceiver filterReceiver = new BroadcastReceiver() | 
| { | 
| @Override | 
| public void onReceive(final Context context, Intent intent) | 
| { | 
| +      if (intent.getAction().equals(AdblockPlus.BROADCAST_FILTERING_CHANGE)) | 
| +      { | 
| +        NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); | 
| +        notificationManager.notify(ONGOING_NOTIFICATION_ID, getNotification()); | 
| +      } | 
| if (intent.getAction().equals(AdblockPlus.BROADCAST_FILTER_MATCHES)) | 
| { | 
| proxyManualyConfigured = true; | 
|  |