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
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -73,9 +73,9 @@ public class MagnificationSettingsControllerTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testShowSettingsPanel() {
|
||||
mMagnificationSettingsController.showMagnificationSettings();
|
||||
mMagnificationSettingsController.toggleSettingsPanelVisibility();
|
||||
|
||||
verify(mWindowMagnificationSettings).showSettingPanel();
|
||||
verify(mWindowMagnificationSettings).toggleSettingsPanelVisibility();
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -110,7 +110,7 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
||||
mWindowMagnification.mMagnificationSettingsControllerCallback
|
||||
.onSettingsPanelVisibilityChanged(TEST_DISPLAY, /* shown= */ true);
|
||||
return null;
|
||||
}).when(mMagnificationSettingsController).showMagnificationSettings();
|
||||
}).when(mMagnificationSettingsController).toggleSettingsPanelVisibility();
|
||||
doAnswer(invocation -> {
|
||||
mWindowMagnification.mMagnificationSettingsControllerCallback
|
||||
.onSettingsPanelVisibilityChanged(TEST_DISPLAY, /* shown= */ false);
|
||||
@@ -198,7 +198,7 @@ public class WindowMagnificationTest extends SysuiTestCase {
|
||||
mWindowMagnification.mWindowMagnifierCallback.onClickSettingsButton(TEST_DISPLAY);
|
||||
waitForIdleSync();
|
||||
|
||||
verify(mMagnificationSettingsController).showMagnificationSettings();
|
||||
verify(mMagnificationSettingsController).toggleSettingsPanelVisibility();
|
||||
verify(mA11yLogger).log(
|
||||
eq(MagnificationSettingsEvent.MAGNIFICATION_SETTINGS_PANEL_OPENED));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user