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

Commit 381a16ce authored by Riley Jones's avatar Riley Jones Committed by Android (Google) Code Review
Browse files

Merge "A11yMenu fix to Settings back button and Large Button sizing" into main

parents 2c28a55b 303d536c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ android_app {
        "androidx.preference_preference",
        "androidx.viewpager_viewpager",
        "SettingsLibDisplayUtils",
        "com_android_a11y_menu_flags_lib",
    ],

    optimize: {
+12 −0
Original line number Diff line number Diff line
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",
}
+8 −0
Original line number Diff line number Diff line
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
+19 −0
Original line number Diff line number Diff line
@@ -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.
     */
+22 −3
Original line number Diff line number Diff line
@@ -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 configureShortcutSize(View convertView, boolean isLargeButtonsEnabled) {
        ImageButton shortcutIconButton = convertView.findViewById(R.id.shortcutIconBtn);
        TextView shortcutLabel = convertView.findViewById(R.id.shortcutLabel);
        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.