Impl: toggle virtual mouse button for mod installer

This commit is contained in:
Duy Tran Khanh 2021-11-05 05:14:29 +07:00 committed by GitHub
parent 027be08816
commit 71b7c9696d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -35,7 +35,7 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On
private final Object mDialogLock = new Object(); private final Object mDialogLock = new Object();
private boolean isLogAllow, mSkipDetectMod; private boolean isLogAllow, mSkipDetectMod, isVirtualMouseEnabled;
private boolean rightOverride = false; private boolean rightOverride = false;
private int scaleFactor; private int scaleFactor;
@ -79,6 +79,7 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On
this.touchPad = findViewById(R.id.main_touchpad); this.touchPad = findViewById(R.id.main_touchpad);
touchPad.setFocusable(false); touchPad.setFocusable(false);
touchPad.setVisibility(View.GONE);
this.mousePointer = findViewById(R.id.main_mouse_pointer); this.mousePointer = findViewById(R.id.main_mouse_pointer);
this.mousePointer.post(() -> { this.mousePointer.post(() -> {
@ -87,7 +88,6 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On
params.height = (int) (54 / 100f * LauncherPreferences.PREF_MOUSESCALE); params.height = (int) (54 / 100f * LauncherPreferences.PREF_MOUSESCALE);
}); });
touchPad.setOnTouchListener(new OnTouchListener(){ touchPad.setOnTouchListener(new OnTouchListener(){
private float prevX, prevY; private float prevX, prevY;
@Override @Override
@ -174,6 +174,27 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On
final String javaArgs = getIntent().getExtras().getString("javaArgs"); final String javaArgs = getIntent().getExtras().getString("javaArgs");
mTextureView = findViewById(R.id.installmod_surfaceview); mTextureView = findViewById(R.id.installmod_surfaceview);
mTextureView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
if (gestureDetector.onTouchEvent(event)) {
sendScaledMousePosition(x, y);
AWTInputBridge.sendMousePress(rightOverride ? AWTInputEvent.BUTTON3_DOWN_MASK : AWTInputEvent.BUTTON1_DOWN_MASK);
} else {
switch (action) {
case MotionEvent.ACTION_UP: // 1
case MotionEvent.ACTION_CANCEL: // 3
case MotionEvent.ACTION_POINTER_UP: // 6
break;
case MotionEvent.ACTION_MOVE: // 2
sendScaledMousePosition(x, y);
break;
}
}
}
});
mSkipDetectMod = getIntent().getExtras().getBoolean("skipDetectMod", false); mSkipDetectMod = getIntent().getExtras().getBoolean("skipDetectMod", false);
if (mSkipDetectMod) { if (mSkipDetectMod) {
@ -275,6 +296,14 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On
} }
} }
public void toggleVirtualMouse(View v) {
isVirtualMouseEnabled = !isVirtualMouseEnabled;
touchPad.setVisibility(isVirtualMouseEnabled ? View.VISIBLE : View.GONE);
Toast.makeText(ctx,
isVirtualMouseEnabled ? R.string.control_mouseon : R.string.control_mouseoff,
Toast.LENGTH_SHORT).show();
}
private int doCustomInstall(File modFile, String javaArgs) throws IOException { private int doCustomInstall(File modFile, String javaArgs) throws IOException {
isLogAllow = true; isLogAllow = true;
mSkipDetectMod = true; mSkipDetectMod = true;