Change checkboxes to switches in "Settings->Backup&Reset"

Change-Id: I92b5d0051b717c66bc456a0864c3068b13112dd3

Bug: 16982604
This commit is contained in:
arete
2014-08-12 16:33:52 -07:00
committed by Di Wu
parent d83b3c2a39
commit ce543836ce
2 changed files with 48 additions and 31 deletions

View File

@@ -22,7 +22,7 @@
android:title="@string/backup_section_title"> android:title="@string/backup_section_title">
<!-- Backup settings --> <!-- Backup settings -->
<CheckBoxPreference <SwitchPreference
android:key="backup_data" android:key="backup_data"
android:title="@string/backup_data_title" android:title="@string/backup_data_title"
android:summary="@string/backup_data_summary" android:summary="@string/backup_data_summary"
@@ -37,7 +37,7 @@
<intent android:action="dummy" /> <intent android:action="dummy" />
</PreferenceScreen> </PreferenceScreen>
<CheckBoxPreference <SwitchPreference
android:key="auto_restore" android:key="auto_restore"
android:title="@string/auto_restore_title" android:title="@string/auto_restore_title"
android:summary="@string/auto_restore_summary" android:summary="@string/auto_restore_summary"

View File

@@ -27,9 +27,10 @@ import android.os.Bundle;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.os.UserManager; import android.os.UserManager;
import android.preference.CheckBoxPreference;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
import android.provider.Settings; import android.provider.Settings;
/** /**
@@ -46,8 +47,8 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
private static final String CONFIGURE_ACCOUNT = "configure_account"; private static final String CONFIGURE_ACCOUNT = "configure_account";
private static final String PERSONAL_DATA_CATEGORY = "personal_data_category"; private static final String PERSONAL_DATA_CATEGORY = "personal_data_category";
private IBackupManager mBackupManager; private IBackupManager mBackupManager;
private CheckBoxPreference mBackup; private SwitchPreference mBackup;
private CheckBoxPreference mAutoRestore; private SwitchPreference mAutoRestore;
private Dialog mConfirmDialog; private Dialog mConfirmDialog;
private PreferenceScreen mConfigure; private PreferenceScreen mConfigure;
@@ -63,8 +64,12 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
mBackupManager = IBackupManager.Stub.asInterface( mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE)); ServiceManager.getService(Context.BACKUP_SERVICE));
mBackup = (CheckBoxPreference) screen.findPreference(BACKUP_DATA); mBackup = (SwitchPreference) screen.findPreference(BACKUP_DATA);
mAutoRestore = (CheckBoxPreference) screen.findPreference(AUTO_RESTORE); mBackup.setOnPreferenceChangeListener(preferenceChangeListener);
mAutoRestore = (SwitchPreference) screen.findPreference(AUTO_RESTORE);
mAutoRestore.setOnPreferenceChangeListener(preferenceChangeListener);
mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_ACCOUNT); mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_ACCOUNT);
if (UserManager.get(getActivity()).hasUserRestriction( if (UserManager.get(getActivity()).hasUserRestriction(
@@ -98,29 +103,34 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
super.onStop(); super.onStop();
} }
@Override private OnPreferenceChangeListener preferenceChangeListener = new OnPreferenceChangeListener() {
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, @Override
Preference preference) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (preference == mBackup) { if (!(preference instanceof SwitchPreference)) {
if (!mBackup.isChecked()) { return true;
showEraseBackupDialog();
} else {
setBackupEnabled(true);
} }
} else if (preference == mAutoRestore) { boolean nextValue = (Boolean) newValue;
boolean curState = mAutoRestore.isChecked(); boolean result = false;
try { if (preference == mBackup) {
mBackupManager.setAutoRestore(curState); if (nextValue == false) {
} catch (RemoteException e) { showEraseBackupDialog();
mAutoRestore.setChecked(!curState); } else {
setBackupEnabled(true);
}
result = true;
} else if (preference == mAutoRestore) {
try {
mBackupManager.setAutoRestore(nextValue);
result = true;
} catch (RemoteException e) {
mAutoRestore.setChecked(!nextValue);
}
} }
return result;
} }
return super.onPreferenceTreeClick(preferenceScreen, preference); };
}
private void showEraseBackupDialog() { private void showEraseBackupDialog() {
mBackup.setChecked(true);
mDialogType = DIALOG_ERASE_BACKUP; mDialogType = DIALOG_ERASE_BACKUP;
CharSequence msg = getResources().getText(R.string.backup_erase_dialog_message); CharSequence msg = getResources().getText(R.string.backup_erase_dialog_message);
// TODO: DialogFragment? // TODO: DialogFragment?
@@ -159,7 +169,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
mConfigure.setEnabled(configureEnabled); mConfigure.setEnabled(configureEnabled);
mConfigure.setIntent(configIntent); mConfigure.setIntent(configIntent);
setConfigureSummary(configSummary); setConfigureSummary(configSummary);
} }
private void setConfigureSummary(String summary) { private void setConfigureSummary(String summary) {
if (summary != null) { if (summary != null) {
@@ -179,13 +189,20 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
} }
} }
@Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) { // Dialog is triggered before Switch status change, that means marking the Switch to
//updateProviders(); // true in showEraseBackupDialog() method will be override by following status change.
if (mDialogType == DIALOG_ERASE_BACKUP) { // So we do manual switching here due to users' response.
if (mDialogType == DIALOG_ERASE_BACKUP) {
// Accept turning off backup
if (which == DialogInterface.BUTTON_POSITIVE) {
setBackupEnabled(false); setBackupEnabled(false);
updateConfigureSummary(); } else if (which == DialogInterface.BUTTON_NEGATIVE) {
// Reject turning off backup
setBackupEnabled(true);
} }
updateConfigureSummary();
} }
mDialogType = 0; mDialogType = 0;
} }