Add new preference category on settings and list in it the accounts
authorjabarros <jabarros@solidgear.es>
Tue, 5 Aug 2014 09:22:16 +0000 (11:22 +0200)
committerjabarros <jabarros@solidgear.es>
Tue, 5 Aug 2014 09:22:16 +0000 (11:22 +0200)
res/values/strings.xml
res/xml/preferences.xml
src/com/owncloud/android/ui/activity/Preferences.java

index a8da038..85a35c4 100644 (file)
        <string name="uploader_upload_forbidden_permissions">to upload in this folder</string>
        <string name="downloader_download_file_not_found">The file is no longer available on the server</string>
 
+       <string name="prefs_category_accounts">Accounts</string>
+
 </resources>
index 69b4b28..8a14c9a 100644 (file)
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
-       <PreferenceCategory android:title="@string/prefs_category_general">
+    <PreferenceCategory android:title="@string/prefs_category_accounts" android:key="accounts_category">
+    </PreferenceCategory>
     
+       <PreferenceCategory android:title="@string/prefs_category_general">
     <!-- ListPreference
         android:key="select_oc_account"
         android:title="@string/prefs_select_oc_account"
index 1f18ca8..dcd7027 100644 (file)
@@ -18,6 +18,7 @@
 package com.owncloud.android.ui.activity;
 
 import android.accounts.Account;
+import android.accounts.AccountManager;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
@@ -35,6 +36,7 @@ import com.actionbarsherlock.app.ActionBar;
 import com.actionbarsherlock.app.SherlockPreferenceActivity;
 import com.actionbarsherlock.view.Menu;
 import com.actionbarsherlock.view.MenuItem;
+import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.db.DbHandler;
@@ -69,6 +71,13 @@ public class Preferences extends SherlockPreferenceActivity {
         actionBar.setIcon(DisplayUtils.getSeasonalIconId());
         actionBar.setDisplayHomeAsUpEnabled(true);
         
+        // Load the accounts category for adding the list of accounts
+        PreferenceCategory accountsPrefCategory = (PreferenceCategory) findPreference("accounts_category");
+
+        // Populate the accounts category with the list of accounts
+        createAccountsCheckboxPreferences(accountsPrefCategory);
+
+
         Preference p = findPreference("manage_account");
         if (p != null)
         p.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@@ -301,5 +310,27 @@ public class Preferences extends SherlockPreferenceActivity {
         mDbHandler.close();
         super.onDestroy();
     }
-    
+
+    /**
+     * Create the list of accounts that have been added into the app
+     * 
+     * @param accountsPrefCategory
+     */
+    private void createAccountsCheckboxPreferences(PreferenceCategory accountsPrefCategory) {
+        AccountManager am = (AccountManager) getSystemService(ACCOUNT_SERVICE);
+        Account accounts[] = am.getAccountsByType(MainApp.getAccountType());
+        Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
+        for (Account a : accounts) {
+            CheckBoxPreference checkBoxPreference = new CheckBoxPreference(this);
+            checkBoxPreference.setKey(a.name);
+            checkBoxPreference.setTitle(a.name);
+
+            // Check the current account that is being used
+            if (a.name.equals(currentAccount.name)) {
+                checkBoxPreference.setChecked(true);
+            }
+
+            accountsPrefCategory.addPreference(checkBoxPreference);
+        }
+    }
 }