Home | History | Annotate | Download | only in users
      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