Add new preference category on settings and list in it the accounts
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / activity / Preferences.java
index 05a631d..dcd7027 100644 (file)
@@ -17,6 +17,8 @@
  */
 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;
@@ -34,7 +36,9 @@ 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;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.Log_OC;
@@ -67,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() {
@@ -131,18 +142,19 @@ public class Preferences extends SherlockPreferenceActivity {
 
                         Intent intent = new Intent(Intent.ACTION_SENDTO); 
                         intent.setType("text/plain");
-                        //Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(Preferences.this);
+                        intent.setData(Uri.parse(getString(R.string.mail_recommend))); 
+                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+                        
                         String appName = getString(R.string.app_name);
-                        //String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@')); 
-                        //String recommendSubject = String.format(getString(R.string.recommend_subject), username, appName);
+                        String downloadUrl = getString(R.string.url_app_download);
+                        Account currentAccount = AccountUtils.getCurrentOwnCloudAccount(Preferences.this);
+                        String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@'));
+                        
                         String recommendSubject = String.format(getString(R.string.recommend_subject), appName);
+                        String recommendText = String.format(getString(R.string.recommend_text), appName, downloadUrl, username);
+                        
                         intent.putExtra(Intent.EXTRA_SUBJECT, recommendSubject);
-                        //String recommendText = String.format(getString(R.string.recommend_text), getString(R.string.app_name), username);
-                        String recommendText = String.format(getString(R.string.recommend_text), getString(R.string.app_name), getString(R.string.url_app_download));
                         intent.putExtra(Intent.EXTRA_TEXT, recommendText);
-
-                        intent.setData(Uri.parse(getString(R.string.mail_recommend))); 
-                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
                         startActivity(intent);
 
 
@@ -258,10 +270,10 @@ public class Preferences extends SherlockPreferenceActivity {
 
     @Override
     protected void onResume() {
+        super.onResume();
         SharedPreferences appPrefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
         boolean state = appPrefs.getBoolean("set_pincode", false);
         pCode.setChecked(state);
-        super.onResume();
     }
 
     @Override
@@ -298,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);
+        }
+    }
 }