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

Commit c485487a authored by Oleksandr Peletskyi's avatar Oleksandr Peletskyi
Browse files

Improved UX when DISALLOW_SET_WALLPAPER is set.

Changed type of Settings > Display > Wallpeper menu item
to RestrictedPreference. This allows to show the reason,
why the Wallpaper menu item is blocked.

BUG: 27914814
Change-Id: I6eb23ec9fcaa39bb7e45d020a5aaca0d83cef81f
parent 36cce830
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -41,11 +41,12 @@
            android:entries="@array/night_mode_entries"
            android:entryValues="@array/night_mode_values" /> -->

        <PreferenceScreen
        <com.android.settingslib.RestrictedPreference
                android:key="wallpaper"
                android:title="@string/wallpaper_settings_title"
                settings:keywords="@string/keywords_display_wallpaper"
                android:fragment="com.android.settings.WallpaperTypeSettings" />
                android:fragment="com.android.settings.WallpaperTypeSettings"
                settings:useAdminDisabledSummary="true" />

        <com.android.settings.TimeoutListPreference
                android:key="screen_timeout"
+13 −11
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
@@ -49,6 +50,7 @@ import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreference;

import java.util.ArrayList;
import java.util.List;
@@ -129,10 +131,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
            removePreference(KEY_AUTO_BRIGHTNESS);
        }

        if (!isWallpaperSettingAllowed(activity)) {
            grayPreferenceOut(KEY_WALLPAPER);
        }

        if (isLiftToWakeAvailable(activity)) {
            mLiftToWakePreference = (SwitchPreference) findPreference(KEY_LIFT_TO_WAKE);
            mLiftToWakePreference.setOnPreferenceChangeListener(this);
@@ -224,10 +222,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
                com.android.internal.R.bool.config_allowAllRotations);
    }

    private static boolean isWallpaperSettingAllowed(Context context) {
        return WallpaperManager.getInstance(context).isWallpaperSettingAllowed();
    }

    private static boolean isLiftToWakeAvailable(Context context) {
        SensorManager sensors = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
        return sensors != null && sensors.getDefaultSensor(Sensor.TYPE_WAKE_GESTURE) != null;
@@ -308,6 +302,8 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
            mScreenTimeoutPreference.removeUnusableTimeouts(maxTimeout, admin);
        }
        updateTimeoutPreferenceDescription(currentTimeout);

        disablePreferenceIfManaged(KEY_WALLPAPER, UserManager.DISALLOW_SET_WALLPAPER);
    }

    private void updateState() {
@@ -429,10 +425,16 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
        return R.string.help_uri_display;
    }

    private void grayPreferenceOut(String key) {
        Preference pref = findPreference(key);
    private void disablePreferenceIfManaged(String key, String restriction) {
        final RestrictedPreference pref = (RestrictedPreference) findPreference(key);
        if (pref != null) {
            pref.setDisabledByAdmin(null);
            if (RestrictedLockUtils.hasBaseUserRestriction(getActivity(), restriction,
                    UserHandle.myUserId())) {
                pref.setEnabled(false);
            } else {
                pref.checkRestrictionAndSetDisabled(restriction);
            }
        }
    }