OSDN Git Service

Added lock screen settings section
authorFyodor Kupolov <fkupolov@google.com>
Tue, 5 Jan 2016 22:30:03 +0000 (14:30 -0800)
committerFyodor Kupolov <fkupolov@google.com>
Tue, 5 Jan 2016 22:30:03 +0000 (14:30 -0800)
Added lock screen settings section and moved "Add users when device is locked"
 from the overflow menu to the new section.

Bug: 25289622
Change-Id: I97c02acbacae3b6cde44180a23ea337853b0a551

res/values/strings.xml
res/xml/user_settings.xml
src/com/android/settings/users/UserSettings.java

index 86a6195..fe4e918 100644 (file)
 
     <!-- User details remove user menu [CHAR LIMIT=20] -->
     <string name="user_remove_user_menu">Delete <xliff:g id="user_name">%1$s</xliff:g> from this device</string>
-    <!-- User menu to allow creating new users from lockscreen [CHAR LIMIT=30] -->
-    <string name="user_add_on_lockscreen_menu">Add users when device is locked</string>
+    <!-- User lock screen settings header[CHAR LIMIT=40] -->
+    <string name="user_lockscreen_settings">Lock screen settings</string>
+    <!-- User settings item to allow creating new users from locks creen [CHAR LIMIT=40] -->
+    <string name="user_add_on_lockscreen_menu">Add users</string>
+    <!-- User settings user_add_on_lockscreen_menu item summary [CHAR LIMIT=40] -->
+    <string name="user_add_on_lockscreen_menu_summary">when device is locked</string>
     <!-- User details new user name [CHAR LIMIT=30] -->
     <string name="user_new_user_name">New user</string>
     <!-- User details new restricted profile name [CHAR LIMIT=30] -->
index f33177c..d7189de 100644 (file)
             android:title="@string/user_add_user_or_profile_menu"
             android:icon="@drawable/ic_menu_add_dark" />
 
+    <PreferenceCategory
+            android:key="lock_screen_settings"
+            android:title="@string/user_lockscreen_settings">
+        <SwitchPreference android:key="add_users_when_locked"  android:title="@string/user_add_on_lockscreen_menu"
+                            android:summary="@string/user_add_on_lockscreen_menu_summary" />
+    </PreferenceCategory>
 </PreferenceScreen>
index 3e2ac87..7e0711e 100644 (file)
@@ -39,6 +39,7 @@ import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.Settings;
+import android.support.v14.preference.SwitchPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceGroup;
@@ -97,7 +98,6 @@ public class UserSettings extends SettingsPreferenceFragment
     private static final String KEY_ADD_USER = "user_add";
 
     private static final int MENU_REMOVE_USER = Menu.FIRST;
-    private static final int MENU_ADD_ON_LOCKSCREEN = Menu.FIRST + 1;
 
     private static final int DIALOG_CONFIRM_REMOVE = 1;
     private static final int DIALOG_ADD_USER = 2;
@@ -126,8 +126,9 @@ public class UserSettings extends SettingsPreferenceFragment
 
     private PreferenceGroup mUserListCategory;
     private UserPreference mMePreference;
-    private SelectableEditTextPreference mNicknamePreference;
     private Preference mAddUser;
+    private PreferenceGroup mLockScreenSettings;
+    private SwitchPreference mAddUserWhenLocked;
     private int mRemovingUserId = -1;
     private int mAddedUserId = 0;
     private boolean mAddingUser;
@@ -221,6 +222,8 @@ public class UserSettings extends SettingsPreferenceFragment
                 mAddUser.setTitle(R.string.user_add_user_menu);
             }
         }
+        mLockScreenSettings = (PreferenceGroup) findPreference("lock_screen_settings");
+        mAddUserWhenLocked = (SwitchPreference) findPreference("add_users_when_locked");
         loadProfile();
         setHasOptionsMenu(true);
         IntentFilter filter = new IntentFilter(Intent.ACTION_USER_REMOVED);
@@ -272,13 +275,6 @@ public class UserSettings extends SettingsPreferenceFragment
                     getResources().getString(R.string.user_remove_user_menu, nickname));
             removeThisUser.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
         }
-        if (mUserCaps.mIsAdmin && !um.hasUserRestriction(UserManager.DISALLOW_ADD_USER)) {
-            MenuItem allowAddOnLockscreen = menu.add(0, MENU_ADD_ON_LOCKSCREEN, pos++,
-                    R.string.user_add_on_lockscreen_menu);
-            allowAddOnLockscreen.setCheckable(true);
-            allowAddOnLockscreen.setChecked(Settings.Global.getInt(getContentResolver(),
-                    Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1);
-        }
         super.onCreateOptionsMenu(menu, inflater);
     }
 
@@ -288,12 +284,6 @@ public class UserSettings extends SettingsPreferenceFragment
         if (itemId == MENU_REMOVE_USER) {
             onRemoveUserClicked(UserHandle.myUserId());
             return true;
-        } else if (itemId == MENU_ADD_ON_LOCKSCREEN) {
-            final boolean isChecked = item.isChecked();
-            Settings.Global.putInt(getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED,
-                    isChecked ? 0 : 1);
-            item.setChecked(!isChecked);
-            return true;
         } else {
             return super.onOptionsItemSelected(item);
         }
@@ -809,6 +799,13 @@ public class UserSettings extends SettingsPreferenceFragment
                 mAddUser.setSummary(null);
             }
         }
+        if (mUserCaps.mIsAdmin && !mUserCaps.mDisallowAddUser) {
+            mLockScreenSettings.setOrder(Preference.DEFAULT_ORDER);
+            preferenceScreen.addPreference(mLockScreenSettings);
+            mAddUserWhenLocked.setChecked(Settings.Global.getInt(getContentResolver(),
+                    Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1);
+            mAddUserWhenLocked.setOnPreferenceChangeListener(this);
+        }
     }
 
     private int getMaxRealUsers() {
@@ -871,12 +868,6 @@ public class UserSettings extends SettingsPreferenceFragment
         }
     }
 
-    private void setUserName(String name) {
-        mUserManager.setUserName(UserHandle.myUserId(), name);
-        mNicknamePreference.setSummary(name);
-        getActivity().invalidateOptionsMenu();
-    }
-
     @Override
     public boolean onPreferenceClick(Preference pref) {
         if (pref == mMePreference) {
@@ -974,14 +965,13 @@ public class UserSettings extends SettingsPreferenceFragment
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (preference == mNicknamePreference) {
-            String value = (String) newValue;
-            if (preference == mNicknamePreference && value != null
-                    && value.length() > 0) {
-                setUserName(value);
-            }
+        if (preference == mAddUserWhenLocked) {
+            Boolean value = (Boolean) newValue;
+            Settings.Global.putInt(getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED,
+                    value != null && value ? 1 : 0);
             return true;
         }
+
         return false;
     }
 
@@ -1007,6 +997,7 @@ public class UserSettings extends SettingsPreferenceFragment
         boolean mIsAdmin;
         boolean mIsGuest;
         boolean mCanAddGuest;
+        boolean mDisallowAddUser;
 
         private UserCapabilities() {}
 
@@ -1021,11 +1012,11 @@ public class UserSettings extends SettingsPreferenceFragment
             final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
             caps.mIsGuest = myUserInfo.isGuest();
             caps.mIsAdmin = myUserInfo.isAdmin();
-            final boolean disallowAddUser = userManager.hasUserRestriction(
+            caps.mDisallowAddUser = userManager.hasUserRestriction(
                     UserManager.DISALLOW_ADD_USER);
             if (!caps.mIsAdmin || UserManager.getMaxSupportedUsers() < 2
                     || !UserManager.supportsMultipleUsers()
-                    || disallowAddUser) {
+                    || caps.mDisallowAddUser) {
                 caps.mCanAddUser = false;
             }
             DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
@@ -1037,7 +1028,7 @@ public class UserSettings extends SettingsPreferenceFragment
 
             final boolean canAddUsersWhenLocked = caps.mIsAdmin || Settings.Global.getInt(
                     context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1;
-            caps.mCanAddGuest = !caps.mIsGuest && !disallowAddUser && canAddUsersWhenLocked;
+            caps.mCanAddGuest = !caps.mIsGuest && !caps.mDisallowAddUser && canAddUsersWhenLocked;
             return caps;
         }