1 /* 2 * Copyright (C) 2012 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.settings.users; 18 19 import android.content.pm.UserInfo; 20 import android.os.Bundle; 21 import android.preference.Preference; 22 import android.preference.Preference.OnPreferenceClickListener; 23 import android.preference.PreferenceActivity; 24 import android.preference.PreferenceGroup; 25 import android.view.Menu; 26 import android.view.MenuInflater; 27 import android.view.MenuItem; 28 29 import com.android.settings.R; 30 import com.android.settings.SettingsPreferenceFragment; 31 32 import java.util.List; 33 34 public class UserSettings extends SettingsPreferenceFragment 35 implements OnPreferenceClickListener { 36 37 private static final String KEY_USER_LIST = "user_list"; 38 private static final int MENU_ADD_USER = Menu.FIRST; 39 40 private PreferenceGroup mUserListCategory; 41 42 @Override 43 public void onCreate(Bundle icicle) { 44 super.onCreate(icicle); 45 addPreferencesFromResource(R.xml.user_settings); 46 mUserListCategory = (PreferenceGroup) findPreference(KEY_USER_LIST); 47 48 setHasOptionsMenu(true); 49 } 50 51 @Override 52 public void onResume() { 53 super.onResume(); 54 updateUserList(); 55 } 56 57 @Override 58 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 59 MenuItem addAccountItem = menu.add(0, MENU_ADD_USER, 0, R.string.user_add_user_menu); 60 addAccountItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM 61 | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 62 } 63 64 @Override 65 public boolean onOptionsItemSelected(MenuItem item) { 66 final int itemId = item.getItemId(); 67 if (itemId == MENU_ADD_USER) { 68 onAddUserClicked(); 69 return true; 70 } else { 71 return super.onOptionsItemSelected(item); 72 } 73 } 74 75 private void onAddUserClicked() { 76 ((PreferenceActivity) getActivity()).startPreferencePanel( 77 UserDetailsSettings.class.getName(), null, R.string.user_details_title, 78 null, this, 0); 79 } 80 81 private void updateUserList() { 82 List<UserInfo> users = getActivity().getPackageManager().getUsers(); 83 84 mUserListCategory.removeAll(); 85 for (UserInfo user : users) { 86 if (user.id == 0) continue; 87 Preference pref = new Preference(getActivity()); 88 pref.setTitle(user.name); 89 pref.setOnPreferenceClickListener(this); 90 pref.setKey("id=" + user.id); 91 mUserListCategory.addPreference(pref); 92 } 93 } 94 95 @Override 96 public boolean onPreferenceClick(Preference pref) { 97 String sid = pref.getKey(); 98 if (sid != null && sid.startsWith("id=")) { 99 int id = Integer.parseInt(sid.substring(3)); 100 Bundle args = new Bundle(); 101 args.putInt(UserDetailsSettings.EXTRA_USER_ID, id); 102 ((PreferenceActivity) getActivity()).startPreferencePanel( 103 UserDetailsSettings.class.getName(), 104 args, 0, pref.getTitle(), this, 0); 105 return true; 106 } 107 return false; 108 } 109 } 110