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> </com.android.settingslib.RestrictedPreference>
<!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml --> <!-- 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:key="screen_timeout"
android:title="@string/screen_timeout" android:title="@string/screen_timeout"
android:summary="@string/summary_placeholder" android:summary="@string/summary_placeholder"

View File

@@ -26,10 +26,13 @@ import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import androidx.preference.Preference;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController; import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal; import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
/** /**
* The controller of {@link ScreenTimeoutSettings}. * The controller of {@link ScreenTimeoutSettings}.
@@ -43,14 +46,20 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
return isDisableByAdmin() ? UNSUPPORTED_ON_DEVICE : AVAILABLE; return AVAILABLE;
} }
@Override @Override
public CharSequence getSummary() { public void updateState(Preference preference) {
if (isDisableByAdmin()) { final RestrictedLockUtils.EnforcedAdmin admin = getEnforcedAdmin();
return mContext.getString(com.android.settings.R.string.disabled_by_policy_title); if (admin != null) {
} else { preference.setEnabled(false);
((RestrictedPreference) preference).setDisabledByAdmin(admin);
}
preference.setSummary(getTimeoutSummary());
}
private CharSequence getTimeoutSummary() {
final long currentTimeout = getCurrentScreenTimeout(); final long currentTimeout = getCurrentScreenTimeout();
final CharSequence[] timeoutEntries = mContext.getResources().getStringArray( final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
R.array.screen_timeout_entries); R.array.screen_timeout_entries);
@@ -60,18 +69,15 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController
currentTimeout, timeoutEntries, timeoutValues); currentTimeout, timeoutEntries, timeoutValues);
return mContext.getString(R.string.screen_timeout_summary, description); return mContext.getString(R.string.screen_timeout_summary, description);
} }
}
private boolean isDisableByAdmin() { private RestrictedLockUtils.EnforcedAdmin getEnforcedAdmin() {
final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class); final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
if (dpm != null) { if (dpm != null) {
final RestrictedLockUtils.EnforcedAdmin admin = return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT, mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
UserHandle.myUserId()); UserHandle.myUserId());
return admin != null;
} }
return false; return null;
} }
private long getCurrentScreenTimeout() { private long getCurrentScreenTimeout() {