diff --git a/app/src/main/java/com/vectras/qemu/MainSettingsManager.java b/app/src/main/java/com/vectras/qemu/MainSettingsManager.java index bec234e..605f13c 100644 --- a/app/src/main/java/com/vectras/qemu/MainSettingsManager.java +++ b/app/src/main/java/com/vectras/qemu/MainSettingsManager.java @@ -30,6 +30,7 @@ import androidx.preference.PreferenceFragmentCompat; import androidx.preference.SwitchPreference; import androidx.preference.SwitchPreferenceCompat; +import com.google.android.material.appbar.CollapsingToolbarLayout; import com.vectras.vm.AboutActivity; import com.vectras.vm.MainActivity; import com.vectras.vm.R; @@ -108,7 +109,12 @@ public class MainSettingsManager extends AppCompatActivity @Override public void onResume() { super.onResume(); + CollapsingToolbarLayout collapsingToolbarLayout = + requireActivity().findViewById(R.id.collapsingToolbarLayout); + if (collapsingToolbarLayout != null) { + collapsingToolbarLayout.setSubtitle(getString(R.string.general)); + } } @Override @@ -122,7 +128,6 @@ public class MainSettingsManager extends AppCompatActivity public void onCreatePreferences(Bundle bundle, String root_key) { // Load the Preferences from the XML file setPreferencesFromResource(R.xml.headers_preference, root_key); - } @Override @@ -159,11 +164,40 @@ public class MainSettingsManager extends AppCompatActivity // Load the Preferences from the XML file setPreferencesFromResource(R.xml.settings, rootKey); + CollapsingToolbarLayout collapsingToolbarLayout = + requireActivity().findViewById(R.id.collapsingToolbarLayout); + + if (collapsingToolbarLayout != null) { + collapsingToolbarLayout.setSubtitle(getString(R.string.system)); + } + // Find the ListPreference and set the change listener ListPreference languagePref = findPreference("language"); if (languagePref != null) { languagePref.setOnPreferenceChangeListener(this); } + + SwitchPreferenceCompat switchPreferenceCompat = findPreference("updateVersionPrompt"); + assert switchPreferenceCompat != null; + SwitchPreferenceCompat switchJoinBetaChannel = findPreference("checkforupdatesfromthebetachannel"); + assert switchJoinBetaChannel != null; + + if (!switchPreferenceCompat.isChecked()) { + switchJoinBetaChannel.setEnabled(false); + } + + switchPreferenceCompat.setOnPreferenceChangeListener((preference, newValue) -> { + if (!(Boolean) newValue) { + if (switchJoinBetaChannel.isEnabled()) + switchJoinBetaChannel.setEnabled(false); + } else { + if (!switchJoinBetaChannel.isEnabled()) + switchJoinBetaChannel.setEnabled(true); + + } + return true; + }); + } @Override @@ -200,15 +234,9 @@ public class MainSettingsManager extends AppCompatActivity mHandler = new Handler(); Preference pref = findPreference("modeNight"); if (pref != null) { - pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - - @Override - public boolean onPreferenceChange(@NonNull Preference preference, - Object newValue) { - onNightMode(); - return true; - } - + pref.setOnPreferenceChangeListener((preference, newValue) -> { + onNightMode(); + return true; }); } } @@ -243,7 +271,12 @@ public class MainSettingsManager extends AppCompatActivity public void onCreatePreferences(Bundle bundle, String root_key) { // Load the Preferences from the XML file setPreferencesFromResource(R.xml.userinterface, root_key); + CollapsingToolbarLayout collapsingToolbarLayout = + requireActivity().findViewById(R.id.collapsingToolbarLayout); + if (collapsingToolbarLayout != null) { + collapsingToolbarLayout.setSubtitle(getString(R.string.personalization)); + } } @Override @@ -269,15 +302,9 @@ public class MainSettingsManager extends AppCompatActivity Preference pref = findPreference("vmArch"); if (pref != null) { - pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - - @Override - public boolean onPreferenceChange(@NonNull Preference preference, - Object newValue) { - onArch(); - return true; - } - + pref.setOnPreferenceChangeListener((preference, newValue) -> { + onArch(); + return true; }); } @@ -307,26 +334,23 @@ public class MainSettingsManager extends AppCompatActivity SwitchPreferenceCompat useDefaultBiosPref = findPreference("useDefaultBios"); assert useDefaultBiosPref != null; - useDefaultBiosPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) { - SwitchPreferenceCompat useUEFIPref = findPreference("useUEFI"); - assert useUEFIPref != null; - if (!(Boolean) newValue) { - if (getuseUEFI(getActivity())) { - useUEFIPref.setChecked(false); - setuseUEFI(getActivity(), false); - } - if (useUEFIPref.isEnabled()) { - useUEFIPref.setEnabled(false); - } - } else { - if (!useUEFIPref.isEnabled()) { - useUEFIPref.setEnabled(true); - } + useDefaultBiosPref.setOnPreferenceChangeListener((preference, newValue) -> { + SwitchPreferenceCompat useUEFIPref = findPreference("useUEFI"); + assert useUEFIPref != null; + if (!(Boolean) newValue) { + if (getuseUEFI(getActivity())) { + useUEFIPref.setChecked(false); + setuseUEFI(getActivity(), false); + } + if (useUEFIPref.isEnabled()) { + useUEFIPref.setEnabled(false); + } + } else { + if (!useUEFIPref.isEnabled()) { + useUEFIPref.setEnabled(true); } - return true; } + return true; }); } @@ -360,6 +384,32 @@ public class MainSettingsManager extends AppCompatActivity public void onCreatePreferences(Bundle bundle, String root_key) { // Load the Preferences from the XML file setPreferencesFromResource(R.xml.qemu, root_key); + CollapsingToolbarLayout collapsingToolbarLayout = + requireActivity().findViewById(R.id.collapsingToolbarLayout); + + if (collapsingToolbarLayout != null) { + collapsingToolbarLayout.setSubtitle(getString(R.string.qemu)); + } + + SwitchPreferenceCompat customMemory = findPreference("customMemory"); + assert customMemory != null; + EditTextPreference memory = findPreference("memory"); + assert memory != null; + + if (!customMemory.isChecked()) { + memory.setEnabled(false); + } + customMemory.setOnPreferenceChangeListener((preference, newValue) -> { + if (!(Boolean) newValue) { + if (memory.isEnabled()) + memory.setEnabled(false); + } else { + if (!memory.isEnabled()) + memory.setEnabled(true); + + } + return true; + }); } @Override @@ -394,6 +444,12 @@ public class MainSettingsManager extends AppCompatActivity public void onCreatePreferences(Bundle bundle, String root_key) { // Load the Preferences from the XML file setPreferencesFromResource(R.xml.vnc, root_key); + CollapsingToolbarLayout collapsingToolbarLayout = + requireActivity().findViewById(R.id.collapsingToolbarLayout); + + if (collapsingToolbarLayout != null) { + collapsingToolbarLayout.setSubtitle(getString(R.string.vnc_server)); + } } diff --git a/app/src/main/java/com/vectras/vm/Minitools.java b/app/src/main/java/com/vectras/vm/Minitools.java index c983c47..c523630 100644 --- a/app/src/main/java/com/vectras/vm/Minitools.java +++ b/app/src/main/java/com/vectras/vm/Minitools.java @@ -65,7 +65,7 @@ public class Minitools extends AppCompatActivity { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_minitools); - UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main)); +// UIUtils.setOnApplyWindowInsetsListener(findViewById(R.id.main)); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); diff --git a/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java b/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java index 9a9fd55..476ac25 100644 --- a/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java +++ b/app/src/main/java/com/vectras/vm/x11/LoriePreferences.java @@ -45,6 +45,7 @@ import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.appbar.CollapsingToolbarLayout; import com.vectras.vm.x11.utils.KeyInterceptor; import com.vectras.vm.x11.utils.SamsungDexUtils; import com.vectras.vm.x11.utils.TermuxX11ExtraKeys; @@ -133,6 +134,14 @@ public class LoriePreferences extends AppCompatActivity { } addPreferencesFromResource(R.xml.preferences); + + //Set Subtitle for CollapsingToolbarLayout in MainSettingsManager + CollapsingToolbarLayout collapsingToolbarLayout = + requireActivity().findViewById(R.id.collapsingToolbarLayout); + + if (collapsingToolbarLayout != null) { + collapsingToolbarLayout.setSubtitle(getString(R.string.x11)); + } } @SuppressWarnings("ConstantConditions") diff --git a/app/src/main/res/drawable/object_shape_bottom.xml b/app/src/main/res/drawable/object_shape_bottom.xml new file mode 100644 index 0000000..5f76ea7 --- /dev/null +++ b/app/src/main/res/drawable/object_shape_bottom.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/object_shape_inside_object_top.xml b/app/src/main/res/drawable/object_shape_inside_object_top.xml new file mode 100644 index 0000000..933aa1b --- /dev/null +++ b/app/src/main/res/drawable/object_shape_inside_object_top.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/object_shape_middle.xml b/app/src/main/res/drawable/object_shape_middle.xml new file mode 100644 index 0000000..18c3ee9 --- /dev/null +++ b/app/src/main/res/drawable/object_shape_middle.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/object_shape_single.xml b/app/src/main/res/drawable/object_shape_single.xml new file mode 100644 index 0000000..0905b47 --- /dev/null +++ b/app/src/main/res/drawable/object_shape_single.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/object_shape_top.xml b/app/src/main/res/drawable/object_shape_top.xml new file mode 100644 index 0000000..373f64e --- /dev/null +++ b/app/src/main/res/drawable/object_shape_top.xml @@ -0,0 +1,14 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_minitools.xml b/app/src/main/res/layout/activity_minitools.xml index 549b926..fb5104b 100644 --- a/app/src/main/res/layout/activity_minitools.xml +++ b/app/src/main/res/layout/activity_minitools.xml @@ -1,200 +1,217 @@ - - + android:layout_height="wrap_content" + android:gravity="center" + app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior"> - + android:layout_height="?attr/collapsingToolbarLayoutLargeSize" + android:fitsSystemWindows="true" + app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleMedium" + app:expandedTitleTextAppearance="@style/TextAppearance.Material3.DisplaySmall" + app:layout_scrollFlags="scroll|exitUntilCollapsed" + app:title="@string/mini_tools"> - + android:layout_height="?attr/actionBarSize" + android:elevation="0dp" + app:layout_collapseMode="pin" + app:navigationIcon="@drawable/arrow_back_24px" /> - - + + - + + + android:layout_height="wrap_content" + android:animateLayoutChanges="true" + android:orientation="vertical" + android:padding="8dp"> + + android:background="@drawable/object_shape_top" + android:gravity="center_vertical" + android:paddingLeft="16dp" + android:paddingTop="2dp" + android:paddingRight="2dp" + android:paddingBottom="2dp"> + + + + + android:background="@drawable/object_shape_inside_object_top"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:spinnerMode="dialog" + tools:listitem="@layout/simple_layout_for_spiner" /> - - - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 97a9bd7..4afd724 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -1,5 +1,5 @@ - + android:layout_height="wrap_content" + android:gravity="center" + app:layout_behavior="com.google.android.material.appbar.AppBarLayout$Behavior"> - + android:layout_height="?attr/collapsingToolbarLayoutLargeSize" + android:fitsSystemWindows="true" + app:collapsedTitleTextAppearance="@style/TextAppearance.Material3.TitleMedium" + app:expandedTitleTextAppearance="@style/TextAppearance.Material3.DisplaySmall" + app:layout_scrollFlags="scroll|exitUntilCollapsed" + app:title="@string/settings"> + + + + + android:layout_height="match_parent" + android:fillViewport="true" + app:layout_behavior="@string/appbar_scrolling_view_behavior"/> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a06a482..45e08b9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -72,7 +72,7 @@ Linux Windows Apple - EXTERNAL VNC + External VNC HOSTED SUCCESSFULLY! IP: 127.0.0.1:9 Install Rom @@ -247,7 +247,7 @@ vnc ui environment. VM ARCH CPU MODEL - CUSTOM MEMORY + Custom memory MEMORY (MB) SOUND CARD TB SIZE (KB) @@ -257,15 +257,15 @@ KVM CPU CORES HARDDISK TYPE - BOOT FROM - SHARED FOLDER - CUSTOM PARAMS + Boot from + Shared folder + Custom params VM UI ENVIRONMENT X11 Resolution MOUSE CHECK FOR SOFTWARE UPDATES ON STARTUP CHECK FOR SOFTWARE UPDATES - NIGHT MODE + Night mode Description QEMU website PowerPC @@ -288,7 +288,7 @@ Instagram Facebook Change Log - LANGUAGE + Language SET CHANGE APP LOCALE Are you sure you want to shutdown vm? To leave this but keep everything running, tap and hold the Shut down button. @@ -409,7 +409,7 @@ Welcome to Vectras VM. Let\'s get started! Processing...\nThis may take a few minutes. Check for updates from the Beta channel - Check from the Beta channel instead of the Stable channel + Check from the Beta channel instead of the Stable channel. Update New version is now available OK @@ -446,6 +446,25 @@ seconds left Learn more Open + General + Personalization + System + VNC Server + Language, check for updates and files. + Themes and user interface. + Settings for the emulator. + Using VNC Server for external. + X11 user interface environment. + Automatically check for updates + Check on startup. + Join the Beta channel + You will receive updates to experience the latest features early. + Tap here to select language. + Memory + Memory capacity (MB) + Hard drive interface + UI environment + Vterm diff --git a/app/src/main/res/xml/headers_preference.xml b/app/src/main/res/xml/headers_preference.xml index 56d0ec5..8788bf7 100644 --- a/app/src/main/res/xml/headers_preference.xml +++ b/app/src/main/res/xml/headers_preference.xml @@ -5,31 +5,31 @@ diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 9096243..2ed6943 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -3,231 +3,272 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:title="@string/settings_tag_output" + app:iconSpaceReserved="false"> + android:title="@string/settings_x11_display_resolution_mode" + app:iconSpaceReserved="false"/> + android:title="@string/settings_x11_display_scale" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_display_resolution" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_display_resolution" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_stretch" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_reseed_screen_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_pip_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_full_screen_title" + app:iconSpaceReserved="false" /> + app:isPreferenceVisible="false" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_cutout" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_keep_screen_on" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_adjust_display_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_tag_point" + app:iconSpaceReserved="false" > + android:title="@string/settings_x11_touchscreen_input_mode" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_display_scale_factor_to_touchpad" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_stylus_option_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_mouse_overlay_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_capture_mouse_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_capture_pointer_move" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_capture_pointer_move_factor" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_tap_to_move" + app:iconSpaceReserved="false" /> + android:title="@string/settings_tag_keyboard" + app:iconSpaceReserved="false" > + app:isPreferenceVisible="false" + app:iconSpaceReserved="false" /> + app:isPreferenceVisible="false" + app:iconSpaceReserved="false" /> + android:title="@string/settiongs_capture_volkey" + app:iconSpaceReserved="false" /> + app:isPreferenceVisible="false" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_deact_speckey_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_ime_with_hardkeyboard_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_prefer_scancode_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_fix_hard_keyboard_scancode_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_full_screen_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_capture_shortcut_manually_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_auto_intercept_shortcut_title" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_intercepting_esc" + app:iconSpaceReserved="false" /> + android:title="@string/settings_x11_ignore_win_key_title" + app:iconSpaceReserved="false" /> + app:isPreferenceVisible="false" + app:iconSpaceReserved="false" /> + app:isPreferenceVisible="false" + app:iconSpaceReserved="false" /> + android:title="@string/settings_tag_other" + app:iconSpaceReserved="false" > + android:title="@string/settings_clipboard_sharing" + app:iconSpaceReserved="false" /> + android:title="Request notification permission" + app:iconSpaceReserved="false" /> diff --git a/app/src/main/res/xml/qemu.xml b/app/src/main/res/xml/qemu.xml index 38a35ec..8b56467 100644 --- a/app/src/main/res/xml/qemu.xml +++ b/app/src/main/res/xml/qemu.xml @@ -3,20 +3,20 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:layout_height="wrap_content"> + + - + + + + + + + + + + @@ -127,7 +127,7 @@ diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index 0cd9ff6..bade35b 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -2,9 +2,9 @@ xmlns:android="http://schemas.android.com/apk/res/android"> + android:layout_height="wrap_content"> + + diff --git a/app/src/main/res/xml/userinterface.xml b/app/src/main/res/xml/userinterface.xml index 2ecea4a..2f031e5 100644 --- a/app/src/main/res/xml/userinterface.xml +++ b/app/src/main/res/xml/userinterface.xml @@ -3,9 +3,9 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> + android:layout_height="wrap_content"> + + + android:layout_height="wrap_content"> + +