Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/org/adblockplus/android/AdvancedPreferences.java

Issue 8493083: ABP/Android UI (Closed)
Patch Set: Created Oct. 5, 2012, 9:42 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 package org.adblockplus.android;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.adblockplus.android.updater.AlarmReceiver;
7
8 import android.app.AlertDialog;
9 import android.app.Dialog;
10 import android.content.ComponentName;
11 import android.content.DialogInterface;
12 import android.content.Intent;
13 import android.content.ServiceConnection;
14 import android.content.SharedPreferences;
15 import android.content.pm.PackageInfo;
16 import android.content.pm.PackageManager.NameNotFoundException;
17 import android.os.Build;
18 import android.os.Bundle;
19 import android.os.IBinder;
20 import android.preference.Preference;
21 import android.preference.PreferenceManager;
22 import android.preference.PreferenceScreen;
23 import android.preference.Preference.OnPreferenceClickListener;
24 import android.text.ClipboardManager;
25 import android.text.TextUtils;
26 import android.util.Log;
27 import android.view.View;
28 import android.widget.TextView;
29 import android.widget.Toast;
30
31 /**
32 * Advanced settings UI.
33 */
34 public class AdvancedPreferences extends SummarizedPreferences
35 {
36 private final static String TAG = "AdvancedPreferences";
Felix Dahlke 2012/10/09 14:27:29 How about "static final" instead of "final static"
Andrey Novikov 2012/10/12 13:19:14 Done.
37
38 private static final int CONFIGURATION_DIALOG = 1;
39
40 private static ProxyService proxyService = null;
41
42 @Override
43 public void onCreate(Bundle savedInstanceState)
44 {
45 super.onCreate(savedInstanceState);
46
47 addPreferencesFromResource(R.xml.preferences_advanced);
48
49 PreferenceScreen screen = getPreferenceScreen();
50 if (Build.VERSION.SDK_INT >= 12) // Honeycomb 3.1
51 {
52 screen.removePreference(findPreference(getString(R.string.pref_proxy)));
53 }
54 if (getResources().getBoolean(R.bool.def_release))
55 {
56 screen.removePreference(findPreference(getString(R.string.pref_support)));
57 }
58 else
59 {
60 Preference prefUpdate = findPreference(getString(R.string.pref_checkupdate ));
61 prefUpdate.setOnPreferenceClickListener(new OnPreferenceClickListener() {
Felix Dahlke 2012/10/09 14:27:29 How about putting this opening brace on its own li
Andrey Novikov 2012/10/12 13:19:14 Done.
62 public boolean onPreferenceClick(Preference preference)
63 {
64 Intent updater = new Intent(getApplicationContext(), AlarmReceiver.cla ss).putExtra("notifynoupdate", true);
65 sendBroadcast(updater);
66 return true;
67 }
68 });
69
70 Preference prefConfiguration = findPreference(getString(R.string.pref_conf iguration));
71 prefConfiguration.setOnPreferenceClickListener(new OnPreferenceClickListen er() {
Felix Dahlke 2012/10/09 14:27:29 Same as above, brace should be on its own line.
Andrey Novikov 2012/10/12 13:19:14 Done.
72 public boolean onPreferenceClick(Preference preference)
73 {
74 showDialog(CONFIGURATION_DIALOG);
75 return true;
76 }
77 });
78 }
79 }
80
81 @Override
82 public void onResume()
83 {
84 super.onResume();
85 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this );
86 int refresh = Integer.valueOf(prefs.getString(getString(R.string.pref_refres h), "0"));
87 findPreference(getString(R.string.pref_wifirefresh)).setEnabled(refresh > 0) ;
88 connect();
89 }
90
91 @Override
92 public void onPause()
93 {
94 super.onPause();
95 disconnect();
96 }
97
98 @Override
99 public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Str ing key)
100 {
101 if (getString(R.string.pref_refresh).equals(key))
102 {
103 int refresh = Integer.valueOf(sharedPreferences.getString(getString(R.stri ng.pref_refresh), "0"));
104 findPreference(getString(R.string.pref_wifirefresh)).setEnabled(refresh > 0);
105 }
106 if (getString(R.string.pref_crashreport).equals(key))
107 {
108 AdblockPlus application = AdblockPlus.getApplication();
109 application.updateCrashReportStatus();
110 }
111 super.onSharedPreferenceChanged(sharedPreferences, key);
112 }
113
114 @Override
115 protected Dialog onCreateDialog(int id)
116 {
Felix Dahlke 2012/10/09 14:27:29 You know I don't like long methods, this is one :)
Andrey Novikov 2012/10/12 13:19:14 We worked out a compromise in adding more comments
117 Dialog dialog = null;
118 switch (id)
Felix Dahlke 2012/10/09 14:27:29 Why use a switch case if there's only one case han
Andrey Novikov 2012/10/12 13:19:14 This is a well known Android code pattern, there c
119 {
120 case CONFIGURATION_DIALOG:
121 List<String> items = new ArrayList<String>();
122 int versionCode = -1;
123 try
Felix Dahlke 2012/10/09 14:27:29 The same code for getting the package info is in A
Andrey Novikov 2012/10/12 13:19:14 NameNotFoundException is thrown when a given packa
Felix Dahlke 2012/10/12 13:29:47 That's why I suggested to return a PackageInfo obj
124 {
125 PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0);
126 versionCode = pi.versionCode;
127 }
128 catch (NameNotFoundException e)
129 {
130 // ignore - this shouldn't happen
131 }
132 items.add(String.format("API: %d Build: %d", Build.VERSION.SDK_INT, vers ionCode));
133 if (proxyService != null)
134 {
135 items.add(String.format("Local port: %d", proxyService.port));
136 if (proxyService.isTransparent())
137 {
138 items.add("Running in root mode");
139 }
140 if (proxyService.isNativeProxy())
141 {
142 items.add("Uses native proxy");
143 }
144 if (Build.VERSION.SDK_INT >= 12) // Honeycomb 3.1
Felix Dahlke 2012/10/09 14:27:29 I think this should be a constant, since it's also
Andrey Novikov 2012/10/12 13:19:14 Done.
145 {
146 String[] px = proxyService.getUserProxy();
147 if (px != null)
148 {
149 items.add("System settings:");
150 items.add(String.format("Host: [%s] Port: [%s] Excl: [%s]", px[0], px[1], px[2]));
151 }
152 }
153 items.add("Proxy settings:");
154 items.add(String.format("Host: [%s] Port: [%s] Excl: [%s]", proxyServi ce.proxy.props.getProperty("adblock.proxyHost"), proxyService.proxy.props.getPro perty("adblock.proxyPort"),
155 proxyService.proxy.props.getProperty("adblock.proxyExcl")));
156 if (proxyService.proxy.props.getProperty("adblock.auth") != null)
157 items.add("Auth: yes");
158 }
159 else
160 {
161 items.add("Service not running");
162 }
163
164 TextView messageText = new TextView(this);
165 messageText.setPadding(12, 6, 12, 6);
166 messageText.setText(TextUtils.join("\n", items));
167 messageText.setOnClickListener(new View.OnClickListener() {
Felix Dahlke 2012/10/09 14:27:29 Brace on a new line please.
Andrey Novikov 2012/10/12 13:19:14 Done.
168
169 @Override
170 public void onClick(View v)
171 {
172 ClipboardManager manager = (ClipboardManager) getSystemService(CLIPB OARD_SERVICE);
173 TextView showTextParam = (TextView) v;
174 manager.setText(showTextParam.getText());
175 Toast.makeText(v.getContext(), R.string.msg_clipboard, Toast.LENGTH_ SHORT).show();
176 }
177 });
178
179 AlertDialog.Builder builder = new AlertDialog.Builder(this);
180 builder.setView(messageText).setTitle(R.string.configuration_name).setIc on(android.R.drawable.ic_dialog_info).setCancelable(false)
181 .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener( ) {
182 public void onClick(DialogInterface dialog, int id)
183 {
184 dialog.cancel();
185 }
186 });
187 dialog = builder.create();
188 break;
189 }
190 return dialog;
191 }
192
193 private void connect()
194 {
195 bindService(new Intent(this, ProxyService.class), proxyServiceConnection, 0) ;
196 }
197
198 private void disconnect()
199 {
200 unbindService(proxyServiceConnection);
201 proxyService = null;
202 }
203
204 private ServiceConnection proxyServiceConnection = new ServiceConnection() {
205 public void onServiceConnected(ComponentName className, IBinder service)
206 {
207 proxyService = ((ProxyService.LocalBinder) service).getService();
208 Log.d(TAG, "Proxy service connected");
209 }
210
211 public void onServiceDisconnected(ComponentName className)
212 {
213 proxyService = null;
214 Log.d(TAG, "Proxy service disconnected");
215 }
216 };
217 }
OLDNEW

Powered by Google App Engine
This is Rietveld