Apply top intro preference in Settings app (1/n)

Based on content in footer, we need to convert some footers
to top info prefernce.

Test: Run robo test and see the screens
Bug: 173087905
Change-Id: Ie62a503481f9d385f5468896fba8f607cb3437d3
This commit is contained in:
Tsung-Mao Fang
2020-11-16 18:13:36 +08:00
parent 564eaec283
commit 00956fb4e1
15 changed files with 86 additions and 83 deletions

View File

@@ -27,6 +27,11 @@
settings:allowDividerBelow="true"
settings:controller="com.android.settings.display.TwilightLocationPreferenceController"/>
<com.android.settingslib.widget.TopIntroPreference
android:key="dark_ui_top_intro"
android:title="@string/dark_ui_text"
settings:searchable="false"/>
<DropDownPreference
android:key="dark_ui_auto_mode"
android:title="@string/dark_ui_auto_mode_title"
@@ -55,11 +60,4 @@
settings:allowDividerBelow="true"
settings:controller="com.android.settings.display.darkmode.DarkModeActivationPreferenceController"/>
<com.android.settingslib.widget.FooterPreference
android:key="dark_ui_footer"
android:title="@string/dark_ui_text"
android:selectable="false"
settings:searchable="false"
settings:allowDividerAbove="true"/>
</PreferenceScreen>

View File

@@ -20,12 +20,17 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/graphics_driver_dashboard_title">
<com.android.settingslib.widget.TopIntroPreference
android:key="top_info_graphics_driver"
android:title="@string/graphics_driver_footer_text"
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverTopIntroPreferenceController"/>
<ListPreference
android:key="graphics_driver_all_apps_preference"
android:title="@string/graphics_driver_all_apps_preference_title"
android:dialogTitle="@string/graphics_driver_all_apps_preference_title"
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverEnableForAllAppsPreferenceController">
</ListPreference>
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverEnableForAllAppsPreferenceController"
settings:allowDividerAbove="true"/>
<PreferenceCategory
android:key="graphics_driver_category"
@@ -33,11 +38,4 @@
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverAppPreferenceController">
</PreferenceCategory>
<com.android.settingslib.widget.FooterPreference
android:key="graphics_driver_footer"
android:title="@string/graphics_driver_footer_text"
android:selectable="false"
settings:controller="com.android.settings.development.graphicsdriver.GraphicsDriverFooterPreferenceController">
</com.android.settingslib.widget.FooterPreference>
</PreferenceScreen>

View File

@@ -27,10 +27,16 @@
settings:controller="com.android.settings.display.TwilightLocationPreferenceController"
settings:allowDividerBelow="true"/>
<com.android.settingslib.widget.TopIntroPreference
android:key="night_display_top_intro"
android:title="@string/night_display_text"
settings:controller="com.android.settings.display.NightDisplayTopIntroPreferenceController"/>
<DropDownPreference
android:key="night_display_auto_mode"
android:title="@string/night_display_auto_mode_title"
android:summary="%s"
settings:allowDividerAbove="true"
settings:controller="com.android.settings.display.NightDisplayAutoModePreferenceController"/>
<Preference
@@ -59,11 +65,4 @@
settings:keywords="@string/keywords_display_night_display"
settings:controller="com.android.settings.display.NightDisplayActivationPreferenceController"/>
<com.android.settingslib.widget.FooterPreference
android:key="night_display_footer"
android:title="@string/night_display_text"
android:selectable="false"
settings:allowDividerAbove="true"
settings:controller="com.android.settings.display.NightDisplayFooterPreferenceController"/>
</PreferenceScreen>

View File

@@ -19,12 +19,17 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/tether_settings_title_all">
<com.android.settingslib.widget.TopIntroPreference
android:key="tether_prefs_top_intro"
settings:searchable="false"/>
<com.android.settings.widget.FixedLineSummaryPreference
android:key="wifi_tether"
android:title="@string/wifi_hotspot_checkbox_text"
android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.wifi.tether.WifiTetherSettings"
settings:summaryLineCount="2" />
settings:allowDividerAbove="true"
settings:summaryLineCount="2"/>
<SwitchPreference
android:key="usb_tether_settings"
@@ -49,9 +54,4 @@
android:summary="@string/tether_settings_disabled_on_data_saver"
android:selectable="false"
settings:allowDividerAbove="true" />
<com.android.settingslib.widget.FooterPreference
android:key="tether_prefs_footer"
android:selectable="false"
settings:searchable="false"/>
</PreferenceScreen>

View File

@@ -20,6 +20,11 @@
android:key="user_settings_screen"
android:title="@string/user_settings_title">
<com.android.settingslib.widget.TopIntroPreference
android:key="multiuser_top_intro"
android:title="@string/user_settings_footer_text"
settings:controller="com.android.settings.users.MultiUserTopIntroPreferenceController"/>
<PreferenceCategory
android:key="user_list"
android:title="@string/user_list_title"
@@ -45,11 +50,4 @@
android:order="105"
settings:allowDividerAbove="true"/>
<com.android.settingslib.widget.FooterPreference
android:key="multiuser_footer"
android:title="@string/user_settings_footer_text"
android:selectable="false"
settings:searchable="false"
settings:controller="com.android.settings.users.MultiUserFooterPreferenceController"/>
</PreferenceScreen>

View File

@@ -78,7 +78,7 @@ public class TetherSettings extends RestrictedSettingsFragment
private static final String KEY_ENABLE_ETHERNET_TETHERING = "enable_ethernet_tethering";
private static final String KEY_DATA_SAVER_FOOTER = "disabled_on_data_saver";
@VisibleForTesting
static final String KEY_TETHER_PREFS_FOOTER = "tether_prefs_footer";
static final String KEY_TETHER_PREFS_TOP_INTRO = "tether_prefs_top_intro";
private static final String TAG = "TetheringSettings";
@@ -155,7 +155,7 @@ public class TetherSettings extends RestrictedSettingsFragment
}
setupTetherPreference();
setFooterPreferenceTitle();
setTopIntroPreferenceTitle();
mDataSaverBackend.addListener(this);
@@ -231,14 +231,14 @@ public class TetherSettings extends RestrictedSettingsFragment
}
@VisibleForTesting
void setFooterPreferenceTitle() {
final Preference footerPreference = findPreference(KEY_TETHER_PREFS_FOOTER);
void setTopIntroPreferenceTitle() {
final Preference topIntroPreference = findPreference(KEY_TETHER_PREFS_TOP_INTRO);
final WifiManager wifiManager =
(WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
if (wifiManager.isStaApConcurrencySupported()) {
footerPreference.setTitle(R.string.tethering_footer_info_sta_ap_concurrency);
topIntroPreference.setTitle(R.string.tethering_footer_info_sta_ap_concurrency);
} else {
footerPreference.setTitle(R.string.tethering_footer_info);
topIntroPreference.setTitle(R.string.tethering_footer_info);
}
}

View File

@@ -33,12 +33,12 @@ import com.android.settings.core.BasePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.TopIntroPreference;
/**
* Controller of footer preference for Graphics Driver Preferences dashboard.
* Controller of top info preference for Graphics Driver Preferences dashboard.
*/
public class GraphicsDriverFooterPreferenceController extends BasePreferenceController
public class GraphicsDriverTopIntroPreferenceController extends BasePreferenceController
implements GraphicsDriverContentObserver.OnGraphicsDriverContentChangedListener,
LifecycleObserver, OnStart, OnStop {
@@ -46,9 +46,9 @@ public class GraphicsDriverFooterPreferenceController extends BasePreferenceCont
@VisibleForTesting
GraphicsDriverContentObserver mGraphicsDriverContentObserver;
private FooterPreference mPreference;
private TopIntroPreference mPreference;
public GraphicsDriverFooterPreferenceController(Context context, String key) {
public GraphicsDriverTopIntroPreferenceController(Context context, String key) {
super(context, key);
mContentResolver = context.getContentResolver();
mGraphicsDriverContentObserver =
@@ -83,8 +83,8 @@ public class GraphicsDriverFooterPreferenceController extends BasePreferenceCont
@Override
public void updateState(Preference preference) {
final FooterPreference footerPref = (FooterPreference) preference;
footerPref.setVisible(isAvailable());
final TopIntroPreference topIntroPref = (TopIntroPreference) preference;
topIntroPref.setVisible(isAvailable());
}
@Override

View File

@@ -21,9 +21,13 @@ import android.hardware.display.ColorDisplayManager;
import com.android.settings.core.BasePreferenceController;
public class NightDisplayFooterPreferenceController extends BasePreferenceController {
/**
* NightDisplayTopIntroPreferenceController can control the visibility of night display top info
* preference.
*/
public class NightDisplayTopIntroPreferenceController extends BasePreferenceController {
public NightDisplayFooterPreferenceController(Context context, String key) {
public NightDisplayTopIntroPreferenceController(Context context, String key) {
super(context, key);
}

View File

@@ -23,12 +23,16 @@ import androidx.preference.Preference;
import com.android.settings.core.BasePreferenceController;
public class MultiUserFooterPreferenceController extends BasePreferenceController {
/**
* MultiUserTopIntroPreferenceController can control the visibility of multi user top info
* preference.
*/
public class MultiUserTopIntroPreferenceController extends BasePreferenceController {
@VisibleForTesting
final UserCapabilities mUserCaps;
public MultiUserFooterPreferenceController(Context context, String key) {
public MultiUserTopIntroPreferenceController(Context context, String key) {
super(context, key);
mUserCaps = UserCapabilities.create(context);
}

View File

@@ -110,7 +110,7 @@ public class UserSettings extends SettingsPreferenceFragment
private static final String KEY_ADD_GUEST = "guest_add";
private static final String KEY_ADD_USER = "user_add";
private static final String KEY_ADD_USER_WHEN_LOCKED = "user_settings_add_users_when_locked";
private static final String KEY_MULTIUSER_FOOTER = "multiuser_footer";
private static final String KEY_MULTIUSER_TOP_INTRO = "multiuser_top_intro";
private static final int MENU_REMOVE_USER = Menu.FIRST;
@@ -169,7 +169,7 @@ public class UserSettings extends SettingsPreferenceFragment
private EditUserInfoController mEditUserInfoController =
new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
private MultiUserFooterPreferenceController mMultiUserFooterPreferenceController;
private MultiUserTopIntroPreferenceController mMultiUserTopIntroPreferenceController;
private UserCreatingDialog mUserCreatingDialog;
private CharSequence mPendingUserName;
@@ -240,12 +240,12 @@ public class UserSettings extends SettingsPreferenceFragment
mAddUserWhenLockedPreferenceController = new AddUserWhenLockedPreferenceController(
activity, KEY_ADD_USER_WHEN_LOCKED);
mMultiUserFooterPreferenceController = new MultiUserFooterPreferenceController(activity,
KEY_MULTIUSER_FOOTER);
mMultiUserTopIntroPreferenceController = new MultiUserTopIntroPreferenceController(activity,
KEY_MULTIUSER_TOP_INTRO);
final PreferenceScreen screen = getPreferenceScreen();
mAddUserWhenLockedPreferenceController.displayPreference(screen);
mMultiUserFooterPreferenceController.displayPreference(screen);
mMultiUserTopIntroPreferenceController.displayPreference(screen);
screen.findPreference(mAddUserWhenLockedPreferenceController.getPreferenceKey())
.setOnPreferenceChangeListener(mAddUserWhenLockedPreferenceController);
@@ -936,14 +936,14 @@ public class UserSettings extends SettingsPreferenceFragment
// Remove everything from mUserListCategory and add new users.
mUserListCategory.removeAll();
// If multi-user is disabled, just show footer and return.
// If multi-user is disabled, just show top info and return.
final Preference addUserOnLockScreen = getPreferenceScreen().findPreference(
mAddUserWhenLockedPreferenceController.getPreferenceKey());
mAddUserWhenLockedPreferenceController.updateState(addUserOnLockScreen);
final Preference multiUserFooterPrefence = getPreferenceScreen().findPreference(
mMultiUserFooterPreferenceController.getPreferenceKey());
mMultiUserFooterPreferenceController.updateState(multiUserFooterPrefence);
final Preference multiUserTopIntroPrefence = getPreferenceScreen().findPreference(
mMultiUserTopIntroPreferenceController.getPreferenceKey());
mMultiUserTopIntroPreferenceController.updateState(multiUserTopIntroPrefence);
mUserListCategory.setVisible(mUserCaps.mUserSwitcherEnabled);
updateAddGuest(context, users.stream().anyMatch(UserInfo::isGuest));

View File

@@ -158,13 +158,13 @@ public class TetherSettingsTest {
final TetherSettings spyTetherSettings = spy(new TetherSettings());
when(spyTetherSettings.getContext()).thenReturn(mContext);
final Preference mockPreference = mock(Preference.class);
when(spyTetherSettings.findPreference(TetherSettings.KEY_TETHER_PREFS_FOOTER))
when(spyTetherSettings.findPreference(TetherSettings.KEY_TETHER_PREFS_TOP_INTRO))
.thenReturn(mockPreference);
final WifiManager mockWifiManager = mock(WifiManager.class);
when(mContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mockWifiManager);
when(mockWifiManager.isStaApConcurrencySupported()).thenReturn(true);
spyTetherSettings.setFooterPreferenceTitle();
spyTetherSettings.setTopIntroPreferenceTitle();
verify(mockPreference, never()).setTitle(R.string.tethering_footer_info);
verify(mockPreference).setTitle(R.string.tethering_footer_info_sta_ap_concurrency);

View File

@@ -34,7 +34,7 @@ import android.provider.Settings;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.TopIntroPreference;
import org.junit.Before;
import org.junit.Test;
@@ -45,25 +45,25 @@ import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
public class GraphicsDriverFooterPreferenceControllerTest {
public class GraphicsDriverTopIntroPreferenceControllerTest {
@Mock
private PreferenceScreen mScreen;
@Mock
private FooterPreference mPreference;
private TopIntroPreference mPreference;
@Mock
private GraphicsDriverContentObserver mGraphicsDriverContentObserver;
private Context mContext;
private ContentResolver mResolver;
private GraphicsDriverFooterPreferenceController mController;
private GraphicsDriverTopIntroPreferenceController mController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
mResolver = mContext.getContentResolver();
mController = spy(new GraphicsDriverFooterPreferenceController(mContext, "key"));
mController = spy(new GraphicsDriverTopIntroPreferenceController(mContext, "key"));
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
}

View File

@@ -1,15 +1,17 @@
/*
* Copyright (C) 2018 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
* 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.
* 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;
@@ -31,14 +33,14 @@ import org.robolectric.annotation.Config;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = SettingsShadowResources.class)
public class NightDisplayFooterPreferenceControllerTest {
public class NightDisplayTopIntroPreferenceControllerTest {
private NightDisplayFooterPreferenceController mController;
private NightDisplayTopIntroPreferenceController mController;
@Before
public void setUp() {
mController =
new NightDisplayFooterPreferenceController(RuntimeEnvironment.application, "key");
new NightDisplayTopIntroPreferenceController(RuntimeEnvironment.application, "key");
}
@After

View File

@@ -32,15 +32,15 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class)
@Ignore
public class MultiUserFooterPreferenceControllerTest {
public class MultiUserTopIntroPreferenceControllerTest {
private Context mContext;
private MultiUserFooterPreferenceController mController;
private MultiUserTopIntroPreferenceController mController;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
mController = new MultiUserFooterPreferenceController(mContext, "footer");
mController = new MultiUserTopIntroPreferenceController(mContext, "top_info");
}
@Test

View File

@@ -128,8 +128,8 @@ public class UserSettingsTest {
mFragment = spy(new UserSettings());
ReflectionHelpers.setField(mFragment, "mAddUserWhenLockedPreferenceController",
mock(AddUserWhenLockedPreferenceController.class));
ReflectionHelpers.setField(mFragment, "mMultiUserFooterPreferenceController",
mock(MultiUserFooterPreferenceController.class));
ReflectionHelpers.setField(mFragment, "mMultiUserTopIntroPreferenceController",
mock(MultiUserTopIntroPreferenceController.class));
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
ReflectionHelpers.setField(mFragment, "mUserCaps", mUserCapabilities);
ReflectionHelpers.setField(mFragment, "mDefaultIconDrawable", mDefaultIconDrawable);