SettingsActivity.java

 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}