diff options
author | Amith Yamasani <yamasani@google.com> | 2012-09-23 12:54:14 -0700 |
---|---|---|
committer | Amith Yamasani <yamasani@google.com> | 2012-09-23 18:43:31 -0700 |
commit | 9627a8ea151c1f27e5e9f34592c7b34fea3101c3 (patch) | |
tree | 3c92cd339e0df9ae47ac4ab92964d9b5aab36c10 /src/com/android/settings/LocalePicker.java | |
parent | b105531116148d5d29e113e611ac180aa9691c6e (diff) | |
download | packages_apps_Settings-9627a8ea151c1f27e5e9f34592c7b34fea3101c3.zip packages_apps_Settings-9627a8ea151c1f27e5e9f34592c7b34fea3101c3.tar.gz packages_apps_Settings-9627a8ea151c1f27e5e9f34592c7b34fea3101c3.tar.bz2 |
Show more settings and add restrictions/dialogs for secondary users
Bug: 7213029 crash in About>Status
Bug: 7212495 hide System updates for second user
Bug: 7212230 nickname editor should select the text
Bug: 7160487 TTS settings
Bug: 7129411 Settings needs visibility changes for secondary users
Change-Id: Ia2d1229c08b392edfa6b671fce4a382410405b14
Diffstat (limited to 'src/com/android/settings/LocalePicker.java')
-rw-r--r-- | src/com/android/settings/LocalePicker.java | 77 |
1 files changed, 73 insertions, 4 deletions
diff --git a/src/com/android/settings/LocalePicker.java b/src/com/android/settings/LocalePicker.java index 8b94ccb..1272ddc 100644 --- a/src/com/android/settings/LocalePicker.java +++ b/src/com/android/settings/LocalePicker.java @@ -16,18 +16,87 @@ package com.android.settings; +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.os.UserManager; +import android.util.Log; + +import com.android.settings.SettingsPreferenceFragment.SettingsDialogFragment; + import java.util.Locale; public class LocalePicker extends com.android.internal.app.LocalePicker - implements com.android.internal.app.LocalePicker.LocaleSelectionListener { + implements com.android.internal.app.LocalePicker.LocaleSelectionListener, + DialogCreatable { + + private static final String TAG = "LocalePicker"; + + private SettingsDialogFragment mDialogFragment; + private static final int DLG_SHOW_GLOBAL_WARNING = 1; + private static final String SAVE_TARGET_LOCALE = "locale"; + + private Locale mTargetLocale; + public LocalePicker() { super(); setLocaleSelectionListener(this); } @Override - public void onLocaleSelected(Locale locale) { - getActivity().onBackPressed(); - LocalePicker.updateLocale(locale); + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (savedInstanceState != null && savedInstanceState.containsKey(SAVE_TARGET_LOCALE)) { + mTargetLocale = new Locale(savedInstanceState.getString(SAVE_TARGET_LOCALE)); + } + } + + @Override + public void onLocaleSelected(final Locale locale) { + if (Utils.hasMultipleUsers(getActivity())) { + mTargetLocale = locale; + showDialog(DLG_SHOW_GLOBAL_WARNING); + } else { + LocalePicker.updateLocale(locale); + } + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + if (mTargetLocale != null) { + outState.putString(SAVE_TARGET_LOCALE, mTargetLocale.toString()); + } + } + + protected void showDialog(int dialogId) { + if (mDialogFragment != null) { + Log.e(TAG, "Old dialog fragment not null!"); + } + mDialogFragment = new SettingsDialogFragment(this, dialogId); + mDialogFragment.show(getActivity().getFragmentManager(), Integer.toString(dialogId)); + } + + public Dialog onCreateDialog(int dialogId) { + return Utils.buildGlobalChangeWarningDialog(getActivity(), + R.string.global_locale_change_title, + new Runnable() { + public void run() { + getActivity().onBackPressed(); + LocalePicker.updateLocale(mTargetLocale); + } + } + ); + } + + protected void removeDialog(int dialogId) { + // mDialogFragment may not be visible yet in parent fragment's onResume(). + // To be able to dismiss dialog at that time, don't check + // mDialogFragment.isVisible(). + if (mDialogFragment != null && mDialogFragment.getDialogId() == dialogId) { + mDialogFragment.dismiss(); + } + mDialogFragment = null; } } |