diff --git a/app/build.gradle b/app/build.gradle index 9c7fb62..bf098b6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk minApi targetSdk targetApi versionCode 21 - versionName "v2.9.5.10-3dfx" + versionName "v2.9.5.11-3dfx" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0d266de..a72bb0e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + package="com.vectras.vm" > @@ -47,7 +47,11 @@ android:largeHeap="true" android:requestLegacyExternalStorage="true" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme" > + + android:label="@string/importRom" > @@ -110,7 +114,7 @@ android:name=".SplashActivity" android:configChanges="uiMode|orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout" android:exported="true" - android:hardwareAccelerated="true"> + android:hardwareAccelerated="true" > @@ -228,7 +232,7 @@ android:exported="true" android:resizeableActivity="true" android:supportsPictureInPicture="false" - android:taskAffinity="com.vectras.vm.x11.LoriePreferences"> + android:taskAffinity="com.vectras.vm.x11.LoriePreferences" > @@ -246,7 +250,7 @@ android:name=".x11.utils.KeyInterceptor" android:exported="true" android:label="Termux:X11 KeyInterceptor" - android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"> + android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" > @@ -260,7 +264,7 @@ android:name=".x11.LoriePreferences$Receiver" android:enabled="true" android:exported="true" - tools:ignore="ExportedReceiver"> + tools:ignore="ExportedReceiver" > diff --git a/app/src/main/java/com/vectras/qemu/Config.java b/app/src/main/java/com/vectras/qemu/Config.java index d241a60..6580e3e 100644 --- a/app/src/main/java/com/vectras/qemu/Config.java +++ b/app/src/main/java/com/vectras/qemu/Config.java @@ -182,6 +182,7 @@ public class Config { public static final String defaultInputMode = VncCanvasActivity.TOUCH_ZOOM_MODE; public static String vmID = ""; public static String currentVNCServervmID = ""; + public static boolean forceRefeshVNCDisplay = false; public static void setDefault () { defaultVNCHost = "0.0.0.0"; diff --git a/app/src/main/java/com/vectras/qemu/MainSettingsManager.java b/app/src/main/java/com/vectras/qemu/MainSettingsManager.java index 2f9f0c6..83c2d6d 100644 --- a/app/src/main/java/com/vectras/qemu/MainSettingsManager.java +++ b/app/src/main/java/com/vectras/qemu/MainSettingsManager.java @@ -950,4 +950,16 @@ public class MainSettingsManager extends AppCompatActivity return prefs.getInt("vncScaleMode", 0); } + public static void setForceRefeshVNCDisplay(Context context, Boolean _boolean) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences.Editor edit = prefs.edit(); + edit.putBoolean("forceRefeshVNCDisplay", _boolean); + edit.commit(); + } + + public static Boolean getForceRefeshVNCDisplay(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + return prefs.getBoolean("forceRefeshVNCDisplay", false); + } + } diff --git a/app/src/main/java/com/vectras/qemu/MainVNCActivity.java b/app/src/main/java/com/vectras/qemu/MainVNCActivity.java index f6b0297..f6ee5e3 100644 --- a/app/src/main/java/com/vectras/qemu/MainVNCActivity.java +++ b/app/src/main/java/com/vectras/qemu/MainVNCActivity.java @@ -764,6 +764,7 @@ public class MainVNCActivity extends VncCanvasActivity { setUIModeMobile(screenMode == VNCScreenMode.FitToScreen); binding.lnNosignal.setVisibility(View.GONE); + this.vncCanvas.setFocusableInTouchMode(true); }); } @@ -800,7 +801,11 @@ public class MainVNCActivity extends VncCanvasActivity { // } } else { // Try reconnect. - tryReconnect(); + if (Config.forceRefeshVNCDisplay) { + finish(); + } else { + tryReconnect(); + } } } diff --git a/app/src/main/java/com/vectras/vm/MainActivity.java b/app/src/main/java/com/vectras/vm/MainActivity.java index 6875453..e35bb27 100644 --- a/app/src/main/java/com/vectras/vm/MainActivity.java +++ b/app/src/main/java/com/vectras/vm/MainActivity.java @@ -14,8 +14,7 @@ import static com.vectras.vm.utils.LibraryChecker.isPackageInstalled2; import static com.vectras.vm.utils.UIUtils.UIAlert; import com.vectras.vm.settings.UpdaterActivity; -import com.vectras.vm.settings.VNCActivity; -import com.vectras.vm.utils.DeviceUtils; +import com.vectras.vm.settings.ExternalVNCSettingsActivity; import com.vectras.vm.utils.DialogUtils; import com.vectras.vm.utils.NetworkUtils; import com.vectras.vm.utils.NotificationUtils; @@ -35,7 +34,6 @@ import android.os.Environment; import android.os.Handler; import android.os.StrictMode; import android.provider.DocumentsContract; -import android.text.Html; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -845,7 +843,7 @@ public class MainActivity extends AppCompatActivity { activity.getString(R.string.go_to_settings), activity.getString(R.string.close), true, R.drawable.warning_48px, true, - () -> activity.startActivity(new Intent(activity, VNCActivity.class)), + () -> activity.startActivity(new Intent(activity, ExternalVNCSettingsActivity.class)), null, null); return; diff --git a/app/src/main/java/com/vectras/vm/VMManager.java b/app/src/main/java/com/vectras/vm/VMManager.java index eb43f82..bbe3cdd 100644 --- a/app/src/main/java/com/vectras/vm/VMManager.java +++ b/app/src/main/java/com/vectras/vm/VMManager.java @@ -40,6 +40,7 @@ import com.vectras.qemu.VNCConfig; import com.vectras.qemu.utils.QmpClient; import com.vectras.vm.MainRoms.AdapterMainRoms; import com.vectras.vm.home.HomeActivity; +import com.vectras.vm.settings.VNCSettingsActivity; import com.vectras.vm.utils.DialogUtils; import com.vectras.vm.utils.FileUtils; import com.vectras.vm.utils.JSONUtils; @@ -922,6 +923,11 @@ public class VMManager { _dialog.dismiss(); }); + _view.findViewById(R.id.ln_settings).setOnClickListener(v -> { + _activity.startActivity(new Intent(_activity, VNCSettingsActivity.class)); + _dialog.dismiss(); + }); + if (MainSettingsManager.getVNCScaleMode(_activity) == VNCConfig.oneToOne) { _view.findViewById(R.id.iv_screenOneToOne).setBackgroundResource(R.drawable.dialog_shape_single_button); } else { diff --git a/app/src/main/java/com/vectras/vm/home/HomeActivity.java b/app/src/main/java/com/vectras/vm/home/HomeActivity.java index 8b01f54..b4eac8d 100644 --- a/app/src/main/java/com/vectras/vm/home/HomeActivity.java +++ b/app/src/main/java/com/vectras/vm/home/HomeActivity.java @@ -300,6 +300,7 @@ public class HomeActivity extends AppCompatActivity implements RomStoreFragment. Log.d(TAG, "onResume"); Config.ui = MainSettingsManager.getVmUi(this); Config.defaultVNCPort = Integer.parseInt(MainSettingsManager.getVncExternalDisplay(this)); + Config.forceRefeshVNCDisplay = MainSettingsManager.getForceRefeshVNCDisplay(this); if (!MainSettingsManager.getVncExternal(this)) NotificationUtils.clearAll(this); diff --git a/app/src/main/java/com/vectras/vm/home/core/HomeStartVM.java b/app/src/main/java/com/vectras/vm/home/core/HomeStartVM.java index b6bf902..6be3408 100644 --- a/app/src/main/java/com/vectras/vm/home/core/HomeStartVM.java +++ b/app/src/main/java/com/vectras/vm/home/core/HomeStartVM.java @@ -25,7 +25,7 @@ import com.vectras.vm.MainService; import com.vectras.vm.R; import com.vectras.vm.VMManager; import com.vectras.vm.logger.VectrasStatus; -import com.vectras.vm.settings.VNCActivity; +import com.vectras.vm.settings.ExternalVNCSettingsActivity; import com.vectras.vm.utils.DialogUtils; import com.vectras.vm.utils.NetworkUtils; import com.vectras.vm.utils.ServiceUtils; @@ -100,7 +100,7 @@ public class HomeStartVM { activity.getString(R.string.go_to_settings), activity.getString(R.string.close), true, R.drawable.warning_48px, true, - () -> activity.startActivity(new Intent(activity, VNCActivity.class)), + () -> activity.startActivity(new Intent(activity, ExternalVNCSettingsActivity.class)), null, null); return; diff --git a/app/src/main/java/com/vectras/vm/settings/VNCActivity.java b/app/src/main/java/com/vectras/vm/settings/ExternalVNCSettingsActivity.java similarity index 93% rename from app/src/main/java/com/vectras/vm/settings/VNCActivity.java rename to app/src/main/java/com/vectras/vm/settings/ExternalVNCSettingsActivity.java index fc0264c..794639b 100644 --- a/app/src/main/java/com/vectras/vm/settings/VNCActivity.java +++ b/app/src/main/java/com/vectras/vm/settings/ExternalVNCSettingsActivity.java @@ -11,21 +11,21 @@ import androidx.appcompat.app.AppCompatActivity; import com.vectras.qemu.MainSettingsManager; import com.vectras.vm.R; -import com.vectras.vm.databinding.ActivityVncactivityBinding; +import com.vectras.vm.databinding.ActivityExternalVncSettingsBinding; import com.vectras.vm.utils.ClipboardUltils; import java.util.Objects; -public class VNCActivity extends AppCompatActivity { +public class ExternalVNCSettingsActivity extends AppCompatActivity { - ActivityVncactivityBinding binding; + ActivityExternalVncSettingsBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); - setContentView(R.layout.activity_vncactivity); - binding = ActivityVncactivityBinding.inflate(getLayoutInflater()); + setContentView(R.layout.activity_external_vnc_settings); + binding = ActivityExternalVncSettingsBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); diff --git a/app/src/main/java/com/vectras/vm/settings/UpdaterActivity.java b/app/src/main/java/com/vectras/vm/settings/UpdaterActivity.java index 29a411e..73a273c 100644 --- a/app/src/main/java/com/vectras/vm/settings/UpdaterActivity.java +++ b/app/src/main/java/com/vectras/vm/settings/UpdaterActivity.java @@ -37,7 +37,7 @@ public class UpdaterActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); - setContentView(R.layout.activity_vncactivity); + setContentView(R.layout.activity_external_vnc_settings); binding = ActivityUpdaterBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); setSupportActionBar(binding.toolbar); diff --git a/app/src/main/java/com/vectras/vm/settings/VNCSettingsActivity.java b/app/src/main/java/com/vectras/vm/settings/VNCSettingsActivity.java new file mode 100644 index 0000000..1e019d2 --- /dev/null +++ b/app/src/main/java/com/vectras/vm/settings/VNCSettingsActivity.java @@ -0,0 +1,42 @@ +package com.vectras.vm.settings; + +import android.content.Intent; +import android.os.Bundle; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; + +import com.vectras.qemu.MainSettingsManager; +import com.vectras.vm.R; +import com.vectras.vm.databinding.ActivityVncSettingsBinding; + +import java.util.Objects; + +public class VNCSettingsActivity extends AppCompatActivity { + + ActivityVncSettingsBinding binding; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_external_vnc_settings); + binding = ActivityVncSettingsBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + setSupportActionBar(binding.toolbar); + Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); + binding.toolbar.setNavigationOnClickListener(view -> onBackPressed()); + initialize(); + } + + private void initialize() { + binding.swForcerefesh.setOnCheckedChangeListener((buttonView, isChecked) -> MainSettingsManager.setForceRefeshVNCDisplay(this, isChecked)); + binding.lnForcerefesh.setOnClickListener(v -> binding.swForcerefesh.toggle()); + + binding.swExternal.setOnCheckedChangeListener((buttonView, isChecked) -> MainSettingsManager.setVncExternal(this, isChecked)); + binding.lnExternal.setOnClickListener( v -> startActivity(new Intent(this, ExternalVNCSettingsActivity.class))); + + binding.swForcerefesh.setChecked(MainSettingsManager.getForceRefeshVNCDisplay(this)); + binding.swExternal.setChecked(MainSettingsManager.getVncExternal(this)); + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/settings_24px.xml b/app/src/main/res/drawable/settings_24px.xml new file mode 100644 index 0000000..4bcd4aa --- /dev/null +++ b/app/src/main/res/drawable/settings_24px.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/activity_vncactivity.xml b/app/src/main/res/layout/activity_external_vnc_settings.xml similarity index 99% rename from app/src/main/res/layout/activity_vncactivity.xml rename to app/src/main/res/layout/activity_external_vnc_settings.xml index c882d0c..8c317d8 100644 --- a/app/src/main/res/layout/activity_vncactivity.xml +++ b/app/src/main/res/layout/activity_external_vnc_settings.xml @@ -5,7 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:fitsSystemWindows="true" android:orientation="vertical" - tools:context=".settings.VNCActivity"> + tools:context=".settings.ExternalVNCSettingsActivity"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_change_removable_devices.xml b/app/src/main/res/layout/dialog_change_removable_devices.xml index 52d1a35..d41a69b 100644 --- a/app/src/main/res/layout/dialog_change_removable_devices.xml +++ b/app/src/main/res/layout/dialog_change_removable_devices.xml @@ -174,26 +174,6 @@ android:text="@string/user_interface" android:textSize="22sp"/> - - - - - + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fdf454c..d87f551 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,7 +3,7 @@ Vectras VM - v2.9.5.10-3dfx + v2.9.5.11-3dfx Stable Home Logger @@ -553,7 +553,9 @@ There is not enough storage available on your device to set up. Please clear up and try again later. No signal Tap to try again. - + Force refresh + The VNC screen will restart every time there is a change, which helps troubleshoot problems. + Settings for VNC. @@ -814,7 +816,7 @@ Loading… An error occurred. xyz123abc - + New VM @@ -1052,7 +1054,6 @@ --> - diff --git a/app/src/main/res/xml/headers_preference.xml b/app/src/main/res/xml/headers_preference.xml index f7db1ae..09cf698 100644 --- a/app/src/main/res/xml/headers_preference.xml +++ b/app/src/main/res/xml/headers_preference.xml @@ -22,12 +22,12 @@ app:iconSpaceReserved="false" /> + android:targetClass="com.vectras.vm.settings.VNCSettingsActivity" /> v2.9.5-3dfx
  • Bring back 3dfx support.
  • Enhance app execution.
  • Added some linux programs in x11 display.
  • Added alpine linux (x11).
  • Russian language by @OFGING


New updates are live!", "cancellable": true, "versionCodeBeta":"21", - "versionNameBeta":"v2.9.5.10-3dfx", - "versionNameBetas":"v2.9.5-3dfx-madeleine,v2.9.5-3dfx-neapolitanicecream,v2.9.5-3dfx-orangecake,v2.9.5-3dfx-profiterole,v2.9.5-3dfx-quincejelly,v2.9.5-3dfx-rugelach,v2.9.5-3dfx-scone,v2.9.5-3dfx-tart,v2.9.5-3dfx-victoria-sponge,v2.9.5-3dfx-waffle,v2.9.5-3dfx-xangos,v2.9.5-3dfx-yorkshire-pudding,v2.9.5-3dfx-zeppole,v2.9.5.1-3dfx,v2.9.5.2-3dfx,v2.9.5.3-3dfx,v2.9.5.4-3dfx,v2.9.5.5-3dfx,v2.9.5.6-3dfx,v2.9.5.7-3dfx,v2.9.5.8-3dfx,v2.9.5.9-3dfx,v2.9.5.10-3dfx", + "versionNameBeta":"v2.9.5.11-3dfx", + "versionNameBetas":"v2.9.5-3dfx-madeleine,v2.9.5-3dfx-neapolitanicecream,v2.9.5-3dfx-orangecake,v2.9.5-3dfx-profiterole,v2.9.5-3dfx-quincejelly,v2.9.5-3dfx-rugelach,v2.9.5-3dfx-scone,v2.9.5-3dfx-tart,v2.9.5-3dfx-victoria-sponge,v2.9.5-3dfx-waffle,v2.9.5-3dfx-xangos,v2.9.5-3dfx-yorkshire-pudding,v2.9.5-3dfx-zeppole,v2.9.5.1-3dfx,v2.9.5.2-3dfx,v2.9.5.3-3dfx,v2.9.5.4-3dfx,v2.9.5.5-3dfx,v2.9.5.6-3dfx,v2.9.5.7-3dfx,v2.9.5.8-3dfx,v2.9.5.9-3dfx,v2.9.5.10-3dfx,v2.9.5.11-3dfx", "sizeBeta": "41 MB", "urlBeta": "https://github.com/AnBui2004/Vectras-VM-Emu-Android/releases", - "MessageBeta": "

v2.9.5.10-3dfx

Bugs fixed.", + "MessageBeta": "

v2.9.5.11-3dfx

Bugs fixed.", "cancellableBeta": true }