Merge "Tapping settings button for opening/closing panel" into udc-qpr-dev
This commit is contained in:
@@ -2390,6 +2390,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