Merge changes from topic "hub-mode-settings" into tm-qpr-dev

* changes:
  Add top-level Communal settings.
  Change screensaver ctrlr to base pref ctrlr.
This commit is contained in:
Darrell Shi
2022-12-21 08:03:49 +00:00
committed by Android (Google) Code Review
13 changed files with 164 additions and 21 deletions

View File

@@ -0,0 +1,24 @@
<!-- Copyright (C) 2022 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.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48"
android:tint="?android:attr/colorControlNormal">
<path android:fillColor="@android:color/white"
android:pathData="M24,38Q19,38 15.5,37.325Q12,36.65 12,35.7V34H7.25Q5.95,34 5.05,33.025Q4.15,32.05 4.25,30.75L5.8,12.75Q5.9,11.6 6.75,10.8Q7.6,10 8.75,10H39.25Q40.4,10 41.25,10.8Q42.1,11.6 42.2,12.75L43.75,30.75Q43.85,32.05 42.95,33.025Q42.05,34 40.75,34H36V35.7Q36,36.65 32.5,37.325Q29,38 24,38ZM7.25,31H40.75Q40.75,31 40.75,31Q40.75,31 40.75,31L39.25,13Q39.25,13 39.25,13Q39.25,13 39.25,13H8.75Q8.75,13 8.75,13Q8.75,13 8.75,13L7.25,31Q7.25,31 7.25,31Q7.25,31 7.25,31Z"/>
</vector>

View File

@@ -622,6 +622,9 @@
<!-- Whether the dream setup activity should be enabled as part of setupwizard -->
<bool name="dream_setup_supported">false</bool>
<!-- Whether to show communal settings at the top level. -->
<bool name="config_show_communal_settings">false</bool>
<!-- Whether to put the apps with system UID into system component bucket or not -->
<bool name="config_battery_combine_system_components">false</bool>

View File

@@ -17,6 +17,7 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="menu_key_network" translatable="false">top_level_network</string>
<string name="menu_key_communal" translatable="false">top_level_communal</string>
<string name="menu_key_connected_devices" translatable="false">top_level_connected_devices</string>
<string name="menu_key_apps" translatable="false">top_level_apps</string>
<string name="menu_key_notifications" translatable="false">top_level_notifications</string>

View File

@@ -4019,6 +4019,12 @@
<!-- Phone info screen, section titles: -->
<string name="battery_level_title">Battery level</string>
<!-- Communal Settings -->
<!-- Title of the communal settings under Settings > Communal [CHAR LIMIT=30] -->
<string name="communal_settings_title">Communal</string>
<!-- Summary of the communal settings under Settings > Communal [CHAR LIMIT=50] -->
<string name="communal_settings_summary">Communal settings</string>
<!-- APN Settings -->
<!-- APN settings screen title -->
<string name="apn_settings">APNs</string>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2022 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"
android:key="communal_preference_screen"
android:title="@string/communal_settings_title" />

View File

@@ -146,7 +146,8 @@
android:key="screensaver"
android:title="@string/screensaver_settings_title"
android:fragment="com.android.settings.dream.DreamSettings"
settings:keywords="@string/keywords_screensaver"/>
settings:keywords="@string/keywords_screensaver"
settings:controller="com.android.settings.display.ScreenSaverPreferenceController"/>
<SwitchPreference
android:key="camera_gesture"

View File

@@ -30,6 +30,16 @@
settings:highlightableMenuKey="@string/menu_key_network"
settings:controller="com.android.settings.network.TopLevelNetworkEntryPreferenceController"/>
<com.android.settings.widget.HomepagePreference
android:fragment="com.android.settings.communal.CommunalDashboardFragment"
android:icon="@drawable/ia_settings_communal"
android:key="top_level_communal"
android:order="-145"
android:title="@string/communal_settings_title"
android:summary="@string/communal_settings_summary"
settings:highlightableMenuKey="@string/menu_key_communal"
settings:controller="com.android.settings.communal.CommunalPreferenceController"/>
<com.android.settings.widget.HomepagePreference
android:fragment="com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment"
android:icon="@drawable/ic_devices_other"

View File

@@ -24,7 +24,6 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.display.BrightnessLevelPreferenceController;
import com.android.settings.display.CameraGesturePreferenceController;
import com.android.settings.display.LiftToWakePreferenceController;
import com.android.settings.display.ScreenSaverPreferenceController;
import com.android.settings.display.ShowOperatorNamePreferenceController;
import com.android.settings.display.TapToWakePreferenceController;
import com.android.settings.display.ThemePreferenceController;
@@ -76,7 +75,6 @@ public class DisplaySettings extends DashboardFragment {
final List<AbstractPreferenceController> controllers = new ArrayList<>();
controllers.add(new CameraGesturePreferenceController(context));
controllers.add(new LiftToWakePreferenceController(context));
controllers.add(new ScreenSaverPreferenceController(context));
controllers.add(new TapToWakePreferenceController(context));
controllers.add(new VrDisplayPreferenceController(context));
controllers.add(new ShowOperatorNamePreferenceController(context));

View File

@@ -0,0 +1,44 @@
/*
* Copyright (C) 2022 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.communal;
import android.app.settings.SettingsEnums;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
/**
* Dashboard fragment for the top-level Communal settings.
*/
public class CommunalDashboardFragment extends DashboardFragment {
private static final String TAG = "CommunalFragment";
@Override
public int getMetricsCategory() {
return SettingsEnums.COMMUNAL_MODE_SETTINGS;
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.communal_settings;
}
@Override
protected String getLogTag() {
return TAG;
}
}

View File

@@ -0,0 +1,37 @@
/*
* Copyright (C) 2022 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.communal;
import android.content.Context;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
/**
* Controls the top-level Communal settings preference.
*/
public class CommunalPreferenceController extends BasePreferenceController {
public CommunalPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
}
@Override
public int getAvailabilityStatus() {
return mContext.getResources().getBoolean(R.bool.config_show_communal_settings)
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
}

View File

@@ -23,6 +23,7 @@ import com.android.settings.LegalSettings;
import com.android.settings.accounts.AccountDashboardFragment;
import com.android.settings.accounts.AccountDetailDashboardFragment;
import com.android.settings.applications.AppDashboardFragment;
import com.android.settings.communal.CommunalDashboardFragment;
import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.development.DevelopmentSettingsDashboardFragment;
@@ -125,6 +126,8 @@ public class DashboardFragmentRegistry {
CategoryKey.CATEGORY_BATTERY_SAVER_SETTINGS);
PARENT_TO_CATEGORY_KEY_MAP.put(SmartBatterySettings.class.getName(),
CategoryKey.CATEGORY_SMART_BATTERY_SETTINGS);
PARENT_TO_CATEGORY_KEY_MAP.put(CommunalDashboardFragment.class.getName(),
CategoryKey.CATEGORY_COMMUNAL_SETTINGS);
CATEGORY_KEY_TO_PARENT_MAP = new ArrayMap<>(PARENT_TO_CATEGORY_KEY_MAP.size());

View File

@@ -16,47 +16,41 @@ package com.android.settings.display;
import android.content.Context;
import android.os.UserManager;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.dream.DreamSettings;
import com.android.settingslib.core.AbstractPreferenceController;
public class ScreenSaverPreferenceController extends AbstractPreferenceController implements
public class ScreenSaverPreferenceController extends BasePreferenceController implements
PreferenceControllerMixin {
private static final String KEY_SCREEN_SAVER = "screensaver";
private final boolean mDreamsDisabledByAmbientModeSuppression;
public ScreenSaverPreferenceController(Context context) {
super(context);
public ScreenSaverPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mDreamsDisabledByAmbientModeSuppression = context.getResources().getBoolean(
com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig);
}
@Override
public boolean isAvailable() {
public int getAvailabilityStatus() {
final boolean dreamsSupported = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_dreamsSupported);
final boolean dreamsOnlyEnabledForDockUser = mContext.getResources().getBoolean(
com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser);
// TODO(b/257333623): Allow the Dock User to be non-SystemUser user in HSUM.
return dreamsSupported && (!dreamsOnlyEnabledForDockUser || isSystemUser());
return (dreamsSupported && (!dreamsOnlyEnabledForDockUser || isSystemUser()))
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public String getPreferenceKey() {
return KEY_SCREEN_SAVER;
}
@Override
public void updateState(Preference preference) {
public CharSequence getSummary() {
if (mDreamsDisabledByAmbientModeSuppression
&& AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime(mContext)) {
preference.setSummary(R.string.screensaver_settings_when_to_dream_bedtime);
return mContext.getString(R.string.screensaver_settings_when_to_dream_bedtime);
} else {
preference.setSummary(DreamSettings.getSummaryTextWithDreamName(mContext));
return DreamSettings.getSummaryTextWithDreamName(mContext);
}
}

View File

@@ -45,11 +45,13 @@ public class ScreenSaverPreferenceControllerTest {
private ScreenSaverPreferenceController mController;
private final String mPrefKey = "test_screensaver";
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
mController = new ScreenSaverPreferenceController(mContext);
mController = new ScreenSaverPreferenceController(mContext, mPrefKey);
when(mContext.getResources()).thenReturn(mResources);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);