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:
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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
|
@@ -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);
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
@@ -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));
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
}
|
||||
|
@@ -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
|
@@ -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
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user