Update Backup/reset UI

BUG: 20489775
Change-Id: I2c97fdf240ddd3e9f0a518478d5da91b91abe394
This commit is contained in:
Matthew Williams
2015-05-15 21:14:14 -07:00
parent 16a45bafa7
commit 6ee5a4d0ef
4 changed files with 188 additions and 95 deletions

View File

@@ -16,12 +16,9 @@
package com.android.settings;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.backup.IBackupManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Process;
@@ -49,8 +46,7 @@ import java.util.Set;
/**
* Gesture lock pattern settings.
*/
public class PrivacySettings extends SettingsPreferenceFragment implements
DialogInterface.OnClickListener, Indexable {
public class PrivacySettings extends SettingsPreferenceFragment implements Indexable {
// Vendor specific
private static final String GSETTINGS_PROVIDER = "com.google.settings";
@@ -61,15 +57,11 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
private static final String FACTORY_RESET = "factory_reset";
private static final String TAG = "PrivacySettings";
private IBackupManager mBackupManager;
private SwitchPreference mBackup;
private PreferenceScreen mBackup;
private SwitchPreference mAutoRestore;
private Dialog mConfirmDialog;
private PreferenceScreen mConfigure;
private boolean mEnabled;
private static final int DIALOG_ERASE_BACKUP = 2;
private int mDialogType;
@Override
protected int getMetricsCategory() {
return MetricsLogger.PRIVACY;
@@ -89,8 +81,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
mBackup = (SwitchPreference) screen.findPreference(BACKUP_DATA);
mBackup.setOnPreferenceChangeListener(preferenceChangeListener);
mBackup = (PreferenceScreen) screen.findPreference(BACKUP_DATA);
mAutoRestore = (SwitchPreference) screen.findPreference(AUTO_RESTORE);
mAutoRestore.setOnPreferenceChangeListener(preferenceChangeListener);
@@ -120,16 +111,6 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
}
}
@Override
public void onStop() {
if (mConfirmDialog != null && mConfirmDialog.isShowing()) {
mConfirmDialog.dismiss();
}
mConfirmDialog = null;
mDialogType = 0;
super.onStop();
}
private OnPreferenceChangeListener preferenceChangeListener = new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -138,16 +119,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
}
boolean nextValue = (Boolean) newValue;
boolean result = false;
if (preference == mBackup) {
if (nextValue == false) {
// Don't change Switch status until user makes choice in dialog
// so return false here.
showEraseBackupDialog();
} else {
setBackupEnabled(true);
result = true;
}
} else if (preference == mAutoRestore) {
if (preference == mAutoRestore) {
try {
mBackupManager.setAutoRestore(nextValue);
result = true;
@@ -159,19 +131,9 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
}
};
private void showEraseBackupDialog() {
mDialogType = DIALOG_ERASE_BACKUP;
CharSequence msg = getResources().getText(R.string.backup_erase_dialog_message);
// TODO: DialogFragment?
mConfirmDialog = new AlertDialog.Builder(getActivity()).setMessage(msg)
.setTitle(R.string.backup_erase_dialog_title)
.setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, this)
.show();
}
/*
* Creates toggles for each available location provider
* Creates toggles for each backup/reset preference.
*/
private void updateToggles() {
ContentResolver res = getContentResolver();
@@ -184,11 +146,14 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
String transport = mBackupManager.getCurrentTransport();
configIntent = mBackupManager.getConfigurationIntent(transport);
configSummary = mBackupManager.getDestinationString(transport);
mBackup.setSummary(backupEnabled
? R.string.accessibility_feature_state_on
: R.string.accessibility_feature_state_off);
} catch (RemoteException e) {
// leave it 'false' and disable the UI; there's no backup manager
mBackup.setEnabled(false);
}
mBackup.setChecked(backupEnabled);
mAutoRestore.setChecked(Settings.Secure.getInt(res,
Settings.Secure.BACKUP_AUTO_RESTORE, 1) == 1);
@@ -208,54 +173,6 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
}
}
private void updateConfigureSummary() {
try {
String transport = mBackupManager.getCurrentTransport();
String summary = mBackupManager.getDestinationString(transport);
setConfigureSummary(summary);
} catch (RemoteException e) {
// Not much we can do here
}
}
@Override
public void onClick(DialogInterface dialog, int which) {
// Dialog is triggered before Switch status change, that means marking the Switch to
// true in showEraseBackupDialog() method will be override by following status change.
// 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);
} else if (which == DialogInterface.BUTTON_NEGATIVE) {
// Reject turning off backup
setBackupEnabled(true);
}
updateConfigureSummary();
}
mDialogType = 0;
}
/**
* Informs the BackupManager of a change in backup state - if backup is disabled,
* the data on the server will be erased.
* @param enable whether to enable backup
*/
private void setBackupEnabled(boolean enable) {
if (mBackupManager != null) {
try {
mBackupManager.setBackupEnabled(enable);
} catch (RemoteException e) {
mBackup.setChecked(!enable);
mAutoRestore.setEnabled(!enable);
return;
}
}
mBackup.setChecked(enable);
mAutoRestore.setEnabled(enable);
mConfigure.setEnabled(enable);
}
@Override
protected int getHelpResource() {
return R.string.help_url_backup_reset;