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.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}