diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-09-04 13:56:36 +0200 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-09-04 13:56:36 +0200 |
commit | 01389e900bb7331d53dbe835802757541e1ebf6a (patch) | |
tree | 88b07f05b207d27312f76bb5799080b5b80791be | |
parent | 9817251ed5f48e56c5c3f068a98e9c2a95f3c92c (diff) |
reconnect accounts when resource has been changed in settings
-rw-r--r-- | src/eu/siacs/conversations/ui/SettingsActivity.java | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/src/eu/siacs/conversations/ui/SettingsActivity.java b/src/eu/siacs/conversations/ui/SettingsActivity.java index 64fbde08d..1480cd337 100644 --- a/src/eu/siacs/conversations/ui/SettingsActivity.java +++ b/src/eu/siacs/conversations/ui/SettingsActivity.java @@ -1,13 +1,18 @@ package eu.siacs.conversations.ui; +import java.util.Locale; + +import eu.siacs.conversations.entities.Account; +import android.content.SharedPreferences; +import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.os.Bundle; +import android.preference.PreferenceManager; -public class SettingsActivity extends XmppActivity { +public class SettingsActivity extends XmppActivity implements + OnSharedPreferenceChangeListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - // Display the fragment as the main content. getFragmentManager().beginTransaction() .replace(android.R.id.content, new SettingsFragment()).commit(); } @@ -17,4 +22,35 @@ public class SettingsActivity extends XmppActivity { } + @Override + public void onStart() { + super.onStart(); + PreferenceManager.getDefaultSharedPreferences(this) + .registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onStop() { + super.onPause(); + PreferenceManager.getDefaultSharedPreferences(this) + .unregisterOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences preferences, + String name) { + if (name.equals("resource")) { + String resource = preferences.getString("resource", "mobile") + .toLowerCase(Locale.US); + if (xmppConnectionServiceBound) { + for (Account account : xmppConnectionService.getAccounts()) { + account.setResource(resource); + if (!account.isOptionSet(Account.OPTION_DISABLED)) { + xmppConnectionService.reconnectAccount(account, false); + } + } + } + } + } + } |