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

Commit 3932b073 authored by Yanting Yang's avatar Yanting Yang
Browse files

Move Styles & wallpapers to the homepage group

- Add Styles & wallpapers to the homepage group.
- Create a new display settings xml for the silky home.
- Remove Styles & wallpapers from new display settings xml.
- Apply the RestrictedTopLevelPreference to remove the restricted icon.

Bug: 168166015
Bug: 174964139
Test: robotest & visual with turning on/off silky home
Change-Id: Ib495b39bc62413242247f7e767c0e44bacc6e937
parent d3c76667
Loading
Loading
Loading
Loading
+143 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2020 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:key="display_settings_screen"
    android:title="@string/display_settings"
    settings:keywords="@string/keywords_display"
    settings:initialExpandedChildrenCount="5">

    <com.android.settingslib.RestrictedPreference
        android:key="brightness"
        android:title="@string/brightness"
        settings:keywords="@string/keywords_display_brightness_level"
        settings:useAdminDisabledSummary="true"
        settings:userRestriction="no_config_brightness">
        <intent android:action="com.android.intent.action.SHOW_BRIGHTNESS_DIALOG" />
    </com.android.settingslib.RestrictedPreference>

    <com.android.settings.display.darkmode.DarkModePreference
        android:key="dark_ui_mode"
        android:title="@string/dark_ui_mode"
        android:fragment="com.android.settings.display.darkmode.DarkModeSettingsFragment"
        android:widgetLayout="@null"
        settings:widgetLayout="@null"
        settings:controller="com.android.settings.display.DarkUIPreferenceController"
        settings:keywords="@string/keywords_dark_ui_mode"/>

    <com.android.settings.display.NightDisplayPreference
        android:key="night_display"
        android:title="@string/night_display_title"
        android:fragment="com.android.settings.display.NightDisplaySettings"
        android:widgetLayout="@null"
        settings:widgetLayout="@null"/>

    <Preference
        android:key="auto_brightness_entry"
        android:title="@string/auto_brightness_title"
        android:summary="@string/summary_placeholder"
        android:fragment="com.android.settings.display.AutoBrightnessSettings"
        settings:controller="com.android.settings.display.AutoBrightnessPreferenceController"/>

    <!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
    <Preference
        android:key="screen_timeout"
        android:title="@string/screen_timeout"
        android:summary="@string/summary_placeholder"
        android:fragment="com.android.settings.display.ScreenTimeoutSettings"
        settings:controller="com.android.settings.display.ScreenTimeoutPreferenceController" />

    <SwitchPreference
        android:key="auto_rotate"
        android:title="@string/accelerometer_title"
        settings:keywords="@string/keywords_auto_rotate"
        settings:controller="com.android.settings.display.AutoRotatePreferenceController" />

    <Preference
        android:key="color_mode"
        android:title="@string/color_mode_title"
        android:fragment="com.android.settings.display.ColorModePreferenceFragment"
        settings:controller="com.android.settings.display.ColorModePreferenceController"
        settings:keywords="@string/keywords_color_mode" />

    <SwitchPreference
        android:key="display_white_balance"
        android:title="@string/display_white_balance_title"
        android:summary="@string/display_white_balance_summary"
        settings:controller="com.android.settings.display.DisplayWhiteBalancePreferenceController" />

    <SwitchPreference
        android:key="peak_refresh_rate"
        android:title="@string/peak_refresh_rate_title"
        android:summary="@string/peak_refresh_rate_summary"
        settings:controller="com.android.settings.display.PeakRefreshRatePreferenceController" />

    <Preference
        android:key="font_size"
        android:title="@string/title_font_size"
        android:fragment="com.android.settings.display.ToggleFontSizePreferenceFragment"
        settings:controller="com.android.settings.display.FontSizePreferenceController"
        settings:keywords="@string/keywords_font_size" />

    <com.android.settings.display.ScreenZoomPreference
        android:key="display_settings_screen_zoom"
        android:title="@string/screen_zoom_title"
        android:fragment="com.android.settings.display.ScreenZoomSettings"/>

    <SwitchPreference
        android:key="show_operator_name"
        android:title="@string/show_operator_name_title"
        android:summary="@string/show_operator_name_summary" />

    <Preference
        android:key="screensaver"
        android:title="@string/screensaver_settings_title"
        android:fragment="com.android.settings.dream.DreamSettings" />

    <Preference
        android:key="lockscreen_from_display_settings"
        android:title="@string/lockscreen_settings_title"
        android:fragment="com.android.settings.security.LockscreenDashboardFragment"
        settings:keywords="@string/keywords_ambient_display_screen"
        settings:controller="com.android.settings.security.screenlock.LockScreenPreferenceController" />

    <SwitchPreference
        android:key="camera_gesture"
        android:title="@string/camera_gesture_title"
        android:summary="@string/camera_gesture_desc" />

    <SwitchPreference
        android:key="lift_to_wake"
        android:title="@string/lift_to_wake_title" />

    <SwitchPreference
        android:key="tap_to_wake"
        android:title="@string/tap_to_wake"
        android:summary="@string/tap_to_wake_summary" />

    <ListPreference
        android:key="theme"
        android:title="@string/device_theme"
        android:summary="@string/summary_placeholder" />

    <Preference
        android:key="vr_display_pref"
        android:title="@string/display_vr_pref_title"
        android:fragment="com.android.settings.display.VrDisplayPreferencePicker" />

</PreferenceScreen>
+18 −11
Original line number Diff line number Diff line
@@ -22,13 +22,13 @@

    <PreferenceCategory
        android:key="connectivity"
        android:order="-130"
        android:order="-140"
        settings:allowDividerAbove="false">
        <Preference
            android:fragment="com.android.settings.network.NetworkDashboardFragment"
            android:icon="@drawable/ic_homepage_network"
            android:key="top_level_network"
            android:order="-130"
            android:order="-140"
            android:title="@string/network_dashboard_title"
            settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>

@@ -36,27 +36,27 @@
            android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
            android:icon="@drawable/ic_homepage_connected_device"
            android:key="top_level_connected_devices"
            android:order="-120"
            android:order="-130"
            android:title="@string/connected_devices_dashboard_title"
            settings:controller="com.android.settings.connecteddevice.TopLevelConnectedDevicesPreferenceController"/>
    </PreferenceCategory>

    <PreferenceCategory
        android:key="apps"
        android:order="-110"
        android:order="-120"
        settings:allowDividerAbove="false">
        <Preference
            android:fragment="com.android.settings.applications.AppAndNotificationDashboardFragment"
            android:icon="@drawable/ic_homepage_apps"
            android:key="top_level_apps_and_notifs"
            android:order="-110"
            android:order="-120"
            android:title="@string/apps_dashboard_title"/>

        <Preference
            android:fragment="com.android.settings.notification.ConfigureNotificationSettings"
            android:icon="@drawable/ic_homepage_notification"
            android:key="top_level_notification"
            android:order="-100"
            android:order="-110"
            android:title="@string/configure_notification_settings"/>


@@ -64,13 +64,13 @@

    <PreferenceCategory
        android:key="phone_essential"
        android:order="-90"
        android:order="-100"
        settings:allowDividerAbove="false">
        <Preference
            android:fragment="com.android.settings.fuelgauge.PowerUsageSummary"
            android:icon="@drawable/ic_homepage_battery"
            android:key="top_level_battery"
            android:order="-90"
            android:order="-100"
            android:title="@string/power_usage_summary_title"
            settings:controller="com.android.settings.fuelgauge.TopLevelBatteryPreferenceController"/>

@@ -78,7 +78,7 @@
            android:fragment="com.android.settings.deviceinfo.StorageSettings"
            android:icon="@drawable/ic_homepage_storage"
            android:key="top_level_storage"
            android:order="-80"
            android:order="-90"
            android:title="@string/storage_settings"
            settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController"/>

@@ -86,17 +86,24 @@
            android:fragment="com.android.settings.notification.SoundSettings"
            android:icon="@drawable/ic_homepage_sound"
            android:key="top_level_sound"
            android:order="-70"
            android:order="-80"
            android:title="@string/sound_settings"/>

        <Preference
            android:fragment="com.android.settings.DisplaySettings"
            android:icon="@drawable/ic_homepage_display"
            android:key="top_level_display"
            android:order="-60"
            android:order="-70"
            android:title="@string/display_settings"
            settings:controller="com.android.settings.display.TopLevelDisplayPreferenceController"/>

        <com.android.settingslib.RestrictedTopLevelPreference
            android:icon="@drawable/ic_homepage_display"
            android:key="top_level_wallpaper"
            android:order="-60"
            android:title="@string/wallpaper_settings_title"
            settings:controller="com.android.settings.display.TopLevelWallpaperPreferenceController"/>

        <Preference
            android:fragment="com.android.settings.accessibility.AccessibilitySettings"
            android:icon="@drawable/ic_homepage_accessibility"
+17 −1
Original line number Diff line number Diff line
@@ -19,7 +19,10 @@ package com.android.settings;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.provider.SearchIndexableResource;
import android.util.FeatureFlagUtils;

import com.android.settings.core.FeatureFlags;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.display.BrightnessLevelPreferenceController;
import com.android.settings.display.CameraGesturePreferenceController;
@@ -37,6 +40,7 @@ import com.android.settingslib.core.lifecycle.Lifecycle;
import com.android.settingslib.search.SearchIndexable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

@SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
@@ -55,6 +59,9 @@ public class DisplaySettings extends DashboardFragment {

    @Override
    protected int getPreferenceScreenResId() {
        if (FeatureFlagUtils.isEnabled(getContext(), FeatureFlags.SILKY_HOME)) {
            return R.xml.display_settings_v2;
        }
        return R.xml.display_settings;
    }

@@ -90,7 +97,16 @@ public class DisplaySettings extends DashboardFragment {
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.display_settings) {
            new BaseSearchIndexProvider() {

                @Override
                public List<SearchIndexableResource> getXmlResourcesToIndex(
                        Context context, boolean enabled) {
                    final SearchIndexableResource sir = new SearchIndexableResource(context);
                    sir.xmlResId = FeatureFlagUtils.isEnabled(context, FeatureFlags.SILKY_HOME)
                            ? R.xml.display_settings_v2 : R.xml.display_settings;
                    return Arrays.asList(sir);
                }

                @Override
                public List<AbstractPreferenceController> createPreferenceControllers(
+136 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.display;

import static android.os.UserManager.DISALLOW_SET_WALLPAPER;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;

import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedTopLevelPreference;

import java.util.List;

/** This controller manages the wallpaper preference of the top level page. */
public class TopLevelWallpaperPreferenceController extends BasePreferenceController {
    private static final String TAG = "TopLevelWallpaperPreferenceController";
    private static final String LAUNCHED_SETTINGS = "app_launched_settings";

    private final String mWallpaperPackage;
    private final String mWallpaperClass;
    private final String mStylesAndWallpaperClass;
    private final String mWallpaperLaunchExtra;

    public TopLevelWallpaperPreferenceController(Context context, String key) {
        super(context, key);
        mWallpaperPackage = mContext.getString(R.string.config_wallpaper_picker_package);
        mWallpaperClass = mContext.getString(R.string.config_wallpaper_picker_class);
        mStylesAndWallpaperClass =
                mContext.getString(R.string.config_styles_and_wallpaper_picker_class);
        mWallpaperLaunchExtra = mContext.getString(R.string.config_wallpaper_picker_launch_extra);
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        Preference preference = screen.findPreference(getPreferenceKey());
        preference.setTitle(getTitle());
    }

    public String getTitle() {
        return mContext.getString(areStylesAvailable()
                ? R.string.style_and_wallpaper_settings_title : R.string.wallpaper_settings_title);
    }

    public ComponentName getComponentName() {
        return new ComponentName(mWallpaperPackage, getComponentClassString());
    }

    public String getComponentClassString() {
        return areStylesAvailable() ? mStylesAndWallpaperClass : mWallpaperClass;
    }

    @Override
    public int getAvailabilityStatus() {
        if ((TextUtils.isEmpty(mWallpaperClass) && TextUtils.isEmpty(mStylesAndWallpaperClass))
                || TextUtils.isEmpty(mWallpaperPackage)) {
            Log.e(TAG, "No Wallpaper picker specified!");
            return UNSUPPORTED_ON_DEVICE;
        }
        return canResolveWallpaperComponent(getComponentClassString())
                ? AVAILABLE_UNSEARCHABLE : CONDITIONALLY_UNAVAILABLE;
    }

    @Override
    public void updateState(Preference preference) {
        disablePreferenceIfManaged((RestrictedTopLevelPreference) preference);
    }

    @Override
    public boolean handlePreferenceTreeClick(Preference preference) {
        if (getPreferenceKey().equals(preference.getKey())) {
            final Intent intent = new Intent().setComponent(
                    getComponentName()).putExtra(mWallpaperLaunchExtra, LAUNCHED_SETTINGS);
            if (areStylesAvailable()) {
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            }
            preference.getContext().startActivity(intent);
            return true;
        }
        return super.handlePreferenceTreeClick(preference);
    }

    /** Returns whether Styles & Wallpaper is enabled and available. */
    public boolean areStylesAvailable() {
        return !TextUtils.isEmpty(mStylesAndWallpaperClass)
                && canResolveWallpaperComponent(mStylesAndWallpaperClass);
    }

    private boolean canResolveWallpaperComponent(String className) {
        final ComponentName componentName = new ComponentName(mWallpaperPackage, className);
        final PackageManager pm = mContext.getPackageManager();
        final Intent intent = new Intent().setComponent(componentName);
        final List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0 /* flags */);
        return resolveInfos != null && !resolveInfos.isEmpty();
    }

    private void disablePreferenceIfManaged(RestrictedTopLevelPreference pref) {
        final String restriction = DISALLOW_SET_WALLPAPER;
        if (pref != null) {
            pref.setDisabledByAdmin(null);
            if (RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
                    restriction, UserHandle.myUserId())) {
                // Do not show the admin dialog for system restriction.
                pref.setEnabled(false);
            } else {
                pref.checkRestrictionAndSetDisabled(restriction);
            }
        }
    }
}
+205 −0

File added.

Preview size limit exceeded, changes collapsed.