Merge "Grays out Screen Timeout Setting when disabled."

This commit is contained in:
Yi Jiang
2020-12-15 02:59:04 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 21 deletions

View File

@@ -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"

View File

@@ -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() {