diff options
author | Alexandra Gherghina <alexgherghina@google.com> | 2014-07-28 21:40:35 +0100 |
---|---|---|
committer | Alexandra Gherghina <alexgherghina@google.com> | 2014-07-29 16:19:26 +0100 |
commit | 5ceddfaaf5baca550d448969c7b7494778ec3ea1 (patch) | |
tree | 2a32de1d0d454b24ae9597640258e957c2450ea6 /src/com/android/settings/accounts | |
parent | a6145a656af1241fd771038715cf839a8fce76e1 (diff) | |
download | packages_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.java | 68 |
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 } |