/* * 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.NotificationGroup; import android.app.ProfileManager; import android.os.Bundle; import android.preference.Preference; import android.preference.PreferenceActivity; 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 AppGroupList extends SettingsPreferenceFragment { private static final String TAG = "AppGroupSettings"; public static final String PROFILE_SERVICE = "profile"; private ProfileManager mProfileManager; // constant value that can be used to check return code from sub activity. private static final int APP_GROUP_CONFIG = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getPreferenceManager() != null) { addPreferencesFromResource(R.xml.appgroup_list); 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 appgroupList = getPreferenceScreen(); appgroupList.removeAll(); if (enabled) { // Add the existing app groups for (NotificationGroup group : mProfileManager.getNotificationGroups()) { PreferenceScreen pref = new PreferenceScreen(getActivity(), null); pref.setKey(group.getUuid().toString()); pref.setTitle(group.getName()); pref.setPersistent(false); pref.setEnabled(enabled); appgroupList.addPreference(pref); } } 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); appgroupList.addPreference(npref); } } @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference instanceof PreferenceScreen) { NotificationGroup group = mProfileManager.getNotificationGroup( UUID.fromString(preference.getKey())); editGroup(group); } return super.onPreferenceTreeClick(preferenceScreen, preference); } private void editGroup(NotificationGroup group) { Bundle args = new Bundle(); args.putParcelable("NotificationGroup", group); PreferenceActivity pa = (PreferenceActivity) getActivity(); pa.startPreferencePanel(AppGroupConfig.class.getName(), args, R.string.profile_appgroup_manage, null, this, APP_GROUP_CONFIG); } }