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

Commit e22f8e2b authored by Candice Lo's avatar Candice Lo
Browse files

Tapping settings button for opening/closing panel

Previously, the drag corner in window magnifier is only used for opening
the settings panel. We add the logic of closing the settings panel when
tapping on the drag corner again if the panel is opened and add the
corresponding accessibility action label for closing magnification
settings.

Bug: 280523938
Test: atest WindowMagnificationControllerTest WindowMagnificationTest MagnificationSettingsControllerTest windowMagnificationSettingsTest
Test: manually - attach videos to the bug
Change-Id: I17b7afa130a4e97eb743b7eec980e98f1718b0b4
parent 94862db1
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2391,6 +2391,8 @@
    <string name="magnification_mode_switch_state_window">Magnify part of screen</string>
    <!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
    <string name="magnification_open_settings_click_label">Open magnification settings</string>
    <!-- Click action label for magnification settings panel. [CHAR LIMIT=NONE] -->
    <string name="magnification_close_settings_click_label">Close magnification settings</string>
    <!-- Label of the corner of a rectangle that you can tap and drag to resize the magnification area. [CHAR LIMIT=NONE] -->
    <string name="magnification_drag_corner_to_resize">Drag corner to resize</string>

+4 −3
Original line number Diff line number Diff line
@@ -87,14 +87,15 @@ public class MagnificationSettingsController implements ComponentCallbacks {
    }

    /**
     * Shows magnification settings panel {@link WindowMagnificationSettings}.
     * Toggles the visibility of magnification settings panel {@link WindowMagnificationSettings}.
     * We show the panel if it is not visible. Otherwise, hide the panel.
     */
    void showMagnificationSettings() {
    void toggleSettingsPanelVisibility() {
        if (!mWindowMagnificationSettings.isSettingPanelShowing()) {
            onConfigurationChanged(mContext.getResources().getConfiguration());
            mContext.registerComponentCallbacks(this);
        }
        mWindowMagnificationSettings.showSettingPanel();
        mWindowMagnificationSettings.toggleSettingsPanelVisibility();
    }

    void closeMagnificationSettings() {
+4 −4
Original line number Diff line number Diff line
@@ -171,7 +171,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback

        mModeSwitchesController.setClickListenerDelegate(
                displayId -> mHandler.post(() -> {
                    showMagnificationSettingsPanel(displayId);
                    toggleSettingsPanelVisibility(displayId);
                }));
    }

@@ -254,11 +254,11 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
    }

    @MainThread
    void showMagnificationSettingsPanel(int displayId) {
    void toggleSettingsPanelVisibility(int displayId) {
        final MagnificationSettingsController magnificationSettingsController =
                mMagnificationSettingsSupplier.get(displayId);
        if (magnificationSettingsController != null) {
            magnificationSettingsController.showMagnificationSettings();
            magnificationSettingsController.toggleSettingsPanelVisibility();
        }
    }

@@ -335,7 +335,7 @@ public class WindowMagnification implements CoreStartable, CommandQueue.Callback
        @Override
        public void onClickSettingsButton(int displayId) {
            mHandler.post(() -> {
                showMagnificationSettingsPanel(displayId);
                toggleSettingsPanelVisibility(displayId);
            });
        }
    };
+12 −2
Original line number Diff line number Diff line
@@ -221,6 +221,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold

    private boolean mAllowDiagonalScrolling = false;
    private boolean mEditSizeEnable = false;
    private boolean mSettingsPanelVisibility = false;

    @Nullable
    private final MirrorWindowControl mMirrorWindowControl;
@@ -1399,6 +1400,8 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold
            return;
        }

        mSettingsPanelVisibility = settingsPanelIsShown;

        mDragView.setBackground(mContext.getResources().getDrawable(settingsPanelIsShown
                ? R.drawable.accessibility_window_magnification_drag_handle_background_change
                : R.drawable.accessibility_window_magnification_drag_handle_background));
@@ -1439,12 +1442,19 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold

    private class MirrorWindowA11yDelegate extends View.AccessibilityDelegate {

        private CharSequence getClickAccessibilityActionLabel() {
            return mSettingsPanelVisibility
                    ? mContext.getResources().getString(
                            R.string.magnification_close_settings_click_label)
                    : mContext.getResources().getString(
                            R.string.magnification_open_settings_click_label);
        }

        @Override
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
            super.onInitializeAccessibilityNodeInfo(host, info);
            final AccessibilityAction clickAction = new AccessibilityAction(
                    AccessibilityAction.ACTION_CLICK.getId(), mContext.getResources().getString(
                    R.string.magnification_open_settings_click_label));
                    AccessibilityAction.ACTION_CLICK.getId(), getClickAccessibilityActionLabel());
            info.addAction(clickAction);
            info.setClickable(true);
            info.addAction(
+8 −0
Original line number Diff line number Diff line
@@ -311,6 +311,14 @@ class WindowMagnificationSettings implements MagnificationGestureDetector.OnGest
        mCallback.onSettingsPanelVisibilityChanged(/* shown= */ false);
    }

    public void toggleSettingsPanelVisibility() {
        if (!mIsVisible) {
            showSettingPanel();
        } else {
            hideSettingPanel();
        }
    }

    public void showSettingPanel() {
        showSettingPanel(true);
    }
Loading