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

Commit f9ddb9b9 authored by Roy Chou's avatar Roy Chou
Browse files

chore(magnification panel): make size and diagonal title multiple line

Previously for b/280162065 and b/328519260 we change the textviews to single line marquee mode as a quick workaround. Now we find that for panel's LayoutParams width, if we use a runtime calculated width instead of WRAP_CONTENT, we can solve the multiple line height calculation issue. Therefore we'll change the textviews back to multiple line mode so that users can directly see all the context.

Bug: 286479523
Flag: EXEMPT bugfix
Test: manually
      atest WindowMagnificationSettingsTest
Change-Id: I45a2ed75de73b0916a580c2047678a6d95b4c026
parent 6ba569ae
Loading
Loading
Loading
Loading
+2 −6
Original line number Diff line number Diff line
@@ -33,9 +33,7 @@
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:singleLine="true"
            android:scrollHorizontally="true"
            android:ellipsize="marquee"
            android:layout_marginEnd="@dimen/magnification_setting_view_item_horizontal_spacing"
            android:text="@string/accessibility_magnifier_size"
            android:textAppearance="@style/TextAppearance.MagnificationSetting.Title"
            android:focusable="true"
@@ -120,9 +118,7 @@
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:singleLine="true"
            android:scrollHorizontally="true"
            android:ellipsize="marquee"
            android:layout_marginEnd="@dimen/magnification_setting_view_item_horizontal_spacing"
            android:text="@string/accessibility_allow_diagonal_scrolling"
            android:textAppearance="@style/TextAppearance.MagnificationSetting.Title"
            android:labelFor="@id/magnifier_horizontal_lock_switch"
+1 −0
Original line number Diff line number Diff line
@@ -1323,6 +1323,7 @@
    <dimen name="magnifier_drag_handle_padding">3dp</dimen>
    <!-- Magnification settings panel -->
    <dimen name="magnification_setting_view_margin">24dp</dimen>
    <dimen name="magnification_setting_view_item_horizontal_spacing">12dp</dimen>
    <dimen name="magnification_setting_text_size">18sp</dimen>
    <dimen name="magnification_setting_background_padding">24dp</dimen>
    <dimen name="magnification_setting_background_corner_radius">28dp</dimen>
+0 −1
Original line number Diff line number Diff line
@@ -1602,7 +1602,6 @@
        <item name="android:fontFamily">google-sans</item>
        <item name="android:textColor">?androidprv:attr/textColorPrimary</item>
        <item name="android:textSize">@dimen/magnification_setting_text_size</item>
        <item name="android:singleLine">true</item>
    </style>

    <style name="TextAppearance.MagnificationSetting.EditButton">
+16 −10
Original line number Diff line number Diff line
@@ -55,7 +55,6 @@ import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Switch;
import android.widget.TextView;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.graphics.SfVsyncFrameCallbackProvider;
@@ -90,7 +89,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest

    private SeekBarWithIconButtonsView mZoomSeekbar;
    private LinearLayout mAllowDiagonalScrollingView;
    private TextView mAllowDiagonalScrollingTitle;
    private Switch mAllowDiagonalScrollingSwitch;
    private LinearLayout mPanelView;
    private LinearLayout mSettingView;
@@ -98,7 +96,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
    private ImageButton mMediumButton;
    private ImageButton mLargeButton;
    private Button mDoneButton;
    private TextView mSizeTitle;
    private Button mEditButton;
    private ImageButton mFullScreenButton;
    private int mLastSelectedButtonIndex = MagnificationSize.NONE;
@@ -522,11 +519,8 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        mMediumButton = mSettingView.findViewById(R.id.magnifier_medium_button);
        mLargeButton = mSettingView.findViewById(R.id.magnifier_large_button);
        mDoneButton = mSettingView.findViewById(R.id.magnifier_done_button);
        mSizeTitle = mSettingView.findViewById(R.id.magnifier_size_title);
        mEditButton = mSettingView.findViewById(R.id.magnifier_edit_button);
        mFullScreenButton = mSettingView.findViewById(R.id.magnifier_full_button);
        mAllowDiagonalScrollingTitle =
                mSettingView.findViewById(R.id.magnifier_horizontal_lock_title);

        mZoomSeekbar = mSettingView.findViewById(R.id.magnifier_zoom_slider);
        mZoomSeekbar.setMax((int) (mZoomSeekbar.getChangeMagnitude()
@@ -550,8 +544,6 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        mDoneButton.setOnClickListener(mButtonClickListener);
        mFullScreenButton.setOnClickListener(mButtonClickListener);
        mEditButton.setOnClickListener(mButtonClickListener);
        mSizeTitle.setSelected(true);
        mAllowDiagonalScrollingTitle.setSelected(true);

        mSettingView.setOnApplyWindowInsetsListener((v, insets) -> {
            // Adds a pending post check to avoiding redundant calculation because this callback
@@ -578,6 +570,7 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
            // CONFIG_FONT_SCALE: font size change
            // CONFIG_LOCALE: language change
            // CONFIG_DENSITY: display size change
            mParams.width = getPanelWidth(mContext);
            mParams.accessibilityTitle = getAccessibilityWindowTitle(mContext);

            boolean showSettingPanelAfterConfigChange = mIsVisible;
@@ -660,9 +653,22 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        mCallback.onEditMagnifierSizeMode(enable);
    }

    private static LayoutParams createLayoutParams(Context context) {
    private int getPanelWidth(Context context) {
        // The magnification settings panel width is limited to the minimum of
        //     1. display width
        //     2. panel done button width + left and right padding
        // So we can directly calculate the proper panel width at runtime
        int displayWidth = mWindowManager.getCurrentWindowMetrics().getBounds().width();
        int contentWidth = context.getResources()
                .getDimensionPixelSize(R.dimen.magnification_setting_button_done_width);
        int padding = context.getResources()
                .getDimensionPixelSize(R.dimen.magnification_setting_background_padding);
        return Math.min(displayWidth, contentWidth + 2 * padding);
    }

    private LayoutParams createLayoutParams(Context context) {
        final LayoutParams params = new LayoutParams(
                LayoutParams.WRAP_CONTENT,
                getPanelWidth(context),
                LayoutParams.WRAP_CONTENT,
                LayoutParams.TYPE_NAVIGATION_BAR_PANEL,
                LayoutParams.FLAG_NOT_FOCUSABLE,