Update preference description after the user makes a new selection
authorLennart Rosam <lennart@familie-rosam.de>
Wed, 11 Apr 2012 14:29:22 +0000 (16:29 +0200)
committerLennart Rosam <lennart@familie-rosam.de>
Wed, 11 Apr 2012 14:29:22 +0000 (16:29 +0200)
src/eu/alefzero/owncloud/ui/activity/Preferences.java

index abb5b8a..aec2f94 100644 (file)
@@ -28,6 +28,7 @@ import android.content.Intent;
 import android.os.Bundle;\r
 import android.preference.ListPreference;\r
 import android.preference.Preference;\r
+import android.preference.Preference.OnPreferenceChangeListener;\r
 import android.preference.PreferenceScreen;\r
 import android.util.Log;\r
 import android.view.ContextMenu;\r
@@ -51,13 +52,14 @@ import eu.alefzero.owncloud.db.DbHandler;
  * @author Bartek Przybylski\r
  *\r
  */\r
-public class Preferences extends SherlockPreferenceActivity {\r
+public class Preferences extends SherlockPreferenceActivity implements OnPreferenceChangeListener {\r
   private static final String TAG = "OwnCloudPreferences";\r
   private final int mNewSession = 47;\r
   private final int mEditSession = 48;\r
   private DbHandler mDbHandler;\r
   private Vector<OwnCloudSession> mSessions;\r
   private Account[] mAccounts;\r
+  private ListPreference mAccountList;\r
   private int mSelectedMenuItem;\r
   \r
   @Override\r
@@ -98,12 +100,13 @@ public class Preferences extends SherlockPreferenceActivity {
   private void populateAccountList(){\r
          AccountManager accMan = AccountManager.get(this);\r
          mAccounts = accMan.getAccountsByType(AccountAuthenticator.ACCOUNT_TYPE);\r
-         ListPreference accountList = (ListPreference) findPreference("select_oc_account");\r
+         mAccountList = (ListPreference) findPreference("select_oc_account");\r
+         mAccountList.setOnPreferenceChangeListener(this);\r
          \r
          // Display the name of the current account if there is any\r
          Account defaultAccount = AuthUtils.getCurrentOwnCloudAccount(this);\r
          if(defaultAccount != null){\r
-                 accountList.setSummary(defaultAccount.name);\r
+                 mAccountList.setSummary(defaultAccount.name);\r
          }\r
          \r
          // Transform accounts into array of string for preferences to use\r
@@ -113,8 +116,8 @@ public class Preferences extends SherlockPreferenceActivity {
                  accNames[i] = account.name;\r
          }\r
          \r
-         accountList.setEntries(accNames);\r
-         accountList.setEntryValues(accNames);\r
+         mAccountList.setEntries(accNames);\r
+         mAccountList.setEntryValues(accNames);\r
   }\r
 \r
   @Override\r
@@ -194,5 +197,17 @@ public class Preferences extends SherlockPreferenceActivity {
     mDbHandler.close();\r
     super.onDestroy();\r
   }\r
+\r
+@Override\r
+/**\r
+ * Updates the summary of the account selector after a new account has \r
+ * been selected\r
+ */\r
+public boolean onPreferenceChange(Preference preference, Object newValue) {\r
+       if(preference.equals(mAccountList)) {\r
+               mAccountList.setSummary(newValue.toString());\r
+       }\r
+       return true;\r
+}\r
   \r
 }\r