Make account selectable from preferences
[pub/Android/ownCloud.git] / src / eu / alefzero / owncloud / ui / activity / Preferences.java
index 46cabcf..1e35896 100644 (file)
@@ -23,11 +23,15 @@ import java.util.Vector;
 \r
 import eu.alefzero.owncloud.OwnCloudSession;\r
 import eu.alefzero.owncloud.R;\r
+import eu.alefzero.owncloud.authenticator.AccountAuthenticator;\r
 import eu.alefzero.owncloud.db.DbHandler;\r
 \r
+import android.accounts.Account;\r
+import android.accounts.AccountManager;\r
 import android.app.Activity;\r
 import android.content.Intent;\r
 import android.os.Bundle;\r
+import android.preference.ListPreference;\r
 import android.preference.Preference;\r
 import android.preference.PreferenceActivity;\r
 import android.preference.PreferenceScreen;\r
@@ -46,11 +50,12 @@ import android.widget.AdapterView.AdapterContextMenuInfo;
  *\r
  */\r
 public class Preferences extends PreferenceActivity {\r
-  private String TAG = "OwnCloudPreferences";\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 int mSelectedMenuItem;\r
   \r
   @Override\r
@@ -60,6 +65,7 @@ public class Preferences extends PreferenceActivity {
     mSessions = new Vector<OwnCloudSession>();\r
     addPreferencesFromResource(R.xml.preferences);\r
     registerForContextMenu(getListView());\r
+    populateAccountList();\r
     //populateSessionList();\r
   }\r
   \r
@@ -76,13 +82,32 @@ public class Preferences extends PreferenceActivity {
       try {\r
         uri = new URI(mSessions.get(i).getUrl());\r
       } catch (URISyntaxException e) {\r
-        e.printStackTrace(); // should never happend\r
+        e.printStackTrace(); // should never happen\r
         continue;\r
       }\r
       preference.setSummary(uri.getScheme() + "://" + uri.getHost()+uri.getPath());\r
       ps.addPreference(preference);\r
     }\r
   }\r
+  \r
+  /**\r
+   * Populates the account selector\r
+   */\r
+  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
+         \r
+         // Transform accounts into array of string for preferences to use\r
+         String[] accNames = new String[mAccounts.length];\r
+         for(int i = 0; i < mAccounts.length; i++){\r
+                 Account account = mAccounts[i];\r
+                 accNames[i] = account.name;\r
+         }\r
+         \r
+         accountList.setEntries(accNames);\r
+         accountList.setEntryValues(accNames);\r
+  }\r
 \r
   @Override\r
   public boolean onCreateOptionsMenu(Menu menu) {\r