User management screens

Customized Settings for restricted users
- Only some top-level settings panels available

User management
- Primary user can add and remove users
- User details screen to change name and list of enabled apps

Change-Id: Ia6beb991b427197a4ec2724ca3c9222073f6cf7d
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index eb30809..7e4e725 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings;
 
+import com.android.internal.util.ArrayUtils;
 import com.android.settings.accounts.AccountSyncSettings;
 import com.android.settings.bluetooth.BluetoothEnabler;
 import com.android.settings.deviceinfo.Memory;
@@ -29,6 +30,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.os.Bundle;
+import android.os.UserId;
 import android.preference.Preference;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceFragment;
@@ -76,6 +78,17 @@
     private Header mParentHeader;
     private boolean mInLocalHeaderSwitch;
 
+    // Show only these settings for restricted users
+    private int[] SETTINGS_FOR_RESTRICTED = {
+            R.id.wifi_settings,
+            R.id.bluetooth_settings,
+            R.id.sound_settings,
+            R.id.display_settings,
+            //R.id.security_settings,
+            R.id.sync_settings,
+            R.id.about_settings
+    };
+
     // TODO: Update Call Settings based on airplane mode state.
 
     protected HashMap<Integer, Integer> mHeaderIndexMap = new HashMap<Integer, Integer>();
@@ -337,6 +350,16 @@
                 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
                     target.remove(header);
                 }
+            } else if (id == R.id.user_settings) {
+                if (!UserId.MU_ENABLED || UserId.myUserId() != 0
+                        || !getResources().getBoolean(R.bool.enable_user_management)
+                        || Utils.isMonkeyRunning()) {
+                    target.remove(header);
+                }
+            }
+            if (UserId.MU_ENABLED && UserId.myUserId() != 0
+                    && !ArrayUtils.contains(SETTINGS_FOR_RESTRICTED, id)) {
+                target.remove(header);
             }
 
             // Increment if the current one wasn't removed by the Utils code.