Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 879f079e authored by Fan Zhang's avatar Fan Zhang
Browse files

Show setting for work profile lock screen notification

- Add work profile notification setting to security_lockscreen_setting
- Modify the preference controller to stop hardcode preference keys.

Merged-In: I779590e34c1eca2dab5b62dda473cfa4371fc064
Change-Id: I5966d82f6373b3bf784385423b87fb4d26aecf0e
Fix: 62051309
Fix: 62045663
Test: make RunSettingsRoboTests
parent 0a6d6188
Loading
Loading
Loading
Loading
+23 −12
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@
    android:title="@string/lockscreen_settings_title">

    <com.android.settings.notification.RestrictedDropDownPreference
            android:key="lock_screen_notifications"
        android:key="security_setting_lock_screen_notif"
        android:title="@string/lock_screen_notifications_title"
        android:summary="@string/summary_placeholder" />

@@ -32,4 +32,15 @@
        android:title="@string/owner_info_settings_title"
        android:summary="@string/owner_info_settings_summary" />

    <PreferenceCategory
        android:key="security_setting_lock_screen_notif_work_header"
        android:title="@string/profile_section_header">

        <com.android.settings.notification.RestrictedDropDownPreference
            android:key="security_setting_lock_screen_notif_work"
            android:title="@string/lock_screen_notifications_title"
            android:summary="@string/summary_placeholder" />

    </PreferenceCategory>

</PreferenceScreen>
+4 −1
Original line number Diff line number Diff line
@@ -65,7 +65,10 @@ public class ConfigureNotificationSettings extends DashboardFragment {
        final PulseNotificationPreferenceController pulseController =
                new PulseNotificationPreferenceController(context);
        final LockScreenNotificationPreferenceController lockScreenNotificationController =
                new LockScreenNotificationPreferenceController(context);
                new LockScreenNotificationPreferenceController(context,
                        "lock_screen_notifications",
                        "lock_screen_notifications_profile_header",
                        "lock_screen_notifications_profile");
        if (lifecycle != null) {
            lifecycle.addObserver(pulseController);
            lifecycle.addObserver(lockScreenNotificationController);
+25 −18
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import android.os.UserManager;
import android.provider.Settings;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
import android.util.Log;

import com.android.internal.widget.LockPatternUtils;
@@ -46,11 +47,10 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro
        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {

    private static final String TAG = "LockScreenNotifPref";
    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
    private static final String KEY_LOCK_SCREEN_PROFILE_HEADER =
            "lock_screen_notifications_profile_header";
    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
            "lock_screen_notifications_profile";

    private final String mSettingKey;
    private final String mWorkSettingCategoryKey;
    private final String mWorkSettingKey;

    private RestrictedDropDownPreference mLockscreen;
    private RestrictedDropDownPreference mLockscreenProfile;
@@ -64,7 +64,16 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro
    private int mLockscreenSelectedValueProfile;

    public LockScreenNotificationPreferenceController(Context context) {
        this(context, null, null, null);
    }

    public LockScreenNotificationPreferenceController(Context context,
            String settingKey, String workSettingCategoryKey, String workSettingKey) {
        super(context);
        mSettingKey = settingKey;
        mWorkSettingCategoryKey = workSettingCategoryKey;
        mWorkSettingKey = workSettingKey;

        mProfileChallengeUserId = Utils.getManagedProfileId(
                UserManager.get(context), UserHandle.myUserId());
        final LockPatternUtils utils = new LockPatternUtils(context);
@@ -79,17 +88,17 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mLockscreen =
                (RestrictedDropDownPreference) screen.findPreference(KEY_LOCK_SCREEN_NOTIFICATIONS);
                (RestrictedDropDownPreference) screen.findPreference(mSettingKey);
        if (mLockscreen == null) {
            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
            Log.i(TAG, "Preference not found: " + mSettingKey);
            return;
        }
        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
            mLockscreenProfile = (RestrictedDropDownPreference) screen.findPreference(
                    KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
                    mWorkSettingKey);
        } else {
            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_HEADER);
            removePreference(screen, mWorkSettingKey);
            removePreference(screen, mWorkSettingCategoryKey);
        }
        mSettingObserver = new SettingObserver();
        initLockScreenNotificationPrefDisplay();
@@ -136,7 +145,7 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro

    private void initLockscreenNotificationPrefForProfile() {
        if (mLockscreenProfile == null) {
            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
            Log.i(TAG, "Preference not found: " + mWorkSettingKey);
            return;
        }
        ArrayList<CharSequence> entries = new ArrayList<>();
@@ -205,8 +214,8 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        switch (preference.getKey()) {
            case KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS: {
        final String key = preference.getKey();
        if (TextUtils.equals(mWorkSettingKey, key)) {
                final int val = Integer.parseInt((String) newValue);
                if (val == mLockscreenSelectedValueProfile) {
                    return false;
@@ -223,8 +232,7 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro
                        enabled ? 1 : 0, mProfileChallengeUserId);
                mLockscreenSelectedValueProfile = val;
                return true;
            }
            case KEY_LOCK_SCREEN_NOTIFICATIONS: {
        } else if (TextUtils.equals(mSettingKey, key)) {
                final int val = Integer.parseInt((String) newValue);
                if (val == mLockscreenSelectedValue) {
                    return false;
@@ -239,10 +247,8 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro
                mLockscreenSelectedValue = val;
                return true;
        }
            default:
        return false;
    }
    }

    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
            CharSequence entryValue, int keyguardNotificationFeatures) {
@@ -295,6 +301,7 @@ public class LockScreenNotificationPreferenceController extends PreferenceContro
        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
        final boolean allowPrivate = !mSecureProfile
                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
        mLockscreenProfile.setSummary("%s");
        mLockscreenSelectedValueProfile = !enabled
                ? R.string.lock_screen_notifications_summary_disable_profile
                : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
+16 −1
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@ package com.android.settings.security;

import android.content.Context;
import android.provider.SearchIndexableResource;
import android.support.annotation.VisibleForTesting;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.accounts.AddUserWhenLockedPreferenceController;
@@ -26,6 +28,7 @@ import com.android.settings.core.lifecycle.Lifecycle;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.notification.LockScreenNotificationPreferenceController;
import com.android.settings.search.BaseSearchIndexProvider;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -38,6 +41,15 @@ public class LockscreenDashboardFragment extends DashboardFragment

    private static final String TAG = "LockscreenDashboardFragment";

    @VisibleForTesting
    static final String KEY_LOCK_SCREEN_NOTIFICATON = "security_setting_lock_screen_notif";
    @VisibleForTesting
    static final String KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE_HEADER =
            "security_setting_lock_screen_notif_work_header";
    @VisibleForTesting
    static final String KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE =
            "security_setting_lock_screen_notif_work";

    private OwnerInfoPreferenceController mOwnerInfoPreferenceController;

    @Override
@@ -60,7 +72,10 @@ public class LockscreenDashboardFragment extends DashboardFragment
        final List<PreferenceController> controllers = new ArrayList<>();
        final Lifecycle lifecycle = getLifecycle();
        final LockScreenNotificationPreferenceController notificationController =
            new LockScreenNotificationPreferenceController(context);
            new LockScreenNotificationPreferenceController(context,
                    KEY_LOCK_SCREEN_NOTIFICATON,
                    KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE_HEADER,
                    KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE);
        lifecycle.addObserver(notificationController);
        controllers.add(notificationController);
        final AddUserWhenLockedPreferenceController addUserWhenLockedController =
+0 −1
Original line number Diff line number Diff line
add_users_when_locked
additional_system_update_settings
dashboard_tile_placeholder
lock_screen_notifications
screen_zoom
usage_access
 No newline at end of file
Loading