diff options
5 files changed, 62 insertions, 3 deletions
diff --git a/packages/SystemUI/accessibility/accessibilitymenu/Android.bp b/packages/SystemUI/accessibility/accessibilitymenu/Android.bp index f358417e6bea..ff723e34d6bc 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/Android.bp +++ b/packages/SystemUI/accessibility/accessibilitymenu/Android.bp @@ -36,6 +36,7 @@ android_app { "androidx.preference_preference", "androidx.viewpager_viewpager", "SettingsLibDisplayUtils", + "com_android_a11y_menu_flags_lib", ], optimize: { diff --git a/packages/SystemUI/accessibility/accessibilitymenu/aconfig/Android.bp b/packages/SystemUI/accessibility/accessibilitymenu/aconfig/Android.bp new file mode 100644 index 000000000000..6d63409ffc06 --- /dev/null +++ b/packages/SystemUI/accessibility/accessibilitymenu/aconfig/Android.bp @@ -0,0 +1,12 @@ +aconfig_declarations { + name: "com_android_a11y_menu_flags", + package: "com.android.systemui.accessibility.accessibilitymenu", + srcs: [ + "accessibility.aconfig", + ], +} + +java_aconfig_library { + name: "com_android_a11y_menu_flags_lib", + aconfig_declarations: "com_android_a11y_menu_flags", +} diff --git a/packages/SystemUI/accessibility/accessibilitymenu/aconfig/accessibility.aconfig b/packages/SystemUI/accessibility/accessibilitymenu/aconfig/accessibility.aconfig new file mode 100644 index 000000000000..03cbc169a90f --- /dev/null +++ b/packages/SystemUI/accessibility/accessibilitymenu/aconfig/accessibility.aconfig @@ -0,0 +1,8 @@ +package: "com.android.systemui.accessibility.accessibilitymenu" + +flag { + name: "a11y_menu_settings_back_button_fix_and_large_button_sizing" + namespace: "accessibility" + description: "Provides/restores back button functionality for the a11yMenu settings page. Also, fixes sizing problems with large shortcut buttons." + bug: "298467628" +}
\ No newline at end of file diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/activity/A11yMenuSettingsActivity.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/activity/A11yMenuSettingsActivity.java index c26cd12a0c61..bf51e23855d5 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/activity/A11yMenuSettingsActivity.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/activity/A11yMenuSettingsActivity.java @@ -27,6 +27,7 @@ import android.provider.Browser; import android.provider.Settings; import android.view.View; import android.widget.TextView; +import android.window.OnBackInvokedCallback; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; @@ -34,12 +35,16 @@ import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; +import com.android.systemui.accessibility.accessibilitymenu.Flags; import com.android.systemui.accessibility.accessibilitymenu.R; /** * Settings activity for AccessibilityMenu. */ public class A11yMenuSettingsActivity extends FragmentActivity { + private OnBackInvokedCallback mCallback = () -> { + finish(); + }; @Override protected void onCreate(Bundle savedInstanceState) { @@ -51,6 +56,10 @@ public class A11yMenuSettingsActivity extends FragmentActivity { ActionBar actionBar = getActionBar(); actionBar.setDisplayShowCustomEnabled(true); + + if (Flags.a11yMenuSettingsBackButtonFixAndLargeButtonSizing()) { + actionBar.setDisplayHomeAsUpEnabled(true); + } actionBar.setCustomView(R.layout.preferences_action_bar); ((TextView) findViewById(R.id.action_bar_title)).setText( getResources().getString(R.string.accessibility_menu_settings_name) @@ -61,6 +70,16 @@ public class A11yMenuSettingsActivity extends FragmentActivity { | ActionBar.DISPLAY_HOME_AS_UP); } + @Override + public boolean onNavigateUp() { + if (Flags.a11yMenuSettingsBackButtonFixAndLargeButtonSizing()) { + mCallback.onBackInvoked(); + return true; + } else { + return false; + } + } + /** * Settings/preferences fragment for AccessibilityMenu. */ diff --git a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java index c64ec6f11b93..c4f372cbce51 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java +++ b/packages/SystemUI/accessibility/accessibilitymenu/src/com/android/systemui/accessibility/accessibilitymenu/view/A11yMenuAdapter.java @@ -28,6 +28,7 @@ import android.widget.ImageButton; import android.widget.TextView; import com.android.systemui.accessibility.accessibilitymenu.AccessibilityMenuService; +import com.android.systemui.accessibility.accessibilitymenu.Flags; import com.android.systemui.accessibility.accessibilitymenu.R; import com.android.systemui.accessibility.accessibilitymenu.activity.A11yMenuSettingsActivity.A11yMenuPreferenceFragment; import com.android.systemui.accessibility.accessibilitymenu.model.A11yMenuShortcut; @@ -79,6 +80,11 @@ public class A11yMenuAdapter extends BaseAdapter { public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = mInflater.inflate(R.layout.grid_item, parent, false); + + if (Flags.a11yMenuSettingsBackButtonFixAndLargeButtonSizing()) { + configureShortcutSize(convertView, + A11yMenuPreferenceFragment.isLargeButtonsEnabled(mService)); + } } A11yMenuShortcut shortcutItem = (A11yMenuShortcut) getItem(position); @@ -126,16 +132,29 @@ public class A11yMenuAdapter extends BaseAdapter { }); } - private void configureShortcutView(View convertView, A11yMenuShortcut shortcutItem) { + private void configureShortcutSize(View convertView, boolean isLargeButtonsEnabled) { ImageButton shortcutIconButton = convertView.findViewById(R.id.shortcutIconBtn); TextView shortcutLabel = convertView.findViewById(R.id.shortcutLabel); - - if (A11yMenuPreferenceFragment.isLargeButtonsEnabled(mService)) { + if (isLargeButtonsEnabled) { ViewGroup.LayoutParams params = shortcutIconButton.getLayoutParams(); params.width = (int) (params.width * LARGE_BUTTON_SCALE); params.height = (int) (params.height * LARGE_BUTTON_SCALE); shortcutLabel.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, mLargeTextSize); } + } + + private void configureShortcutView(View convertView, A11yMenuShortcut shortcutItem) { + ImageButton shortcutIconButton = convertView.findViewById(R.id.shortcutIconBtn); + TextView shortcutLabel = convertView.findViewById(R.id.shortcutLabel); + + if (!Flags.a11yMenuSettingsBackButtonFixAndLargeButtonSizing()) { + if (A11yMenuPreferenceFragment.isLargeButtonsEnabled(mService)) { + ViewGroup.LayoutParams params = shortcutIconButton.getLayoutParams(); + params.width = (int) (params.width * LARGE_BUTTON_SCALE); + params.height = (int) (params.height * LARGE_BUTTON_SCALE); + shortcutLabel.setTextSize(android.util.TypedValue.COMPLEX_UNIT_PX, mLargeTextSize); + } + } if (shortcutItem.getId() == A11yMenuShortcut.ShortcutId.UNSPECIFIED_ID_VALUE.ordinal()) { // Sets empty shortcut icon and label when the shortcut is ADD_ITEM. |