Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e8dd64e authored by menghanli's avatar menghanli
Browse files

Apply GlifPreferenceLayout for accessibility service Setup Wizard two-panel styles

Bug: 194447311
Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilitySetupWizardUtilsTest
Change-Id: Icace09d12c0d2a82eb2591a55f6454f320172ec9
parent 02b3384a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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 -->
+15 −14
Original line number Diff line number Diff line
@@ -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;
            }
        }
+58 −0
Original line number Diff line number Diff line
/*
 * 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());
            }
        }
    }
}
+32 −8
Original line number Diff line number Diff line
@@ -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);
    }
}
+25 −0
Original line number Diff line number Diff line
@@ -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;
Loading