Merge "Grays out Screen Timeout Setting when disabled."
This commit is contained in:
@@ -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"
|
||||||
|
@@ -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,35 +46,38 @@ 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);
|
||||||
final long currentTimeout = getCurrentScreenTimeout();
|
((RestrictedPreference) preference).setDisabledByAdmin(admin);
|
||||||
final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
|
|
||||||
R.array.screen_timeout_entries);
|
|
||||||
final CharSequence[] timeoutValues = mContext.getResources().getStringArray(
|
|
||||||
R.array.screen_timeout_values);
|
|
||||||
final CharSequence description = TimeoutPreferenceController.getTimeoutDescription(
|
|
||||||
currentTimeout, timeoutEntries, timeoutValues);
|
|
||||||
return mContext.getString(R.string.screen_timeout_summary, description);
|
|
||||||
}
|
}
|
||||||
|
preference.setSummary(getTimeoutSummary());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDisableByAdmin() {
|
private CharSequence getTimeoutSummary() {
|
||||||
|
final long currentTimeout = getCurrentScreenTimeout();
|
||||||
|
final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
|
||||||
|
R.array.screen_timeout_entries);
|
||||||
|
final CharSequence[] timeoutValues = mContext.getResources().getStringArray(
|
||||||
|
R.array.screen_timeout_values);
|
||||||
|
final CharSequence description = TimeoutPreferenceController.getTimeoutDescription(
|
||||||
|
currentTimeout, timeoutEntries, timeoutValues);
|
||||||
|
return mContext.getString(R.string.screen_timeout_summary, description);
|
||||||
|
}
|
||||||
|
|
||||||
|
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() {
|
||||||
|
Reference in New Issue
Block a user