summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/LocalePicker.java
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2012-09-23 12:54:14 -0700
committerAmith Yamasani <yamasani@google.com>2012-09-23 18:43:31 -0700
commit9627a8ea151c1f27e5e9f34592c7b34fea3101c3 (patch)
tree3c92cd339e0df9ae47ac4ab92964d9b5aab36c10 /src/com/android/settings/LocalePicker.java
parentb105531116148d5d29e113e611ac180aa9691c6e (diff)
downloadpackages_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.java77
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;
}
}