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

Commit 30692040 authored by Doris Ling's avatar Doris Ling
Browse files

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
parent 1d540a32
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@
    </com.android.settingslib.RestrictedPreference>

    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
    <com.android.settings.TimeoutListPreference
    <com.android.settings.display.TimeoutListPreference
        android:key="screen_timeout"
        android:title="@string/screen_timeout"
        android:summary="@string/summary_placeholder"
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
        android:title="@string/lockpattern_settings_enable_visible_pattern_title" />

    <!-- available in pin/pattern/password -->
    <com.android.settings.TimeoutListPreference
    <com.android.settings.display.TimeoutListPreference
        android:key="lock_after_timeout"
        android:title="@string/lock_after_timeout"
        android:summary="@string/summary_placeholder"
+10 −5
Original line number Diff line number Diff line
@@ -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,9 +119,10 @@ 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());
            }
        }
    }
+6 −6
Original line number Diff line number Diff line
@@ -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,9 +70,10 @@ 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(
        final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
                mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
                UserHandle.myUserId());
        if (admin != null) {
+1 −1
Original line number Diff line number Diff line
@@ -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;
Loading