/*
* Copyright (C) 2012 The CyanogenMod Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.profiles;
import java.util.UUID;
import android.app.Profile;
import android.app.ProfileManager;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.Utils;
public class ProfilesList extends SettingsPreferenceFragment implements
Preference.OnPreferenceChangeListener {
static final String TAG = "ProfilesSettings";
public static final String EXTRA_POSITION = "position";
public static final String PROFILE_SERVICE = "profile";
public static final String RESTORE_CARRIERS_URI = "content://telephony/carriers/restore";
public static final String PREFERRED_APN_URI = "content://telephony/carriers/preferapn";
private String mSelectedKey;
private ProfileManager mProfileManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getPreferenceManager() != null) {
addPreferencesFromResource(R.xml.profiles_settings);
mProfileManager = (ProfileManager) getActivity().getSystemService(PROFILE_SERVICE);
}
}
@Override
public void onResume() {
super.onResume();
refreshList();
// On tablet devices remove the padding
if (Utils.isTablet(getActivity())) {
getListView().setPadding(0, 0, 0, 0);
}
}
public void refreshList() {
// Only enable the preferences if system profiles are enabled
boolean enabled = Settings.System.getInt(getActivity().getContentResolver(),
Settings.System.SYSTEM_PROFILES_ENABLED, 1) == 1;
PreferenceScreen plist = getPreferenceScreen();
if (plist != null) {
plist.removeAll();
if (enabled && mProfileManager != null) {
// Get active profile, if null
Profile prof = mProfileManager.getActiveProfile();
mSelectedKey = prof != null ? prof.getUuid().toString() : null;
for(Profile profile : mProfileManager.getProfiles()) {
Bundle args = new Bundle();
args.putParcelable("Profile", profile);
ProfilesPreference ppref = new ProfilesPreference(this, args);
ppref.setKey(profile.getUuid().toString());
ppref.setTitle(profile.getName());
ppref.setPersistent(false);
ppref.setOnPreferenceChangeListener(this);
ppref.setSelectable(true);
ppref.setEnabled(true);
if ((mSelectedKey != null) && mSelectedKey.equals(ppref.getKey())) {
ppref.setChecked(true);
}
plist.addPreference(ppref);
}
} else {
// Not enabled, display a message preference
Preference npref = new Preference(getActivity());
npref.setLayoutResource(R.layout.preference_empty_list);
npref.setTitle(R.string.profile_empty_list_profiles_off);
npref.setEnabled(false);
plist.addPreference(npref);
}
}
}
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue instanceof String) {
setSelectedProfile((String) newValue);
refreshList();
}
return true;
}
private void setSelectedProfile(String key) {
try {
UUID selectedUuid = UUID.fromString(key);
mProfileManager.setActiveProfile(selectedUuid);
mSelectedKey = key;
} catch (IllegalArgumentException ex) {
ex.printStackTrace();
}
}
}