Apply GlifPreferenceLayout for accessibility service Setup Wizard two-panel styles
Bug: 194447311 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilitySetupWizardUtilsTest Change-Id: Icace09d12c0d2a82eb2591a55f6454f320172ec9
This commit is contained in:
@@ -234,6 +234,7 @@
|
||||
<item name="android:listPreferredItemPaddingEnd">16dp</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
|
||||
<item name="android:switchStyle">@style/Switch.SettingsLib</item>
|
||||
<item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
|
||||
</style>
|
||||
|
||||
<!-- This theme was applied to Settings pages which are running under SUW with DynamicColor. -->
|
||||
@@ -243,6 +244,7 @@
|
||||
<item name="android:listPreferredItemPaddingEnd">16dp</item>
|
||||
<item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item>
|
||||
<item name="android:switchStyle">@style/Switch.SettingsLib</item>
|
||||
<item name="preferenceFragmentCompatStyle">@style/SetupWizardPreferenceFragmentStyle</item>
|
||||
</style>
|
||||
|
||||
<!-- DayNight themes -->
|
||||
|
@@ -28,11 +28,11 @@ import android.content.pm.ServiceInfo;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@@ -42,7 +42,6 @@ import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settingslib.RestrictedPreference;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -81,16 +80,11 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
|
||||
layout.setDividerInsets(Integer.MAX_VALUE, 0);
|
||||
layout.setDescriptionText(R.string.vision_settings_description);
|
||||
layout.setHeaderText(R.string.vision_settings_title);
|
||||
layout.setIcon(getPrefContext().getDrawable(R.drawable.ic_accessibility_visibility));
|
||||
|
||||
if (ThemeHelper.shouldApplyExtendedPartnerConfig(getActivity())) {
|
||||
final LinearLayout headerLayout = layout.findManagedViewById(R.id.sud_layout_header);
|
||||
headerLayout.setPadding(0, headerLayout.getPaddingTop(), 0,
|
||||
headerLayout.getPaddingBottom());
|
||||
}
|
||||
final String title = getContext().getString(R.string.vision_settings_title);
|
||||
final String description = getContext().getString(R.string.vision_settings_description);
|
||||
final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
|
||||
description, icon);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -143,6 +137,13 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns accessibility service info by given package name and service name.
|
||||
*
|
||||
* @param packageName Package of accessibility service
|
||||
* @param serviceName Class of accessibility service
|
||||
* @return {@link AccessibilityServiceInfo} instance if available, null otherwise.
|
||||
*/
|
||||
private AccessibilityServiceInfo findService(String packageName, String serviceName) {
|
||||
final AccessibilityManager manager =
|
||||
getActivity().getSystemService(AccessibilityManager.class);
|
||||
@@ -150,8 +151,8 @@ public class AccessibilitySettingsForSetupWizard extends SettingsPreferenceFragm
|
||||
manager.getInstalledAccessibilityServiceList();
|
||||
for (AccessibilityServiceInfo info : accessibilityServices) {
|
||||
ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
|
||||
if (packageName.equals(serviceInfo.packageName)
|
||||
&& serviceName.equals(serviceInfo.name)) {
|
||||
if (TextUtils.equals(packageName, serviceInfo.packageName)
|
||||
&& TextUtils.equals(serviceName, serviceInfo.name)) {
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
/** Provides utility methods to accessibility settings for Setup Wizard only. */
|
||||
class AccessibilitySetupWizardUtils {
|
||||
|
||||
private AccessibilitySetupWizardUtils(){}
|
||||
|
||||
/**
|
||||
* Update the {@link GlifPreferenceLayout} attributes if they have previously been initialized.
|
||||
* When the SetupWizard supports the extended partner configs, it means the material layout
|
||||
* would be applied. It should set a different padding/margin in views to align Settings style
|
||||
* for accessibility feature pages.
|
||||
*
|
||||
* @param layout The layout instance
|
||||
* @param title The text to be set as title
|
||||
* @param description The text to be set as description
|
||||
* @param icon The icon to be set
|
||||
*/
|
||||
public static void updateGlifPreferenceLayout(Context context, GlifPreferenceLayout layout,
|
||||
CharSequence title, CharSequence description, Drawable icon) {
|
||||
layout.setHeaderText(title);
|
||||
layout.setDescriptionText(description);
|
||||
layout.setIcon(icon);
|
||||
layout.setDividerInsets(Integer.MAX_VALUE, 0);
|
||||
|
||||
if (ThemeHelper.shouldApplyExtendedPartnerConfig(context)) {
|
||||
final LinearLayout headerLayout = layout.findManagedViewById(R.id.sud_layout_header);
|
||||
if (headerLayout != null) {
|
||||
headerLayout.setPadding(0, layout.getPaddingTop(), 0,
|
||||
layout.getPaddingBottom());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -17,12 +17,44 @@
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
|
||||
public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
|
||||
extends ToggleScreenMagnificationPreferenceFragment {
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
|
||||
final String title = getContext().getString(
|
||||
R.string.accessibility_screen_magnification_title);
|
||||
final String description = getContext().getString(R.string.accelerometer_title);
|
||||
final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
|
||||
description, icon);
|
||||
|
||||
// Hide the setting from the vision settings.
|
||||
mSettingsPreference.setVisible(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
|
||||
Bundle savedInstanceState) {
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
|
||||
return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_MAGNIFICATION;
|
||||
@@ -49,12 +81,4 @@ public class ToggleScreenMagnificationPreferenceFragmentForSetupWizard
|
||||
// Hides help center in action bar and footer bar in SuW
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
// Hide the setting from the vision settings.
|
||||
mSettingsPreference.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
@@ -17,8 +17,17 @@
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
|
||||
public class ToggleScreenReaderPreferenceFragmentForSetupWizard
|
||||
extends ToggleAccessibilityServicePreferenceFragment {
|
||||
@@ -28,9 +37,25 @@ public class ToggleScreenReaderPreferenceFragmentForSetupWizard
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
|
||||
final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
|
||||
final String description = getContext().getString(
|
||||
R.string.accessibility_screen_magnification_title);
|
||||
final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
|
||||
description, icon);
|
||||
|
||||
mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
|
||||
Bundle savedInstanceState) {
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
|
||||
return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SCREEN_READER;
|
||||
|
@@ -17,8 +17,17 @@
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.R;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
|
||||
public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
|
||||
extends InvisibleToggleAccessibilityServicePreferenceFragment {
|
||||
@@ -28,9 +37,24 @@ public class ToggleSelectToSpeakPreferenceFragmentForSetupWizard
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) view;
|
||||
final String title = getArguments().getString(AccessibilitySettings.EXTRA_TITLE);
|
||||
final String description = getContext().getString(R.string.select_to_speak_summary);
|
||||
final Drawable icon = getContext().getDrawable(R.drawable.ic_accessibility_visibility);
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
|
||||
description, icon);
|
||||
|
||||
mToggleSwitchWasInitiallyChecked = mToggleServiceSwitchPreference.isChecked();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent,
|
||||
Bundle savedInstanceState) {
|
||||
final GlifPreferenceLayout layout = (GlifPreferenceLayout) parent;
|
||||
return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return SettingsEnums.SUW_ACCESSIBILITY_TOGGLE_SELECT_TO_SPEAK;
|
||||
|
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (C) 2021 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.accessibility;
|
||||
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
|
||||
/** Tests for {@link AccessibilitySetupWizardUtils} */
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class AccessibilitySetupWizardUtilsTest {
|
||||
|
||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||
|
||||
@Test
|
||||
public void setupGlifPreferenceLayout_assignValueToVariable() {
|
||||
final String title = "title";
|
||||
final String description = "description";
|
||||
final Drawable icon = mock(Drawable.class);
|
||||
GlifPreferenceLayout layout = mock(GlifPreferenceLayout.class);
|
||||
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(mContext, layout, title,
|
||||
description, icon);
|
||||
|
||||
verify(layout).setHeaderText(title);
|
||||
verify(layout).setDescriptionText(description);
|
||||
verify(layout).setIcon(icon);
|
||||
verify(layout).setHeaderText(title);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user