Set default display timeout if current value is disabled by admin.
- The display timeout dialog will only show values that are allowed by the admin. If the current display time out is greater than the max timeout set by admin, it becomes an invalid selection. In this case, instead of not selecting anything, set the default to the last available item. - move TimeoutListPreference into display package. Change-Id: I6c88f72ff2b0afe8605800074fd4626bbb16bee0 Fixes: 110104437 Test: make RunSettingsRoboTests
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.settings;
|
||||
package com.android.settings.display;
|
||||
|
||||
import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
|
||||
@@ -24,13 +24,17 @@ import android.app.admin.DevicePolicyManager;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.RestrictedListPreference;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class TimeoutListPreference extends RestrictedListPreference {
|
||||
private static final String TAG = "TimeoutListPreference";
|
||||
private EnforcedAdmin mAdmin;
|
||||
private final CharSequence[] mInitialEntries;
|
||||
private final CharSequence[] mInitialValues;
|
||||
@@ -115,10 +119,11 @@ public class TimeoutListPreference extends RestrictedListPreference {
|
||||
// If the last one happens to be the same as the max timeout, select that
|
||||
setValue(String.valueOf(maxTimeout));
|
||||
} else {
|
||||
// There will be no highlighted selection since nothing in the list matches
|
||||
// maxTimeout. The user can still select anything less than maxTimeout.
|
||||
// TODO: maybe append maxTimeout to the list and mark selected.
|
||||
// The selected time out value is longer than the max timeout allowed by the admin.
|
||||
// Select the largest value from the list by default.
|
||||
Log.w(TAG, "Default to longest timeout. Value disabled by admin:" + userPreference);
|
||||
setValue(revisedValues.get(revisedValues.size() - 1).toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -23,7 +23,6 @@ import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TimeoutListPreference;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||
@@ -71,12 +70,13 @@ public class TimeoutPreferenceController extends AbstractPreferenceController im
|
||||
dpm.getMaximumTimeToLock(null /* admin */, UserHandle.myUserId());
|
||||
timeoutListPreference.removeUnusableTimeouts(maxTimeout, admin);
|
||||
}
|
||||
updateTimeoutPreferenceDescription(timeoutListPreference, currentTimeout);
|
||||
updateTimeoutPreferenceDescription(timeoutListPreference,
|
||||
Long.parseLong(timeoutListPreference.getValue()));
|
||||
|
||||
EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||
UserHandle.myUserId());
|
||||
if(admin != null) {
|
||||
final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
|
||||
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||
UserHandle.myUserId());
|
||||
if (admin != null) {
|
||||
timeoutListPreference.removeUnusableTimeouts(0/* disable all*/, admin);
|
||||
}
|
||||
}
|
||||
|
@@ -27,7 +27,7 @@ import android.util.Log;
|
||||
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.TimeoutListPreference;
|
||||
import com.android.settings.display.TimeoutListPreference;
|
||||
import com.android.settings.core.PreferenceControllerMixin;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settings.security.trustagent.TrustAgentManager;
|
||||
|
Reference in New Issue
Block a user