Fixed navigation behavior
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / Preferences.java
index abb5b8a..70f3362 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
@@ -35,6 +36,7 @@ import android.view.ContextMenu.ContextMenuInfo;
 import android.view.View;\r
 import android.widget.AdapterView.AdapterContextMenuInfo;\r
 \r
+import com.actionbarsherlock.app.ActionBar;\r
 import com.actionbarsherlock.app.SherlockPreferenceActivity;\r
 import com.actionbarsherlock.view.Menu;\r
 import com.actionbarsherlock.view.MenuInflater;\r
@@ -51,13 +53,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
@@ -68,6 +71,8 @@ public class Preferences extends SherlockPreferenceActivity {
     addPreferencesFromResource(R.xml.preferences);\r
     registerForContextMenu(getListView());\r
     populateAccountList();\r
+    ActionBar actionBar = getSherlock().getActionBar();\r
+    actionBar.setDisplayHomeAsUpEnabled(true);\r
     //populateSessionList();\r
   }\r
   \r
@@ -98,12 +103,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 +119,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
@@ -148,6 +154,11 @@ public class Preferences extends SherlockPreferenceActivity {
         mSessions.remove(ocs);\r
         getPreferenceScreen().removePreference(getPreferenceScreen().getPreference(mSelectedMenuItem+1));\r
         break;\r
+      case android.R.id.home:\r
+         intent = new Intent(getBaseContext(), LandingActivity.class);\r
+         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);\r
+         startActivity(intent);\r
+         break;\r
       default:\r
         Log.w(TAG, "Unknown menu item triggered");\r
         return false;\r
@@ -194,5 +205,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