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.findPreference("resource");
38 if (resources!=null) {
39 ArrayList<CharSequence> entries = new ArrayList<CharSequence>(Arrays.asList(resources.getEntries()));
40 entries.add(0,Build.MODEL);
41 resources.setEntries(entries.toArray(new CharSequence[entries.size()]));
42 resources.setEntryValues(entries.toArray(new CharSequence[entries.size()]));
43 }
44 }
45
46 @Override
47 public void onStop() {
48 super.onStop();
49 PreferenceManager.getDefaultSharedPreferences(this)
50 .unregisterOnSharedPreferenceChangeListener(this);
51 }
52
53 @Override
54 public void onSharedPreferenceChanged(SharedPreferences preferences,
55 String name) {
56 if (name.equals("resource")) {
57 String resource = preferences.getString("resource", "mobile")
58 .toLowerCase(Locale.US);
59 if (xmppConnectionServiceBound) {
60 for (Account account : xmppConnectionService.getAccounts()) {
61 account.setResource(resource);
62 if (!account.isOptionSet(Account.OPTION_DISABLED)) {
63 xmppConnectionService.reconnectAccount(account, false);
64 }
65 }
66 }
67 }
68 }
69
70}