author | marseille@marseille-desktop |
Mon, 22 Jun 2009 19:16:38 +0200 | |
changeset 263 | ff0b4790a5ed |
parent 260 | 0ce1e306fdd3 |
child 319 | 517e80eedfd8 |
permissions | -rw-r--r-- |
212 | 1 |
package com.beem.project.beem.ui; |
2 |
||
3 |
import java.util.ArrayList; |
|
234
b539dc53b9c7
Reoganisation login + contact list sans utiliser beemapplication.
marseille@marseille-desktop
parents:
232
diff
changeset
|
4 |
|
212 | 5 |
import android.app.Activity; |
6 |
import android.content.Intent; |
|
7 |
import android.content.SharedPreferences; |
|
8 |
import android.os.Bundle; |
|
9 |
import android.util.Log; |
|
10 |
import android.view.Menu; |
|
11 |
import android.view.MenuInflater; |
|
12 |
import android.view.MenuItem; |
|
13 |
import android.view.View; |
|
14 |
import android.view.View.OnClickListener; |
|
15 |
import android.widget.ArrayAdapter; |
|
16 |
import android.widget.Button; |
|
17 |
import android.widget.CheckBox; |
|
18 |
import android.widget.EditText; |
|
19 |
import android.widget.Spinner; |
|
20 |
import android.widget.TabHost; |
|
21 |
import android.widget.Toast; |
|
22 |
||
23 |
import com.beem.project.beem.R; |
|
24 |
||
25 |
/** |
|
26 |
* This class represents an activity which allows the user to change his account or proxy parameters |
|
27 |
* @author dasilvj |
|
28 |
*/ |
|
29 |
public class EditSettings extends Activity { |
|
30 |
||
259 | 31 |
private final static String LOG_MSG_SETTINGS_SAVED = "Settings saved successfully."; |
32 |
private final static String LOG_MSG_XMPP_SETTINGS_REGISTERED = "XMPP Settings has been registered."; |
|
33 |
private final static String LOG_MSG_ACCOUNT_SETTINGS_REGISTERED = "Account Settings has been registered."; |
|
34 |
private final static String LOG_MSG_PROXY_SETTINGS_REGISTERED = "Proxy Settings has been registered."; |
|
212 | 35 |
|
259 | 36 |
private final static boolean DEFAULT_BOOLEAN_VALUE = false; |
37 |
private final static String DEFAULT_STRING_VALUE = ""; |
|
38 |
private final static int DEFAULT_INT_VALUE = 0; |
|
212 | 39 |
|
259 | 40 |
private final static String DEFAULT_XMPP_PORT = "5222"; |
212 | 41 |
|
259 | 42 |
private final static int NOTIFICATION_DURATION = Toast.LENGTH_SHORT; |
212 | 43 |
|
259 | 44 |
private SharedPreferences settings = null; |
212 | 45 |
|
259 | 46 |
private EditText accUsernameField = null; |
47 |
private EditText accPasswordField = null; |
|
212 | 48 |
|
259 | 49 |
private EditText xmppServerField = null; |
50 |
private EditText xmppPortField = null; |
|
51 |
private CheckBox xmppUseTLSCheckBox = null; |
|
212 | 52 |
|
259 | 53 |
private CheckBox proxyUseCheckBox = null; |
54 |
private Spinner proxyTypeSpinner = null; |
|
55 |
private EditText proxyServerField = null; |
|
56 |
private EditText proxyPortField = null; |
|
57 |
private EditText proxyUsernameField = null; |
|
58 |
private EditText proxyPasswordField = null; |
|
212 | 59 |
|
60 |
/** |
|
61 |
* Add a labeled "Account" tab on the tabbed window view passed by parameter |
|
259 | 62 |
* @param tHost a tabbed window view |
212 | 63 |
*/ |
64 |
private void addAccountTab(TabHost tHost) { |
|
65 |
TabHost.TabSpec accountTab = tHost.newTabSpec(getString(R.string.settings_tab_tag_account)); |
|
66 |
accountTab.setIndicator(getString(R.string.settings_tab_label_account)); |
|
67 |
accountTab.setContent(R.id.settings_account); |
|
68 |
tHost.addTab(accountTab); |
|
69 |
} |
|
70 |
||
71 |
/** |
|
72 |
* Add a labeled "Proxy" tab on the tabbed window view passed by parameter |
|
259 | 73 |
* @param tHost a tabbed window view |
212 | 74 |
*/ |
75 |
private void addProxyTab(TabHost tHost) { |
|
76 |
TabHost.TabSpec proxyTab = tHost.newTabSpec(getString(R.string.settings_tab_tag_proxy)); |
|
77 |
proxyTab.setIndicator(getString(R.string.settings_tab_label_proxy)); |
|
78 |
proxyTab.setContent(R.id.settings_proxy); |
|
79 |
tHost.addTab(proxyTab); |
|
80 |
} |
|
81 |
||
82 |
/** |
|
83 |
* Add a labeled "XMPP" tab on the tabbed window view passed by parameter |
|
259 | 84 |
* @param tHost a tabbed window view |
212 | 85 |
*/ |
86 |
private void addXMPPTab(TabHost tHost) { |
|
87 |
TabHost.TabSpec personalTab = tHost.newTabSpec(getString(R.string.settings_tab_tag_xmpp)); |
|
88 |
personalTab.setIndicator(getString(R.string.settings_tab_label_xmpp)); |
|
89 |
personalTab.setContent(R.id.settings_xmpp); |
|
90 |
tHost.addTab(personalTab); |
|
91 |
} |
|
92 |
||
93 |
/** |
|
94 |
* Disable proxy parameters fields |
|
95 |
*/ |
|
96 |
private void disableProxyParameters() { |
|
97 |
proxyTypeSpinner.setEnabled(false); |
|
98 |
proxyServerField.setEnabled(false); |
|
99 |
proxyPortField.setEnabled(false); |
|
100 |
proxyUsernameField.setEnabled(false); |
|
101 |
proxyPasswordField.setEnabled(false); |
|
102 |
} |
|
103 |
||
104 |
private void displayNotification(CharSequence msg) { |
|
105 |
Toast toast = Toast.makeText(getApplicationContext(), msg, NOTIFICATION_DURATION); |
|
106 |
toast.show(); |
|
107 |
} |
|
108 |
||
109 |
/** |
|
110 |
* Enable proxy parameters fields |
|
111 |
*/ |
|
112 |
private void enableProxyParameters() { |
|
113 |
proxyTypeSpinner.setEnabled(true); |
|
114 |
proxyServerField.setEnabled(true); |
|
115 |
proxyPortField.setEnabled(true); |
|
116 |
proxyUsernameField.setEnabled(true); |
|
117 |
proxyPasswordField.setEnabled(true); |
|
118 |
} |
|
119 |
||
120 |
/** |
|
121 |
* Retrieve the value of a CheckBox |
|
122 |
* @param viewId |
|
123 |
* @return true if the CheckBox is checked, else false |
|
124 |
*/ |
|
125 |
private boolean getCheckBoxValue(int viewId) { |
|
126 |
final CheckBox checkBox = (CheckBox) findViewById(viewId); |
|
127 |
if (checkBox.isChecked()) |
|
128 |
return (true); |
|
129 |
return (false); |
|
130 |
} |
|
131 |
||
132 |
/** |
|
133 |
* Retrieve account password from the preferences |
|
134 |
* @return Registered account password |
|
135 |
*/ |
|
136 |
private String getRegisteredAccountPassword() { |
|
137 |
return (settings.getString(getString(R.string.settings_key_account_password), DEFAULT_STRING_VALUE)); |
|
138 |
} |
|
139 |
||
140 |
/** |
|
141 |
* Retrieve account username from the preferences |
|
142 |
* @return Registered account username |
|
143 |
*/ |
|
144 |
private String getRegisteredAccountUsername() { |
|
145 |
return (settings.getString(getString(R.string.settings_key_account_username), DEFAULT_STRING_VALUE)); |
|
146 |
} |
|
147 |
||
148 |
/** |
|
149 |
* Retrieve proxy password from the preferences |
|
150 |
* @return Registered proxy password |
|
151 |
*/ |
|
152 |
private String getRegisteredProxyPassword() { |
|
153 |
return (settings.getString(getString(R.string.settings_key_proxy_password), DEFAULT_STRING_VALUE)); |
|
154 |
} |
|
155 |
||
156 |
/** |
|
157 |
* Retrieve proxy port from the preferences |
|
158 |
* @return Registered proxy port |
|
159 |
*/ |
|
160 |
private String getRegisteredProxyPort() { |
|
161 |
return (settings.getString(getString(R.string.settings_key_proxy_port), DEFAULT_STRING_VALUE)); |
|
162 |
} |
|
163 |
||
164 |
/** |
|
165 |
* Retrieve proxy server from the preferences |
|
166 |
* @return Registered proxy server |
|
167 |
*/ |
|
168 |
private String getRegisteredProxyServer() { |
|
169 |
return (settings.getString(getString(R.string.settings_key_proxy_server), DEFAULT_STRING_VALUE)); |
|
170 |
} |
|
171 |
||
172 |
/** |
|
173 |
* Retrieve proxy type from the preferences |
|
174 |
* @return Registered proxy type |
|
175 |
*/ |
|
176 |
private int getRegisteredProxyType() { |
|
177 |
return (settings.getInt(getString(R.string.settings_key_proxy_type), DEFAULT_INT_VALUE)); |
|
178 |
} |
|
179 |
||
180 |
/** |
|
181 |
* Retrieve proxy use from the preferences |
|
182 |
* @return Registered proxy use |
|
183 |
*/ |
|
184 |
private boolean getRegisteredProxyUse() { |
|
185 |
return (settings.getBoolean(getString(R.string.settings_key_proxy_use), DEFAULT_BOOLEAN_VALUE)); |
|
186 |
} |
|
187 |
||
188 |
/** |
|
189 |
* Retrieve proxy username from the preferences |
|
190 |
* @return Registered proxy username |
|
191 |
*/ |
|
192 |
private String getRegisteredProxyUsername() { |
|
193 |
return (settings.getString(getString(R.string.settings_key_proxy_username), DEFAULT_STRING_VALUE)); |
|
194 |
} |
|
195 |
||
196 |
/** |
|
197 |
* Retrieve xmpp port from the preferences |
|
198 |
* @return Registered xmpp port |
|
199 |
*/ |
|
200 |
private String getRegisteredXMPPPort() { |
|
201 |
return (settings.getString(getString(R.string.settings_key_xmpp_port), DEFAULT_XMPP_PORT)); |
|
202 |
} |
|
203 |
||
204 |
/** |
|
205 |
* Retrieve xmpp server from the preferences |
|
206 |
* @return Registered xmpp server |
|
207 |
*/ |
|
208 |
private String getRegisteredXMPPServer() { |
|
209 |
return (settings.getString(getString(R.string.settings_key_xmpp_server), DEFAULT_STRING_VALUE)); |
|
210 |
} |
|
211 |
||
212 |
/** |
|
213 |
* Retrieve TLS use from the preferences |
|
214 |
* @return Registered TLS use |
|
215 |
*/ |
|
216 |
private boolean getRegisteredXMPPTLSUse() { |
|
217 |
return (settings.getBoolean(getString(R.string.settings_key_xmpp_tls_use), DEFAULT_BOOLEAN_VALUE)); |
|
218 |
} |
|
219 |
||
220 |
/** |
|
230
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
221 |
* Initialize Account tab fields |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
222 |
*/ |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
223 |
private void initAccountFields() { |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
224 |
accUsernameField = (EditText) findViewById(R.id.settings_account_username); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
225 |
accPasswordField = (EditText) findViewById(R.id.settings_account_password); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
226 |
} |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
227 |
|
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
228 |
/** |
212 | 229 |
* Initialize all of the components displayed in tabs (EditText fields, CheckBoxes, Spinners...) |
230 |
*/ |
|
231 |
private void initFields() { |
|
230
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
232 |
initAccountFields(); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
233 |
initXMPPFields(); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
234 |
initProxyFields(); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
235 |
} |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
236 |
|
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
237 |
/** |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
238 |
* Initialize Proxy tab fields |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
239 |
*/ |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
240 |
private void initProxyFields() { |
212 | 241 |
proxyUseCheckBox = (CheckBox) findViewById(R.id.settings_proxy_use); |
242 |
proxyTypeSpinner = (Spinner) findViewById(R.id.settings_proxy_type); |
|
243 |
proxyServerField = (EditText) findViewById(R.id.settings_proxy_server); |
|
244 |
proxyPortField = (EditText) findViewById(R.id.settings_proxy_port); |
|
245 |
proxyUsernameField = (EditText) findViewById(R.id.settings_proxy_username); |
|
246 |
proxyPasswordField = (EditText) findViewById(R.id.settings_proxy_password); |
|
247 |
} |
|
248 |
||
249 |
/** |
|
250 |
* Initialize proxy's types spinner of the proxy tab |
|
251 |
*/ |
|
252 |
private void initProxyTypesSpinner() { |
|
253 |
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.proxy_types, |
|
259 | 254 |
android.R.layout.simple_spinner_item); |
212 | 255 |
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); |
256 |
proxyTypeSpinner.setAdapter(adapter); |
|
257 |
} |
|
258 |
||
259 |
/** |
|
260 |
* Initialize the checkbox allowing user to use a proxy |
|
261 |
*/ |
|
262 |
private void initProxyUseCheckBox() { |
|
263 |
proxyUseCheckBox.setOnClickListener(new OnClickListener() { |
|
264 |
||
265 |
public void onClick(View v) { |
|
266 |
if (proxyUseCheckBox.isChecked()) { |
|
267 |
enableProxyParameters(); |
|
268 |
} else { |
|
269 |
disableProxyParameters(); |
|
270 |
} |
|
271 |
} |
|
272 |
}); |
|
273 |
} |
|
274 |
||
275 |
/** |
|
276 |
* Initialize "save" buttons allowing user to save settings |
|
277 |
*/ |
|
278 |
private void initSaveButtons() { |
|
279 |
final ArrayList<Integer> views = new ArrayList<Integer>(); |
|
280 |
Button saveButton = null; |
|
281 |
||
282 |
views.add(R.id.settings_account_button_save); |
|
283 |
views.add(R.id.settings_proxy_button_save); |
|
284 |
views.add(R.id.settings_xmpp_button_save); |
|
285 |
||
286 |
for (int i = 0; i < views.size(); i++) { |
|
287 |
saveButton = (Button) findViewById(views.get(i)); |
|
230
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
288 |
saveButton.setFocusable(true); |
212 | 289 |
saveButton.setOnClickListener(new View.OnClickListener() { |
290 |
||
291 |
public void onClick(View v) { |
|
292 |
saveSettings(); |
|
263
ff0b4790a5ed
La gestion de la connection et des changement de settings a ete revu.
marseille@marseille-desktop
parents:
260
diff
changeset
|
293 |
setResult(69); |
212 | 294 |
} |
295 |
}); |
|
296 |
} |
|
297 |
} |
|
298 |
||
299 |
/** |
|
300 |
* Initialize tabbed window view by adding tabs and setting the default tab |
|
301 |
*/ |
|
302 |
private void initTabbedWindow() { |
|
303 |
TabHost tHost = (TabHost) this.findViewById(R.id.settings_tab_host); |
|
304 |
tHost.setup(); |
|
305 |
addAccountTab(tHost); |
|
306 |
addXMPPTab(tHost); |
|
307 |
addProxyTab(tHost); |
|
308 |
tHost.setCurrentTab(0); |
|
309 |
} |
|
310 |
||
311 |
/** |
|
230
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
312 |
* Initialize XMPP tab fields |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
313 |
*/ |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
314 |
private void initXMPPFields() { |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
315 |
xmppServerField = (EditText) findViewById(R.id.settings_xmpp_server); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
316 |
xmppPortField = (EditText) findViewById(R.id.settings_xmpp_port); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
317 |
xmppUseTLSCheckBox = (CheckBox) findViewById(R.id.settings_xmpp_use_tls); |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
318 |
} |
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
319 |
|
21d91ef67e97
Bug #166 - Passage des différents EditText de l'activité Settings en SingleLine. Correction d'un bug poussant le champs Port en dehors de la zone de vue dans les tabs Proxy et XMPP.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
227
diff
changeset
|
320 |
/** |
212 | 321 |
* {@inheritDoc} |
322 |
*/ |
|
323 |
@Override |
|
324 |
public void onCreate(Bundle savedInstanceState) { |
|
325 |
super.onCreate(savedInstanceState); |
|
326 |
setContentView(R.layout.edit_settings); |
|
327 |
initTabbedWindow(); |
|
328 |
initFields(); |
|
329 |
settings = getSharedPreferences(getString(R.string.settings_filename), MODE_PRIVATE); |
|
330 |
} |
|
331 |
||
332 |
/** |
|
333 |
* {@inheritDoc} |
|
334 |
*/ |
|
335 |
@Override |
|
336 |
public boolean onCreateOptionsMenu(Menu menu) { |
|
337 |
MenuInflater mInflater = getMenuInflater(); |
|
338 |
mInflater.inflate(R.menu.edit_settings, menu); |
|
339 |
return true; |
|
340 |
} |
|
341 |
||
342 |
/** |
|
343 |
* {@inheritDoc} |
|
344 |
*/ |
|
345 |
@Override |
|
346 |
public boolean onOptionsItemSelected(MenuItem item) { |
|
347 |
Intent i = null; |
|
348 |
switch (item.getItemId()) { |
|
349 |
case R.id.settings_menu_create_account: |
|
350 |
i = new Intent(this, CreateAccount.class); |
|
351 |
startActivity(i); |
|
352 |
return true; |
|
353 |
case R.id.settings_menu_login: |
|
227
586bbd6b647d
Bug #149 -- Rectification de l'empilement des activités de settings, en terminant l'activité lors du retour sur l'activité Login.
dasilvj@jean-manuel-da-silvas-macbook.local
parents:
212
diff
changeset
|
354 |
finish(); |
212 | 355 |
return true; |
256 | 356 |
} |
212 | 357 |
return false; |
358 |
} |
|
359 |
||
360 |
/** |
|
361 |
* {@inheritDoc} |
|
362 |
*/ |
|
363 |
@Override |
|
364 |
public void onResume() { |
|
365 |
super.onResume(); |
|
366 |
refreshAccountTabFields(); |
|
367 |
refreshXMPPTabFields(); |
|
368 |
refreshProxyTabFields(); |
|
369 |
||
370 |
if (!proxyUseCheckBox.isChecked()) |
|
371 |
disableProxyParameters(); |
|
372 |
} |
|
373 |
||
374 |
/** |
|
375 |
* {@inheritDoc} |
|
376 |
*/ |
|
377 |
@Override |
|
378 |
public void onStart() { |
|
379 |
super.onStart(); |
|
380 |
initProxyTypesSpinner(); |
|
381 |
initProxyUseCheckBox(); |
|
382 |
initSaveButtons(); |
|
383 |
} |
|
384 |
||
385 |
/** |
|
386 |
* Refresh values of "Account" tab fields |
|
387 |
*/ |
|
388 |
private void refreshAccountTabFields() { |
|
389 |
accUsernameField.setText(getRegisteredAccountUsername()); |
|
390 |
accPasswordField.setText(getRegisteredAccountPassword()); |
|
391 |
} |
|
392 |
||
393 |
/** |
|
394 |
* Refresh values of "Account" tab fields |
|
395 |
*/ |
|
396 |
private void refreshProxyTabFields() { |
|
397 |
proxyUseCheckBox.setChecked(getRegisteredProxyUse()); |
|
398 |
proxyTypeSpinner.setSelection(getRegisteredProxyType()); |
|
399 |
proxyServerField.setText(getRegisteredProxyServer()); |
|
400 |
proxyPortField.setText(getRegisteredProxyPort()); |
|
401 |
proxyUsernameField.setText(getRegisteredProxyUsername()); |
|
402 |
proxyPasswordField.setText(getRegisteredProxyPassword()); |
|
403 |
} |
|
404 |
||
405 |
/** |
|
406 |
* Refresh values of "Account" tab fields |
|
407 |
*/ |
|
408 |
private void refreshXMPPTabFields() { |
|
409 |
xmppServerField.setText(getRegisteredXMPPServer()); |
|
410 |
xmppPortField.setText(getRegisteredXMPPPort()); |
|
411 |
xmppUseTLSCheckBox.setChecked(getRegisteredXMPPTLSUse()); |
|
412 |
} |
|
413 |
||
414 |
/** |
|
415 |
* Register account settings changes in SharedPreferences.Editor object passed by parameter |
|
416 |
* @param settingsEditor |
|
417 |
*/ |
|
418 |
private void registerAccountSettingsChanges(SharedPreferences.Editor settingsEditor) { |
|
419 |
final String usernameFieldValue = accUsernameField.getText().toString(); |
|
420 |
final String passwordFieldValue = accPasswordField.getText().toString(); |
|
421 |
||
422 |
if (getRegisteredAccountUsername().equals(usernameFieldValue) == false) |
|
423 |
settingsEditor.putString(getString(R.string.settings_key_account_username), usernameFieldValue); |
|
424 |
if (getRegisteredAccountPassword().equals(passwordFieldValue) == false) |
|
425 |
settingsEditor.putString(getString(R.string.settings_key_account_password), passwordFieldValue); |
|
426 |
Log.i(getString(R.string.edit_settings_tag), LOG_MSG_ACCOUNT_SETTINGS_REGISTERED); |
|
427 |
} |
|
428 |
||
429 |
/** |
|
430 |
* Register proxy settings changes in SharedPreferences.Editor object passed by parameter |
|
431 |
* @param settingsEditor |
|
432 |
*/ |
|
433 |
private void registerProxySettingsChanges(SharedPreferences.Editor settingsEditor) { |
|
434 |
final int proxyTypeFieldValue = proxyTypeSpinner.getSelectedItemPosition(); |
|
435 |
final String serverFieldValue = proxyServerField.getText().toString(); |
|
436 |
final String portFieldValue = proxyPortField.getText().toString(); |
|
437 |
final String usernameFieldValue = proxyUsernameField.getText().toString(); |
|
438 |
final String passwordFieldValue = proxyPasswordField.getText().toString(); |
|
439 |
||
440 |
if (getRegisteredProxyType() != proxyTypeFieldValue) |
|
441 |
settingsEditor.putInt(getString(R.string.settings_key_proxy_type), proxyTypeFieldValue); |
|
442 |
if (getRegisteredProxyServer().equals(serverFieldValue) == false) |
|
443 |
settingsEditor.putString(getString(R.string.settings_key_proxy_server), serverFieldValue); |
|
444 |
if (getRegisteredProxyPort().equals(portFieldValue) == false) |
|
445 |
settingsEditor.putString(getString(R.string.settings_key_proxy_port), portFieldValue); |
|
446 |
if (getRegisteredProxyUsername().equals(usernameFieldValue) == false) |
|
447 |
settingsEditor.putString(getString(R.string.settings_key_proxy_username), usernameFieldValue); |
|
448 |
if (getRegisteredProxyPassword().equals(passwordFieldValue) == false) |
|
449 |
settingsEditor.putString(getString(R.string.settings_key_proxy_password), passwordFieldValue); |
|
450 |
Log.i(getString(R.string.edit_settings_tag), LOG_MSG_PROXY_SETTINGS_REGISTERED); |
|
451 |
} |
|
452 |
||
453 |
/** |
|
454 |
* Register XMPP settings changes in SharedPreferences.Editor object passed by parameter |
|
455 |
* @param settingsEditor |
|
456 |
*/ |
|
457 |
private void registerXMPPSettingsChanges(SharedPreferences.Editor settingsEditor) { |
|
458 |
final boolean tlsUseCheckBoxValue = getCheckBoxValue(R.id.settings_xmpp_use_tls); |
|
459 |
final String serverFieldValue = xmppServerField.getText().toString(); |
|
460 |
final String portFieldValue = xmppPortField.getText().toString(); |
|
461 |
||
462 |
if (getRegisteredXMPPTLSUse() != tlsUseCheckBoxValue) |
|
463 |
settingsEditor.putBoolean(getString(R.string.settings_key_xmpp_tls_use), tlsUseCheckBoxValue); |
|
464 |
if (getRegisteredXMPPServer().equals(serverFieldValue) == false) |
|
465 |
settingsEditor.putString(getString(R.string.settings_key_xmpp_server), serverFieldValue); |
|
466 |
if (getRegisteredXMPPPort().equals(portFieldValue) == false) |
|
467 |
settingsEditor.putString(getString(R.string.settings_key_xmpp_port), portFieldValue); |
|
468 |
Log.i(getString(R.string.edit_settings_tag), LOG_MSG_XMPP_SETTINGS_REGISTERED); |
|
469 |
} |
|
470 |
||
471 |
/** |
|
472 |
* Save settings in shared preferences |
|
473 |
*/ |
|
474 |
private void saveSettings() { |
|
475 |
final SharedPreferences.Editor settingsEditor = settings.edit(); |
|
476 |
final boolean proxyUseCheckBoxValue = getCheckBoxValue(R.id.settings_proxy_use); |
|
477 |
||
478 |
if (getRegisteredProxyUse() != proxyUseCheckBoxValue) |
|
479 |
settingsEditor.putBoolean(getString(R.string.settings_key_proxy_use), proxyUseCheckBoxValue); |
|
480 |
if (proxyUseCheckBoxValue) |
|
481 |
registerProxySettingsChanges(settingsEditor); |
|
482 |
registerAccountSettingsChanges(settingsEditor); |
|
483 |
registerXMPPSettingsChanges(settingsEditor); |
|
484 |
||
485 |
if (settingsEditor.commit()) { |
|
486 |
displayNotification(getText(R.string.settings_saved_ok)); |
|
487 |
Log.i(getString(R.string.edit_settings_tag), LOG_MSG_SETTINGS_SAVED); |
|
488 |
} |
|
489 |
} |
|
490 |
} |