mirror of
https://github.com/xoureldeen/Vectras-VM-Android.git
synced 2026-07-09 17:28:54 +00:00
initial commit
This commit is contained in:
parent
16394be6ec
commit
f1d9bd35a3
11 changed files with 145 additions and 122 deletions
|
|
@ -154,7 +154,6 @@
|
|||
<activity
|
||||
android:name="com.vectras.vm.x11.X11Activity"
|
||||
android:taskAffinity="com.vectras.vm.x11.X11Activity"
|
||||
android:launchMode="singleInstance"
|
||||
android:supportsPictureInPicture="true"
|
||||
android:configChanges="fontScale|orientation|screenSize|keyboard|keyboardHidden|layoutDirection|locale|mcc|mnc|navigation|screenLayout|touchscreen|uiMode|smallestScreenSize|density"
|
||||
android:resizeableActivity="true"
|
||||
|
|
|
|||
|
|
@ -829,25 +829,6 @@ public class MainActivity extends AppCompatActivity {
|
|||
}
|
||||
}
|
||||
|
||||
public static void startCleanUp() {
|
||||
String _romsdata = VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").replace("\\/", "/");
|
||||
int _startRepeat = 0;
|
||||
ArrayList<String> _filelist = new ArrayList<>();
|
||||
listDir(AppConfig.maindirpath + "roms/", _filelist);
|
||||
if (!_filelist.isEmpty()) {
|
||||
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
|
||||
if (_startRepeat < _filelist.size()) {
|
||||
if (!isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
|
||||
if (!_romsdata.contains(_filelist.get((int)(_startRepeat)))) {
|
||||
deleteDirectory(_filelist.get((int)(_startRepeat)));
|
||||
}
|
||||
}
|
||||
}
|
||||
_startRepeat++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
|
|
@ -880,9 +861,12 @@ public class MainActivity extends AppCompatActivity {
|
|||
|
||||
});
|
||||
alertDialog.show();
|
||||
} else if (id == R.id.vncdisplay) {
|
||||
} else if (id == R.id.backtothedisplay) {
|
||||
if (VectrasApp.isQemuRunning()) {
|
||||
activity.startActivity(new Intent(activity, MainVNCActivity.class));
|
||||
if (MainSettingsManager.getVmUi(activity).equals("VNC"))
|
||||
activity.startActivity(new Intent(activity, MainVNCActivity.class));
|
||||
else if (MainSettingsManager.getVmUi(activity).equals("X11"))
|
||||
activity.startActivity(new Intent(activity, X11Activity.class));
|
||||
} else {
|
||||
Toast.makeText(getApplicationContext(), activity.getResources().getString(R.string.there_is_nothing_here_because_there_is_no_vm_running), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -160,11 +160,13 @@ public class StartVM {
|
|||
spiceStr += "port=6999,disable-ticketing=on";
|
||||
params.add(spiceStr);
|
||||
} else if (MainSettingsManager.getVmUi(activity).equals("X11")) {
|
||||
params.add("-display");
|
||||
params.add("-display");
|
||||
params.add("sdl");
|
||||
}
|
||||
|
||||
params.add("-qmp");
|
||||
}
|
||||
|
||||
params.add("-full-screen");
|
||||
|
||||
params.add("-qmp");
|
||||
params.add("tcp:localhost:4444,server,nowait");
|
||||
|
||||
params.add(extras);
|
||||
|
|
|
|||
|
|
@ -840,6 +840,25 @@ public class VectrasApp extends Application {
|
|||
return "";
|
||||
}
|
||||
|
||||
public static void startCleanUp() {
|
||||
String _romsdata = VectrasApp.readFile(AppConfig.maindirpath + "roms-data.json").replace("\\/", "/");
|
||||
int _startRepeat = 0;
|
||||
ArrayList<String> _filelist = new ArrayList<>();
|
||||
listDir(AppConfig.maindirpath + "roms/", _filelist);
|
||||
if (!_filelist.isEmpty()) {
|
||||
for (int _repeat = 0; _repeat < (int)(_filelist.size()); _repeat++) {
|
||||
if (_startRepeat < _filelist.size()) {
|
||||
if (!isFileExists(_filelist.get((int)(_startRepeat)) + "/vmID.txt")) {
|
||||
if (!_romsdata.contains(_filelist.get((int)(_startRepeat)))) {
|
||||
deleteDirectory(_filelist.get((int)(_startRepeat)));
|
||||
}
|
||||
}
|
||||
}
|
||||
_startRepeat++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isADiskFile (String _filepath) {
|
||||
if (_filepath.contains(".")) {
|
||||
String _getFileName = Objects.requireNonNull(Uri.parse(_filepath).getLastPathSegment()).toLowerCase();
|
||||
|
|
|
|||
|
|
@ -258,13 +258,13 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
|| e.isFromSource(InputDevice.SOURCE_MOUSE_RELATIVE)) {
|
||||
if (e.getRepeatCount() != 0) // ignore auto-repeat
|
||||
return true;
|
||||
if (e.getAction() == KeyEvent.ACTION_UP
|
||||
|| e.getAction() == KeyEvent.ACTION_DOWN)
|
||||
if (e.getAction() == ACTION_UP
|
||||
|| e.getAction() == ACTION_DOWN)
|
||||
lorieView.sendMouseEvent(
|
||||
-1,
|
||||
-1,
|
||||
InputStub.BUTTON_RIGHT,
|
||||
e.getAction() == KeyEvent.ACTION_DOWN,
|
||||
e.getAction() == ACTION_DOWN,
|
||||
true);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -398,12 +398,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_UP, false);
|
||||
sendKey(KEYCODE_DPAD_UP, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_UP, true);
|
||||
sendKey(KEYCODE_DPAD_UP, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -416,12 +416,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_LEFT, false);
|
||||
sendKey(KEYCODE_DPAD_LEFT, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_LEFT, true);
|
||||
sendKey(KEYCODE_DPAD_LEFT, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -434,12 +434,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_DOWN, false);
|
||||
sendKey(KEYCODE_DPAD_DOWN, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_DOWN, true);
|
||||
sendKey(KEYCODE_DPAD_DOWN, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -452,12 +452,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_RIGHT, false);
|
||||
sendKey(KEYCODE_DPAD_RIGHT, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_RIGHT, true);
|
||||
sendKey(KEYCODE_DPAD_RIGHT, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -471,55 +471,55 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
tabBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_TAB);
|
||||
keyDownUp(KEYCODE_TAB);
|
||||
}
|
||||
});
|
||||
tabGameBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_TAB);
|
||||
keyDownUp(KEYCODE_TAB);
|
||||
}
|
||||
});
|
||||
enterGameBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_ENTER);
|
||||
keyDownUp(KEYCODE_ENTER);
|
||||
}
|
||||
});
|
||||
eBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_E);
|
||||
keyDownUp(KEYCODE_E);
|
||||
}
|
||||
});
|
||||
rBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_R);
|
||||
keyDownUp(KEYCODE_R);
|
||||
}
|
||||
});
|
||||
qBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_Q);
|
||||
keyDownUp(KEYCODE_Q);
|
||||
}
|
||||
});
|
||||
xBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_X);
|
||||
keyDownUp(KEYCODE_X);
|
||||
}
|
||||
});
|
||||
ctrlGameBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_CTRL_LEFT);
|
||||
keyDownUp(KEYCODE_CTRL_LEFT);
|
||||
}
|
||||
});
|
||||
spaceBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_SPACE);
|
||||
keyDownUp(KEYCODE_SPACE);
|
||||
}
|
||||
});
|
||||
btnVterm.setOnClickListener(new View.OnClickListener() {
|
||||
|
|
@ -591,7 +591,7 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
public void onClick(View v) {
|
||||
final Dialog alertDialog = new Dialog(activity, R.style.MainDialogTheme);
|
||||
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
|
||||
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
|
||||
alertDialog.setContentView(R.layout.dialog_setting);
|
||||
alertDialog.show();
|
||||
}
|
||||
|
|
@ -600,12 +600,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_UP, false);
|
||||
sendKey(KEYCODE_DPAD_UP, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_UP, true);
|
||||
sendKey(KEYCODE_DPAD_UP, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -618,12 +618,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_LEFT, false);
|
||||
sendKey(KEYCODE_DPAD_LEFT, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_LEFT, true);
|
||||
sendKey(KEYCODE_DPAD_LEFT, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -636,12 +636,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_DOWN, false);
|
||||
sendKey(KEYCODE_DPAD_DOWN, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_DOWN, true);
|
||||
sendKey(KEYCODE_DPAD_DOWN, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -654,12 +654,12 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_RIGHT, false);
|
||||
sendKey(KEYCODE_DPAD_RIGHT, false);
|
||||
v.animate().scaleXBy(-0.2f).setDuration(200).start();
|
||||
v.animate().scaleYBy(-0.2f).setDuration(200).start();
|
||||
return true;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
sendKey(KeyEvent.KEYCODE_DPAD_RIGHT, true);
|
||||
sendKey(KEYCODE_DPAD_RIGHT, true);
|
||||
v.animate().cancel();
|
||||
v.animate().scaleX(1f).setDuration(200).start();
|
||||
v.animate().scaleY(1f).setDuration(200).start();
|
||||
|
|
@ -671,13 +671,13 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
escBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_ESCAPE);
|
||||
keyDownUp(KEYCODE_ESCAPE);
|
||||
}
|
||||
});
|
||||
enterBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_ENTER);
|
||||
keyDownUp(KEYCODE_ENTER);
|
||||
}
|
||||
});
|
||||
ctrlBtn.setOnClickListener(new View.OnClickListener() {
|
||||
|
|
@ -685,11 +685,11 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!ctrlClicked) {
|
||||
sendKey(KeyEvent.KEYCODE_CTRL_LEFT, false);
|
||||
sendKey(KEYCODE_CTRL_LEFT, false);
|
||||
ctrlBtn.setBackground(getResources().getDrawable(R.drawable.controls_button2));
|
||||
ctrlClicked = true;
|
||||
} else {
|
||||
sendKey(KeyEvent.KEYCODE_CTRL_LEFT, true);
|
||||
sendKey(KEYCODE_CTRL_LEFT, true);
|
||||
ctrlBtn.setBackground(getResources().getDrawable(R.drawable.controls_button1));
|
||||
ctrlClicked = false;
|
||||
}
|
||||
|
|
@ -700,11 +700,11 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
@Override
|
||||
public void onClick(View v) {
|
||||
if (!altClicked) {
|
||||
sendKey(KeyEvent.KEYCODE_ALT_LEFT, false);
|
||||
sendKey(KEYCODE_ALT_LEFT, false);
|
||||
altBtn.setBackground(getResources().getDrawable(R.drawable.controls_button2));
|
||||
altClicked = true;
|
||||
} else {
|
||||
sendKey(KeyEvent.KEYCODE_ALT_LEFT, true);
|
||||
sendKey(KEYCODE_ALT_LEFT, true);
|
||||
altBtn.setBackground(getResources().getDrawable(R.drawable.controls_button1));
|
||||
altClicked = false;
|
||||
}
|
||||
|
|
@ -713,7 +713,7 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
delBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
keyDownUp(KeyEvent.KEYCODE_DEL);
|
||||
keyDownUp(KEYCODE_DEL);
|
||||
}
|
||||
});
|
||||
qmpBtn.setVisibility(View.GONE);
|
||||
|
|
@ -734,44 +734,54 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
Button leftClickBtn = findViewById(R.id.leftClickBtn);
|
||||
ImageButton winBtn = findViewById(R.id.winBtn);
|
||||
|
||||
// rightClickBtn.setOnClickListener(new View.OnClickListener() {
|
||||
// @Override
|
||||
// public void onClick(View v) {
|
||||
// MotionEvent e = MotionEvent.obtain(1000, 1000, MotionEvent.ACTION_DOWN, vncCanvas.mouseX, vncCanvas.mouseY,
|
||||
// 0);
|
||||
// ((TouchpadInputHandler) VncCanvasActivity.inputHandler).rightClick(e);
|
||||
// }
|
||||
// });
|
||||
// middleClickBtn.setOnClickListener(new View.OnClickListener() {
|
||||
// @Override
|
||||
// public void onClick(View v) {
|
||||
// MotionEvent e = MotionEvent.obtain(1000, 1000, MotionEvent.ACTION_DOWN, vncCanvas.mouseX, vncCanvas.mouseY,
|
||||
// 0);
|
||||
// ((TouchpadInputHandler) VncCanvasActivity.inputHandler).middleClick(e);
|
||||
// }
|
||||
// });
|
||||
// leftClickBtn.setOnClickListener(new View.OnClickListener() {
|
||||
// @Override
|
||||
// public void onClick(View v) {
|
||||
// MotionEvent e = MotionEvent.obtain(1000, 1000, MotionEvent.ACTION_DOWN, vncCanvas.mouseX, vncCanvas.mouseY,
|
||||
// 0);
|
||||
// ((TouchpadInputHandler) VncCanvasActivity.inputHandler).leftClick(e);
|
||||
// }
|
||||
// });
|
||||
if (SDK_INT >= VERSION_CODES.N) {
|
||||
Map.of(
|
||||
leftClickBtn,
|
||||
InputStub.BUTTON_LEFT,
|
||||
middleClickBtn,
|
||||
InputStub.BUTTON_MIDDLE,
|
||||
rightClickBtn,
|
||||
InputStub.BUTTON_RIGHT)
|
||||
.forEach(
|
||||
(v, b) ->
|
||||
v.setOnTouchListener(
|
||||
(__, e) -> {
|
||||
switch (e.getAction()) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
case MotionEvent.ACTION_POINTER_DOWN:
|
||||
getLorieView()
|
||||
.sendMouseEvent(0, 0, b, true, true);
|
||||
v.setPressed(true);
|
||||
break;
|
||||
case MotionEvent.ACTION_UP:
|
||||
case MotionEvent.ACTION_POINTER_UP:
|
||||
getLorieView()
|
||||
.sendMouseEvent(0, 0, b, false, true);
|
||||
v.setPressed(false);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}));
|
||||
} else {
|
||||
leftClickBtn.setVisibility(View.GONE);
|
||||
middleClickBtn.setVisibility(View.GONE);
|
||||
rightClickBtn.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
winBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
sendKey(KeyEvent.KEYCODE_CTRL_LEFT, false);
|
||||
sendKey(KeyEvent.KEYCODE_ESCAPE, false);
|
||||
sendKey(KeyEvent.KEYCODE_CTRL_LEFT, false);
|
||||
sendKey(KeyEvent.KEYCODE_ESCAPE, false);
|
||||
sendKey(KEYCODE_CTRL_LEFT, false);
|
||||
sendKey(KEYCODE_ESCAPE, false);
|
||||
sendKey(KEYCODE_CTRL_LEFT, false);
|
||||
sendKey(KEYCODE_ESCAPE, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void keyDownUp(int keyEventCode) {
|
||||
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
|
||||
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
|
||||
private void keyDownUp(int keyEventCode) {
|
||||
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, keyEventCode));
|
||||
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, keyEventCode));
|
||||
}
|
||||
|
||||
private void sendKey(int keyEventCode, boolean up) {
|
||||
|
|
@ -802,7 +812,9 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
overlay.setOnTouchListener((v, e) -> true);
|
||||
overlay.setOnHoverListener((v, e) -> true);
|
||||
overlay.setOnGenericMotionListener((v, e) -> true);
|
||||
overlay.setOnCapturedPointerListener((v, e) -> true);
|
||||
if (SDK_INT >= VERSION_CODES.O) {
|
||||
overlay.setOnCapturedPointerListener((v, e) -> true);
|
||||
}
|
||||
overlay.setVisibility(stylusMenuEnabled ? View.VISIBLE : View.GONE);
|
||||
View.OnClickListener listener =
|
||||
view -> {
|
||||
|
|
@ -860,13 +872,15 @@ public class X11Activity extends AppCompatActivity implements View.OnApplyWindow
|
|||
|
||||
visibility.setOnLongClickListener(
|
||||
v -> {
|
||||
v.startDragAndDrop(
|
||||
ClipData.newPlainText("", ""),
|
||||
new View.DragShadowBuilder(visibility) {
|
||||
public void onDrawShadow(@NonNull Canvas canvas) {}
|
||||
},
|
||||
null,
|
||||
View.DRAG_FLAG_GLOBAL);
|
||||
if (SDK_INT >= VERSION_CODES.N) {
|
||||
v.startDragAndDrop(
|
||||
ClipData.newPlainText("", ""),
|
||||
new View.DragShadowBuilder(visibility) {
|
||||
public void onDrawShadow(@NonNull Canvas canvas) {}
|
||||
},
|
||||
null,
|
||||
View.DRAG_FLAG_GLOBAL);
|
||||
}
|
||||
|
||||
frm.setOnDragListener(
|
||||
(v2, event) -> {
|
||||
|
|
|
|||
|
|
@ -276,16 +276,16 @@
|
|||
android:layout_marginLeft="8dp"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_marginBottom="8dp" />
|
||||
</LinearLayout>
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/gotoromstorebutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:gravity="center_horizontal|center_vertical"
|
||||
app:icon="@drawable/hard_disk_24px"
|
||||
android:text="@string/go_to_rom_store" />
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/gotoromstorebutton"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:gravity="center_horizontal|center_vertical"
|
||||
app:icon="@drawable/hard_disk_24px"
|
||||
android:text="@string/go_to_rom_store" />
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||
android:id="@+id/refreshRoms"
|
||||
|
|
|
|||
|
|
@ -7,10 +7,10 @@
|
|||
app:showAsAction="always"
|
||||
android:title="@string/info"/>
|
||||
<item
|
||||
android:id="@+id/vncdisplay"
|
||||
android:id="@+id/backtothedisplay"
|
||||
android:icon="@drawable/desktop_windows_24px"
|
||||
app:showAsAction="always"
|
||||
android:title="@string/vncdisplay"/>
|
||||
android:title="@string/back_to_the_display"/>
|
||||
<item
|
||||
android:id="@+id/shutdown"
|
||||
android:icon="@drawable/power_settings_new_24px"
|
||||
|
|
|
|||
|
|
@ -358,6 +358,10 @@
|
|||
<string name="from">From</string>
|
||||
<string name="error_CR_CVBI3">An error has occurred and cannot continue. The extraction was successful but the cvbi file does not contain information for this ROM and does not contain any ROM files. Error code: CR_CVBI3.</string>
|
||||
<string name="kept_some_files">Some files were retained because some other virtual machine needed them.</string>
|
||||
<string name="clean_up">Clean up</string>
|
||||
<string name="clean_up_content">ROMs, files and folders that are no longer in use will be deleted.</string>
|
||||
<string name="go_to_rom_store">Go to ROM store</string>
|
||||
<string name="want_to_learn_more_about_qemu">Want to learn more about QEMU?</string>
|
||||
|
||||
<!--======================TERMUX STRINGS====================-->
|
||||
<string name="application_name">Vterm</string>
|
||||
|
|
@ -457,4 +461,5 @@
|
|||
<string name="yes">yes</string>
|
||||
<string name="no">cancel</string>
|
||||
<string name="cancel">cancel</string>
|
||||
<string name="back_to_the_display">Back to the Display</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
#Tue Oct 29 14:28:55 ICT 2024
|
||||
#Wed Oct 30 01:37:52 EEST 2024
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/debug/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/build/generated/res/resValues/debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/build/generated/res/resValues/debug"/></dataSet><mergedItems/></merger>
|
||||
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\dev\Vectras-VM-Android\shell-loader\stub\src\debug\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="debug" generated-set="debug$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\dev\Vectras-VM-Android\shell-loader\stub\src\debug\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\dev\Vectras-VM-Android\shell-loader\stub\build\generated\res\resValues\debug"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="generated" generated-set="generated$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="D:\dev\Vectras-VM-Android\shell-loader\stub\build\generated\res\resValues\debug"/></dataSet><mergedItems/></merger>
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
-- Merging decision tree log ---
|
||||
manifest
|
||||
ADDED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml:1:1-13
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml:1:1-13
|
||||
ADDED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml:1:1-13
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml:1:1-13
|
||||
package
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml
|
||||
uses-sdk
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml reason: use-sdk injection requested
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml reason: use-sdk injection requested
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml
|
||||
android:targetSdkVersion
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml
|
||||
android:minSdkVersion
|
||||
INJECTED from /home/ann/Downloads/Vectras-VM-Emu-Android/shell-loader/stub/src/main/AndroidManifest.xml
|
||||
INJECTED from D:\dev\Vectras-VM-Android\shell-loader\stub\src\main\AndroidManifest.xml
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue