Merge "Apply Setup styles to the a11y edit shortcut full screen." into main
This commit is contained in:
@@ -17,8 +17,10 @@ package com.android.settings.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.StringRes;
|
||||
|
||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||
@@ -29,7 +31,7 @@ import com.google.android.setupdesign.R;
|
||||
import com.google.android.setupdesign.util.ThemeHelper;
|
||||
|
||||
/** Provides utility methods to accessibility settings for Setup Wizard only. */
|
||||
class AccessibilitySetupWizardUtils {
|
||||
public class AccessibilitySetupWizardUtils {
|
||||
|
||||
private AccessibilitySetupWizardUtils(){}
|
||||
|
||||
@@ -45,10 +47,19 @@ class AccessibilitySetupWizardUtils {
|
||||
* @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);
|
||||
@Nullable CharSequence title, @Nullable CharSequence description,
|
||||
@Nullable Drawable icon) {
|
||||
if (!TextUtils.isEmpty(title)) {
|
||||
layout.setHeaderText(title);
|
||||
}
|
||||
|
||||
if (!TextUtils.isEmpty(description)) {
|
||||
layout.setDescriptionText(description);
|
||||
}
|
||||
|
||||
if (icon != null) {
|
||||
layout.setIcon(icon);
|
||||
}
|
||||
layout.setDividerInsets(Integer.MAX_VALUE, 0);
|
||||
|
||||
if (ThemeHelper.shouldApplyMaterialYouStyle(context)) {
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.accessibility.shortcuts;
|
||||
|
||||
import static android.app.Activity.RESULT_CANCELED;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS;
|
||||
import static android.provider.Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED;
|
||||
@@ -24,6 +25,7 @@ import static android.provider.Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SER
|
||||
|
||||
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME;
|
||||
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME;
|
||||
import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE;
|
||||
|
||||
import android.app.settings.SettingsEnums;
|
||||
import android.content.ComponentName;
|
||||
@@ -35,19 +37,27 @@ import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SetupWizardUtils;
|
||||
import com.android.settings.accessibility.AccessibilitySetupWizardUtils;
|
||||
import com.android.settings.core.SubSettingLauncher;
|
||||
import com.android.settings.dashboard.DashboardFragment;
|
||||
import com.android.settingslib.core.AbstractPreferenceController;
|
||||
|
||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||
import com.google.android.setupdesign.GlifPreferenceLayout;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
@@ -157,6 +167,42 @@ public class EditShortcutsPreferenceFragment extends DashboardFragment {
|
||||
registerSettingsObserver();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public RecyclerView onCreateRecyclerView(
|
||||
@NonNull LayoutInflater inflater, @NonNull ViewGroup parent,
|
||||
@Nullable Bundle savedInstanceState) {
|
||||
if (parent instanceof GlifPreferenceLayout layout) {
|
||||
// Usually for setup wizard
|
||||
return layout.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||
} else {
|
||||
return super.onCreateRecyclerView(inflater, parent, savedInstanceState);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
if (view instanceof GlifPreferenceLayout layout) {
|
||||
// Usually for setup wizard
|
||||
String title = null;
|
||||
Intent intent = getIntent();
|
||||
if (intent != null) {
|
||||
title = intent.getStringExtra(EXTRA_SHOW_FRAGMENT_TITLE);
|
||||
}
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(getContext(), layout, title,
|
||||
/* description= */ null, /* icon= */ null);
|
||||
|
||||
FooterBarMixin mixin = layout.getMixin(FooterBarMixin.class);
|
||||
AccessibilitySetupWizardUtils.setPrimaryButton(getContext(), mixin, R.string.done,
|
||||
() -> {
|
||||
setResult(RESULT_CANCELED);
|
||||
finish();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
|
@@ -15,7 +15,9 @@
|
||||
*/
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -50,4 +52,14 @@ public class AccessibilitySetupWizardUtilsTest {
|
||||
verify(layout).setIcon(icon);
|
||||
verify(layout).setHeaderText(title);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setupGlifPreferenceLayout_descriptionIsNull_doesNotCallSetDescriptionText() {
|
||||
GlifPreferenceLayout layout = mock(GlifPreferenceLayout.class);
|
||||
|
||||
AccessibilitySetupWizardUtils.updateGlifPreferenceLayout(mContext, layout, "title",
|
||||
/* description= */ null, /* icon= */ null);
|
||||
|
||||
verify(layout, times(0)).setDescriptionText(any());
|
||||
}
|
||||
}
|
||||
|
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.accessibility.shortcuts;
|
||||
|
||||
|
||||
import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL;
|
||||
|
||||
import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME;
|
||||
@@ -416,6 +415,7 @@ public class EditShortcutsPreferenceFragmentTest {
|
||||
/* themeResId= */ 0, Lifecycle.State.INITIALIZED);
|
||||
scenario.onFragment(fragment -> {
|
||||
Intent intent = fragment.requireActivity().getIntent();
|
||||
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, SCREEN_TITLE);
|
||||
fragment.requireActivity().setIntent(createSuwIntent(intent, isInSuw));
|
||||
// Since the fragment is attached before we have a chance
|
||||
// to modify the activity's intent; initialize controllers again
|
||||
|
Reference in New Issue
Block a user