summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/accounts
diff options
context:
space:
mode:
authorAlexandra Gherghina <alexgherghina@google.com>2014-07-28 21:40:35 +0100
committerAlexandra Gherghina <alexgherghina@google.com>2014-07-29 16:19:26 +0100
commit5ceddfaaf5baca550d448969c7b7494778ec3ea1 (patch)
tree2a32de1d0d454b24ae9597640258e957c2450ea6 /src/com/android/settings/accounts
parenta6145a656af1241fd771038715cf839a8fce76e1 (diff)
downloadpackages_apps_Settings-5ceddfaaf5baca550d448969c7b7494778ec3ea1.zip
packages_apps_Settings-5ceddfaaf5baca550d448969c7b7494778ec3ea1.tar.gz
packages_apps_Settings-5ceddfaaf5baca550d448969c7b7494778ec3ea1.tar.bz2
Move global sync settings dialogs to the right screen
Bug: 16076571 Change-Id: I4ba01ece6e5054d699342ff2c1270fc2fc51c5a9
Diffstat (limited to 'src/com/android/settings/accounts')
-rw-r--r--src/com/android/settings/accounts/AccountSettings.java68
1 files changed, 62 insertions, 6 deletions
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index 47eb063..ffd6037 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -20,9 +20,13 @@ package com.android.settings.accounts;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.ActivityManager;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.DialogFragment;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
@@ -35,7 +39,6 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.preference.Preference;
-import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
@@ -73,6 +76,9 @@ public class AccountSettings extends SettingsPreferenceFragment
private static final ArrayList<String> EMPTY_LIST = new ArrayList<String>();
+ private static final String TAG_CONFIRM_AUTO_SYNC_CHANGE = "confirmAutoSyncChange";
+
+
private UserManager mUm;
private SparseArray<ProfileData> mProfiles;
private ManagedProfileBroadcastReceiver mManagedProfileBroadcastReceiver
@@ -430,18 +436,68 @@ public class AccountSettings extends SettingsPreferenceFragment
@Override
public boolean onMenuItemClick(MenuItem item) {
- // TODO: Add confirmation dialogs. See: http://b/16076571
if (ActivityManager.isUserAMonkey()) {
Log.d(TAG, "ignoring monkey's attempt to flip sync state");
} else {
- boolean newSyncState = !item.isChecked();
- item.setChecked(newSyncState);
- ContentResolver.setMasterSyncAutomaticallyAsUser(newSyncState,
- mUserHandle.getIdentifier());
+ ConfirmAutoSyncChangeFragment.show(AccountSettings.this, !item.isChecked(),
+ mUserHandle);
}
return true;
}
}
+
+ /**
+ * Dialog to inform user about changing auto-sync setting
+ */
+ public static class ConfirmAutoSyncChangeFragment extends DialogFragment {
+ private static final String SAVE_ENABLING = "enabling";
+ private boolean mEnabling;
+ private UserHandle mUserHandle;
+
+ public static void show(AccountSettings parent, boolean enabling, UserHandle userHandle) {
+ if (!parent.isAdded()) return;
+
+ final ConfirmAutoSyncChangeFragment dialog = new ConfirmAutoSyncChangeFragment();
+ dialog.mEnabling = enabling;
+ dialog.mUserHandle = userHandle;
+ dialog.setTargetFragment(parent, 0);
+ dialog.show(parent.getFragmentManager(), TAG_CONFIRM_AUTO_SYNC_CHANGE);
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ final Context context = getActivity();
+ if (savedInstanceState != null) {
+ mEnabling = savedInstanceState.getBoolean(SAVE_ENABLING);
+ }
+
+ final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+ if (!mEnabling) {
+ builder.setTitle(R.string.data_usage_auto_sync_off_dialog_title);
+ builder.setMessage(R.string.data_usage_auto_sync_off_dialog);
+ } else {
+ builder.setTitle(R.string.data_usage_auto_sync_on_dialog_title);
+ builder.setMessage(R.string.data_usage_auto_sync_on_dialog);
+ }
+
+ builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ ContentResolver.setMasterSyncAutomaticallyAsUser(mEnabling,
+ mUserHandle.getIdentifier());
+ }
+ });
+ builder.setNegativeButton(android.R.string.cancel, null);
+
+ return builder.create();
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(SAVE_ENABLING, mEnabling);
+ }
+ }
// TODO Implement a {@link SearchIndexProvider} to allow Indexing and Search of account types
// See http://b/15403806
}