From 70bc797a926abdf14bc0d34d9b49a066663fbca7 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Sun, 9 Jan 2011 19:56:51 -0800 Subject: [PATCH] Fix bug #2987804 (Provide a better UI for selecting the Backup account) - make the "Backup account" toggle follow the state of "Back up my data" - reset Backup account in preferences if needed Change-Id: Ifdffb9d268a062f6f5ec617bca82699cc46e2b3a --- src/com/android/settings/PrivacySettings.java | 39 ++++++++++++++----- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java index 9ada710069e..28dc93abf96 100644 --- a/src/com/android/settings/PrivacySettings.java +++ b/src/com/android/settings/PrivacySettings.java @@ -50,7 +50,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements private PreferenceScreen mConfigure; private static final int DIALOG_ERASE_BACKUP = 2; - private int mDialogType; + private int mDialogType; @Override public void onCreate(Bundle savedInstanceState) { @@ -73,6 +73,14 @@ public class PrivacySettings extends SettingsPreferenceFragment implements updateToggles(); } + @Override + public void onResume() { + super.onResume(); + + // Refresh UI + updateToggles(); + } + @Override public void onStop() { if (mConfirmDialog != null && mConfirmDialog.isShowing()) { @@ -105,7 +113,6 @@ public class PrivacySettings extends SettingsPreferenceFragment implements } } } - return super.onPreferenceTreeClick(preferenceScreen, preference); } @@ -147,25 +154,36 @@ public class PrivacySettings extends SettingsPreferenceFragment implements Settings.Secure.BACKUP_AUTO_RESTORE, 1) == 1); mAutoRestore.setEnabled(backupEnabled); - mConfigure.setEnabled(configIntent != null); + final boolean configureEnabled = (configIntent != null) && backupEnabled; + mConfigure.setEnabled(configureEnabled); mConfigure.setIntent(configIntent); - if (configSummary != null) { - mConfigure.setSummary(configSummary); + setConfigureSummary(configSummary); + } + + private void setConfigureSummary(String summary) { + if (summary != null) { + mConfigure.setSummary(summary); } else { mConfigure.setSummary(R.string.backup_configure_account_default_summary); } } + private void updateConfigureSummary() { + try { + String transport = mBackupManager.getCurrentTransport(); + String summary = mBackupManager.getDestinationString(transport); + setConfigureSummary(summary); + } catch (RemoteException e) { + // Not much we can do here + } + } + public void onClick(DialogInterface dialog, int which) { if (which == DialogInterface.BUTTON_POSITIVE) { //updateProviders(); if (mDialogType == DIALOG_ERASE_BACKUP) { setBackupEnabled(false); - } - } else { - if (mDialogType == DIALOG_ERASE_BACKUP) { - mBackup.setChecked(true); - mAutoRestore.setEnabled(true); + updateConfigureSummary(); } } mDialogType = 0; @@ -188,5 +206,6 @@ public class PrivacySettings extends SettingsPreferenceFragment implements } mBackup.setChecked(enable); mAutoRestore.setEnabled(enable); + mConfigure.setEnabled(enable); } }