├── .github └── workflows │ └── android.yml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro ├── src │ └── main │ │ ├── AndroidManifest.xml │ │ ├── aidl │ │ └── com │ │ │ └── micewine │ │ │ └── emu │ │ │ └── ICmdEntryInterface.aidl │ │ ├── assets │ │ └── .gitignore │ │ ├── cpp │ │ ├── CMakeLists.txt │ │ ├── lorie │ │ │ ├── InitInput.c │ │ │ ├── InitOutput.c │ │ │ ├── InputXKB.c │ │ │ ├── activity.c │ │ │ ├── buffer.c │ │ │ ├── buffer.h │ │ │ ├── clipboard.c │ │ │ ├── cmdentrypoint.c │ │ │ ├── fbconfigs.h │ │ │ ├── lorie.h │ │ │ ├── renderer.c │ │ │ ├── shm │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── shm.h │ │ │ │ └── shmem.c │ │ │ └── xshmfence.c │ │ ├── patches │ │ │ ├── Xtrans.patch │ │ │ ├── dix-config.h.in │ │ │ ├── libepoxy.patch │ │ │ ├── pixman.patch │ │ │ ├── x11.patch │ │ │ ├── xkbcomp.patch │ │ │ ├── xkbfile.patch │ │ │ └── xserver.patch │ │ └── recipes │ │ │ ├── Xau.cmake │ │ │ ├── Xdmcp.cmake │ │ │ ├── Xfont2.cmake │ │ │ ├── fontenc.cmake │ │ │ ├── md.cmake │ │ │ ├── pixman.cmake │ │ │ ├── tirpc.cmake │ │ │ ├── xkbcomp.cmake │ │ │ ├── xorgproto.cmake │ │ │ ├── xserver.cmake │ │ │ └── xshmfence.cmake │ │ ├── java │ │ ├── android │ │ │ ├── app │ │ │ │ ├── ActivityThread.java │ │ │ │ ├── ContextImpl.java │ │ │ │ └── IActivityManager.java │ │ │ └── content │ │ │ │ ├── IIntentReceiver.java │ │ │ │ ├── IIntentSender.java │ │ │ │ └── pm │ │ │ │ └── IPackageManager.java │ │ └── com │ │ │ └── micewine │ │ │ └── emu │ │ │ ├── CmdEntryPoint.kt │ │ │ ├── LorieView.kt │ │ │ ├── activities │ │ │ ├── ControllerTestActivity.kt │ │ │ ├── EmulationActivity.kt │ │ │ ├── GeneralSettingsActivity.kt │ │ │ ├── MainActivity.kt │ │ │ ├── PresetManagerActivity.kt │ │ │ ├── RatDownloaderActivity.kt │ │ │ ├── RatManagerActivity.kt │ │ │ ├── VirtualControllerOverlayMapper.kt │ │ │ └── WelcomeActivity.kt │ │ │ ├── adapters │ │ │ ├── AdapterBottomNavigation.kt │ │ │ ├── AdapterFiles.kt │ │ │ ├── AdapterGame.kt │ │ │ ├── AdapterPreset.kt │ │ │ ├── AdapterRatPackage.kt │ │ │ ├── AdapterSettings.kt │ │ │ ├── AdapterSettingsBox64Preset.kt │ │ │ ├── AdapterSettingsController.kt │ │ │ ├── AdapterSettingsPreferences.kt │ │ │ ├── AdapterTabPager.kt │ │ │ ├── AdapterTabPagerDownloader.kt │ │ │ └── AdapterWelcomeFragments.kt │ │ │ ├── controller │ │ │ ├── ControllerUtils.kt │ │ │ └── XKeyCodes.kt │ │ │ ├── core │ │ │ ├── EnvVars.kt │ │ │ ├── RatPackageManager.kt │ │ │ ├── ShellLoader.kt │ │ │ └── WineWrapper.kt │ │ │ ├── fragments │ │ │ ├── AboutFragment.kt │ │ │ ├── AskInstallPackageFragment.kt │ │ │ ├── Box64PresetManagerFragment.kt │ │ │ ├── Box64SettingsFragment.kt │ │ │ ├── ControllerMapperFragment.kt │ │ │ ├── ControllerPresetManagerFragment.kt │ │ │ ├── CreatePresetFragment.kt │ │ │ ├── DebugSettingsFragment.kt │ │ │ ├── DeleteItemFragment.kt │ │ │ ├── DriverInfoFragment.kt │ │ │ ├── DriversSettingsFragment.kt │ │ │ ├── EditGamePreferencesFragment.kt │ │ │ ├── EditVirtualButtonFragment.kt │ │ │ ├── EnvVarsSettingsFragment.kt │ │ │ ├── FileManagerFragment.kt │ │ │ ├── FloatingFileManagerFragment.kt │ │ │ ├── GeneralSettingsFragment.kt │ │ │ ├── InfoDialogFragment.kt │ │ │ ├── LogViewerFragment.kt │ │ │ ├── RatDownloaderFragment.kt │ │ │ ├── RatManagerFragment.kt │ │ │ ├── RenameFragment.kt │ │ │ ├── SettingsFragment.kt │ │ │ ├── SetupFragment.kt │ │ │ ├── ShortcutsFragment.kt │ │ │ ├── SoundSettingsFragment.kt │ │ │ ├── VirtualControllerPresetManagerFragment.kt │ │ │ ├── WelcomeFragment.kt │ │ │ └── WinePrefixManagerFragment.kt │ │ │ ├── input │ │ │ ├── InputEventSender.java │ │ │ ├── InputStrategyInterface.java │ │ │ ├── InputStub.java │ │ │ ├── RenderData.java │ │ │ ├── SwipeDetector.java │ │ │ ├── TapGestureDetector.java │ │ │ └── TouchInputHandler.java │ │ │ ├── utils │ │ │ ├── DriveUtils.kt │ │ │ └── FilePathResolver.kt │ │ │ └── views │ │ │ ├── ControllerView.kt │ │ │ ├── OnScreenInfoView.kt │ │ │ ├── OverlayView.kt │ │ │ ├── OverlayViewCreator.kt │ │ │ └── XInputOverlayView.kt │ │ └── res │ │ ├── anim │ │ ├── fade_in.xml │ │ ├── fade_out.xml │ │ ├── slide_in.xml │ │ └── slide_out.xml │ │ ├── drawable-night │ │ ├── a_button.xml │ │ ├── b_button.xml │ │ ├── dpad_down.xml │ │ ├── dpad_left.xml │ │ ├── dpad_right.xml │ │ ├── dpad_up.xml │ │ ├── ic_back.xml │ │ ├── ic_box64.png │ │ ├── ic_clear.xml │ │ ├── ic_delete.xml │ │ ├── ic_display.png │ │ ├── ic_download.xml │ │ ├── ic_edit.xml │ │ ├── ic_folder.xml │ │ ├── ic_globe.xml │ │ ├── ic_gpu.png │ │ ├── ic_home.png │ │ ├── ic_info_outline.xml │ │ ├── ic_joystick.xml │ │ ├── ic_keyboard.png │ │ ├── ic_log.xml │ │ ├── ic_more_vert.xml │ │ ├── ic_next.xml │ │ ├── ic_rat_package_grayscale.png │ │ ├── ic_search.xml │ │ ├── ic_settings.xml │ │ ├── ic_settings_outline.xml │ │ ├── ic_sound.xml │ │ ├── ic_wine.png │ │ ├── l_down.xml │ │ ├── l_left.xml │ │ ├── l_right.xml │ │ ├── l_thumb.xml │ │ ├── l_up.xml │ │ ├── lb_button.xml │ │ ├── logo.png │ │ ├── lt_button.xml │ │ ├── menu_bg.xml │ │ ├── popup_background.xml │ │ ├── r_down.xml │ │ ├── r_left.xml │ │ ├── r_right.xml │ │ ├── r_thumb.xml │ │ ├── r_up.xml │ │ ├── rb_button.xml │ │ ├── rt_button.xml │ │ ├── select_button.xml │ │ ├── start_button.xml │ │ ├── x_button.xml │ │ └── y_button.xml │ │ ├── drawable │ │ ├── a_button.xml │ │ ├── b_button.xml │ │ ├── default_icon.png │ │ ├── dpad_down.xml │ │ ├── dpad_left.xml │ │ ├── dpad_right.xml │ │ ├── dpad_up.xml │ │ ├── ic_back.xml │ │ ├── ic_box64.png │ │ ├── ic_clear.xml │ │ ├── ic_delete.xml │ │ ├── ic_display.png │ │ ├── ic_download.xml │ │ ├── ic_edit.xml │ │ ├── ic_folder.xml │ │ ├── ic_folder_colored.xml │ │ ├── ic_globe.xml │ │ ├── ic_gpu.png │ │ ├── ic_home.png │ │ ├── ic_info_outline.xml │ │ ├── ic_joystick.xml │ │ ├── ic_keyboard.png │ │ ├── ic_launcher_round.png │ │ ├── ic_log.xml │ │ ├── ic_more_vert.xml │ │ ├── ic_next.xml │ │ ├── ic_rat_package.png │ │ ├── ic_rat_package_grayscale.png │ │ ├── ic_search.xml │ │ ├── ic_settings.xml │ │ ├── ic_settings_outline.xml │ │ ├── ic_shortcut.xml │ │ ├── ic_sound.xml │ │ ├── ic_wine.png │ │ ├── icon_grayscale.png │ │ ├── l_down.xml │ │ ├── l_left.xml │ │ ├── l_right.xml │ │ ├── l_thumb.xml │ │ ├── l_up.xml │ │ ├── lb_button.xml │ │ ├── logo.png │ │ ├── lt_button.xml │ │ ├── menu_bg.xml │ │ ├── popup_background.xml │ │ ├── r_down.xml │ │ ├── r_left.xml │ │ ├── r_right.xml │ │ ├── r_thumb.xml │ │ ├── r_up.xml │ │ ├── rb_button.xml │ │ ├── rt_button.xml │ │ ├── select_button.xml │ │ ├── start_button.xml │ │ ├── top_rounded_shape.xml │ │ ├── x_button.xml │ │ └── y_button.xml │ │ ├── font │ │ ├── jetbrains_mono.ttf │ │ ├── josefin_sans.ttf │ │ └── quicksand.ttf │ │ ├── layout │ │ ├── activity_controller_view.xml │ │ ├── activity_emulation.xml │ │ ├── activity_general_settings.xml │ │ ├── activity_main.xml │ │ ├── activity_preset_manager.xml │ │ ├── activity_rat_downloader.xml │ │ ├── activity_rat_manager.xml │ │ ├── activity_virtual_controller_mapper.xml │ │ ├── activity_welcome.xml │ │ ├── adapter_env_var.xml │ │ ├── adapter_files_item.xml │ │ ├── adapter_game_item.xml │ │ ├── adapter_preset_item.xml │ │ ├── adapter_rat_package_item.xml │ │ ├── adapter_settings_controller_item.xml │ │ ├── adapter_settings_item.xml │ │ ├── adapter_settings_preferences_item.xml │ │ ├── fragment_about.xml │ │ ├── fragment_ask_install_rat.xml │ │ ├── fragment_create_preset.xml │ │ ├── fragment_delete_item.xml │ │ ├── fragment_driver_info.xml │ │ ├── fragment_edit_env_vars.xml │ │ ├── fragment_edit_game_preferences.xml │ │ ├── fragment_edit_virtual_button.xml │ │ ├── fragment_env_vars_settings.xml │ │ ├── fragment_file_manager.xml │ │ ├── fragment_floating_file_manager.xml │ │ ├── fragment_general_settings.xml │ │ ├── fragment_info.xml │ │ ├── fragment_log_viewer.xml │ │ ├── fragment_rename_game_item.xml │ │ ├── fragment_settings.xml │ │ ├── fragment_settings_controller.xml │ │ ├── fragment_settings_model.xml │ │ ├── fragment_setup.xml │ │ ├── fragment_shortcuts.xml │ │ ├── fragment_welcome.xml │ │ ├── fragment_welcome_2.xml │ │ ├── item_checkbox.xml │ │ └── nav_header.xml │ │ ├── menu │ │ ├── bottom_nav_menu.xml │ │ ├── file_list_context_menu_default.xml │ │ ├── file_list_context_menu_exe.xml │ │ ├── file_list_context_menu_package.xml │ │ ├── game_list_context_menu.xml │ │ ├── game_list_context_menu_lite.xml │ │ ├── preset_more_options_menu.xml │ │ ├── toolbar_menu.xml │ │ ├── virtual_controllers_drawer.xml │ │ └── wine_prefix_more_options_menu.xml │ │ ├── values-night │ │ ├── styles.xml │ │ └── themes.xml │ │ ├── values-pt-rBR │ │ └── strings.xml │ │ ├── values-ru │ │ └── strings.xml │ │ ├── values-zh-rCN │ │ └── strings.xml │ │ ├── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ └── themes.xml │ │ └── xml │ │ └── shortcuts.xml └── testkey_untrusted.jks ├── build.gradle.kts ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle.kts /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | .androidide 3 | .idea 4 | local.properties 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Pablo Labs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## MiceWine Emulator 2 | 3 | MiceWine is a project that aims to run Windows applications and games on Android smartphones. 4 | 5 | It uses a customized build of Wine compiled for Android and Box64 to run in the best possible way. 6 | 7 | Actually in constant development. 8 | 9 | It's use a XServer based on Termux-X11 10 | 11 | ### Compatible Android Versions 12 | 13 | Support Android 10+ 14 | 15 | ### Compatible GPUs 16 | 17 | | GPU | Support | Driver | 18 | |------------|-----------------------|-----------------------------| 19 | | Adreno | Supported | Turnip/Native/Zink | 20 | | Xclipse | Supported | Native/Zink | 21 | | Mali | Supported | Native/Zink | 22 | 23 | The native driver works well for Xclipse GPUs, Adreno GPUs, Mali GPUs. 24 | 25 | About Mali GPUs, Only tested on Mali-G615, Mali-G610, Mali G76 and Mali-G925-Immortalis. 26 | 27 | Vulkan 1.3 is Recommended for better performance and graphical precision. 1.1 works with DXVK-Stripped-Requirements, but displays various graphical issues. 28 | 29 | --- 30 | 31 | ## RootFS Download 32 | 33 | You can download the required **RootFS** file from this repository: 34 | 🔗 [MiceWine RootFS Generator](https://github.com/KreitinnSoftware/MiceWine-RootFS-Generator) 35 | 36 | --- 37 | 38 | ## Third Party Open Source Applications: 39 | 40 | - [Box64](https://github.com/ptitSeb/box64) 41 | - [WineHQ](https://gitlab.winehq.org/wine/wine) 42 | - [Termux-X11](https://github.com/termux/termux-x11) 43 | - [Mesa](https://gitlab.freedesktop.org/mesa/mesa) 44 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | release 3 | .externalNativeBuild 4 | .cxx 5 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle.kts. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/main/aidl/com/micewine/emu/ICmdEntryInterface.aidl: -------------------------------------------------------------------------------- 1 | package com.micewine.emu; 2 | 3 | // This interface is used by utility on termux side. 4 | interface ICmdEntryInterface { 5 | void windowChanged(in Surface surface); 6 | ParcelFileDescriptor getXConnection(); 7 | ParcelFileDescriptor getLogcatOutput(); 8 | } -------------------------------------------------------------------------------- /app/src/main/assets/.gitignore: -------------------------------------------------------------------------------- 1 | rootfs.zip 2 | -------------------------------------------------------------------------------- /app/src/main/cpp/lorie/shm/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013, Sergii Pylypenko 2 | Copyright (c) 2017, Fredrik Fornwall 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without modification, 6 | are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright notice, this 9 | list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above copyright notice, this 12 | list of conditions and the following disclaimer in the documentation and/or 13 | other materials provided with the distribution. 14 | 15 | * Neither the name of the {organization} nor the names of its 16 | contributors may be used to endorse or promote products derived from 17 | this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 23 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 24 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 26 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 28 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /app/src/main/cpp/lorie/shm/README.md: -------------------------------------------------------------------------------- 1 | libandroid-shmem 2 | ================ 3 | System V shared memory (shmget, shmat, shmdt and shmctl) emulation on Android using ashmem for use in [Termux](https://termux.com/). 4 | 5 | The shared memory segments it creates will be automatically destroyed when the creating process destroys them or dies, which differs from the System V shared memory behaviour. 6 | 7 | Based on previous work in https://github.com/pelya/android-shmem. 8 | 9 | Hacking 10 | ======= 11 | The project can be developed on Android devices using Termux. Clone the repo and run `make` in the `tests/` folder after editing the library or test cases. 12 | -------------------------------------------------------------------------------- /app/src/main/cpp/lorie/shm/shm.h: -------------------------------------------------------------------------------- 1 | #ifndef _SYS_SHM_H 2 | #define _SYS_SHM_H 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | __BEGIN_DECLS 9 | 10 | #ifndef shmid_ds 11 | # define shmid_ds shmid64_ds 12 | #endif 13 | 14 | /* Shared memory control operations. */ 15 | #undef shmctl 16 | #define shmctl libandroid_shmctl 17 | extern int shmctl(int shmid, int cmd, struct shmid_ds* buf); 18 | 19 | /* Get shared memory area identifier. */ 20 | #undef shmget 21 | #define shmget libandroid_shmget 22 | extern int shmget(key_t key, size_t size, int shmflg); 23 | 24 | /* Attach shared memory segment. */ 25 | #undef shmat 26 | #define shmat libandroid_shmat 27 | extern void *shmat(int shmid, void const* shmaddr, int shmflg); 28 | 29 | /* Detach shared memory segment. */ 30 | #undef shmdt 31 | #define shmdt libandroid_shmdt 32 | extern int shmdt(void const* shmaddr); 33 | 34 | __END_DECLS 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /app/src/main/cpp/patches/pixman.patch: -------------------------------------------------------------------------------- 1 | diff -u -r ../pixman-0.32.6/pixman/pixman-arm.c ./pixman/pixman-arm.c 2 | --- ../pixman-0.32.6/pixman/pixman-arm.c 2013-11-17 09:43:18.000000000 +0100 3 | +++ ./pixman/pixman-arm.c 2014-08-05 12:54:39.252322492 +0200 4 | @@ -96,30 +96,10 @@ 5 | 6 | #elif defined(__ANDROID__) || defined(ANDROID) /* Android */ 7 | 8 | -#include 9 | - 10 | static arm_cpu_features_t 11 | detect_cpu_features (void) 12 | { 13 | - arm_cpu_features_t features = 0; 14 | - AndroidCpuFamily cpu_family; 15 | - uint64_t cpu_features; 16 | - 17 | - cpu_family = android_getCpuFamily(); 18 | - cpu_features = android_getCpuFeatures(); 19 | - 20 | - if (cpu_family == ANDROID_CPU_FAMILY_ARM) 21 | - { 22 | - if (cpu_features & ANDROID_CPU_ARM_FEATURE_ARMv7) 23 | - features |= ARM_V7; 24 | - 25 | - if (cpu_features & ANDROID_CPU_ARM_FEATURE_VFPv3) 26 | - features |= ARM_VFP; 27 | - 28 | - if (cpu_features & ANDROID_CPU_ARM_FEATURE_NEON) 29 | - features |= ARM_NEON; 30 | - } 31 | - 32 | + arm_cpu_features_t features = (ARM_V7 | ARM_VFP | ARM_NEON); 33 | return features; 34 | } 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/cpp/patches/x11.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/Quarks.c b/src/Quarks.c 2 | index 0dd91968..dbaf5086 100644 3 | --- a/src/Quarks.c 4 | +++ b/src/Quarks.c 5 | @@ -105,6 +105,11 @@ static XrmQuark nextUniq = -1; /* next quark from XrmUniqueQuark */ 6 | #define CLEARPERM(q) BYTEREF(q) &= ~(1 << ((q) & 7)) 7 | #endif 8 | 9 | +#undef _XLockMutex 10 | +#undef _XUnlockMutex 11 | +#define _XLockMutex(m) 12 | +#define _XUnlockMutex(m) 13 | + 14 | /* Permanent memory allocation */ 15 | 16 | #define WALIGN sizeof(unsigned long) 17 | diff --git a/src/Xrm.c b/src/Xrm.c 18 | index a8ebf883..d716fdb0 100644 19 | --- a/src/Xrm.c 20 | +++ b/src/Xrm.c 21 | @@ -301,6 +301,13 @@ typedef unsigned char XrmBits; 22 | #define is_simple(bits) ((bits) & (NORMAL|BSLASH)) 23 | #define is_special(bits) ((bits) & (ENDOF|BSLASH)) 24 | 25 | +#undef _XLockMutex 26 | +#undef _XUnlockMutex 27 | +#undef _XCreateMutex 28 | +#define _XLockMutex(m) 29 | +#define _XUnlockMutex(m) 30 | +#define _XCreateMutex(m) 31 | + 32 | /* parsing types */ 33 | static XrmBits const xrmtypes[256] = { 34 | EOS,0,0,0,0,0,0,0, 35 | @@ -500,9 +507,7 @@ static XrmDatabase NewDatabase(void) 36 | _XCreateMutex(&db->linfo); 37 | db->table = (NTable)NULL; 38 | db->mbstate = (XPointer)NULL; 39 | - db->methods = _XrmInitParseInfo(&db->mbstate); 40 | - if (!db->methods) 41 | - db->methods = &mb_methods; 42 | + db->methods = &mb_methods; 43 | } 44 | return db; 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/cpp/patches/xkbfile.patch: -------------------------------------------------------------------------------- 1 | diff --git a/src/xkbatom.c b/src/xkbatom.c 2 | index 564cc83..723e6da 100644 3 | --- a/src/xkbatom.c 4 | +++ b/src/xkbatom.c 5 | @@ -202,9 +202,7 @@ XkbAtomGetString(Display *dpy, Atom atm) 6 | { 7 | if (atm == None) 8 | return NULL; 9 | - if (dpy == NULL) 10 | - return _XkbNameForAtom(atm); 11 | - return XGetAtomName(dpy, atm); 12 | + return _XkbNameForAtom(atm); 13 | } 14 | 15 | /***====================================================================***/ 16 | @@ -214,10 +212,7 @@ XkbInternAtom(Display *dpy, const char *name, Bool onlyIfExists) 17 | { 18 | if (name == NULL) 19 | return None; 20 | - if (dpy == NULL) { 21 | - return _XkbMakeAtom(name, strlen(name), (!onlyIfExists)); 22 | - } 23 | - return XInternAtom(dpy, name, onlyIfExists); 24 | + return _XkbMakeAtom(name, strlen(name), (!onlyIfExists)); 25 | } 26 | 27 | /***====================================================================***/ 28 | -------------------------------------------------------------------------------- /app/src/main/cpp/recipes/Xau.cmake: -------------------------------------------------------------------------------- 1 | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Xau") 2 | add_library(Xau STATIC "libxau/AuDispose.c" "libxau/AuRead.c") 3 | target_include_directories(Xau PUBLIC "libxau/include") 4 | target_compile_options(Xdmcp PRIVATE ${common_compile_options} "-D_GNU_SOURCE=1" "-DHAVE_EXPLICIT_BZERO" "-fPIC") 5 | target_link_libraries(Xau xorgproto) 6 | -------------------------------------------------------------------------------- /app/src/main/cpp/recipes/Xdmcp.cmake: -------------------------------------------------------------------------------- 1 | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Xdmcp") 2 | add_library(Xdmcp STATIC "libxdmcp/Array.c" "libxdmcp/Fill.c" "libxdmcp/Flush.c" "libxdmcp/Key.c" "libxdmcp/Read.c" "libxdmcp/Unwrap.c" "libxdmcp/Wrap.c" "libxdmcp/Wraphelp.c" "libxdmcp/Write.c") 3 | target_compile_options(Xdmcp PRIVATE "-D_GNU_SOURCE=1" "-DHASXDMAUTH=1" "-DHAVE_ARC4RANDOM_BUF=1" "-DHAVE_GETENTROPY=1" "-DHAVE_LRAND48=1" "-DHAVE_SRAND48=1" "-DHAVE_SYS_RANDOM_H=1" ${common_compile_options}) 4 | target_include_directories(Xdmcp PUBLIC "libxdmcp/include" "${CMAKE_CURRENT_BINARY_DIR}/Xdmcp") 5 | target_link_libraries(Xdmcp PRIVATE xorgproto) 6 | -------------------------------------------------------------------------------- /app/src/main/cpp/recipes/fontenc.cmake: -------------------------------------------------------------------------------- 1 | add_library(fontenc STATIC "libfontenc/src/fontenc.c" "libfontenc/src/encparse.c" "libfontenc/src/reallocarray.c") 2 | target_include_directories(fontenc PUBLIC "libfontenc/include") 3 | target_link_libraries(fontenc PUBLIC xorgproto) 4 | target_compile_options(fontenc PRIVATE "-DFONT_ENCODINGS_DIRECTORY=\"/\"") 5 | -------------------------------------------------------------------------------- /app/src/main/cpp/recipes/tirpc.cmake: -------------------------------------------------------------------------------- 1 | add_library(tirpc STATIC 2 | "libtirpc/src/auth_none.c" 3 | "libtirpc/src/auth_unix.c" 4 | "libtirpc/src/authunix_prot.c" 5 | "libtirpc/src/binddynport.c" 6 | "libtirpc/src/clnt_bcast.c" 7 | "libtirpc/src/clnt_dg.c" 8 | "libtirpc/src/clnt_generic.c" 9 | "libtirpc/src/clnt_perror.c" 10 | "libtirpc/src/clnt_raw.c" 11 | "libtirpc/src/clnt_simple.c" 12 | "libtirpc/src/clnt_vc.c" 13 | "libtirpc/src/rpc_dtablesize.c" 14 | "libtirpc/src/getnetconfig.c" 15 | "libtirpc/src/getnetpath.c" 16 | "libtirpc/src/mt_misc.c" 17 | "libtirpc/src/pmap_clnt.c" 18 | "libtirpc/src/pmap_getport.c" 19 | "libtirpc/src/pmap_prot.c" 20 | "libtirpc/src/pmap_prot2.c" 21 | "libtirpc/src/pmap_rmt.c" 22 | "libtirpc/src/rpc_prot.c" 23 | "libtirpc/src/rpc_commondata.c" 24 | "libtirpc/src/rpc_callmsg.c" 25 | "libtirpc/src/rpc_generic.c" 26 | "libtirpc/src/rpc_soc.c" 27 | "libtirpc/src/rpcb_clnt.c" 28 | "libtirpc/src/rpcb_prot.c" 29 | "libtirpc/src/svc.c" 30 | "libtirpc/src/svc_auth.c" 31 | "libtirpc/src/svc_dg.c" 32 | "libtirpc/src/svc_auth_unix.c" 33 | "libtirpc/src/svc_auth_none.c" 34 | "libtirpc/src/svc_generic.c" 35 | "libtirpc/src/svc_raw.c" 36 | "libtirpc/src/svc_simple.c" 37 | "libtirpc/src/svc_vc.c" 38 | "libtirpc/src/getpeereid.c" 39 | "libtirpc/src/debug.c" 40 | "libtirpc/src/xdr.c" 41 | "libtirpc/src/xdr_rec.c" 42 | "libtirpc/src/xdr_array.c" 43 | "libtirpc/src/xdr_mem.c" 44 | "libtirpc/src/xdr_reference.c") 45 | target_include_directories(tirpc PUBLIC "libtirpc/tirpc") 46 | target_compile_options(tirpc PRIVATE "-DPORTMAP" "-DINET6=1" "-DHAVE_FEATURES_H=1" 47 | "-DHAVE_GETRPCBYNAME=1" "-DHAVE_GETRPCBYNUMBER=1" "-DHAVE_SETRPCENT=1" "-DHAVE_ENDRPCENT=1" 48 | "-DHAVE_GETRPCENT=1" "-UHAVE_GSSAPI_GSSAPI_EXT_H" "-UAUTHDES_SUPPORT" "-Dquad_t=long long" 49 | "-Du_quad_t=unsigned long long" "-Dgetdtablesize()=sysconf(_SC_OPEN_MAX)" "-D_GNU_SOURCE" 50 | "-Wall" "-pipe" "-fPIC" "-DPIC" "-Wno-deprecated-non-prototype" "-Wno-macro-redefined") 51 | -------------------------------------------------------------------------------- /app/src/main/cpp/recipes/xorgproto.cmake: -------------------------------------------------------------------------------- 1 | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/X11") 2 | file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/X11/XlibConf.h" CONTENT "\n#pragma once\n#define XTHREADS 1\n#define XUSE_MTSAFE_API 1") 3 | execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/libxtrans" "${CMAKE_CURRENT_BINARY_DIR}/X11/Xtrans") 4 | 5 | add_library(xorgproto INTERFACE) 6 | target_include_directories(xorgproto INTERFACE "xorgproto/include") 7 | set(USE_FDS_BITS 1) 8 | configure_file("xorgproto/include/X11/Xpoll.h.in" "${CMAKE_CURRENT_BINARY_DIR}/X11/Xpoll.h" @ONLY) 9 | target_apply_patch(Xtrans "${CMAKE_CURRENT_SOURCE_DIR}/libxtrans" "${CMAKE_CURRENT_SOURCE_DIR}/patches/Xtrans.patch") -------------------------------------------------------------------------------- /app/src/main/cpp/recipes/xshmfence.cmake: -------------------------------------------------------------------------------- 1 | file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/values.h" CONTENT "#include ") 2 | execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/libxshmfence/src/xshmfence.h" "${CMAKE_CURRENT_BINARY_DIR}/X11/xshmfence.h") 3 | add_library(xshmfence_pthread STATIC "libxshmfence/src/xshmfence_alloc.c" "libxshmfence/src/xshmfence_pthread.c") 4 | target_include_directories(xshmfence_pthread PRIVATE "xorgproto/include" "${CMAKE_CURRENT_BINARY_DIR}") 5 | target_compile_options(xshmfence_pthread PRIVATE "-DSHMDIR=\"/\"" "-DHAVE_PTHREAD" "-DMAXINT=INT_MAX" "-Dxshmfence_trigger=xshmfence_pthread_trigger" "-Dxshmfence_await=xshmfence_pthread_await" "-Dxshmfence_query=xshmfence_pthread_query" "-Dxshmfence_reset=xshmfence_pthread_reset" "-Dxshmfence_alloc_shm=xshmfence_pthread_alloc_shm" "-Dxshmfence_map_shm=xshmfence_pthread_map_shm" "-Dxshmfence_unmap_shm=xshmfence_pthread_unmap_shm") 6 | 7 | add_library(xshmfence_futex STATIC "libxshmfence/src/xshmfence_alloc.c" "libxshmfence/src/xshmfence_futex.c") 8 | target_include_directories(xshmfence_futex PRIVATE "xorgproto/include" "${CMAKE_CURRENT_BINARY_DIR}") 9 | target_compile_options(xshmfence_futex PRIVATE "-DSHMDIR=\"/\"" "-DHAVE_FUTEX" "-DMAXINT=INT_MAX" "-Dxshmfence_trigger=xshmfence_futex_trigger" "-Dxshmfence_await=xshmfence_futex_await" "-Dxshmfence_query=xshmfence_futex_query" "-Dxshmfence_reset=xshmfence_futex_reset" "-Dxshmfence_alloc_shm=xshmfence_futex_alloc_shm" "-Dxshmfence_map_shm=xshmfence_futex_map_shm" "-Dxshmfence_unmap_shm=xshmfence_futex_unmap_shm") 10 | 11 | add_library(xshmfence STATIC "lorie/xshmfence.c") 12 | target_link_libraries(xshmfence PRIVATE xshmfence_pthread xshmfence_futex) -------------------------------------------------------------------------------- /app/src/main/java/android/app/ActivityThread.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.pm.IPackageManager; 4 | 5 | public class ActivityThread { 6 | public static ActivityThread systemMain() { 7 | throw new RuntimeException("STUB"); 8 | } 9 | 10 | public ContextImpl getSystemContext() { 11 | throw new RuntimeException("STUB"); 12 | } 13 | 14 | public static IPackageManager getPackageManager() { 15 | throw new RuntimeException("STUB"); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/android/app/ContextImpl.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.Context; 4 | 5 | public abstract class ContextImpl extends Context { 6 | } 7 | -------------------------------------------------------------------------------- /app/src/main/java/android/app/IActivityManager.java: -------------------------------------------------------------------------------- 1 | package android.app; 2 | 3 | import android.content.IIntentSender; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.os.IBinder; 7 | 8 | public interface IActivityManager { 9 | public IIntentSender getIntentSender(int type, 10 | String packageName, IBinder token, String resultWho, 11 | int requestCode, Intent[] intents, String[] resolvedTypes, 12 | int flags, Bundle bOptions, int userId); 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/android/content/IIntentReceiver.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.os.Bundle; 4 | 5 | /** 6 | * Stub - will be replaced by system at runtime 7 | */ 8 | public interface IIntentReceiver { 9 | public static abstract class Stub implements IIntentReceiver { 10 | public abstract void performReceive(Intent intent, int resultCode, String data, Bundle extras, 11 | boolean ordered, boolean sticky, int sendingUser); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/android/content/IIntentSender.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | import android.os.Bundle; 4 | import android.os.IBinder; 5 | 6 | /** 7 | * Stub - will be replaced by system at runtime 8 | */ 9 | public abstract class IIntentSender { 10 | abstract void send(int code, Intent intent, String resolvedType, IBinder whitelistToken, 11 | IIntentReceiver finishedReceiver, String requiredPermission, Bundle options); 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/android/content/pm/IPackageManager.java: -------------------------------------------------------------------------------- 1 | package android.content.pm; 2 | 3 | public interface IPackageManager { 4 | PackageInfo getPackageInfo(String packageName, long flags, int userId) throws android.os.RemoteException; 5 | PackageInfo getPackageInfo(String packageName, int flags, int userId) throws android.os.RemoteException; 6 | String[] getPackagesForUid(int uid) throws android.os.RemoteException; 7 | } -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/adapters/AdapterBottomNavigation.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.adapters 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentActivity 5 | import androidx.viewpager2.adapter.FragmentStateAdapter 6 | import com.micewine.emu.fragments.AboutFragment 7 | import com.micewine.emu.fragments.FileManagerFragment 8 | import com.micewine.emu.fragments.SettingsFragment 9 | import com.micewine.emu.fragments.ShortcutsFragment 10 | 11 | class AdapterBottomNavigation(activity: FragmentActivity?) : FragmentStateAdapter(activity!!) { 12 | override fun createFragment(position: Int): Fragment { 13 | return when (position) { 14 | 0 -> ShortcutsFragment() 15 | 1 -> SettingsFragment() 16 | 2 -> FileManagerFragment() 17 | 3 -> AboutFragment() 18 | else -> throw Exception("Invalid Fragment for Position $position") 19 | } 20 | } 21 | 22 | override fun getItemCount(): Int { 23 | return 4 24 | } 25 | } -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/adapters/AdapterTabPager.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.adapters 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentActivity 5 | import androidx.viewpager2.adapter.FragmentStateAdapter 6 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.BOX64 7 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.DXVK 8 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.VKD3D 9 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.VK_DRIVER 10 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.WINE 11 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.WINED3D 12 | import com.micewine.emu.fragments.RatManagerFragment 13 | 14 | class AdapterTabPager(activity: FragmentActivity?) : FragmentStateAdapter(activity!!) { 15 | override fun createFragment(position: Int): Fragment { 16 | return when (position) { 17 | 0 -> RatManagerFragment("VulkanDriver-", VK_DRIVER ,"AdrenoToolsDriver-") 18 | 1 -> RatManagerFragment("Box64-", BOX64) 19 | 2 -> RatManagerFragment("Wine-", WINE) 20 | 3 -> RatManagerFragment("DXVK-", DXVK) 21 | 4 -> RatManagerFragment("WineD3D-", WINED3D) 22 | 5 -> RatManagerFragment("VKD3D-", VKD3D) 23 | else -> throw Exception("Invalid Fragment for Position $position") 24 | } 25 | } 26 | 27 | override fun getItemCount(): Int { 28 | return 6 29 | } 30 | 31 | fun getItemName(position: Int): String { 32 | return when (position) { 33 | 0 -> "Drivers" 34 | 1 -> "Box64" 35 | 2 -> "Wine" 36 | 3 -> "DXVK" 37 | 4 -> "WineD3D" 38 | 5 -> "VKD3D" 39 | else -> "" 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/adapters/AdapterTabPagerDownloader.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.adapters 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentActivity 5 | import androidx.viewpager2.adapter.FragmentStateAdapter 6 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.BOX64 7 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.DXVK 8 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.VKD3D 9 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.VK_DRIVER 10 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.WINE 11 | import com.micewine.emu.adapters.AdapterRatPackage.Companion.WINED3D 12 | import com.micewine.emu.fragments.RatDownloaderFragment 13 | 14 | class AdapterTabPagerDownloader(activity: FragmentActivity?) : FragmentStateAdapter(activity!!) { 15 | override fun createFragment(position: Int): Fragment { 16 | return when (position) { 17 | 0 -> RatDownloaderFragment("VulkanDriver", VK_DRIVER ,"AdrenoToolsDriver-") 18 | 1 -> RatDownloaderFragment("Box64", BOX64) 19 | 2 -> RatDownloaderFragment("Wine", WINE) 20 | 3 -> RatDownloaderFragment("DXVK", DXVK) 21 | 4 -> RatDownloaderFragment("WineD3D", WINED3D) 22 | 5 -> RatDownloaderFragment("VKD3D", VKD3D) 23 | else -> throw Exception("Invalid Fragment for Position $position") 24 | } 25 | } 26 | 27 | override fun getItemCount(): Int { 28 | return 6 29 | } 30 | 31 | fun getItemName(position: Int): String { 32 | return when (position) { 33 | 0 -> "Drivers" 34 | 1 -> "Box64" 35 | 2 -> "Wine" 36 | 3 -> "DXVK" 37 | 4 -> "WineD3D" 38 | 5 -> "VKD3D" 39 | else -> "" 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/adapters/AdapterWelcomeFragments.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.adapters 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentActivity 5 | import androidx.viewpager2.adapter.FragmentStateAdapter 6 | import com.micewine.emu.R 7 | import com.micewine.emu.fragments.WelcomeFragment 8 | 9 | class AdapterWelcomeFragments(activity: FragmentActivity?) : FragmentStateAdapter(activity!!) { 10 | override fun createFragment(position: Int): Fragment { 11 | return when (position) { 12 | 0 -> WelcomeFragment(R.layout.fragment_welcome) 13 | 1 -> WelcomeFragment(R.layout.fragment_welcome_2) 14 | else -> throw Exception("Invalid Fragment for Position $position") 15 | } 16 | } 17 | 18 | override fun getItemCount(): Int { 19 | return 2 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/fragments/AboutFragment.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.fragments 2 | 3 | import android.annotation.SuppressLint 4 | import android.os.Bundle 5 | import android.view.LayoutInflater 6 | import android.view.View 7 | import android.view.ViewGroup 8 | import android.widget.TextView 9 | import androidx.fragment.app.Fragment 10 | import androidx.lifecycle.lifecycleScope 11 | import com.micewine.emu.R 12 | import com.micewine.emu.activities.MainActivity.Companion.miceWineVersion 13 | import com.micewine.emu.activities.MainActivity.Companion.ratPackagesDir 14 | import com.micewine.emu.activities.MainActivity.Companion.selectedBox64 15 | import com.micewine.emu.core.ShellLoader.runCommandWithOutput 16 | import com.micewine.emu.core.WineWrapper 17 | import com.micewine.emu.databinding.FragmentAboutBinding 18 | import kotlinx.coroutines.CoroutineScope 19 | import kotlinx.coroutines.Dispatchers 20 | import kotlinx.coroutines.launch 21 | import kotlinx.coroutines.withContext 22 | import java.io.File 23 | 24 | class AboutFragment : Fragment() { 25 | private var binding: FragmentAboutBinding? = null 26 | private var rootView: View? = null 27 | 28 | @SuppressLint("SetTextI18n") 29 | override fun onCreateView( 30 | inflater: LayoutInflater, 31 | container: ViewGroup?, 32 | savedInstanceState: Bundle? 33 | ): View? { 34 | binding = FragmentAboutBinding.inflate(inflater, container, false) 35 | rootView = binding!!.root 36 | 37 | rootView?.findViewById(R.id.ApplicationVersion)?.apply { 38 | text = miceWineVersion 39 | } 40 | 41 | rootView?.findViewById(R.id.RootfsVersion)?.apply { 42 | lifecycleScope.launch(Dispatchers.IO) { 43 | val rootFsVersionFile = File("$ratPackagesDir/rootfs-pkg-header") 44 | val newText = if (rootFsVersionFile.exists()) { 45 | rootFsVersionFile.readLines()[2].substringAfter("=").replace("(", "(git-") 46 | } else { 47 | "???" 48 | } 49 | 50 | withContext(Dispatchers.Main) { 51 | text = newText 52 | } 53 | } 54 | } 55 | 56 | return rootView 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/fragments/GeneralSettingsFragment.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.fragments 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.fragment.app.Fragment 8 | import androidx.recyclerview.widget.RecyclerView 9 | import com.micewine.emu.R 10 | import com.micewine.emu.adapters.AdapterSettings 11 | import com.micewine.emu.adapters.AdapterSettings.SettingsList 12 | 13 | class GeneralSettingsFragment : Fragment() { 14 | private val settingsList: MutableList = ArrayList() 15 | private var rootView: View? = null 16 | private var recyclerView: RecyclerView? = null 17 | 18 | override fun onCreateView( 19 | inflater: LayoutInflater, 20 | container: ViewGroup?, 21 | savedInstanceState: Bundle? 22 | ): View? { 23 | rootView = inflater.inflate(R.layout.fragment_general_settings, container, false) 24 | recyclerView = rootView?.findViewById(R.id.recyclerViewGeneralSettings) 25 | 26 | setAdapter() 27 | 28 | return rootView 29 | } 30 | 31 | private fun setAdapter() { 32 | recyclerView?.setAdapter(AdapterSettings(settingsList, requireContext())) 33 | 34 | settingsList.clear() 35 | 36 | addToAdapter(R.string.debug_settings_title, R.string.debug_settings_description, R.drawable.ic_settings_outline) 37 | addToAdapter(R.string.sound_settings_title, R.string.sound_settings_description, R.drawable.ic_sound) 38 | addToAdapter(R.string.driver_settings_title, R.string.driver_settings_description, R.drawable.ic_gpu) 39 | addToAdapter(R.string.driver_info_title, R.string.driver_info_description, R.drawable.ic_gpu) 40 | addToAdapter(R.string.env_settings_title, R.string.env_settings_description, R.drawable.ic_globe) 41 | } 42 | 43 | private fun addToAdapter(titleId: Int, descriptionId: Int, icon: Int) { 44 | settingsList.add( 45 | SettingsList(context?.getString(titleId)!!, context?.getString(descriptionId)!!, icon) 46 | ) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/fragments/InfoDialogFragment.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.fragments 2 | 3 | import android.app.AlertDialog 4 | import android.app.Dialog 5 | import android.os.Bundle 6 | import android.widget.TextView 7 | import androidx.fragment.app.DialogFragment 8 | import com.google.android.material.button.MaterialButton 9 | import com.micewine.emu.R 10 | 11 | class InfoDialogFragment(private val titleText: String, private val descriptionText: String) : DialogFragment() { 12 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 13 | val inflater = requireActivity().layoutInflater 14 | val view = inflater.inflate(R.layout.fragment_info, null) 15 | 16 | view.findViewById(R.id.titleText).text = titleText 17 | view.findViewById(R.id.descriptionText).text = descriptionText 18 | view.findViewById(R.id.okButton).apply { 19 | text = getString(android.R.string.ok) 20 | 21 | setOnClickListener { 22 | dismiss() 23 | } 24 | } 25 | 26 | return AlertDialog.Builder(requireActivity(), R.style.CustomAlertDialog).setView(view).create() 27 | } 28 | } -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/fragments/LogViewerFragment.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.fragments 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import android.widget.ScrollView 8 | import android.widget.TextView 9 | import android.widget.Toast 10 | import androidx.fragment.app.Fragment 11 | import androidx.lifecycle.Observer 12 | import com.google.android.material.button.MaterialButton 13 | import com.micewine.emu.R 14 | import com.micewine.emu.activities.EmulationActivity.Companion.sharedLogs 15 | import com.micewine.emu.adapters.AdapterGame.Companion.selectedGameName 16 | import java.io.File 17 | 18 | class LogViewerFragment : Fragment() { 19 | private var logTextView: TextView? = null 20 | private var scrollView: ScrollView? = null 21 | private var exportLogButton: MaterialButton? = null 22 | 23 | override fun onCreateView( 24 | inflater: LayoutInflater, 25 | container: ViewGroup?, 26 | savedInstanceState: Bundle? 27 | ): View? { 28 | val rootView = inflater.inflate(R.layout.fragment_log_viewer, container, false) 29 | 30 | logTextView = rootView.findViewById(R.id.logsTextView) 31 | scrollView = rootView.findViewById(R.id.scrollView) 32 | exportLogButton = rootView.findViewById(R.id.exportLogButton) 33 | 34 | val observer = Observer { out: String? -> 35 | if (out != null) { 36 | logTextView?.append("$out") 37 | scrollView?.post { scrollView?.fullScroll(ScrollView.FOCUS_DOWN) } 38 | } 39 | } 40 | 41 | sharedLogs?.logsTextHead?.observe(requireActivity(), observer) 42 | scrollView?.fullScroll(ScrollView.FOCUS_DOWN) 43 | 44 | exportLogButton?.setOnClickListener { 45 | val logFile = File("/storage/emulated/0/MiceWine/MiceWine-$selectedGameName-Log-${System.currentTimeMillis() / 1000}.txt") 46 | 47 | logFile.writeText(logTextView?.text.toString()) 48 | 49 | requireActivity().runOnUiThread { 50 | Toast.makeText(context, "Log Exported to ${logFile.path}", Toast.LENGTH_SHORT).show() 51 | } 52 | } 53 | 54 | return rootView 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/fragments/RatManagerFragment.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.fragments 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.fragment.app.Fragment 8 | import androidx.recyclerview.widget.RecyclerView 9 | import com.micewine.emu.R 10 | import com.micewine.emu.adapters.AdapterRatPackage 11 | import com.micewine.emu.core.RatPackageManager.listRatPackages 12 | 13 | class RatManagerFragment(private val prefix: String, private val type: Int, private val anotherPrefix: String = prefix) : Fragment() { 14 | private val ratList: MutableList = mutableListOf() 15 | private var rootView: View? = null 16 | private var recyclerView: RecyclerView? = null 17 | 18 | override fun onCreateView( 19 | inflater: LayoutInflater, 20 | container: ViewGroup?, 21 | savedInstanceState: Bundle? 22 | ): View? { 23 | rootView = inflater.inflate(R.layout.fragment_general_settings, container, false) 24 | recyclerView = rootView?.findViewById(R.id.recyclerViewGeneralSettings) 25 | 26 | setAdapter() 27 | 28 | return rootView 29 | } 30 | 31 | private fun setAdapter() { 32 | recyclerView?.setAdapter( 33 | AdapterRatPackage(ratList, requireActivity()) 34 | ) 35 | 36 | ratList.clear() 37 | 38 | listRatPackages(prefix, anotherPrefix).forEach { 39 | addToAdapter(it.name!!, it.version!!, it.folderName!!, it.isUserInstalled!!) 40 | } 41 | } 42 | 43 | private fun addToAdapter(title: String, description: String, driverFolderId: String, canDelete: Boolean) { 44 | ratList.add( 45 | AdapterRatPackage.Item(title, description, driverFolderId, type, canDelete) 46 | ) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/fragments/WelcomeFragment.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.fragments 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.fragment.app.Fragment 8 | 9 | class WelcomeFragment(private val fragment: Int) : Fragment() { 10 | override fun onCreateView( 11 | inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? 12 | ): View? { 13 | val rootView = inflater.inflate(fragment, container, false) 14 | 15 | return rootView 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/input/InputStub.java: -------------------------------------------------------------------------------- 1 | // Copyright 2016 The Chromium Authors 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | package com.micewine.emu.input; 6 | 7 | /** 8 | * A set of functions to send client users' activities to remote host machine. This interface 9 | * represents low level functions without relationships with Android system. Consumers can use 10 | * {@link InputEventSender} to avoid conversions between Android classes and JNI types. The 11 | * implementations of this interface are not required to be thread-safe. All these functions should 12 | * be called from Android UI thread. 13 | */ 14 | public interface InputStub { 15 | // These constants must match those in the generated struct protocol::MouseEvent_MouseButton. 16 | int BUTTON_UNDEFINED = 0; 17 | int BUTTON_LEFT = 1; 18 | int BUTTON_MIDDLE = 2; 19 | int BUTTON_RIGHT = 3; 20 | int BUTTON_SCROLL = 4; 21 | 22 | /** Sends a mouse event. */ 23 | void sendMouseEvent(float x, float y, int whichButton, boolean buttonDown, boolean relative); 24 | 25 | /** Sends a mouse wheel event. */ 26 | void sendMouseWheelEvent(float deltaX, float deltaY); 27 | 28 | /** 29 | * Sends a key event, and returns false if both scanCode and keyCode are not able to be 30 | * converted to a known usb key code. Nothing will be sent to remote host, if this function 31 | * returns false. 32 | */ 33 | boolean sendKeyEvent(int scanCode, int keyCode, boolean keyDown); 34 | 35 | /** 36 | * Sends a string literal. This function is useful to handle outputs from Android input 37 | * methods. 38 | */ 39 | void sendTextEvent(byte[] utf8Bytes); 40 | 41 | /** Sends an event, not flushing connection. */ 42 | void sendTouchEvent(int action, int pointerId, int x, int y); 43 | 44 | void sendStylusEvent(float x, float y, int pressure, int tiltX, int tiltY, int orientation, int buttons, boolean eraser, boolean mouseMode); 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/input/RenderData.java: -------------------------------------------------------------------------------- 1 | // Copyright 2013 The Chromium Authors 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | package com.micewine.emu.input; 6 | 7 | import android.graphics.PointF; 8 | 9 | /** 10 | * This class stores UI configuration that will be used when rendering the remote desktop. 11 | */ 12 | public class RenderData { 13 | public PointF scale = new PointF(); 14 | 15 | public int screenWidth; 16 | public int screenHeight; 17 | public int imageWidth; 18 | public int imageHeight; 19 | 20 | /** 21 | * Specifies the position, in image coordinates, at which the cursor image will be drawn. 22 | * This will normally be at the location of the most recently injected motion event. 23 | */ 24 | private final PointF mCursorPosition = new PointF(); 25 | 26 | /** 27 | * Returns the position of the rendered cursor. 28 | * 29 | * @return A point representing the current position. 30 | */ 31 | public PointF getCursorPosition() { 32 | return new PointF(mCursorPosition.x, mCursorPosition.y); 33 | } 34 | 35 | /** 36 | * Sets the position of the cursor which is used for rendering. 37 | * 38 | * @param newX The new value of the x coordinate. 39 | * @param newY The new value of the y coordinate 40 | * @return True if the cursor position has changed. 41 | */ 42 | public boolean setCursorPosition(float newX, float newY) { 43 | boolean cursorMoved = false; 44 | if (newX != mCursorPosition.x) { 45 | mCursorPosition.x = newX; 46 | cursorMoved = true; 47 | } 48 | if (newY != mCursorPosition.y) { 49 | mCursorPosition.y = newY; 50 | cursorMoved = true; 51 | } 52 | 53 | return cursorMoved; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/java/com/micewine/emu/utils/DriveUtils.kt: -------------------------------------------------------------------------------- 1 | package com.micewine.emu.utils 2 | 3 | import com.micewine.emu.activities.MainActivity 4 | import java.io.File 5 | 6 | object DriveUtils { 7 | class DriveInfo(val letter: String, val source: String, private val relativePath: String) { 8 | private val drivesBaseDirectory = MainActivity.fileManagerDefaultDir + UNIX_SEPARATOR 9 | 10 | fun getWindowsPath(absolute: Boolean = false): String { 11 | var path = "$letter:$WINDOWS_SEPARATOR" + relativePath.replace( 12 | UNIX_SEPARATOR, WINDOWS_SEPARATOR) 13 | if (absolute) { 14 | path = drivesBaseDirectory.replace(UNIX_SEPARATOR, WINDOWS_SEPARATOR) + path 15 | } 16 | return path 17 | } 18 | 19 | fun getUnixPath(): String { 20 | val relativePath = if (relativePath.endsWith(UNIX_SEPARATOR)) { 21 | relativePath.substring(0, relativePath.lastIndexOf(UNIX_SEPARATOR)) 22 | } else { 23 | relativePath.substring(0, relativePath.lastIndexOf(UNIX_SEPARATOR)) 24 | } 25 | return "$drivesBaseDirectory$letter:$UNIX_SEPARATOR$relativePath" 26 | } 27 | } 28 | 29 | private const val UNIX_SEPARATOR = "/" 30 | private const val WINDOWS_SEPARATOR = "\\" 31 | 32 | private val drivesBaseDirectory = MainActivity.fileManagerDefaultDir + UNIX_SEPARATOR 33 | 34 | fun parseUnixPath(path: String): DriveInfo? { 35 | val drives = File(drivesBaseDirectory).listFiles() 36 | drives?.mapIndexed { _, file -> 37 | if (file.isDirectory && path.startsWith(file.absolutePath)) { 38 | val symlinkTo = file.canonicalPath 39 | val letter = file.absolutePath.replace(drivesBaseDirectory, "")[0].toString() 40 | val relativePath = path.replace(drivesBaseDirectory, "").replace("$letter:$UNIX_SEPARATOR", "") 41 | return DriveInfo(letter, symlinkTo, relativePath) 42 | } 43 | } 44 | return null 45 | } 46 | 47 | fun parseWindowsPath(path: String): DriveInfo? { 48 | val absPath = drivesBaseDirectory + path.replace(WINDOWS_SEPARATOR, UNIX_SEPARATOR) 49 | return parseUnixPath(absPath) 50 | } 51 | } -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/a_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/b_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/dpad_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/dpad_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/dpad_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/dpad_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_back.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_box64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_box64.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_clear.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_display.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_download.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_edit.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_globe.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_gpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_gpu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_info_outline.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_joystick.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_keyboard.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_log.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_more_vert.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_next.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_rat_package_grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_rat_package_grayscale.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_settings_outline.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_sound.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/ic_wine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/ic_wine.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/l_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/l_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/l_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/l_thumb.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/l_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/lb_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable-night/logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/lt_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/menu_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/popup_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/r_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/r_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/r_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/r_thumb.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/r_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/rb_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/rt_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/select_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/start_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/x_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-night/y_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/a_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/b_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/default_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/default_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/dpad_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dpad_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dpad_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dpad_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_box64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_box64.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_clear.xml: -------------------------------------------------------------------------------- 1 | 12 | 17 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_display.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_download.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_folder_colored.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_globe.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_gpu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_gpu.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_home.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info_outline.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_joystick.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_keyboard.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_log.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_more_vert.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_next.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_rat_package.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_rat_package.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_rat_package_grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_rat_package_grayscale.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_outline.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_shortcut.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_sound.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_wine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/ic_wine.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/icon_grayscale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/icon_grayscale.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/l_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/l_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/l_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/l_thumb.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/l_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/lb_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/drawable/logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/lt_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/menu_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/popup_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/r_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/r_left.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 22 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/r_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/r_thumb.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/r_up.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rb_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rt_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/select_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/start_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 21 | 22 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/top_rounded_shape.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 7 | 8 | 9 | 14 | 15 | 16 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/x_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/y_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/font/jetbrains_mono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/font/jetbrains_mono.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/josefin_sans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/font/josefin_sans.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/quicksand.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KreitinnSoftware/MiceWine-Application/9519194549391799613fcaee1b9dd31483815258/app/src/main/res/font/quicksand.ttf -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_controller_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 19 | 20 | 21 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_general_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 15 | 16 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 17 | 18 | 19 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_rat_downloader.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 15 | 16 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 46 | 47 | 48 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_rat_manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 15 | 16 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 46 | 47 | 48 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_virtual_controller_mapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 19 | 20 | 21 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_welcome.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 17 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_game_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 16 | 17 | 24 | 25 | 26 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_preset_item.xml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 15 | 16 | 20 | 21 | 22 | 27 | 28 | 38 | 39 | 40 | 41 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /app/src/main/res/layout/adapter_settings_controller_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 16 | 17 | 24 | 25 | 26 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_ask_install_rat.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 19 | 20 | 21 | 28 | 29 | 37 | 38 | 39 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_delete_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 19 | 20 | 21 | 26 | 27 | 34 | 35 | 36 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_driver_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 18 | 23 | 24 | 25 | 28 | 29 | 33 | 34 | 35 | 40 | 41 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_env_vars_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 16 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_file_manager.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 23 | 24 | 25 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_general_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 22 | 23 | 24 | 32 | 33 | 34 | 35 | 36 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_log_viewer.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 15 | 16 | 27 | 28 | 29 | 30 | 31 | 37 | 38 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_rename_game_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 19 | 20 | 21 | 29 | 30 | 31 | 37 | 38 | 44 | 45 | 46 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_settings_model.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_setup.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 18 | 19 | 20 | 26 | 27 | 28 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_welcome.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 18 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_welcome_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 17 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/menu/bottom_nav_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 16 | 17 | 23 | 24 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/menu/file_list_context_menu_default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/menu/file_list_context_menu_exe.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 18 | 23 | 24 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/menu/file_list_context_menu_package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/menu/game_list_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/menu/game_list_context_menu_lite.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/preset_more_options_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 20 | 21 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/menu/toolbar_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/menu/virtual_controllers_drawer.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | 17 | 18 | 24 | 25 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/menu/wine_prefix_more_options_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | #FFFFFF 13 | 14 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Reply 5 | Reply to all 6 | 7 | 8 | 9 | reply 10 | reply_all 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #000000 4 | #0d0d0d 5 | #474747 6 | #FFFFFF 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 14 | 15 | 18 | 19 | 24 | 25 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | #000000 13 | 14 | 29 | 30 |