summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/profiles/AppGroupList.java
blob: dc04a9a2de0189d8758c2cdd0b3a181f0f3639f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
 * 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);
    }
}