X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/7dfa955a03c8c4844d076d399b5d24b448ad9583..aae90eb1aa42a11449e30330e3e23e1e9e5eebb6:/src/com/owncloud/android/ui/activity/Preferences.java diff --git a/src/com/owncloud/android/ui/activity/Preferences.java b/src/com/owncloud/android/ui/activity/Preferences.java index 792bf58f..e726efad 100644 --- a/src/com/owncloud/android/ui/activity/Preferences.java +++ b/src/com/owncloud/android/ui/activity/Preferences.java @@ -66,15 +66,12 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa private static final String TAG = "OwnCloudPreferences"; - private static final String PREVIOUS_ACCOUNT_KEY = "ACCOUNT"; - private DbHandler mDbHandler; private CheckBoxPreference pCode; //private CheckBoxPreference pLogging; //private Preference pLoggingHistory; private Preference pAboutApp; - private Account mPreviousAccount = null; private PreferenceCategory mAccountsPrefCategory = null; private final Handler mHandler = new Handler(); private String mAccountName; @@ -91,13 +88,8 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa ActionBar actionBar = getSherlock().getActionBar(); actionBar.setIcon(DisplayUtils.getSeasonalIconId()); actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setTitle(R.string.actionbar_settings); - if (savedInstanceState != null) { - mPreviousAccount = savedInstanceState.getParcelable(PREVIOUS_ACCOUNT_KEY); - } else { - mPreviousAccount = AccountUtils.getCurrentOwnCloudAccount(this); - } - // Load the accounts category for adding the list of accounts mAccountsPrefCategory = (PreferenceCategory) findPreference("accounts_category"); @@ -108,6 +100,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa ListView listView = (ListView) parent; ListAdapter listAdapter = listView.getAdapter(); Object obj = listAdapter.getItem(position); + if (obj != null && obj instanceof LongClickableCheckBoxPreference) { mShowContextMenu = true; mAccountName = obj.toString(); @@ -121,6 +114,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa } }); + // Register context menu for list of preferences. registerForContextMenu(getListView()); pCode = (CheckBoxPreference) findPreference("set_pincode"); @@ -302,6 +296,9 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { + + // Filter for only showing contextual menu when long press on the + // accounts if (mShowContextMenu) { getMenuInflater().inflate(R.menu.account_picker_long_click, menu); mShowContextMenu = false; @@ -323,6 +320,8 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa for (Account a : accounts) { if (a.name.equals(mAccountName)) { if (item.getItemId() == R.id.change_password) { + + // Change account password Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class); updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, a); updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, @@ -330,6 +329,8 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa startActivity(updateAccountCredentials); } else if (item.getItemId() == R.id.delete_account) { + + // Remove account am.removeAccount(a, this, mHandler); } } @@ -349,7 +350,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa accountName = accounts[0].name; AccountUtils.setCurrentOwnCloudAccount(this, accountName); } - createAccountsCheckboxPreferences(); + addAccountsCheckboxPreferences(); } } @@ -361,7 +362,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa pCode.setChecked(state); // Populate the accounts category with the list of accounts - createAccountsCheckboxPreferences(); + addAccountsCheckboxPreferences(); } @Override @@ -403,7 +404,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa * Create the list of accounts that has been added into the app */ @SuppressWarnings("deprecation") - private void createAccountsCheckboxPreferences() { + private void addAccountsCheckboxPreferences() { // Remove accounts in case list is refreshing for avoiding to have // duplicate items @@ -427,6 +428,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa LongClickableCheckBoxPreference accountPreference = new LongClickableCheckBoxPreference(this); accountPreference.setKey(a.name); accountPreference.setTitle(a.name); + mAccountsPrefCategory.addPreference(accountPreference); // Check the current account that is being used if (a.name.equals(currentAccount.name)) { @@ -444,8 +446,23 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa for (Account a : accounts) { CheckBoxPreference p = (CheckBoxPreference) findPreference(a.name); if (key.equals(a.name)) { + boolean accountChanged = !p.isChecked(); p.setChecked(true); - AccountUtils.setCurrentOwnCloudAccount(getApplicationContext(), a.name); + AccountUtils.setCurrentOwnCloudAccount( + getApplicationContext(), + a.name + ); + if (accountChanged) { + // restart the main activity + Intent i = new Intent( + Preferences.this, + FileDisplayActivity.class + ); + i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(i); + } else { + finish(); + } } else { p.setChecked(false); } @@ -454,7 +471,6 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa } }); - mAccountsPrefCategory.addPreference(accountPreference); } // Add Create Account preference at the end of account list if @@ -486,22 +502,4 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa } - @Override - protected void onPause() { - if (this.isFinishing()) { - Account current = AccountUtils.getCurrentOwnCloudAccount(this); - if ((mPreviousAccount == null && current != null) - || (mPreviousAccount != null && !mPreviousAccount.equals(current))) { - // the account set as default changed since this activity was - // created - - // restart the main activity - Intent i = new Intent(this, FileDisplayActivity.class); - i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(i); - } - } - super.onPause(); - } - }