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

Commit 11100495 authored by Yi Jiang's avatar Yi Jiang
Browse files

Grays out Screen Timeout Setting when disabled.

Previously we would hide the screen timeout setting when it is disabled
by admin. Instead of hide it in Display Settings, now we gray it out and
also provide the info of the enforced admin.

Bug: 174834978
Test: manually
Change-Id: Idaa3c4512eb648b67fcf6df2996c771a2f1b9617
parent 2441bfc0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -63,7 +63,7 @@
    </com.android.settingslib.RestrictedPreference>

    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
    <Preference
    <com.android.settingslib.RestrictedPreference
        android:key="screen_timeout"
        android:title="@string/screen_timeout"
        android:summary="@string/summary_placeholder"
+26 −20
Original line number Diff line number Diff line
@@ -26,10 +26,13 @@ import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;

import androidx.preference.Preference;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;

/**
 * The controller of {@link ScreenTimeoutSettings}.
@@ -43,14 +46,20 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController

    @Override
    public int getAvailabilityStatus() {
        return isDisableByAdmin() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
        return AVAILABLE;
    }

    @Override
    public CharSequence getSummary() {
        if (isDisableByAdmin()) {
            return mContext.getString(com.android.settings.R.string.disabled_by_policy_title);
        } else {
    public void updateState(Preference preference) {
        final RestrictedLockUtils.EnforcedAdmin admin = getEnforcedAdmin();
        if (admin != null) {
            preference.setEnabled(false);
            ((RestrictedPreference) preference).setDisabledByAdmin(admin);
        }
        preference.setSummary(getTimeoutSummary());
    }

    private CharSequence getTimeoutSummary() {
        final long currentTimeout = getCurrentScreenTimeout();
        final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
                R.array.screen_timeout_entries);
@@ -60,18 +69,15 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController
                currentTimeout, timeoutEntries, timeoutValues);
        return mContext.getString(R.string.screen_timeout_summary, description);
    }
    }

    private boolean isDisableByAdmin() {
    private RestrictedLockUtils.EnforcedAdmin getEnforcedAdmin() {
        final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
        if (dpm != null) {
            final RestrictedLockUtils.EnforcedAdmin admin =
                    RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
            return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
                    mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
                    UserHandle.myUserId());
            return admin != null;
        }
        return false;
        return null;
    }

    private long getCurrentScreenTimeout() {