Improved dialog management in Settings>Users
Bug: 7266284 Delete not functional after orientation change Bug: 7266182 Set up now not functional after orientation change Also remove "vibrate when ringing" on tablets Bug: 7253081 Change-Id: Ie616747f2e3292c401613eb2041b5a5a289cde20
This commit is contained in:
@@ -182,6 +182,10 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onDialogShowing() {
|
||||||
|
// override in subclass to attach a dismiss listener, for instance
|
||||||
|
}
|
||||||
|
|
||||||
public static class SettingsDialogFragment extends DialogFragment {
|
public static class SettingsDialogFragment extends DialogFragment {
|
||||||
private static final String KEY_DIALOG_ID = "key_dialog_id";
|
private static final String KEY_DIALOG_ID = "key_dialog_id";
|
||||||
private static final String KEY_PARENT_FRAGMENT_ID = "key_parent_fragment_id";
|
private static final String KEY_PARENT_FRAGMENT_ID = "key_parent_fragment_id";
|
||||||
@@ -215,6 +219,15 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
|
||||||
|
if (mParentFragment != null && mParentFragment instanceof SettingsPreferenceFragment) {
|
||||||
|
((SettingsPreferenceFragment) mParentFragment).onDialogShowing();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
|
@@ -170,8 +170,11 @@ public class SoundSettings extends SettingsPreferenceFragment implements
|
|||||||
|
|
||||||
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
|
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
|
||||||
if (vibrator == null || !vibrator.hasVibrator()) {
|
if (vibrator == null || !vibrator.hasVibrator()) {
|
||||||
getPreferenceScreen().removePreference(mVibrateWhenRinging);
|
removePreference(KEY_VIBRATE);
|
||||||
getPreferenceScreen().removePreference(mHapticFeedback);
|
removePreference(KEY_HAPTIC_FEEDBACK);
|
||||||
|
}
|
||||||
|
if (!Utils.isVoiceCapable(getActivity())) {
|
||||||
|
removePreference(KEY_VIBRATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TelephonyManager.PHONE_TYPE_CDMA == activePhoneType) {
|
if (TelephonyManager.PHONE_TYPE_CDMA == activePhoneType) {
|
||||||
|
@@ -56,6 +56,7 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SelectableEditTextPreference;
|
import com.android.settings.SelectableEditTextPreference;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
|
import com.android.settings.SettingsPreferenceFragment.SettingsDialogFragment;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -66,6 +67,11 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
private static final String TAG = "UserSettings";
|
private static final String TAG = "UserSettings";
|
||||||
|
|
||||||
|
/** UserId of the user being removed */
|
||||||
|
private static final String SAVE_REMOVING_USER = "removing_user";
|
||||||
|
/** UserId of the user that was just added */
|
||||||
|
private static final String SAVE_ADDING_USER = "adding_user";
|
||||||
|
|
||||||
private static final String KEY_USER_NICKNAME = "user_nickname";
|
private static final String KEY_USER_NICKNAME = "user_nickname";
|
||||||
private static final String KEY_USER_LIST = "user_list";
|
private static final String KEY_USER_LIST = "user_list";
|
||||||
private static final String KEY_USER_ME = "user_me";
|
private static final String KEY_USER_ME = "user_me";
|
||||||
@@ -140,6 +146,15 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
|
||||||
|
if (icicle != null) {
|
||||||
|
if (icicle.containsKey(SAVE_ADDING_USER)) {
|
||||||
|
mAddedUserId = icicle.getInt(SAVE_ADDING_USER);
|
||||||
|
}
|
||||||
|
if (icicle.containsKey(SAVE_REMOVING_USER)) {
|
||||||
|
mRemovingUserId = icicle.getInt(SAVE_REMOVING_USER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
|
mUserManager = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);
|
||||||
addPreferencesFromResource(R.xml.user_settings);
|
addPreferencesFromResource(R.xml.user_settings);
|
||||||
mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST);
|
mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST);
|
||||||
@@ -179,6 +194,14 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
getActivity().unregisterReceiver(mUserChangeReceiver);
|
getActivity().unregisterReceiver(mUserChangeReceiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
|
||||||
|
outState.putInt(SAVE_ADDING_USER, mAddedUserId);
|
||||||
|
outState.putInt(SAVE_REMOVING_USER, mRemovingUserId);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||||
if (mIsOwner) {
|
if (mIsOwner) {
|
||||||
@@ -245,7 +268,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
synchronized (mUserLock) {
|
synchronized (mUserLock) {
|
||||||
if (mRemovingUserId == -1 && !mAddingUser) {
|
if (mRemovingUserId == -1 && !mAddingUser) {
|
||||||
showDialog(DIALOG_ADD_USER);
|
showDialog(DIALOG_ADD_USER);
|
||||||
setOnDismissListener(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,7 +277,6 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
if (mRemovingUserId == -1 && !mAddingUser) {
|
if (mRemovingUserId == -1 && !mAddingUser) {
|
||||||
mRemovingUserId = userId;
|
mRemovingUserId = userId;
|
||||||
showDialog(DIALOG_CONFIRM_REMOVE);
|
showDialog(DIALOG_CONFIRM_REMOVE);
|
||||||
setOnDismissListener(this);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -265,11 +286,18 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
showDialog(DIALOG_SETUP_USER);
|
showDialog(DIALOG_SETUP_USER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDialogShowing() {
|
||||||
|
super.onDialogShowing();
|
||||||
|
|
||||||
|
setOnDismissListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(int dialogId) {
|
public Dialog onCreateDialog(int dialogId) {
|
||||||
switch (dialogId) {
|
switch (dialogId) {
|
||||||
case DIALOG_CONFIRM_REMOVE:
|
case DIALOG_CONFIRM_REMOVE: {
|
||||||
return new AlertDialog.Builder(getActivity())
|
Dialog dlg = new AlertDialog.Builder(getActivity())
|
||||||
.setTitle(UserHandle.myUserId() == mRemovingUserId
|
.setTitle(UserHandle.myUserId() == mRemovingUserId
|
||||||
? R.string.user_confirm_remove_self_title
|
? R.string.user_confirm_remove_self_title
|
||||||
: R.string.user_confirm_remove_title)
|
: R.string.user_confirm_remove_title)
|
||||||
@@ -284,12 +312,14 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
.create();
|
.create();
|
||||||
|
return dlg;
|
||||||
|
}
|
||||||
case DIALOG_USER_CANNOT_MANAGE:
|
case DIALOG_USER_CANNOT_MANAGE:
|
||||||
return new AlertDialog.Builder(getActivity())
|
return new AlertDialog.Builder(getActivity())
|
||||||
.setMessage(R.string.user_cannot_manage_message)
|
.setMessage(R.string.user_cannot_manage_message)
|
||||||
.setPositiveButton(android.R.string.ok, null)
|
.setPositiveButton(android.R.string.ok, null)
|
||||||
.create();
|
.create();
|
||||||
case DIALOG_ADD_USER:
|
case DIALOG_ADD_USER: {
|
||||||
final SharedPreferences preferences = getActivity().getPreferences(
|
final SharedPreferences preferences = getActivity().getPreferences(
|
||||||
Context.MODE_PRIVATE);
|
Context.MODE_PRIVATE);
|
||||||
final boolean longMessageDisplayed = preferences.getBoolean(
|
final boolean longMessageDisplayed = preferences.getBoolean(
|
||||||
@@ -297,7 +327,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
final int messageResId = longMessageDisplayed
|
final int messageResId = longMessageDisplayed
|
||||||
? R.string.user_add_user_message_short
|
? R.string.user_add_user_message_short
|
||||||
: R.string.user_add_user_message_long;
|
: R.string.user_add_user_message_long;
|
||||||
return new AlertDialog.Builder(getActivity())
|
Dialog dlg = new AlertDialog.Builder(getActivity())
|
||||||
.setTitle(R.string.user_add_user_title)
|
.setTitle(R.string.user_add_user_title)
|
||||||
.setMessage(messageResId)
|
.setMessage(messageResId)
|
||||||
.setPositiveButton(android.R.string.ok,
|
.setPositiveButton(android.R.string.ok,
|
||||||
@@ -312,8 +342,10 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
.create();
|
.create();
|
||||||
case DIALOG_SETUP_USER:
|
return dlg;
|
||||||
return new AlertDialog.Builder(getActivity())
|
}
|
||||||
|
case DIALOG_SETUP_USER: {
|
||||||
|
Dialog dlg = new AlertDialog.Builder(getActivity())
|
||||||
.setTitle(R.string.user_setup_dialog_title)
|
.setTitle(R.string.user_setup_dialog_title)
|
||||||
.setMessage(R.string.user_setup_dialog_message)
|
.setMessage(R.string.user_setup_dialog_message)
|
||||||
.setPositiveButton(R.string.user_setup_button_setup_now,
|
.setPositiveButton(R.string.user_setup_button_setup_now,
|
||||||
@@ -324,7 +356,8 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
})
|
})
|
||||||
.setNegativeButton(R.string.user_setup_button_setup_later, null)
|
.setNegativeButton(R.string.user_setup_button_setup_later, null)
|
||||||
.create();
|
.create();
|
||||||
|
return dlg;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -396,9 +429,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
final ArrayList<Integer> missingIcons = new ArrayList<Integer>();
|
final ArrayList<Integer> missingIcons = new ArrayList<Integer>();
|
||||||
for (UserInfo user : users) {
|
for (UserInfo user : users) {
|
||||||
Preference pref;
|
Preference pref;
|
||||||
if (user.id == mRemovingUserId) {
|
if (user.id == UserHandle.myUserId()) {
|
||||||
continue;
|
|
||||||
} else if (user.id == UserHandle.myUserId()) {
|
|
||||||
pref = mMePreference;
|
pref = mMePreference;
|
||||||
mNicknamePreference.setText(user.name);
|
mNicknamePreference.setText(user.name);
|
||||||
mNicknamePreference.setSummary(user.name);
|
mNicknamePreference.setSummary(user.name);
|
||||||
@@ -544,6 +575,7 @@ public class UserSettings extends SettingsPreferenceFragment
|
|||||||
synchronized (mUserLock) {
|
synchronized (mUserLock) {
|
||||||
mAddingUser = false;
|
mAddingUser = false;
|
||||||
mRemovingUserId = -1;
|
mRemovingUserId = -1;
|
||||||
|
updateUserList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user