1package eu.siacs.conversations.ui;
2
3import java.util.ArrayList;
4import java.util.Arrays;
5import java.util.Locale;
6
7import eu.siacs.conversations.entities.Account;
8import android.content.SharedPreferences;
9import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
10import android.os.Build;
11import android.os.Bundle;
12import android.preference.ListPreference;
13import android.preference.PreferenceManager;
14
15public class SettingsActivity extends XmppActivity implements
16 OnSharedPreferenceChangeListener {
17 private SettingsFragment mSettingsFragment;
18
19 @Override
20 protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 mSettingsFragment = new SettingsFragment();
23 getFragmentManager().beginTransaction()
24 .replace(android.R.id.content, mSettingsFragment).commit();
25 }
26
27 @Override
28 void onBackendConnected() {
29
30 }
31
32 @Override
33 public void onStart() {
34 super.onStart();
35 PreferenceManager.getDefaultSharedPreferences(this)
36 .registerOnSharedPreferenceChangeListener(this);
37 ListPreference resources = (ListPreference) mSettingsFragment
38 .findPreference("resource");
39 if (resources != null) {
40 ArrayList<CharSequence> entries = new ArrayList<CharSequence>(
41 Arrays.asList(resources.getEntries()));
42 entries.add(0, Build.MODEL);
43 resources.setEntries(entries.toArray(new CharSequence[entries
44 .size()]));
45 resources.setEntryValues(entries.toArray(new CharSequence[entries
46 .size()]));
47 }
48 }
49
50 @Override
51 public void onStop() {
52 super.onStop();
53 PreferenceManager.getDefaultSharedPreferences(this)
54 .unregisterOnSharedPreferenceChangeListener(this);
55 }
56
57 @Override
58 public void onSharedPreferenceChanged(SharedPreferences preferences,
59 String name) {
60 if (name.equals("resource")) {
61 String resource = preferences.getString("resource", "mobile")
62 .toLowerCase(Locale.US);
63 if (xmppConnectionServiceBound) {
64 for (Account account : xmppConnectionService.getAccounts()) {
65 account.setResource(resource);
66 if (!account.isOptionSet(Account.OPTION_DISABLED)) {
67 xmppConnectionService.reconnectAccount(account, false);
68 }
69 }
70 }
71 }
72 }
73
74}