Snap for 12602378 from af080edfe0
to 25Q1-release
Change-Id: I94f279c674c355be140a739f1d43b1b788df08f1
This commit is contained in:
@@ -1930,6 +1930,20 @@
|
|||||||
android:value="@string/menu_key_apps"/>
|
android:value="@string/menu_key_apps"/>
|
||||||
</activity-alias>
|
</activity-alias>
|
||||||
|
|
||||||
|
<activity android:name="Settings$AppStorageSettingsActivity"
|
||||||
|
android:label="@string/storage_label"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter android:priority="1">
|
||||||
|
<action android:name="com.android.settings.APP_STORAGE_SETTINGS" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<data android:scheme="package" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
|
android:value="com.android.settings.applications.AppStorageSettings" />
|
||||||
|
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
|
||||||
|
android:value="@string/menu_key_apps"/>
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity android:name=".applications.InstalledAppOpenByDefaultActivity"
|
<activity android:name=".applications.InstalledAppOpenByDefaultActivity"
|
||||||
android:label="@string/application_info_label"
|
android:label="@string/application_info_label"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
|
30
res/values/styles_preference_expressive.xml
Normal file
30
res/values/styles_preference_expressive.xml
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Copyright (C) 2024 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- This file only contains custom attribute and style definition for preferences -->
|
||||||
|
<!-- Things unrelated to preference framework UI customization should go to other styles files -->
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<style name="SettingsPreferenceTheme.Expressive" parent="@style/PreferenceTheme.SettingsLib.Expressive">
|
||||||
|
<item name="apnPreferenceStyle">@style/ApnPreference</item>
|
||||||
|
<item name="cardPreferenceStyle">@style/CardPreference</item>
|
||||||
|
<item name="slicePreferenceStyle">@style/SlicePreference</item>
|
||||||
|
<item name="seekBarPreferenceStyle">@style/SettingsSeekBarPreference</item>
|
||||||
|
<item name="twoStateButtonPreferenceStyle">@style/TwoStateButtonPreference</item>
|
||||||
|
<item name="preferenceFragmentCompatStyle">@style/SettingsPreferenceFragmentStyle</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
88
res/values/themes_expressive.xml
Normal file
88
res/values/themes_expressive.xml
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Copyright (C) 2024 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<resources
|
||||||
|
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||||
|
<style name="Theme.Settings.Expressive" parent="Theme.SettingsBase.Expressive">
|
||||||
|
<item name="android:clipToPadding">false</item>
|
||||||
|
<item name="android:clipChildren">false</item>
|
||||||
|
<item name="preferenceTheme">@style/SettingsPreferenceTheme.Expressive</item>
|
||||||
|
<item name="android:listPreferredItemHeight">72dip</item>
|
||||||
|
<item name="android:homeAsUpIndicator">@drawable/ic_arrow_back</item>
|
||||||
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:datePickerDialogTheme">@style/PickerDialogTheme.Settings</item>
|
||||||
|
|
||||||
|
<item name="fingerprint_layout_theme">@style/FingerprintLayoutTheme</item>
|
||||||
|
<item name="face_layout_theme">@style/FaceLayoutTheme</item>
|
||||||
|
<item name="ic_menu_moreoverflow">@*android:drawable/ic_menu_moreoverflow_holo_dark</item>
|
||||||
|
|
||||||
|
<!-- For edge-to-edge -->
|
||||||
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
|
|
||||||
|
<!-- For wifi icon -->
|
||||||
|
<item name="wifi_signal">@drawable/wifi_signal</item>
|
||||||
|
<item name="wifi_signal_color">?android:attr/colorAccent</item>
|
||||||
|
<item name="wifi_friction">@drawable/wifi_friction</item>
|
||||||
|
|
||||||
|
<item name="side_margin">0dp</item>
|
||||||
|
<item name="sudListItemIconColor">?android:attr/colorAccent</item>
|
||||||
|
|
||||||
|
<!-- Redefine the ActionBar style for contentInsetStart -->
|
||||||
|
<item name="android:actionBarStyle">@style/Widget.ActionBar</item>
|
||||||
|
|
||||||
|
<item name="preferenceBackgroundColor">@drawable/preference_background</item>
|
||||||
|
|
||||||
|
<!-- For AndroidX AlertDialog -->
|
||||||
|
<item name="alertDialogTheme">@style/Theme.AlertDialog</item>
|
||||||
|
|
||||||
|
<item name="*android:lockPatternStyle">@style/LockPatternStyle</item>
|
||||||
|
|
||||||
|
<!-- For AppBarLayout -->
|
||||||
|
<item name="colorPrimary">@*android:color/primary_device_default_settings_light</item>
|
||||||
|
<item name="colorPrimaryVariant">@android:color/white</item>
|
||||||
|
|
||||||
|
<!-- For slice view in settings -->
|
||||||
|
<item name="sliceViewStyle">@style/Widget.SliceView.Settings</item>
|
||||||
|
|
||||||
|
<item name="notification_importance_button_background_color_unselected">@android:color/transparent</item>
|
||||||
|
<item name="notification_importance_button_border_color_unselected">?androidprv:attr/materialColorOutlineVariant</item>
|
||||||
|
<item name="notification_importance_button_foreground_color_unselected">?androidprv:attr/materialColorOnSurfaceVariant</item>
|
||||||
|
|
||||||
|
<item name="notification_importance_button_background_color_selected">?androidprv:attr/materialColorSecondaryContainer</item>
|
||||||
|
<item name="notification_importance_button_border_color_selected">?androidprv:attr/materialColorOnSecondaryContainer</item>
|
||||||
|
<item name="notification_importance_button_foreground_color_selected">?androidprv:attr/materialColorOnSecondaryContainer</item>
|
||||||
|
|
||||||
|
<!-- For AppCompat widgets, e.g. TextInputLayout -->
|
||||||
|
<item name="colorAccent">?android:attr/colorAccent</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.Settings.Expressive.NoActionBar">
|
||||||
|
<item name="android:windowActionBar">false</item>
|
||||||
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="colorSurface">@color/settingslib_colorSurface</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.SubSettings.Expressive.Base" parent="Theme.Settings.Expressive.NoActionBar">
|
||||||
|
<!-- Redefine the ActionBar style for contentInsetStart -->
|
||||||
|
<item name="android:actionBarStyle">@style/Widget.ActionBar.SubSettings</item>
|
||||||
|
|
||||||
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.SubSettings.Expressive" parent="Theme.SubSettings.Expressive.Base"/>
|
||||||
|
</resources>
|
@@ -21,7 +21,8 @@
|
|||||||
|
|
||||||
<com.android.settingslib.widget.TopIntroPreference
|
<com.android.settingslib.widget.TopIntroPreference
|
||||||
android:key="accessibility_autoclick_intro"
|
android:key="accessibility_autoclick_intro"
|
||||||
android:title="@string/accessibility_autoclick_intro_text"/>
|
android:title="@string/accessibility_autoclick_intro_text"
|
||||||
|
settings:searchable="false"/>
|
||||||
|
|
||||||
<com.android.settingslib.widget.IllustrationPreference
|
<com.android.settingslib.widget.IllustrationPreference
|
||||||
android:key="accessibility_autoclick_banner"
|
android:key="accessibility_autoclick_banner"
|
||||||
@@ -29,32 +30,42 @@
|
|||||||
settings:searchable="false"
|
settings:searchable="false"
|
||||||
settings:lottie_rawRes="@drawable/accessibility_dwell"/>
|
settings:lottie_rawRes="@drawable/accessibility_dwell"/>
|
||||||
|
|
||||||
|
<!-- Items in a list should not be searchable. -->
|
||||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||||
android:key="accessibility_control_autoclick_default"
|
android:key="accessibility_control_autoclick_default"
|
||||||
android:title="@string/accessibility_autoclick_default_title"
|
android:title="@string/accessibility_autoclick_default_title"
|
||||||
|
settings:searchable="false"
|
||||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||||
|
|
||||||
|
<!-- Items in a list should not be searchable. -->
|
||||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||||
android:key="accessibility_control_autoclick_200ms"
|
android:key="accessibility_control_autoclick_200ms"
|
||||||
android:title="@string/accessibility_autoclick_short_title"
|
android:title="@string/accessibility_autoclick_short_title"
|
||||||
android:summary="@string/accessibility_autoclick_short_summary"
|
android:summary="@string/accessibility_autoclick_short_summary"
|
||||||
|
settings:searchable="false"
|
||||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||||
|
|
||||||
|
<!-- Items in a list should not be searchable. -->
|
||||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||||
android:key="accessibility_control_autoclick_600ms"
|
android:key="accessibility_control_autoclick_600ms"
|
||||||
android:title="@string/accessibility_autoclick_medium_title"
|
android:title="@string/accessibility_autoclick_medium_title"
|
||||||
android:summary="@string/accessibility_autoclick_medium_summary"
|
android:summary="@string/accessibility_autoclick_medium_summary"
|
||||||
|
settings:searchable="false"
|
||||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||||
|
|
||||||
|
<!-- Items in a list should not be searchable. -->
|
||||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||||
android:key="accessibility_control_autoclick_1sec"
|
android:key="accessibility_control_autoclick_1sec"
|
||||||
android:title="@string/accessibility_autoclick_long_title"
|
android:title="@string/accessibility_autoclick_long_title"
|
||||||
android:summary="@string/accessibility_autoclick_long_summary"
|
android:summary="@string/accessibility_autoclick_long_summary"
|
||||||
|
settings:searchable="false"
|
||||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||||
|
|
||||||
|
<!-- Items in a list should not be searchable. -->
|
||||||
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
<com.android.settingslib.widget.SelectorWithWidgetPreference
|
||||||
android:key="accessibility_control_autoclick_custom"
|
android:key="accessibility_control_autoclick_custom"
|
||||||
android:title="@string/accessibility_autoclick_custom_title"
|
android:title="@string/accessibility_autoclick_custom_title"
|
||||||
|
settings:searchable="false"
|
||||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
settings:controller="com.android.settings.accessibility.ToggleAutoclickPreferenceController"/>
|
||||||
|
|
||||||
<com.android.settingslib.widget.LayoutPreference
|
<com.android.settingslib.widget.LayoutPreference
|
||||||
@@ -62,6 +73,7 @@
|
|||||||
android:layout="@layout/accessibility_autoclick_custom_seekbar"
|
android:layout="@layout/accessibility_autoclick_custom_seekbar"
|
||||||
android:selectable="false"
|
android:selectable="false"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
|
settings:searchable="false"
|
||||||
settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/>
|
settings:controller="com.android.settings.accessibility.ToggleAutoclickCustomSeekbarController"/>
|
||||||
|
|
||||||
<com.android.settings.accessibility.AccessibilityFooterPreference
|
<com.android.settings.accessibility.AccessibilityFooterPreference
|
||||||
|
@@ -111,6 +111,7 @@ public class Settings extends SettingsActivity {
|
|||||||
public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ }
|
public static class ModuleLicensesActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class ApplicationSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ }
|
public static class ManageApplicationsActivity extends SettingsActivity { /* empty */ }
|
||||||
|
public static class AppStorageSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class ManageAssistActivity extends SettingsActivity { /* empty */ }
|
public static class ManageAssistActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class HighPowerApplicationsActivity extends SettingsActivity { /* empty */ }
|
public static class HighPowerApplicationsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class BackgroundCheckSummaryActivity extends SettingsActivity { /* empty */ }
|
public static class BackgroundCheckSummaryActivity extends SettingsActivity { /* empty */ }
|
||||||
|
@@ -73,6 +73,7 @@ import com.android.settings.widget.SettingsMainSwitchBar;
|
|||||||
import com.android.settingslib.core.instrumentation.Instrumentable;
|
import com.android.settingslib.core.instrumentation.Instrumentable;
|
||||||
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
|
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
|
||||||
import com.android.settingslib.drawer.DashboardCategory;
|
import com.android.settingslib.drawer.DashboardCategory;
|
||||||
|
import com.android.settingslib.widget.SettingsThemeHelper;
|
||||||
|
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
@@ -169,6 +170,9 @@ public class SettingsActivity extends SettingsBaseActivity
|
|||||||
|
|
||||||
private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
|
private static final String EXTRA_UI_OPTIONS = "settings:ui_options";
|
||||||
|
|
||||||
|
private static final int EXPRESSIVE_BACK_ICON =
|
||||||
|
com.android.settingslib.collapsingtoolbar.R.drawable.settingslib_expressive_icon_back;
|
||||||
|
|
||||||
private String mFragmentClass;
|
private String mFragmentClass;
|
||||||
private String mHighlightMenuKey;
|
private String mHighlightMenuKey;
|
||||||
|
|
||||||
@@ -301,7 +305,9 @@ public class SettingsActivity extends SettingsBaseActivity
|
|||||||
// If this is in setup flow, don't apply theme. Because light theme needs to be applied
|
// If this is in setup flow, don't apply theme. Because light theme needs to be applied
|
||||||
// in SettingsBaseActivity#onCreate().
|
// in SettingsBaseActivity#onCreate().
|
||||||
if (isSubSettings(intent) && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
if (isSubSettings(intent) && !WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||||
setTheme(R.style.Theme_SubSettings);
|
int themeId = SettingsThemeHelper.isExpressiveTheme(this)
|
||||||
|
? R.style.Theme_SubSettings_Expressive : R.style.Theme_SubSettings;
|
||||||
|
setTheme(themeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
setContentView(R.layout.settings_main_prefs);
|
setContentView(R.layout.settings_main_prefs);
|
||||||
@@ -388,6 +394,9 @@ public class SettingsActivity extends SettingsBaseActivity
|
|||||||
if (actionBar != null) {
|
if (actionBar != null) {
|
||||||
actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
|
actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled);
|
||||||
actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
|
actionBar.setHomeButtonEnabled(isActionBarButtonEnabled);
|
||||||
|
if (SettingsThemeHelper.isExpressiveTheme(this)) {
|
||||||
|
actionBar.setHomeAsUpIndicator(EXPRESSIVE_BACK_ICON);
|
||||||
|
}
|
||||||
actionBar.setDisplayShowTitleEnabled(true);
|
actionBar.setDisplayShowTitleEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -46,6 +46,7 @@ import com.android.settings.Utils;
|
|||||||
import com.android.settings.core.CategoryMixin.CategoryHandler;
|
import com.android.settings.core.CategoryMixin.CategoryHandler;
|
||||||
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
|
||||||
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
|
import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
|
||||||
|
import com.android.settingslib.widget.SettingsThemeHelper;
|
||||||
import com.android.window.flags.Flags;
|
import com.android.window.flags.Flags;
|
||||||
|
|
||||||
import com.google.android.material.appbar.AppBarLayout;
|
import com.google.android.material.appbar.AppBarLayout;
|
||||||
@@ -68,6 +69,12 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
|
|||||||
private static final int DEFAULT_REQUEST = -1;
|
private static final int DEFAULT_REQUEST = -1;
|
||||||
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
|
private static final float TOOLBAR_LINE_SPACING_MULTIPLIER = 1.1f;
|
||||||
|
|
||||||
|
private static final int EXPRESSIVE_LAYOUT_ID =
|
||||||
|
com.android.settingslib.collapsingtoolbar.R.layout.settingslib_expressive_collapsing_toolbar_base_layout;
|
||||||
|
private static final int COLLAPSING_LAYOUT_ID =
|
||||||
|
com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout;
|
||||||
|
|
||||||
|
|
||||||
protected CategoryMixin mCategoryMixin;
|
protected CategoryMixin mCategoryMixin;
|
||||||
protected CollapsingToolbarLayout mCollapsingToolbarLayout;
|
protected CollapsingToolbarLayout mCollapsingToolbarLayout;
|
||||||
protected AppBarLayout mAppBarLayout;
|
protected AppBarLayout mAppBarLayout;
|
||||||
@@ -116,8 +123,9 @@ public class SettingsBaseActivity extends FragmentActivity implements CategoryHa
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isToolbarEnabled() && !isAnySetupWizard) {
|
if (isToolbarEnabled() && !isAnySetupWizard) {
|
||||||
super.setContentView(
|
int resId = SettingsThemeHelper.isExpressiveTheme(getApplicationContext())
|
||||||
com.android.settingslib.collapsingtoolbar.R.layout.collapsing_toolbar_base_layout);
|
? EXPRESSIVE_LAYOUT_ID : COLLAPSING_LAYOUT_ID;
|
||||||
|
super.setContentView(resId);
|
||||||
mCollapsingToolbarLayout =
|
mCollapsingToolbarLayout =
|
||||||
findViewById(com.android.settingslib.collapsingtoolbar.R.id.collapsing_toolbar);
|
findViewById(com.android.settingslib.collapsingtoolbar.R.id.collapsing_toolbar);
|
||||||
mAppBarLayout = findViewById(R.id.app_bar);
|
mAppBarLayout = findViewById(R.id.app_bar);
|
||||||
|
@@ -44,6 +44,7 @@ import com.android.settings.accounts.AccountSyncSettings;
|
|||||||
import com.android.settings.accounts.ChooseAccountFragment;
|
import com.android.settings.accounts.ChooseAccountFragment;
|
||||||
import com.android.settings.accounts.ManagedProfileSettings;
|
import com.android.settings.accounts.ManagedProfileSettings;
|
||||||
import com.android.settings.applications.AppDashboardFragment;
|
import com.android.settings.applications.AppDashboardFragment;
|
||||||
|
import com.android.settings.applications.AppStorageSettings;
|
||||||
import com.android.settings.applications.ProcessStatsSummary;
|
import com.android.settings.applications.ProcessStatsSummary;
|
||||||
import com.android.settings.applications.ProcessStatsUi;
|
import com.android.settings.applications.ProcessStatsUi;
|
||||||
import com.android.settings.applications.UsageAccessDetails;
|
import com.android.settings.applications.UsageAccessDetails;
|
||||||
@@ -245,6 +246,7 @@ public class SettingsGateway {
|
|||||||
MyDeviceInfoFragment.class.getName(),
|
MyDeviceInfoFragment.class.getName(),
|
||||||
ModuleLicensesDashboard.class.getName(),
|
ModuleLicensesDashboard.class.getName(),
|
||||||
ManageApplications.class.getName(),
|
ManageApplications.class.getName(),
|
||||||
|
AppStorageSettings.class.getName(),
|
||||||
FirmwareVersionSettings.class.getName(),
|
FirmwareVersionSettings.class.getName(),
|
||||||
ManageAssist.class.getName(),
|
ManageAssist.class.getName(),
|
||||||
ProcessStatsUi.class.getName(),
|
ProcessStatsUi.class.getName(),
|
||||||
@@ -437,6 +439,7 @@ public class SettingsGateway {
|
|||||||
Settings.UserSettingsActivity.class.getName(),
|
Settings.UserSettingsActivity.class.getName(),
|
||||||
Settings.ConfigureNotificationSettingsActivity.class.getName(),
|
Settings.ConfigureNotificationSettingsActivity.class.getName(),
|
||||||
Settings.ManageApplicationsActivity.class.getName(),
|
Settings.ManageApplicationsActivity.class.getName(),
|
||||||
|
Settings.AppStorageSettingsActivity.class.getName(),
|
||||||
Settings.PaymentSettingsActivity.class.getName(),
|
Settings.PaymentSettingsActivity.class.getName(),
|
||||||
// Home page > Display
|
// Home page > Display
|
||||||
Settings.AdaptiveBrightnessActivity.class.getName(),
|
Settings.AdaptiveBrightnessActivity.class.getName(),
|
||||||
|
@@ -37,6 +37,7 @@ import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
|||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||||
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenBinding
|
import com.android.settingslib.preference.PreferenceScreenBinding
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
@@ -66,6 +67,9 @@ class AutoBrightnessScreen :
|
|||||||
override fun storage(context: Context): KeyValueStore =
|
override fun storage(context: Context): KeyValueStore =
|
||||||
AutoBrightnessDataStore(SettingsSystemStore.get(context))
|
AutoBrightnessDataStore(SettingsSystemStore.get(context))
|
||||||
|
|
||||||
|
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
|
||||||
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
override fun isAvailable(context: Context) =
|
override fun isAvailable(context: Context) =
|
||||||
context.resources.getBoolean(
|
context.resources.getBoolean(
|
||||||
com.android.internal.R.bool.config_automatic_brightness_available
|
com.android.internal.R.bool.config_automatic_brightness_available
|
||||||
|
@@ -30,7 +30,7 @@ import com.android.settingslib.metadata.preferenceHierarchy
|
|||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
|
|
||||||
@ProvidePreferenceScreen
|
@ProvidePreferenceScreen
|
||||||
class DisplayScreen :
|
open class DisplayScreen :
|
||||||
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
PreferenceScreenCreator, PreferenceAvailabilityProvider, PreferenceIconProvider {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
|
@@ -33,6 +33,7 @@ import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
|||||||
import com.android.settingslib.metadata.PreferenceLifecycleContext
|
import com.android.settingslib.metadata.PreferenceLifecycleContext
|
||||||
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
||||||
import com.android.settingslib.metadata.PreferenceSummaryProvider
|
import com.android.settingslib.metadata.PreferenceSummaryProvider
|
||||||
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.SwitchPreference
|
import com.android.settingslib.metadata.SwitchPreference
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
@@ -48,6 +49,9 @@ class PeakRefreshRateSwitchPreference :
|
|||||||
override fun storage(context: Context): KeyValueStore =
|
override fun storage(context: Context): KeyValueStore =
|
||||||
PeakRefreshRateStore(context, SettingsSystemStore.get(context))
|
PeakRefreshRateStore(context, SettingsSystemStore.get(context))
|
||||||
|
|
||||||
|
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
|
||||||
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
override fun isAvailable(context: Context) =
|
override fun isAvailable(context: Context) =
|
||||||
context.resources.getBoolean(R.bool.config_show_smooth_display) &&
|
context.resources.getBoolean(R.bool.config_show_smooth_display) &&
|
||||||
context.peakRefreshRate > DEFAULT_REFRESH_RATE
|
context.peakRefreshRate > DEFAULT_REFRESH_RATE
|
||||||
|
@@ -36,6 +36,7 @@ import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
|||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceSummaryProvider
|
import com.android.settingslib.metadata.PreferenceSummaryProvider
|
||||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||||
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenBinding
|
import com.android.settingslib.preference.PreferenceScreenBinding
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
@@ -69,6 +70,9 @@ class DarkModeScreen :
|
|||||||
override val keywords: Int
|
override val keywords: Int
|
||||||
get() = R.string.keywords_dark_ui_mode
|
get() = R.string.keywords_dark_ui_mode
|
||||||
|
|
||||||
|
override fun getWritePermit(context: Context, value: Boolean?, myUid: Int, callingUid: Int) =
|
||||||
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
override fun isFlagEnabled(context: Context) = Flags.catalystDarkUiMode()
|
override fun isFlagEnabled(context: Context) = Flags.catalystDarkUiMode()
|
||||||
|
|
||||||
override fun fragmentClass() = DarkModeSettingsFragment::class.java
|
override fun fragmentClass() = DarkModeSettingsFragment::class.java
|
||||||
|
@@ -33,6 +33,7 @@ import com.android.settingslib.metadata.PreferenceIconProvider
|
|||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||||
import com.android.settingslib.metadata.RangeValue
|
import com.android.settingslib.metadata.RangeValue
|
||||||
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.preference.PreferenceBinding
|
import com.android.settingslib.preference.PreferenceBinding
|
||||||
|
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@@ -82,6 +83,9 @@ open class CallVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
|
||||||
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
override fun getMinValue(context: Context) =
|
override fun getMinValue(context: Context) =
|
||||||
createAudioHelper(context).getMinVolume(getAudioStream(context))
|
createAudioHelper(context).getMinVolume(getAudioStream(context))
|
||||||
|
|
||||||
|
@@ -25,7 +25,13 @@ import com.android.settings.R
|
|||||||
import com.android.settingslib.RestrictedLockUtilsInternal
|
import com.android.settingslib.RestrictedLockUtilsInternal
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
import com.android.settingslib.metadata.*
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
|
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||||
|
import com.android.settingslib.metadata.RangeValue
|
||||||
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.preference.PreferenceBinding
|
import com.android.settingslib.preference.PreferenceBinding
|
||||||
|
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@@ -79,6 +85,9 @@ open class MediaVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
|
||||||
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
override fun getMinValue(context: Context) =
|
override fun getMinValue(context: Context) =
|
||||||
createAudioHelper(context).getMinVolume(STREAM_MUSIC)
|
createAudioHelper(context).getMinVolume(STREAM_MUSIC)
|
||||||
|
|
||||||
|
@@ -40,6 +40,7 @@ import com.android.settingslib.metadata.PreferenceIconProvider
|
|||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
||||||
import com.android.settingslib.metadata.RangeValue
|
import com.android.settingslib.metadata.RangeValue
|
||||||
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.preference.PreferenceBinding
|
import com.android.settingslib.preference.PreferenceBinding
|
||||||
|
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@@ -94,6 +95,9 @@ open class SeparateRingVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getWritePermit(context: Context, value: Int?, myUid: Int, callingUid: Int) =
|
||||||
|
ReadWritePermit.ALLOW
|
||||||
|
|
||||||
override fun getMinValue(context: Context) =
|
override fun getMinValue(context: Context) =
|
||||||
createAudioHelper(context).getMinVolume(STREAM_RING)
|
createAudioHelper(context).getMinVolume(STREAM_RING)
|
||||||
|
|
||||||
|
@@ -18,8 +18,11 @@ package com.android.settings.notification
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
|
import com.android.settings.Settings.SoundSettingsActivity
|
||||||
import com.android.settings.flags.Flags
|
import com.android.settings.flags.Flags
|
||||||
|
import com.android.settings.utils.makeLaunchIntent
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
import com.android.settingslib.metadata.ProvidePreferenceScreen
|
||||||
import com.android.settingslib.metadata.preferenceHierarchy
|
import com.android.settingslib.metadata.preferenceHierarchy
|
||||||
import com.android.settingslib.preference.PreferenceScreenCreator
|
import com.android.settingslib.preference.PreferenceScreenCreator
|
||||||
@@ -55,6 +58,9 @@ class SoundScreen : PreferenceScreenCreator, PreferenceIconProvider {
|
|||||||
+DialPadTonePreference() order -50
|
+DialPadTonePreference() order -50
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun getLaunchIntent(context: Context, metadata: PreferenceMetadata?) =
|
||||||
|
makeLaunchIntent(context, SoundSettingsActivity::class.java, metadata?.key)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val KEY = "sound_screen"
|
const val KEY = "sound_screen"
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,8 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.settings.display
|
package com.android.settings.display
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.ContextWrapper
|
||||||
|
import android.content.res.Resources
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
|
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC
|
||||||
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
|
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
|
||||||
@@ -23,26 +24,30 @@ import android.view.LayoutInflater
|
|||||||
import androidx.preference.PreferenceViewHolder
|
import androidx.preference.PreferenceViewHolder
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources
|
|
||||||
import com.android.settingslib.PrimarySwitchPreference
|
import com.android.settingslib.PrimarySwitchPreference
|
||||||
|
import com.android.settingslib.preference.PreferenceDataStoreAdapter
|
||||||
import com.android.settingslib.widget.SettingsThemeHelper.isExpressiveTheme
|
import com.android.settingslib.widget.SettingsThemeHelper.isExpressiveTheme
|
||||||
import com.android.settingslib.widget.theme.R
|
import com.android.settingslib.widget.theme.R
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import org.junit.Ignore
|
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
import org.robolectric.annotation.Config
|
import org.mockito.kotlin.any
|
||||||
|
import org.mockito.kotlin.doReturn
|
||||||
|
import org.mockito.kotlin.mock
|
||||||
|
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
@RunWith(AndroidJUnit4::class)
|
@RunWith(AndroidJUnit4::class)
|
||||||
@Config(shadows = [SettingsShadowResources::class])
|
|
||||||
@Ignore("robolectric runtime")
|
|
||||||
class AutoBrightnessScreenTest {
|
class AutoBrightnessScreenTest {
|
||||||
|
|
||||||
private val context: Context = ApplicationProvider.getApplicationContext()
|
|
||||||
|
|
||||||
private val preferenceScreenCreator = AutoBrightnessScreen()
|
private val preferenceScreenCreator = AutoBrightnessScreen()
|
||||||
|
|
||||||
|
private var mockResources: Resources? = null
|
||||||
|
|
||||||
|
private val context =
|
||||||
|
object : ContextWrapper(ApplicationProvider.getApplicationContext()) {
|
||||||
|
override fun getResources(): Resources = mockResources ?: super.getResources()
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun switchClick_defaultScreenBrightnessModeTurnOffAuto_returnTrue() {
|
fun switchClick_defaultScreenBrightnessModeTurnOffAuto_returnTrue() {
|
||||||
setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_MANUAL)
|
setScreenBrightnessMode(SCREEN_BRIGHTNESS_MODE_MANUAL)
|
||||||
@@ -100,20 +105,14 @@ class AutoBrightnessScreenTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun isAvailable_configTrueSet_shouldReturnTrue() {
|
fun isAvailable_configTrueSet_shouldReturnTrue() {
|
||||||
SettingsShadowResources.overrideResource(
|
mockResources = mock { on { getBoolean(any()) } doReturn true }
|
||||||
com.android.internal.R.bool.config_automatic_brightness_available,
|
|
||||||
true,
|
|
||||||
)
|
|
||||||
|
|
||||||
assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
|
assertThat(preferenceScreenCreator.isAvailable(context)).isTrue()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun isAvailable_configFalseSet_shouldReturnFalse() {
|
fun isAvailable_configFalseSet_shouldReturnFalse() {
|
||||||
SettingsShadowResources.overrideResource(
|
mockResources = mock { on { getBoolean(any()) } doReturn false }
|
||||||
com.android.internal.R.bool.config_automatic_brightness_available,
|
|
||||||
false,
|
|
||||||
)
|
|
||||||
|
|
||||||
assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
|
assertThat(preferenceScreenCreator.isAvailable(context)).isFalse()
|
||||||
}
|
}
|
||||||
@@ -121,6 +120,7 @@ class AutoBrightnessScreenTest {
|
|||||||
private fun getPrimarySwitchPreference(): PrimarySwitchPreference =
|
private fun getPrimarySwitchPreference(): PrimarySwitchPreference =
|
||||||
preferenceScreenCreator.run {
|
preferenceScreenCreator.run {
|
||||||
val preference = createWidget(context)
|
val preference = createWidget(context)
|
||||||
|
preference.preferenceDataStore = PreferenceDataStoreAdapter(storage(context))
|
||||||
bind(preference, this)
|
bind(preference, this)
|
||||||
val holder =
|
val holder =
|
||||||
PreferenceViewHolder.createInstanceForTests(
|
PreferenceViewHolder.createInstanceForTests(
|
||||||
|
@@ -22,6 +22,7 @@ import android.platform.test.flag.junit.SetFlagsRule
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
|
import com.android.settingslib.preference.createAndBindWidget
|
||||||
import com.android.settingslib.widget.MainSwitchPreference
|
import com.android.settingslib.widget.MainSwitchPreference
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import org.junit.Before
|
import org.junit.Before
|
||||||
@@ -78,10 +79,6 @@ class AdaptiveConnectivityTogglePreferenceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getMainSwitchPreferenceCompat(): MainSwitchPreference =
|
private fun getMainSwitchPreferenceCompat(): MainSwitchPreference =
|
||||||
adaptiveConnectivityTogglePreference.run {
|
adaptiveConnectivityTogglePreference.createAndBindWidget(appContext)
|
||||||
val preference = createWidget(appContext)
|
|
||||||
bind(preference, this)
|
|
||||||
preference as MainSwitchPreference
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// LINT.ThenChange(AdaptiveConnectivityTogglePreferenceControllerTest.java)
|
// LINT.ThenChange(AdaptiveConnectivityTogglePreferenceControllerTest.java)
|
||||||
|
@@ -23,7 +23,7 @@ import androidx.preference.SwitchPreferenceCompat
|
|||||||
import androidx.test.core.app.ApplicationProvider
|
import androidx.test.core.app.ApplicationProvider
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.android.settingslib.datastore.SettingsSystemStore
|
import com.android.settingslib.datastore.SettingsSystemStore
|
||||||
import com.android.settingslib.preference.DefaultPreferenceBindingFactory
|
import com.android.settingslib.preference.createAndBindWidget
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -93,11 +93,7 @@ class DialPadTonePreferenceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getSwitchPreference(): SwitchPreferenceCompat =
|
private fun getSwitchPreference(): SwitchPreferenceCompat =
|
||||||
DefaultPreferenceBindingFactory.getPreferenceBinding(dialPadTonePreference).run {
|
dialPadTonePreference.createAndBindWidget(context)
|
||||||
val preference = createWidget(context)
|
|
||||||
bind(preference, dialPadTonePreference)
|
|
||||||
preference as SwitchPreferenceCompat
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun enableDialPadTone(enabled: Boolean) =
|
private fun enableDialPadTone(enabled: Boolean) =
|
||||||
SettingsSystemStore.get(context).setBoolean(DTMF_TONE_WHEN_DIALING, enabled)
|
SettingsSystemStore.get(context).setBoolean(DTMF_TONE_WHEN_DIALING, enabled)
|
||||||
|
Reference in New Issue
Block a user