summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/PrivacySettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/PrivacySettings.java')
-rw-r--r--src/com/android/settings/PrivacySettings.java142
1 files changed, 110 insertions, 32 deletions
diff --git a/src/com/android/settings/PrivacySettings.java b/src/com/android/settings/PrivacySettings.java
index d936f46..0a9f086 100644
--- a/src/com/android/settings/PrivacySettings.java
+++ b/src/com/android/settings/PrivacySettings.java
@@ -24,13 +24,24 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
+import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.preference.CheckBoxPreference;
+import android.os.UserHandle;
+import android.os.UserManager;
import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable.SearchIndexProvider;
+
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Gesture lock pattern settings.
*/
@@ -43,11 +54,13 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
private static final String BACKUP_DATA = "backup_data";
private static final String AUTO_RESTORE = "auto_restore";
private static final String CONFIGURE_ACCOUNT = "configure_account";
+ private static final String PERSONAL_DATA_CATEGORY = "personal_data_category";
private IBackupManager mBackupManager;
- private CheckBoxPreference mBackup;
- private CheckBoxPreference mAutoRestore;
+ private SwitchPreference mBackup;
+ private SwitchPreference mAutoRestore;
private Dialog mConfirmDialog;
private PreferenceScreen mConfigure;
+ private boolean mEnabled;
private static final int DIALOG_ERASE_BACKUP = 2;
private int mDialogType;
@@ -55,16 +68,30 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // Don't allow any access if this is a secondary user
+ mEnabled = Process.myUserHandle().isOwner();
+ if (!mEnabled) {
+ return;
+ }
+
addPreferencesFromResource(R.xml.privacy_settings);
final PreferenceScreen screen = getPreferenceScreen();
-
mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
- mBackup = (CheckBoxPreference) screen.findPreference(BACKUP_DATA);
- mAutoRestore = (CheckBoxPreference) screen.findPreference(AUTO_RESTORE);
+ mBackup = (SwitchPreference) screen.findPreference(BACKUP_DATA);
+ mBackup.setOnPreferenceChangeListener(preferenceChangeListener);
+
+ mAutoRestore = (SwitchPreference) screen.findPreference(AUTO_RESTORE);
+ mAutoRestore.setOnPreferenceChangeListener(preferenceChangeListener);
+
mConfigure = (PreferenceScreen) screen.findPreference(CONFIGURE_ACCOUNT);
+ if (UserManager.get(getActivity()).hasUserRestriction(
+ UserManager.DISALLOW_FACTORY_RESET)) {
+ screen.removePreference(findPreference(PERSONAL_DATA_CATEGORY));
+ }
+
// Vendor specific
if (getActivity().getPackageManager().
resolveContentProvider(GSETTINGS_PROVIDER, 0) == null) {
@@ -78,7 +105,9 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
super.onResume();
// Refresh UI
- updateToggles();
+ if (mEnabled) {
+ updateToggles();
+ }
}
@Override
@@ -91,35 +120,41 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
super.onStop();
}
- @Override
- public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
- Preference preference) {
- if (preference == mBackup) {
- if (!mBackup.isChecked()) {
- showEraseBackupDialog();
- } else {
- setBackupEnabled(true);
+ private OnPreferenceChangeListener preferenceChangeListener = new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (!(preference instanceof SwitchPreference)) {
+ return true;
}
- } else if (preference == mAutoRestore) {
- boolean curState = mAutoRestore.isChecked();
- try {
- mBackupManager.setAutoRestore(curState);
- } catch (RemoteException e) {
- mAutoRestore.setChecked(!curState);
+ 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) {
+ try {
+ mBackupManager.setAutoRestore(nextValue);
+ result = true;
+ } catch (RemoteException e) {
+ mAutoRestore.setChecked(!nextValue);
+ }
}
+ return result;
}
- return super.onPreferenceTreeClick(preferenceScreen, preference);
- }
+ };
private void showEraseBackupDialog() {
- mBackup.setChecked(true);
-
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)
- .setIconAttribute(android.R.attr.alertDialogIcon)
.setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, this)
.show();
@@ -153,7 +188,7 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
mConfigure.setEnabled(configureEnabled);
mConfigure.setIntent(configIntent);
setConfigureSummary(configSummary);
-}
+ }
private void setConfigureSummary(String summary) {
if (summary != null) {
@@ -173,13 +208,20 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
}
}
+ @Override
public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- //updateProviders();
- if (mDialogType == DIALOG_ERASE_BACKUP) {
+ // 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);
- updateConfigureSummary();
+ } else if (which == DialogInterface.BUTTON_NEGATIVE) {
+ // Reject turning off backup
+ setBackupEnabled(true);
}
+ updateConfigureSummary();
}
mDialogType = 0;
}
@@ -208,4 +250,40 @@ public class PrivacySettings extends SettingsPreferenceFragment implements
protected int getHelpResource() {
return R.string.help_url_backup_reset;
}
-}
+
+ /**
+ * For Search.
+ */
+ public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new PrivacySearchIndexProvider();
+
+ private static class PrivacySearchIndexProvider extends BaseSearchIndexProvider {
+
+ boolean mIsPrimary;
+
+ public PrivacySearchIndexProvider() {
+ super();
+
+ mIsPrimary = UserHandle.myUserId() == UserHandle.USER_OWNER;
+ }
+
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+
+ List<SearchIndexableResource> result = new ArrayList<SearchIndexableResource>();
+
+ // For non-primary user, no backup or reset is available
+ if (!mIsPrimary) {
+ return result;
+ }
+
+ SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.privacy_settings;
+ result.add(sir);
+
+ return result;
+ }
+ }
+
+} \ No newline at end of file