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
This commit is contained in:
Amith Yamasani
2012-09-23 12:54:14 -07:00
parent b105531116
commit 9627a8ea15
16 changed files with 321 additions and 46 deletions

View File

@@ -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;
}
}