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
This commit is contained in:
Oleksandr Peletskyi
2016-04-05 15:37:07 +02:00
parent 36cce830b9
commit c485487ac5
2 changed files with 16 additions and 13 deletions

View File

@@ -41,11 +41,12 @@
android:entries="@array/night_mode_entries" android:entries="@array/night_mode_entries"
android:entryValues="@array/night_mode_values" /> --> android:entryValues="@array/night_mode_values" /> -->
<PreferenceScreen <com.android.settingslib.RestrictedPreference
android:key="wallpaper" android:key="wallpaper"
android:title="@string/wallpaper_settings_title" android:title="@string/wallpaper_settings_title"
settings:keywords="@string/keywords_display_wallpaper" 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 <com.android.settings.TimeoutListPreference
android:key="screen_timeout" android:key="screen_timeout"

View File

@@ -31,6 +31,7 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.provider.SearchIndexableResource; import android.provider.SearchIndexableResource;
import android.provider.Settings; import android.provider.Settings;
import android.support.v14.preference.SwitchPreference; 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.BaseSearchIndexProvider;
import com.android.settings.search.Indexable; import com.android.settings.search.Indexable;
import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -129,10 +131,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
removePreference(KEY_AUTO_BRIGHTNESS); removePreference(KEY_AUTO_BRIGHTNESS);
} }
if (!isWallpaperSettingAllowed(activity)) {
grayPreferenceOut(KEY_WALLPAPER);
}
if (isLiftToWakeAvailable(activity)) { if (isLiftToWakeAvailable(activity)) {
mLiftToWakePreference = (SwitchPreference) findPreference(KEY_LIFT_TO_WAKE); mLiftToWakePreference = (SwitchPreference) findPreference(KEY_LIFT_TO_WAKE);
mLiftToWakePreference.setOnPreferenceChangeListener(this); mLiftToWakePreference.setOnPreferenceChangeListener(this);
@@ -224,10 +222,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
com.android.internal.R.bool.config_allowAllRotations); com.android.internal.R.bool.config_allowAllRotations);
} }
private static boolean isWallpaperSettingAllowed(Context context) {
return WallpaperManager.getInstance(context).isWallpaperSettingAllowed();
}
private static boolean isLiftToWakeAvailable(Context context) { private static boolean isLiftToWakeAvailable(Context context) {
SensorManager sensors = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); SensorManager sensors = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
return sensors != null && sensors.getDefaultSensor(Sensor.TYPE_WAKE_GESTURE) != null; return sensors != null && sensors.getDefaultSensor(Sensor.TYPE_WAKE_GESTURE) != null;
@@ -308,6 +302,8 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
mScreenTimeoutPreference.removeUnusableTimeouts(maxTimeout, admin); mScreenTimeoutPreference.removeUnusableTimeouts(maxTimeout, admin);
} }
updateTimeoutPreferenceDescription(currentTimeout); updateTimeoutPreferenceDescription(currentTimeout);
disablePreferenceIfManaged(KEY_WALLPAPER, UserManager.DISALLOW_SET_WALLPAPER);
} }
private void updateState() { private void updateState() {
@@ -429,10 +425,16 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
return R.string.help_uri_display; return R.string.help_uri_display;
} }
private void grayPreferenceOut(String key) { private void disablePreferenceIfManaged(String key, String restriction) {
Preference pref = findPreference(key); final RestrictedPreference pref = (RestrictedPreference) findPreference(key);
if (pref != null) { if (pref != null) {
pref.setEnabled(false); pref.setDisabledByAdmin(null);
if (RestrictedLockUtils.hasBaseUserRestriction(getActivity(), restriction,
UserHandle.myUserId())) {
pref.setEnabled(false);
} else {
pref.checkRestrictionAndSetDisabled(restriction);
}
} }
} }