Left: | ||
Right: |
OLD | NEW |
---|---|
1 /* | 1 /* |
2 * This file is part of the Adblock Plus, | 2 * This file is part of the Adblock Plus, |
3 * Copyright (C) 2006-2012 Eyeo GmbH | 3 * Copyright (C) 2006-2012 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 |
(...skipping 10 matching lines...) Expand all Loading... | |
21 import java.io.InputStream; | 21 import java.io.InputStream; |
22 import java.io.OutputStream; | 22 import java.io.OutputStream; |
23 import java.util.Calendar; | 23 import java.util.Calendar; |
24 import java.util.Date; | 24 import java.util.Date; |
25 import java.util.List; | 25 import java.util.List; |
26 | 26 |
27 import android.app.ActivityManager; | 27 import android.app.ActivityManager; |
28 import android.app.ActivityManager.RunningServiceInfo; | 28 import android.app.ActivityManager.RunningServiceInfo; |
29 import android.app.AlertDialog; | 29 import android.app.AlertDialog; |
30 import android.content.BroadcastReceiver; | 30 import android.content.BroadcastReceiver; |
31 import android.content.ComponentName; | |
31 import android.content.Context; | 32 import android.content.Context; |
32 import android.content.DialogInterface; | 33 import android.content.DialogInterface; |
34 import android.content.ServiceConnection; | |
33 import android.content.DialogInterface.OnDismissListener; | 35 import android.content.DialogInterface.OnDismissListener; |
34 import android.content.Intent; | 36 import android.content.Intent; |
35 import android.content.IntentFilter; | 37 import android.content.IntentFilter; |
36 import android.content.SharedPreferences; | 38 import android.content.SharedPreferences; |
37 import android.content.pm.PackageManager.NameNotFoundException; | 39 import android.content.pm.PackageManager.NameNotFoundException; |
38 import android.content.res.AssetManager; | 40 import android.content.res.AssetManager; |
39 import android.net.Uri; | 41 import android.net.Uri; |
40 import android.os.Bundle; | 42 import android.os.Bundle; |
43 import android.os.IBinder; | |
41 import android.preference.CheckBoxPreference; | 44 import android.preference.CheckBoxPreference; |
42 import android.preference.ListPreference; | 45 import android.preference.ListPreference; |
43 import android.preference.PreferenceManager; | 46 import android.preference.PreferenceManager; |
44 import android.text.format.DateFormat; | 47 import android.text.format.DateFormat; |
45 import android.util.Log; | 48 import android.util.Log; |
46 import android.view.Menu; | 49 import android.view.Menu; |
47 import android.view.MenuInflater; | 50 import android.view.MenuInflater; |
48 import android.view.MenuItem; | 51 import android.view.MenuItem; |
49 import android.view.View; | 52 import android.view.View; |
50 import android.view.Window; | 53 import android.view.Window; |
51 import android.widget.TextView; | 54 import android.widget.TextView; |
52 | 55 |
53 /** | 56 /** |
54 * Main settings UI. | 57 * Main settings UI. |
55 */ | 58 */ |
56 public class Preferences extends SummarizedPreferences | 59 public class Preferences extends SummarizedPreferences |
57 { | 60 { |
58 private static final String TAG = "Preferences"; | 61 private static final String TAG = "Preferences"; |
59 | 62 |
63 private static ProxyService proxyService = null; | |
64 | |
60 private AboutDialog aboutDialog; | 65 private AboutDialog aboutDialog; |
61 private boolean showAbout = false; | 66 private boolean showAbout = false; |
62 private String configurationMsg; | 67 private boolean trafficDetected = false; |
63 private String subscriptionSummary; | 68 private String subscriptionSummary; |
64 | 69 |
65 @Override | 70 @Override |
66 public void onCreate(Bundle savedInstanceState) | 71 public void onCreate(Bundle savedInstanceState) |
67 { | 72 { |
68 requestWindowFeature(Window.FEATURE_NO_TITLE); | 73 requestWindowFeature(Window.FEATURE_NO_TITLE); |
69 | 74 |
70 super.onCreate(savedInstanceState); | 75 super.onCreate(savedInstanceState); |
71 | 76 |
72 PreferenceManager.setDefaultValues(this, R.xml.preferences, false); | 77 PreferenceManager.setDefaultValues(this, R.xml.preferences, false); |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
189 { | 194 { |
190 setEnabled(false); | 195 setEnabled(false); |
191 } | 196 } |
192 // Run service if this is first application run | 197 // Run service if this is first application run |
193 else if (!enabled && firstRun) | 198 else if (!enabled && firstRun) |
194 { | 199 { |
195 startService(new Intent(this, ProxyService.class)); | 200 startService(new Intent(this, ProxyService.class)); |
196 setEnabled(true); | 201 setEnabled(true); |
197 } | 202 } |
198 | 203 |
199 // Process screen rotation | |
200 if (configurationMsg != null) | |
201 showConfigurationMsg(configurationMsg); | |
202 | |
203 if (showAbout) | 204 if (showAbout) |
204 onAbout(findViewById(R.id.btn_about)); | 205 onAbout(findViewById(R.id.btn_about)); |
206 | |
207 bindService(new Intent(this, ProxyService.class), proxyServiceConnection, 0) ; | |
205 } | 208 } |
206 | 209 |
207 @Override | 210 @Override |
208 public void onPause() | 211 public void onPause() |
209 { | 212 { |
210 super.onPause(); | 213 super.onPause(); |
211 unregisterReceiver(receiver); | 214 unregisterReceiver(receiver); |
215 unbindService(proxyServiceConnection); | |
216 proxyService = null; | |
212 } | 217 } |
213 | 218 |
214 @Override | 219 @Override |
215 protected void onStop() | 220 protected void onStop() |
216 { | 221 { |
217 super.onStop(); | 222 super.onStop(); |
218 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this ); | 223 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this ); |
219 boolean enabled = prefs.getBoolean(getString(R.string.pref_enabled), false); | 224 boolean enabled = prefs.getBoolean(getString(R.string.pref_enabled), false); |
220 AdblockPlus application = AdblockPlus.getApplication(); | 225 AdblockPlus application = AdblockPlus.getApplication(); |
221 application.stopInteractive(); | 226 application.stopInteractive(); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
361 application.setSubscription(subscription); | 366 application.setSubscription(subscription); |
362 } | 367 } |
363 super.onSharedPreferenceChanged(sharedPreferences, key); | 368 super.onSharedPreferenceChanged(sharedPreferences, key); |
364 } | 369 } |
365 | 370 |
366 private void showConfigurationMsg(String message) | 371 private void showConfigurationMsg(String message) |
367 { | 372 { |
368 TextView msg = (TextView) findViewById(R.id.txt_configuration); | 373 TextView msg = (TextView) findViewById(R.id.txt_configuration); |
369 msg.setText(message); | 374 msg.setText(message); |
370 msg.setVisibility(View.VISIBLE); | 375 msg.setVisibility(View.VISIBLE); |
371 configurationMsg = message; | |
372 } | 376 } |
373 | 377 |
374 private void hideConfigurationMsg() | 378 private void hideConfigurationMsg() |
375 { | 379 { |
376 if (configurationMsg == null) | |
377 return; | |
378 TextView msg = (TextView) findViewById(R.id.txt_configuration); | 380 TextView msg = (TextView) findViewById(R.id.txt_configuration); |
379 msg.setVisibility(View.GONE); | 381 msg.setVisibility(View.GONE); |
380 configurationMsg = null; | |
381 } | 382 } |
382 | 383 |
383 private BroadcastReceiver receiver = new BroadcastReceiver() | 384 private BroadcastReceiver receiver = new BroadcastReceiver() |
384 { | 385 { |
385 @Override | 386 @Override |
386 public void onReceive(Context context, Intent intent) | 387 public void onReceive(Context context, Intent intent) |
387 { | 388 { |
388 String action = intent.getAction(); | 389 String action = intent.getAction(); |
389 Bundle extra = intent.getExtras(); | 390 Bundle extra = intent.getExtras(); |
390 if (action.equals(ProxyService.BROADCAST_STATE_CHANGED)) | 391 if (action.equals(ProxyService.BROADCAST_STATE_CHANGED)) |
391 { | 392 { |
392 if (extra.getBoolean("enabled")) | 393 if (extra.getBoolean("enabled")) |
393 { | 394 { |
394 // If service is enabled in manual mode, show configuration message | 395 // If service is enabled in manual mode, show configuration message |
395 if (extra.getBoolean("manual")) | 396 if (extra.getBoolean("manual")) |
396 { | 397 { |
397 showConfigurationMsg(getString(R.string.msg_configuration, extra.get Int("port"))); | 398 showConfigurationMsg(getString(R.string.msg_configuration, extra.get Int("port"))); |
398 } | 399 } |
399 } | 400 } |
400 else | 401 else |
401 { | 402 { |
402 setEnabled(false); | 403 setEnabled(false); |
403 hideConfigurationMsg(); | 404 hideConfigurationMsg(); |
404 } | 405 } |
405 } | 406 } |
406 if (action.equals(AdblockPlus.BROADCAST_FILTER_MATCHES)) | 407 if (action.equals(AdblockPlus.BROADCAST_FILTER_MATCHES)) |
407 { | 408 { |
408 // Hide configuration message if traffic is detected | 409 // Hide configuration message if traffic is detected for the first time |
409 hideConfigurationMsg(); | 410 if (! trafficDetected) |
Felix Dahlke
2012/11/23 13:19:43
Preferably no space after ! here.
Andrey Novikov
2012/11/30 09:43:39
Done.
| |
411 hideConfigurationMsg(); | |
412 trafficDetected = true; | |
410 } | 413 } |
411 if (action.equals(ProxyService.BROADCAST_PROXY_FAILED)) | 414 if (action.equals(ProxyService.BROADCAST_PROXY_FAILED)) |
412 { | 415 { |
413 String msg = extra.getString("msg"); | 416 String msg = extra.getString("msg"); |
414 new AlertDialog.Builder(Preferences.this).setTitle(R.string.error).setMe ssage(msg).setIcon(android.R.drawable.ic_dialog_alert).setPositiveButton(R.strin g.ok, null).create().show(); | 417 new AlertDialog.Builder(Preferences.this).setTitle(R.string.error).setMe ssage(msg).setIcon(android.R.drawable.ic_dialog_alert).setPositiveButton(R.strin g.ok, null).create().show(); |
415 setEnabled(false); | 418 setEnabled(false); |
416 } | 419 } |
417 if (action.equals(AdblockPlus.BROADCAST_SUBSCRIPTION_STATUS)) | 420 if (action.equals(AdblockPlus.BROADCAST_SUBSCRIPTION_STATUS)) |
418 { | 421 { |
419 final String text = extra.getString("text"); | 422 final String text = extra.getString("text"); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
468 subscriptionSummary = builder.toString(); | 471 subscriptionSummary = builder.toString(); |
469 subscriptionList.setSummary(subscriptionSummary); | 472 subscriptionList.setSummary(subscriptionSummary); |
470 } | 473 } |
471 } | 474 } |
472 | 475 |
473 @Override | 476 @Override |
474 protected void onRestoreInstanceState(Bundle state) | 477 protected void onRestoreInstanceState(Bundle state) |
475 { | 478 { |
476 super.onRestoreInstanceState(state); | 479 super.onRestoreInstanceState(state); |
477 showAbout = state.getBoolean("showAbout"); | 480 showAbout = state.getBoolean("showAbout"); |
478 configurationMsg = state.getString("configurationMsg"); | 481 trafficDetected = state.getBoolean("trafficDetected"); |
479 subscriptionSummary = state.getString("subscriptionSummary"); | 482 subscriptionSummary = state.getString("subscriptionSummary"); |
480 } | 483 } |
481 | 484 |
482 @Override | 485 @Override |
483 protected void onSaveInstanceState(Bundle outState) | 486 protected void onSaveInstanceState(Bundle outState) |
484 { | 487 { |
485 outState.putString("subscriptionSummary", subscriptionSummary); | 488 outState.putString("subscriptionSummary", subscriptionSummary); |
486 outState.putString("configurationMsg", configurationMsg); | 489 outState.putBoolean("trafficDetected", trafficDetected); |
487 outState.putBoolean("showAbout", showAbout); | 490 outState.putBoolean("showAbout", showAbout); |
488 super.onSaveInstanceState(outState); | 491 super.onSaveInstanceState(outState); |
489 } | 492 } |
493 | |
494 private ServiceConnection proxyServiceConnection = new ServiceConnection() | |
495 { | |
496 public void onServiceConnected(ComponentName className, IBinder service) | |
497 { | |
498 proxyService = ((ProxyService.LocalBinder) service).getService(); | |
499 Log.d(TAG, "Proxy service connected"); | |
500 | |
501 if (! trafficDetected && proxyService.isManual()) | |
Felix Dahlke
2012/11/23 13:19:43
Preferably no space after ! here.
Andrey Novikov
2012/11/30 09:43:39
Done.
| |
502 showConfigurationMsg(getString(R.string.msg_configuration, proxyServic e.port)); | |
503 } | |
504 | |
505 public void onServiceDisconnected(ComponentName className) | |
506 { | |
507 proxyService = null; | |
508 Log.d(TAG, "Proxy service disconnected"); | |
509 } | |
510 }; | |
490 } | 511 } |
OLD | NEW |