diff --git a/.ci/scripts/android/build.sh b/.ci/scripts/android/build.sh index 885ebfee4c..935919b6de 100755 --- a/.ci/scripts/android/build.sh +++ b/.ci/scripts/android/build.sh @@ -7,8 +7,6 @@ export NDK_CCACHE="$(which ccache)" ccache -s -git submodule update --init --recursive - BUILD_FLAVOR="mainline" BUILD_TYPE="release" diff --git a/.ci/scripts/clang/docker.sh b/.ci/scripts/clang/docker.sh index d59f672087..57fbb97544 100755 --- a/.ci/scripts/clang/docker.sh +++ b/.ci/scripts/clang/docker.sh @@ -7,9 +7,7 @@ # Exit on error, rather than continuing with the rest of the script. set -e -ccache -s - -git submodule update --init --recursive +ccache -sv mkdir build || true && cd build cmake .. \ diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh index 9854429257..82432bd835 100755 --- a/.ci/scripts/linux/docker.sh +++ b/.ci/scripts/linux/docker.sh @@ -6,9 +6,7 @@ # Exit on error, rather than continuing with the rest of the script. set -e -ccache -s - -git submodule update --init --recursive +ccache -sv mkdir build || true && cd build cmake .. \ @@ -54,9 +52,9 @@ DESTDIR="$PWD/AppDir" ninja install rm -vf AppDir/usr/bin/suyu-cmd AppDir/usr/bin/suyu-tester # Download tools needed to build an AppImage -wget -nc https://git.suyu.dev/suyu/ext-linux-bin/raw/branch/main/appimage/deploy-linux.sh -wget -nc https://git.suyu.dev/suyu/ext-linux-bin/raw/branch/main/appimage/exec-x86_64.so -wget -nc https://git.suyu.dev/suyu/AppImageKit-checkrt/raw/branch/gh-workflow/AppRun +wget -nc https://gitlab.com/suyu-emu/ext-linux-bin/-/raw/main/appimage/deploy-linux.sh +wget -nc https://gitlab.com/suyu-emu/ext-linux-bin/-/raw/main/appimage/exec-x86_64.so +wget -nc https://gitlab.com/suyu-emu/AppImageKit-checkrt/-/raw/old/AppRun.sh # Set executable bit chmod 755 \ diff --git a/.ci/scripts/windows/docker.sh b/.ci/scripts/windows/docker.sh index ba40e5dbbb..73e000324c 100755 --- a/.ci/scripts/windows/docker.sh +++ b/.ci/scripts/windows/docker.sh @@ -8,9 +8,7 @@ set -e #cd /suyu -ccache -s - -git submodule update --init --recursive +ccache -sv rm -rf build mkdir -p build && cd build diff --git a/.forgejo/ISSUE_TEMPLATE/config.yml b/.forgejo/ISSUE_TEMPLATE/config.yml index 1a365db1a9..0be63fdb7a 100644 --- a/.forgejo/ISSUE_TEMPLATE/config.yml +++ b/.forgejo/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - - name: suyu chat - url: https://chat.suyu.dev/ - about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu chat linked here. Piracy is not allowed. + - name: suyu Discord + url: https://discord.com/invite/suyu + about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu Discord linked here. Piracy is not allowed. diff --git a/.forgejo/workflows/codespell.yml b/.forgejo/workflows/codespell.yml index 951e1583ef..d711137d3a 100644 --- a/.forgejo/workflows/codespell.yml +++ b/.forgejo/workflows/codespell.yml @@ -20,7 +20,7 @@ permissions: {} jobs: codespell: name: Check for spelling errors - runs-on: docker + runs-on: verify steps: - uses: https://code.forgejo.org/actions/checkout@v3 with: diff --git a/.forgejo/workflows/reuse.yml b/.forgejo/workflows/reuse.yml index ba2fe448b5..39bbbdf2c6 100644 --- a/.forgejo/workflows/reuse.yml +++ b/.forgejo/workflows/reuse.yml @@ -30,7 +30,7 @@ jobs: reuse: name: Check REUSE Specification - runs-on: docker + runs-on: verify if: ${{ github.repository == 'suyu/suyu' }} steps: - uses: https://code.forgejo.org/actions/checkout@v3 diff --git a/.forgejo/workflows/verify.yml b/.forgejo/workflows/verify.yml index aebb79e616..1292ddcfa9 100644 --- a/.forgejo/workflows/verify.yml +++ b/.forgejo/workflows/verify.yml @@ -8,7 +8,7 @@ name: 'suyu verify' on: pull_request: - # branches: [ "dev" ] + branches: [ "dev" ] paths: - 'src/**' - 'CMakeModules/**' @@ -19,7 +19,7 @@ on: # paths-ignore: # - 'src/android/**' push: - # branches: [ "dev" ] + branches: [ "dev" ] paths: - 'src/**' - 'CMakeModules/**' @@ -38,7 +38,7 @@ env: jobs: format: name: 'Verify Format' - runs-on: docker + runs-on: ubuntu-latest container: fijxu/build-environments:linux-clang-format steps: - uses: https://code.forgejo.org/actions/checkout@v3 @@ -54,7 +54,7 @@ jobs: build-linux: name: 'test build' needs: format - runs-on: docker + runs-on: ubuntu-latest strategy: fail-fast: false matrix: @@ -175,7 +175,7 @@ jobs: # name: ${{ env.INDIVIDUAL_EXE }} # path: ${{ env.INDIVIDUAL_EXE }} android: - runs-on: docker + runs-on: ubuntu-latest container: fijxu/build-environments:android needs: format steps: diff --git a/.gitea/ISSUE_TEMPLATE/config.yml b/.gitea/ISSUE_TEMPLATE/config.yml index 1a365db1a9..0be63fdb7a 100644 --- a/.gitea/ISSUE_TEMPLATE/config.yml +++ b/.gitea/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - - name: suyu chat - url: https://chat.suyu.dev/ - about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu chat linked here. Piracy is not allowed. + - name: suyu Discord + url: https://discord.com/invite/suyu + about: If you are experiencing an issue with suyu, and you need tech support, or if you have a general question, try asking in the official suyu Discord linked here. Piracy is not allowed. diff --git a/.reuse/dep5 b/.reuse/dep5 index 9779726e3f..baf1354bf6 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -5,13 +5,10 @@ Comment: It is best to use this file to record copyright information about Files: dist/english_plurals/* dist/icons/controller/*.png dist/icons/overlay/*.png - dist/icons/overlay_dark/*.png dist/languages/* dist/qt_themes/*/icons/48x48/sd_card.png dist/qt_themes/*/icons/index.theme dist/qt_themes/default/style.qss - dist/qt_themes/*/icons.qrc - dist/qt_themes/*/style.qrc Copyright: yuzu Emulator Project suyu Emulator Project License: GPL-2.0-or-later @@ -25,7 +22,8 @@ Copyright: suyu Emulator Project License: GPL-2.0-or-later Files: dist/qt_themes/qdarkstyle*/LICENSE.* - dist/qt_themes/qdarkstyle*/dark.qss + dist/qt_themes/qdarkstyle*/style.qrc + dist/qt_themes/qdarkstyle*/style.qss Copyright: 2013 Colin Duquesnoy 2019 Daniel Cosmo Pizetta License: MIT @@ -35,28 +33,28 @@ Copyright: 2013 Colin Duquesnoy 2019 Daniel Cosmo Pizetta License: CC-BY-4.0 -Files: dist/qt_themes/monochrome/icons/256x256/plus_folder.png - dist/qt_themes/monochrome/icons/48x48/bad_folder.png - dist/qt_themes/monochrome/icons/48x48/chip.png - dist/qt_themes/monochrome/icons/48x48/folder.png - dist/qt_themes/monochrome/icons/48x48/star.png - dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png - dist/qt_themes/monochrome_dark/icons/48x48/chip.png - dist/qt_themes/monochrome_dark/icons/48x48/folder.png - dist/qt_themes/monochrome_dark/icons/48x48/star.png - dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png +Files: dist/qt_themes/default/icons/256x256/plus_folder.png + dist/qt_themes/default/icons/48x48/bad_folder.png + dist/qt_themes/default/icons/48x48/chip.png + dist/qt_themes/default/icons/48x48/folder.png + dist/qt_themes/default/icons/48x48/star.png + dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png + dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png + dist/qt_themes/qdarkstyle/icons/48x48/chip.png + dist/qt_themes/qdarkstyle/icons/48x48/folder.png + dist/qt_themes/qdarkstyle/icons/48x48/star.png Copyright: Refactoring UI Inc. License: MIT Comment: https://github.com/tailwindlabs/heroicons -Files: dist/qt_themes/default/icons/16x16/lock.png - dist/qt_themes/default/icons/256x256/plus_folder.png - dist/qt_themes/default/icons/48x48/bad_folder.png - dist/qt_themes/default/icons/48x48/chip.png - dist/qt_themes/default/icons/48x48/folder.png - dist/qt_themes/default_dark/icons/16x16/lock.png - dist/qt_themes/default/icons/16x16/info.png - dist/qt_themes/default/icons/16x16/sync.png +Files: dist/qt_themes/colorful/icons/16x16/lock.png + dist/qt_themes/colorful/icons/256x256/plus_folder.png + dist/qt_themes/colorful/icons/48x48/bad_folder.png + dist/qt_themes/colorful/icons/48x48/chip.png + dist/qt_themes/colorful/icons/48x48/folder.png + dist/qt_themes/colorful_dark/icons/16x16/lock.png + dist/qt_themes/colorful/icons/16x16/info.png + dist/qt_themes/colorful/icons/16x16/sync.png Copyright: Icons8 License: MIT Comment: https://github.com/icons8/flat-color-icons @@ -72,15 +70,15 @@ Files: dist/qt_themes/*/icons/48x48/no_avatar.png Copyright: Ionic (http://ionic.io/) License: MIT -Files: dist/qt_themes/default/icons/48x48/star.png - dist/qt_themes/default/icons/16x16/checked.png - dist/qt_themes/default/icons/16x16/failed.png +Files: dist/qt_themes/colorful/icons/48x48/star.png + dist/qt_themes/colorful/icons/16x16/checked.png + dist/qt_themes/colorful/icons/16x16/failed.png Copyright: SVG Repo License: CC0-1.0 Files: dist/qt_themes/*/icons/16x16/view-refresh.png - dist/qt_themes/monochrome/icons/16x16/lock.png - dist/qt_themes/monochrome_dark/icons/16x16/lock.png + dist/qt_themes/default/icons/16x16/lock.png + dist/qt_themes/qdarkstyle/icons/16x16/lock.png Copyright: Google, Inc. License: Apache-2.0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 67bdf6afe9..cbeb2ee689 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -279,6 +279,8 @@ endif() # Configure C++ standard # =========================== +# boost asio's concept usage doesn't play nicely with some compilers yet. +add_definitions(-DBOOST_ASIO_DISABLE_CONCEPTS) if (MSVC) add_compile_options($<$:/std:c++20>) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1ff49d5b1f..b2bb3f0c76 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,5 +6,5 @@ SPDX-License-Identifier: GPL-2.0-or-later Please check out the - * [Contributors's guide](https://git.suyu.dev/suyu/suyu/wiki/Contributing). - * [Merge request guidelines](https://git.suyu.dev/suyu/suyu/wiki/Typical-Git-Workflow#once-your-pull-request-is-ready-to-be-merged) + * [Contributors's guide](https://gitlab.com/suyu-emu/suyu/-/wikis/Contributing). + * [Merge request guidelines](https://gitlab.com/suyu-emu/suyu/-/wikis/Merge-requests) diff --git a/MIGRATION.md b/MIGRATION.md deleted file mode 100644 index 3963b5004f..0000000000 --- a/MIGRATION.md +++ /dev/null @@ -1,25 +0,0 @@ - -# Migrating from yuzu - -When coming from yuzu, the migration is as easy as renaming some directories. - -## Windows - -Use the run dialog to go to `%APPDATA%` or manually go to `C:\Users\{USERNAME}\AppData\Roaming` (you may have to enable hidden files) and simply rename the `yuzu` directories and simply rename those to `suyu`. - -## Unix (macOS/Linux) -Similarly, you can simply rename the folders `~/.local/share/yuzu` and `~/.config/yuzu` to `suyu`, either via a file manager or with the following commands: -```sh - $ mv ~/.local/share/yuzu ~/.local/share/suyu - $ mv ~/.config/yuzu ~/.config/suyu -``` -There is also `~/.cache/yuzu`, which you can safely delete. Suyu will build a fresh cache in its own directory. - -### Linux -Depending on your setup, you may want to substitute those base paths for `$XDG_DATA_HOME` and `$XDG_CONFIG_HOME` respectively. - -## Android -TBD \ No newline at end of file diff --git a/README.md b/README.md index 6211f5f1c2..703b475e78 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,8 @@ SPDX-License-Identifier: GPL-3.0-or-later **Note**: We do not support or condone piracy in any form. In order to use suyu, you'll need keys from your real Switch system, and games which you have legally obtained and paid for. We do not intend to make money or profit from this project. -We're in need of developers. Please join our chat below or DM a dev if you want to contribute! -This repo is currently based on Yuzu EA 4176 but the code will be rewritten for legal and performance reasons. - -Our only website is suyu.dev so please be cautious when using other sites offering builds/downloads. +We're in need of developers. Please join our Discord server below if you want to contribute! +This repo is based on Yuzu EA 4176.
@@ -21,15 +19,13 @@ Our only website is suyu.dev so please be cautious when using other sites offeri
-

suyu was the continuation of the world's most popular, open-source Nintendo Switch emulator, yuzu, but is now something more. +

suyu is the continuation of the world's most popular, open-source, Nintendo Switch emulator, yuzu.
-It is written in C++ with portability in mind, and we actively provide builds for Windows, Linux and Android, iOS may come later. - +It is written in C++ with portability in mind, and we're actively working on builds for Windows, Linux and Android.

- Chat | - Reddit | + Discord | Status | Development | Downloads | @@ -42,10 +38,6 @@ It is written in C++ with portability in mind, and we actively provide builds fo ## Hardware Requirements [Click here to see the Hardware Requirements](https://git.suyu.dev/suyu/suyu/wiki/Hardware-Requirements) -## Migrating from yuzu - -See [MIGRATION.md](MIGRATION.md). - ## Status We currently have builds over at the [Releases](https://git.suyu.dev/suyu/suyu/releases) page. @@ -56,10 +48,10 @@ We currently have builds over at the [Releases](https://git.suyu.dev/suyu/suyu/r This project is completely free and open source, and anyone can contribute to help improve suyu. -Most of the development happens on Git. For development discussion, please join us in our [Chat](https://chat.suyu.dev) or [Subreddit](reddit.com/r/suyu/), you can also contact a developer. +Most of the development happens on GitLab. For development discussion, please join us on [Discord](https://discord.gg/suyu). If you want to contribute, please take a look at the [Contributor's Guide](https://git.suyu.dev/suyu/suyu/wiki/Contributing) and [Developer Information](https://git.suyu.dev/suyu/suyu/wiki/Developer-Information). -You can also contact any of the developers on the Chat to learn more about the current state of suyu. +You can also contact any of the developers on Discord to learn more about the current state of suyu. ## Downloads @@ -67,27 +59,25 @@ You can also contact any of the developers on the Chat to learn more about the c * __Linux__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __macOS__: [Releases](https://git.suyu.dev/suyu/suyu/releases) * __Android__: [Releases](https://git.suyu.dev/suyu/suyu/releases) -###### We currently do not provide builds for iOS, however if you would like, you could try the experimental [Sudachi Emulator](https://sudachi.emuplace.app/) and it's bigger project: [Folium](https://apps.apple.com/us/app/folium/id6498623389). -If you want daily builds then [Click here](https://git.suyu.dev/suyu/suyu/actions). +If you want daily builds then [Click here](https://git.suyu.dev/suyu/suyu/actions) If you don't know how to download the daily builds then [Click here](https://git.suyu.dev/suyu/suyu/raw/branch/dev/img/daily-builds.png) +Right now we only have daily builds for Linux and Android. -We have official builds [here.](https://git.suyu.dev/suyu/suyu/releases)
If any website or person is claiming to have a build for suyu, take that with a grain of salt and let us know. - -For Multiplayer, we recommend using the "Yuzu Online" patch, install instructions can be found on Reddit and their Discord. +We have official builds [here.](https://git.suyu.dev/suyu/suyu/releases) If any website or person is claiming to have a build for suyu, take that with a grain of salt. ## Building * __Windows__: [Windows Build](https://git.suyu.dev/suyu/suyu/wiki/Building-For-Windows) * __Linux__: [Linux Build](https://git.suyu.dev/suyu/suyu/wiki/Building-For-Linux) * __Android__: [Android Build](https://git.suyu.dev/suyu/suyu/wiki/Building-For-Android) -* __MacOS__: [MacOS Build](https://git.suyu.dev/suyu/suyu/wiki/Building-for-macOS) +* __macOS__: [macOS Build](https://git.suyu.dev/suyu/suyu/wiki/Building-for-macOS) ## Support -If you have any questions, don't hesitate to ask us in our [Chat](https://chat.suyu.dev) or [Subreddit](https://www.reddit.com/r/suyu/), make an issue or contact a developer. We don't bite! +If you have any questions, don't hesitate to ask us on [Discord](https://discord.gg/suyu). We don't bite! ## License diff --git a/dist/icons/overlay_dark/arrow_left.png b/dist/icons/overlay/arrow_left_dark.png similarity index 100% rename from dist/icons/overlay_dark/arrow_left.png rename to dist/icons/overlay/arrow_left_dark.png diff --git a/dist/icons/overlay_dark/arrow_right.png b/dist/icons/overlay/arrow_right_dark.png similarity index 100% rename from dist/icons/overlay_dark/arrow_right.png rename to dist/icons/overlay/arrow_right_dark.png diff --git a/dist/icons/overlay_dark/button_A.png b/dist/icons/overlay/button_A_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_A.png rename to dist/icons/overlay/button_A_dark.png diff --git a/dist/icons/overlay_dark/button_B.png b/dist/icons/overlay/button_B_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_B.png rename to dist/icons/overlay/button_B_dark.png diff --git a/dist/icons/overlay_dark/button_L.png b/dist/icons/overlay/button_L_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_L.png rename to dist/icons/overlay/button_L_dark.png diff --git a/dist/icons/overlay_dark/button_R.png b/dist/icons/overlay/button_R_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_R.png rename to dist/icons/overlay/button_R_dark.png diff --git a/dist/icons/overlay_dark/button_X.png b/dist/icons/overlay/button_X_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_X.png rename to dist/icons/overlay/button_X_dark.png diff --git a/dist/icons/overlay_dark/button_Y.png b/dist/icons/overlay/button_Y_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_Y.png rename to dist/icons/overlay/button_Y_dark.png diff --git a/dist/icons/overlay_dark/button_minus.png b/dist/icons/overlay/button_minus_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_minus.png rename to dist/icons/overlay/button_minus_dark.png diff --git a/dist/icons/overlay_dark/button_plus.png b/dist/icons/overlay/button_plus_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_plus.png rename to dist/icons/overlay/button_plus_dark.png diff --git a/dist/icons/overlay_dark/button_press_stick.png b/dist/icons/overlay/button_press_stick_dark.png similarity index 100% rename from dist/icons/overlay_dark/button_press_stick.png rename to dist/icons/overlay/button_press_stick_dark.png diff --git a/dist/icons/overlay_dark/controller_dual_joycon.png b/dist/icons/overlay/controller_dual_joycon_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_dual_joycon.png rename to dist/icons/overlay/controller_dual_joycon_dark.png diff --git a/dist/icons/overlay_dark/controller_handheld.png b/dist/icons/overlay/controller_handheld_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_handheld.png rename to dist/icons/overlay/controller_handheld_dark.png diff --git a/dist/icons/overlay_dark/controller_pro.png b/dist/icons/overlay/controller_pro_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_pro.png rename to dist/icons/overlay/controller_pro_dark.png diff --git a/dist/icons/overlay_dark/controller_single_joycon_left_a.png b/dist/icons/overlay/controller_single_joycon_left_a_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_single_joycon_left_a.png rename to dist/icons/overlay/controller_single_joycon_left_a_dark.png diff --git a/dist/icons/overlay_dark/controller_single_joycon_left_b.png b/dist/icons/overlay/controller_single_joycon_left_b_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_single_joycon_left_b.png rename to dist/icons/overlay/controller_single_joycon_left_b_dark.png diff --git a/dist/icons/overlay_dark/controller_single_joycon_left.png b/dist/icons/overlay/controller_single_joycon_left_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_single_joycon_left.png rename to dist/icons/overlay/controller_single_joycon_left_dark.png diff --git a/dist/icons/overlay_dark/controller_single_joycon_left_x.png b/dist/icons/overlay/controller_single_joycon_left_x_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_single_joycon_left_x.png rename to dist/icons/overlay/controller_single_joycon_left_x_dark.png diff --git a/dist/icons/overlay_dark/controller_single_joycon_left_y.png b/dist/icons/overlay/controller_single_joycon_left_y_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_single_joycon_left_y.png rename to dist/icons/overlay/controller_single_joycon_left_y_dark.png diff --git a/dist/icons/overlay_dark/controller_single_joycon_right.png b/dist/icons/overlay/controller_single_joycon_right_dark.png similarity index 100% rename from dist/icons/overlay_dark/controller_single_joycon_right.png rename to dist/icons/overlay/controller_single_joycon_right_dark.png diff --git a/dist/icons/overlay_dark/osk_button_B.png b/dist/icons/overlay/osk_button_B_dark.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_B.png rename to dist/icons/overlay/osk_button_B_dark.png diff --git a/dist/icons/overlay_dark/osk_button_B_disabled.png b/dist/icons/overlay/osk_button_B_dark_disabled.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_B_disabled.png rename to dist/icons/overlay/osk_button_B_dark_disabled.png diff --git a/dist/icons/overlay_dark/osk_button_Y.png b/dist/icons/overlay/osk_button_Y_dark.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_Y.png rename to dist/icons/overlay/osk_button_Y_dark.png diff --git a/dist/icons/overlay_dark/osk_button_Y_disabled.png b/dist/icons/overlay/osk_button_Y_dark_disabled.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_Y_disabled.png rename to dist/icons/overlay/osk_button_Y_dark_disabled.png diff --git a/dist/icons/overlay/osk_button_backspace.png b/dist/icons/overlay/osk_button_backspace.png index b212efbbc3..b7dc332282 100644 Binary files a/dist/icons/overlay/osk_button_backspace.png and b/dist/icons/overlay/osk_button_backspace.png differ diff --git a/dist/icons/overlay_dark/osk_button_backspace.png b/dist/icons/overlay/osk_button_backspace_dark.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_backspace.png rename to dist/icons/overlay/osk_button_backspace_dark.png diff --git a/dist/icons/overlay_dark/osk_button_plus.png b/dist/icons/overlay/osk_button_plus_dark.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_plus.png rename to dist/icons/overlay/osk_button_plus_dark.png diff --git a/dist/icons/overlay_dark/osk_button_plus_disabled.png b/dist/icons/overlay/osk_button_plus_dark_disabled.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_plus_disabled.png rename to dist/icons/overlay/osk_button_plus_dark_disabled.png diff --git a/dist/icons/overlay_dark/osk_button_shift.png b/dist/icons/overlay/osk_button_shift_dark.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_shift.png rename to dist/icons/overlay/osk_button_shift_dark.png diff --git a/dist/icons/overlay_dark/osk_button_shift_on.png b/dist/icons/overlay/osk_button_shift_on_dark.png similarity index 100% rename from dist/icons/overlay_dark/osk_button_shift_on.png rename to dist/icons/overlay/osk_button_shift_on_dark.png diff --git a/dist/icons/overlay/overlay.qrc b/dist/icons/overlay/overlay.qrc index 2319e6dd28..8d7833aca0 100644 --- a/dist/icons/overlay/overlay.qrc +++ b/dist/icons/overlay/overlay.qrc @@ -6,66 +6,64 @@ SPDX-License-Identifier: GPL-2.0-or-later arrow_left.png + arrow_left_dark.png arrow_right.png + arrow_right_dark.png button_minus.png + button_minus_dark.png button_plus.png + button_plus_dark.png button_A.png + button_A_dark.png button_B.png + button_B_dark.png button_X.png + button_X_dark.png button_Y.png + button_Y_dark.png button_L.png + button_L_dark.png button_R.png + button_R_dark.png button_press_stick.png + button_press_stick_dark.png osk_button_B.png osk_button_B_disabled.png + osk_button_B_dark.png + osk_button_B_dark_disabled.png osk_button_Y.png osk_button_Y_disabled.png + osk_button_Y_dark.png + osk_button_Y_dark_disabled.png osk_button_backspace.png + osk_button_backspace_dark.png osk_button_plus.png osk_button_plus_disabled.png + osk_button_plus_dark.png + osk_button_plus_dark_disabled.png osk_button_shift.png + osk_button_shift_dark.png osk_button_shift_on.png + osk_button_shift_on_dark.png osk_button_shift_lock_on.png osk_button_shift_lock_off.png controller_dual_joycon.png + controller_dual_joycon_dark.png controller_pro.png + controller_pro_dark.png controller_handheld.png + controller_handheld_dark.png controller_single_joycon_left.png + controller_single_joycon_left_dark.png controller_single_joycon_right.png + controller_single_joycon_right_dark.png controller_single_joycon_left_a.png + controller_single_joycon_left_a_dark.png controller_single_joycon_left_b.png + controller_single_joycon_left_b_dark.png controller_single_joycon_left_x.png + controller_single_joycon_left_x_dark.png controller_single_joycon_left_y.png - - - ../overlay_dark/arrow_left.png - ../overlay_dark/arrow_right.png - ../overlay_dark/button_minus.png - ../overlay_dark/button_plus.png - ../overlay_dark/button_A.png - ../overlay_dark/button_B.png - ../overlay_dark/button_X.png - ../overlay_dark/button_Y.png - ../overlay_dark/button_L.png - ../overlay_dark/button_R.png - ../overlay_dark/button_press_stick.png - ../overlay_dark/osk_button_B.png - ../overlay_dark/osk_button_B.png - ../overlay_dark/osk_button_Y.png - ../overlay_dark/osk_button_Y.png - ../overlay_dark/osk_button_backspace.png - ../overlay_dark/osk_button_plus.png - ../overlay_dark/osk_button_plus.png - ../overlay_dark/osk_button_shift.png - ../overlay_dark/osk_button_shift_on.png - ../overlay_dark/controller_dual_joycon.png - ../overlay_dark/controller_pro.png - ../overlay_dark/controller_handheld.png - ../overlay_dark/controller_single_joycon_left.png - ../overlay_dark/controller_single_joycon_right.png - ../overlay_dark/controller_single_joycon_left_a.png - ../overlay_dark/controller_single_joycon_left_b.png - ../overlay_dark/controller_single_joycon_left_x.png - ../overlay_dark/controller_single_joycon_left_y.png + controller_single_joycon_left_y_dark.png diff --git a/dist/languages/ar.ts b/dist/languages/ar.ts index dacbcdf68d..d9017ada62 100644 --- a/dist/languages/ar.ts +++ b/dist/languages/ar.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">موقعنا</span></a>|<a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">رماز المصدر</span></a>|<a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">المساهمون</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">الرخصة</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">موقعنا</span></a>|<a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">رماز المصدر</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">المساهمون</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">الرخصة</span></a></p></body></html> diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts index a131d85022..61ad09bf06 100644 --- a/dist/languages/ca.ts +++ b/dist/languages/ca.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Pàgina web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Codi Font</span></a>|<a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contribuïdors</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Llicència</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Pàgina web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Codi Font</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuïdors</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Llicència</span></a></p></body></html> diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts index ff25846b5a..9b6f5fc25a 100644 --- a/dist/languages/cs.ts +++ b/dist/languages/cs.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Webové stránky</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Zdrojový kód</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Přispěvatelé</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Webové stránky</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Zdrojový kód</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Přispěvatelé</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> diff --git a/dist/languages/da.ts b/dist/languages/da.ts index 3ca2244fb2..ddc4c96d3d 100644 --- a/dist/languages/da.ts +++ b/dist/languages/da.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/">Netsted<span style=" text-decoration: underline; color:#039be5;"></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Bidragsydere</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/">Netsted<span style=" text-decoration: underline; color:#039be5;"></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsydere</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> diff --git a/dist/languages/de.ts b/dist/languages/de.ts index 8d862a62b9..e1ddd36975 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Webseite</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Quellcode</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Mitwirkende</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lizenz</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Webseite</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Quellcode</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Mitwirkende</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lizenz</span></a></p></body></html> diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 4f8f6a5aac..b8eb0ed3b8 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Ιστοσελίδα</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Πηγαίος Κώδικας</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Συνεργάτες</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"></span>Άδεια</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Ιστοσελίδα</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Πηγαίος Κώδικας</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Συνεργάτες</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"></span>Άδεια</span></a></p></body></html> diff --git a/dist/languages/es.ts b/dist/languages/es.ts index e9824bc5fc..5690a95dec 100644 --- a/dist/languages/es.ts +++ b/dist/languages/es.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Página web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Código fuente</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencia</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Página web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Código fuente</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencia</span></a></p></body></html> diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index 0f22433d5b..146d4e1dd9 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -40,8 +40,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Nettisivu</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Lähdekoodi</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Lahjoittajat</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisenssi</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Nettisivu</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Lähdekoodi</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Lahjoittajat</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisenssi</span></a></p></body></html> diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index 3619e564c7..a45580d312 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Site Web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Code Source</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributeurs</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Site Web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Code Source</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributeurs</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts index 1b43397f17..bd7d056e04 100644 --- a/dist/languages/hu.ts +++ b/dist/languages/hu.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Weboldal</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Forráskód</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Közreműködők</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licensz</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Weboldal</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Forráskód</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Közreműködők</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licensz</span></a></p></body></html> diff --git a/dist/languages/id.ts b/dist/languages/id.ts index 3bce2fc749..1a03da74e3 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Situs web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Kode Sumber</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Kontributor</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisensi</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Situs web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Kode Sumber</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontributor</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisensi</span></a></p></body></html> diff --git a/dist/languages/it.ts b/dist/languages/it.ts index ec70f9d809..6155074272 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Sito web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Codice sorgente</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributori</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licenza</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Sito web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Codice sorgente</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributori</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licenza</span></a></p></body></html> diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index 39bd1ba0a7..c5d15f14f6 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">ウェブサイト</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">ソースコード</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">貢献者</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">ライセンス</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">ウェブサイト</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">ソースコード</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢献者</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">ライセンス</span></a></p></body></html> diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index 4fe347f6d5..57fdcced57 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">웹사이트</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">소스 코드</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">기여자</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">라이센스</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">웹사이트</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">소스 코드</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">기여자</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">라이센스</span></a></p></body></html> diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index 7ee7b5878b..6feaaecb77 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Nettside</span></a>|<a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a>|<a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Bidragsytere</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisens</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Nettside</span></a>|<a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsytere</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisens</span></a></p></body></html> diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index 7fdba359b8..6cf1353919 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Broncode</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Bijdragers</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licentie</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Broncode</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bijdragers</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licentie</span></a></p></body></html> diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts index b60eca3648..218983e0c6 100644 --- a/dist/languages/pl.ts +++ b/dist/languages/pl.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Strona</span></a>I<a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Kod Źródłowy</span></a>I<a href="https://gitlab.com/suyu-emu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontrybutorzy</span></a>I<a href="https://gitlab.com/suyu-emu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencja</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Strona</span></a>I<a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Kod Źródłowy</span></a>I<a href="https://gitlab.com/suyu-emu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontrybutorzy</span></a>I<a href="https://gitlab.com/suyu-emu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencja</span></a></p></body></html> diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index caf2f84078..644edd310f 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Site</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Código-fonte</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Colaboradores</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Site</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Código-fonte</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Colaboradores</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts index 8cd779e40a..d14540c667 100644 --- a/dist/languages/pt_PT.ts +++ b/dist/languages/pt_PT.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - Site | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Código fonte | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + Site | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Código fonte | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index 924cca9909..66d56b73f3 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Исходный код</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Контрибьюторы</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Лицензия</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Исходный код</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Контрибьюторы</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Лицензия</span></a></p></body></html> diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index 26d4e8e497..140189c779 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Hemsida</span></a>I<a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Källkod</span></a>I<a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Bidragsgivare</span></a>I<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Hemsida</span></a>I<a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Källkod</span></a>I<a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsgivare</span></a>I<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index 3f17dd29d7..61532becdb 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a>|<a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Kaynak Kodu</span></a>|<a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Katkıda Bulunanlar</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisans</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a>|<a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Kaynak Kodu</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Katkıda Bulunanlar</span></a>|<a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisans</span></a></p></body></html> diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts index b3b77aa3e0..aeb837b4c2 100644 --- a/dist/languages/uk.ts +++ b/dist/languages/uk.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Першокод</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Вкладники</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Ліцензія</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Першокод</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Вкладники</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Ліцензія</span></a></p></body></html> diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts index 07f153deca..38bdc29076 100644 --- a/dist/languages/vi.ts +++ b/dist/languages/vi.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Người đóng góp</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Người đóng góp</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index e619e8ad8f..81cb3647fd 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Đóng góp</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Đóng góp</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index 09b8431f20..688a0eae01 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">官方网站</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">源代码</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">贡献者</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">许可证</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">官方网站</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">源代码</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">贡献者</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">许可证</span></a></p></body></html> diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index 399195b394..29bdb89afd 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">官網</span></a> | <a href="https://git.suyu.dev/suyu"><span style=" text-decoration: underline; color:#039be5;">原始碼</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">貢獻者</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">許可證</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev/"><span style=" text-decoration: underline; color:#039be5;">官網</span></a> | <a href="https://gitlab.com/suyu-emu"><span style=" text-decoration: underline; color:#039be5;">原始碼</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢獻者</span></a> | <a href="https://gitlab.com/suyu-emu/suyu/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">許可證</span></a></p></body></html> diff --git a/dist/qt_themes/default/icons/16x16/checked.png b/dist/qt_themes/colorful/icons/16x16/checked.png similarity index 100% rename from dist/qt_themes/default/icons/16x16/checked.png rename to dist/qt_themes/colorful/icons/16x16/checked.png diff --git a/dist/qt_themes/colorful/icons/16x16/connected.png b/dist/qt_themes/colorful/icons/16x16/connected.png new file mode 100644 index 0000000000..0afc18cb7a Binary files /dev/null and b/dist/qt_themes/colorful/icons/16x16/connected.png differ diff --git a/dist/qt_themes/colorful/icons/16x16/connected_notification.png b/dist/qt_themes/colorful/icons/16x16/connected_notification.png new file mode 100644 index 0000000000..72466e098e Binary files /dev/null and b/dist/qt_themes/colorful/icons/16x16/connected_notification.png differ diff --git a/dist/qt_themes/colorful/icons/16x16/disconnected.png b/dist/qt_themes/colorful/icons/16x16/disconnected.png new file mode 100644 index 0000000000..7258a8cfe5 Binary files /dev/null and b/dist/qt_themes/colorful/icons/16x16/disconnected.png differ diff --git a/dist/qt_themes/default/icons/16x16/failed.png b/dist/qt_themes/colorful/icons/16x16/failed.png similarity index 100% rename from dist/qt_themes/default/icons/16x16/failed.png rename to dist/qt_themes/colorful/icons/16x16/failed.png diff --git a/dist/qt_themes/default/icons/16x16/info.png b/dist/qt_themes/colorful/icons/16x16/info.png similarity index 100% rename from dist/qt_themes/default/icons/16x16/info.png rename to dist/qt_themes/colorful/icons/16x16/info.png diff --git a/dist/qt_themes/colorful/icons/16x16/lock.png b/dist/qt_themes/colorful/icons/16x16/lock.png new file mode 100644 index 0000000000..fd27069d80 Binary files /dev/null and b/dist/qt_themes/colorful/icons/16x16/lock.png differ diff --git a/dist/qt_themes/default/icons/16x16/sync.png b/dist/qt_themes/colorful/icons/16x16/sync.png similarity index 100% rename from dist/qt_themes/default/icons/16x16/sync.png rename to dist/qt_themes/colorful/icons/16x16/sync.png diff --git a/dist/qt_themes/default/icons/16x16/view-refresh.png b/dist/qt_themes/colorful/icons/16x16/view-refresh.png similarity index 100% rename from dist/qt_themes/default/icons/16x16/view-refresh.png rename to dist/qt_themes/colorful/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/colorful/icons/256x256/plus_folder.png b/dist/qt_themes/colorful/icons/256x256/plus_folder.png new file mode 100644 index 0000000000..760fe6245e Binary files /dev/null and b/dist/qt_themes/colorful/icons/256x256/plus_folder.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/bad_folder.png b/dist/qt_themes/colorful/icons/48x48/bad_folder.png new file mode 100644 index 0000000000..34069c6b23 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/bad_folder.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/chip.png b/dist/qt_themes/colorful/icons/48x48/chip.png new file mode 100644 index 0000000000..6fa1589995 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/chip.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/folder.png b/dist/qt_themes/colorful/icons/48x48/folder.png new file mode 100644 index 0000000000..498de4c629 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/folder.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/list-add.png b/dist/qt_themes/colorful/icons/48x48/list-add.png new file mode 100644 index 0000000000..74e4882aae Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/list-add.png differ diff --git a/dist/qt_themes/default/icons/48x48/no_avatar.png b/dist/qt_themes/colorful/icons/48x48/no_avatar.png similarity index 100% rename from dist/qt_themes/default/icons/48x48/no_avatar.png rename to dist/qt_themes/colorful/icons/48x48/no_avatar.png diff --git a/dist/qt_themes/colorful/icons/48x48/sd_card.png b/dist/qt_themes/colorful/icons/48x48/sd_card.png new file mode 100644 index 0000000000..652d61bc32 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/sd_card.png differ diff --git a/dist/qt_themes/colorful/icons/48x48/star.png b/dist/qt_themes/colorful/icons/48x48/star.png new file mode 100644 index 0000000000..19d55a0a80 Binary files /dev/null and b/dist/qt_themes/colorful/icons/48x48/star.png differ diff --git a/dist/qt_themes/monochrome/icons/index.theme b/dist/qt_themes/colorful/icons/index.theme similarity index 60% rename from dist/qt_themes/monochrome/icons/index.theme rename to dist/qt_themes/colorful/icons/index.theme index c2764622e0..6eb3c69495 100644 --- a/dist/qt_themes/monochrome/icons/index.theme +++ b/dist/qt_themes/colorful/icons/index.theme @@ -1,9 +1,8 @@ [Icon Theme] -Name=monochrome -Comment=Monochrome light icons -Inherits=default +Name=colorful +Comment=Colorful theme Directories=16x16,48x48,256x256 - + [16x16] Size=16 diff --git a/dist/qt_themes/colorful/style.qrc b/dist/qt_themes/colorful/style.qrc new file mode 100644 index 0000000000..82cd367be9 --- /dev/null +++ b/dist/qt_themes/colorful/style.qrc @@ -0,0 +1,30 @@ + + + + + icons/index.theme + icons/16x16/checked.png + icons/16x16/connected.png + icons/16x16/connected_notification.png + icons/16x16/disconnected.png + icons/16x16/failed.png + icons/16x16/info.png + icons/16x16/lock.png + icons/16x16/sync.png + icons/16x16/view-refresh.png + icons/48x48/bad_folder.png + icons/48x48/chip.png + icons/48x48/folder.png + icons/48x48/list-add.png + icons/48x48/no_avatar.png + icons/48x48/sd_card.png + icons/48x48/star.png + icons/256x256/plus_folder.png + + + ../default/style.qss + + diff --git a/dist/qt_themes/default_dark/icons/16x16/lock.png b/dist/qt_themes/colorful_dark/icons/16x16/lock.png similarity index 100% rename from dist/qt_themes/default_dark/icons/16x16/lock.png rename to dist/qt_themes/colorful_dark/icons/16x16/lock.png diff --git a/dist/qt_themes/default_dark/icons/16x16/view-refresh.png b/dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png similarity index 100% rename from dist/qt_themes/default_dark/icons/16x16/view-refresh.png rename to dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/colorful_dark/icons/index.theme b/dist/qt_themes/colorful_dark/icons/index.theme new file mode 100644 index 0000000000..b37a06df78 --- /dev/null +++ b/dist/qt_themes/colorful_dark/icons/index.theme @@ -0,0 +1,8 @@ +[Icon Theme] +Name=colorful_dark +Comment=Colorful theme (Dark style) +Inherits=colorful +Directories=16x16 + +[16x16] +Size=16 diff --git a/dist/qt_themes/colorful_dark/style.qrc b/dist/qt_themes/colorful_dark/style.qrc new file mode 100644 index 0000000000..72451ef023 --- /dev/null +++ b/dist/qt_themes/colorful_dark/style.qrc @@ -0,0 +1,57 @@ + + + + + icons/index.theme + icons/16x16/lock.png + icons/16x16/view-refresh.png + + + + ../qdarkstyle/rc/up_arrow_disabled.png + ../qdarkstyle/rc/Hmovetoolbar.png + ../qdarkstyle/rc/stylesheet-branch-end.png + ../qdarkstyle/rc/branch_closed-on.png + ../qdarkstyle/rc/stylesheet-vline.png + ../qdarkstyle/rc/branch_closed.png + ../qdarkstyle/rc/branch_open-on.png + ../qdarkstyle/rc/transparent.png + ../qdarkstyle/rc/right_arrow_disabled.png + ../qdarkstyle/rc/sizegrip.png + ../qdarkstyle/rc/close.png + ../qdarkstyle/rc/close-hover.png + ../qdarkstyle/rc/close-pressed.png + ../qdarkstyle/rc/down_arrow.png + ../qdarkstyle/rc/Vmovetoolbar.png + ../qdarkstyle/rc/left_arrow.png + ../qdarkstyle/rc/stylesheet-branch-more.png + ../qdarkstyle/rc/up_arrow.png + ../qdarkstyle/rc/right_arrow.png + ../qdarkstyle/rc/left_arrow_disabled.png + ../qdarkstyle/rc/Hsepartoolbar.png + ../qdarkstyle/rc/branch_open.png + ../qdarkstyle/rc/Vsepartoolbar.png + ../qdarkstyle/rc/down_arrow_disabled.png + ../qdarkstyle/rc/undock.png + ../qdarkstyle/rc/checkbox_checked_disabled.png + ../qdarkstyle/rc/checkbox_checked_focus.png + ../qdarkstyle/rc/checkbox_checked.png + ../qdarkstyle/rc/checkbox_indeterminate.png + ../qdarkstyle/rc/checkbox_indeterminate_focus.png + ../qdarkstyle/rc/checkbox_unchecked_disabled.png + ../qdarkstyle/rc/checkbox_unchecked_focus.png + ../qdarkstyle/rc/checkbox_unchecked.png + ../qdarkstyle/rc/radio_checked_disabled.png + ../qdarkstyle/rc/radio_checked_focus.png + ../qdarkstyle/rc/radio_checked.png + ../qdarkstyle/rc/radio_unchecked_disabled.png + ../qdarkstyle/rc/radio_unchecked_focus.png + ../qdarkstyle/rc/radio_unchecked.png + + + ../qdarkstyle/style.qss + + diff --git a/dist/qt_themes/colorful_midnight_blue/icons/index.theme b/dist/qt_themes/colorful_midnight_blue/icons/index.theme new file mode 100644 index 0000000000..dcb2c50d68 --- /dev/null +++ b/dist/qt_themes/colorful_midnight_blue/icons/index.theme @@ -0,0 +1,8 @@ +[Icon Theme] +Name=colorful_midnight_blue +Comment=Colorful theme (Midnight Blue style) +Inherits=colorful +Directories=16x16 + +[16x16] +Size=16 diff --git a/dist/qt_themes/colorful_midnight_blue/style.qrc b/dist/qt_themes/colorful_midnight_blue/style.qrc new file mode 100644 index 0000000000..b9821c6722 --- /dev/null +++ b/dist/qt_themes/colorful_midnight_blue/style.qrc @@ -0,0 +1,63 @@ + + + + + icons/index.theme + ../colorful_dark/icons/16x16/lock.png + ../qdarkstyle/icons/16x16/view-refresh.png + ../colorful/icons/48x48/bad_folder.png + ../colorful/icons/48x48/chip.png + ../colorful/icons/48x48/folder.png + ../colorful/icons/48x48/list-add.png + ../colorful/icons/48x48/sd_card.png + ../colorful/icons/256x256/plus_folder.png + + + + ../qdarkstyle_midnight_blue/rc/up_arrow_disabled.png + ../qdarkstyle_midnight_blue/rc/Hmovetoolbar.png + ../qdarkstyle_midnight_blue/rc/stylesheet-branch-end.png + ../qdarkstyle_midnight_blue/rc/branch_closed-on.png + ../qdarkstyle_midnight_blue/rc/stylesheet-vline.png + ../qdarkstyle_midnight_blue/rc/branch_closed.png + ../qdarkstyle_midnight_blue/rc/branch_open-on.png + ../qdarkstyle_midnight_blue/rc/transparent.png + ../qdarkstyle_midnight_blue/rc/right_arrow_disabled.png + ../qdarkstyle_midnight_blue/rc/sizegrip.png + ../qdarkstyle_midnight_blue/rc/close.png + ../qdarkstyle_midnight_blue/rc/close-hover.png + ../qdarkstyle_midnight_blue/rc/close-pressed.png + ../qdarkstyle_midnight_blue/rc/down_arrow.png + ../qdarkstyle_midnight_blue/rc/Vmovetoolbar.png + ../qdarkstyle_midnight_blue/rc/left_arrow.png + ../qdarkstyle_midnight_blue/rc/stylesheet-branch-more.png + ../qdarkstyle_midnight_blue/rc/up_arrow.png + ../qdarkstyle_midnight_blue/rc/right_arrow.png + ../qdarkstyle_midnight_blue/rc/left_arrow_disabled.png + ../qdarkstyle_midnight_blue/rc/Hsepartoolbar.png + ../qdarkstyle_midnight_blue/rc/branch_open.png + ../qdarkstyle_midnight_blue/rc/Vsepartoolbar.png + ../qdarkstyle_midnight_blue/rc/down_arrow_disabled.png + ../qdarkstyle_midnight_blue/rc/undock.png + ../qdarkstyle_midnight_blue/rc/checkbox_checked_disabled.png + ../qdarkstyle_midnight_blue/rc/checkbox_checked_focus.png + ../qdarkstyle_midnight_blue/rc/checkbox_checked.png + ../qdarkstyle_midnight_blue/rc/checkbox_indeterminate.png + ../qdarkstyle_midnight_blue/rc/checkbox_indeterminate_focus.png + ../qdarkstyle_midnight_blue/rc/checkbox_unchecked_disabled.png + ../qdarkstyle_midnight_blue/rc/checkbox_unchecked_focus.png + ../qdarkstyle_midnight_blue/rc/checkbox_unchecked.png + ../qdarkstyle_midnight_blue/rc/radio_checked_disabled.png + ../qdarkstyle_midnight_blue/rc/radio_checked_focus.png + ../qdarkstyle_midnight_blue/rc/radio_checked.png + ../qdarkstyle_midnight_blue/rc/radio_unchecked_disabled.png + ../qdarkstyle_midnight_blue/rc/radio_unchecked_focus.png + ../qdarkstyle_midnight_blue/rc/radio_unchecked.png + + + ../qdarkstyle_midnight_blue/style.qss + + diff --git a/dist/qt_themes/default/default.qrc b/dist/qt_themes/default/default.qrc index 125bc3f342..4522865b4c 100644 --- a/dist/qt_themes/default/default.qrc +++ b/dist/qt_themes/default/default.qrc @@ -4,37 +4,23 @@ SPDX-License-Identifier: GPL-2.0-or-later --> - - - style.qss - - - + icons/index.theme icons/16x16/connected.png icons/16x16/connected_notification.png icons/16x16/disconnected.png - icons/16x16/failed.png - icons/16x16/info.png icons/16x16/lock.png - icons/16x16/sync.png - icons/16x16/view-refresh.png icons/48x48/bad_folder.png icons/48x48/chip.png icons/48x48/folder.png icons/48x48/list-add.png - icons/48x48/no_avatar.png icons/48x48/sd_card.png icons/48x48/star.png icons/256x256/plus_folder.png icons/256x256/suyu.png - - - - ../default_dark/icons/index.theme - ../default_dark/icons/16x16/lock.png - ../default_dark/icons/16x16/view-refresh.png + + style.qss diff --git a/dist/qt_themes/default/icons/16x16/lock.png b/dist/qt_themes/default/icons/16x16/lock.png index fd27069d80..69d3990508 100644 Binary files a/dist/qt_themes/default/icons/16x16/lock.png and b/dist/qt_themes/default/icons/16x16/lock.png differ diff --git a/dist/qt_themes/default/icons/256x256/plus_folder.png b/dist/qt_themes/default/icons/256x256/plus_folder.png index 760fe6245e..f44c80c3ae 100644 Binary files a/dist/qt_themes/default/icons/256x256/plus_folder.png and b/dist/qt_themes/default/icons/256x256/plus_folder.png differ diff --git a/dist/qt_themes/default/icons/48x48/bad_folder.png b/dist/qt_themes/default/icons/48x48/bad_folder.png index 34069c6b23..364ec646f6 100644 Binary files a/dist/qt_themes/default/icons/48x48/bad_folder.png and b/dist/qt_themes/default/icons/48x48/bad_folder.png differ diff --git a/dist/qt_themes/default/icons/48x48/chip.png b/dist/qt_themes/default/icons/48x48/chip.png index 6fa1589995..1b573d51af 100644 Binary files a/dist/qt_themes/default/icons/48x48/chip.png and b/dist/qt_themes/default/icons/48x48/chip.png differ diff --git a/dist/qt_themes/default/icons/48x48/folder.png b/dist/qt_themes/default/icons/48x48/folder.png index 498de4c629..507337fae5 100644 Binary files a/dist/qt_themes/default/icons/48x48/folder.png and b/dist/qt_themes/default/icons/48x48/folder.png differ diff --git a/dist/qt_themes/default/icons/48x48/list-add.png b/dist/qt_themes/default/icons/48x48/list-add.png index 74e4882aae..fd8a06132c 100644 Binary files a/dist/qt_themes/default/icons/48x48/list-add.png and b/dist/qt_themes/default/icons/48x48/list-add.png differ diff --git a/dist/qt_themes/default/icons/48x48/sd_card.png b/dist/qt_themes/default/icons/48x48/sd_card.png index 652d61bc32..6bcb7f6b1d 100644 Binary files a/dist/qt_themes/default/icons/48x48/sd_card.png and b/dist/qt_themes/default/icons/48x48/sd_card.png differ diff --git a/dist/qt_themes/default/icons/48x48/star.png b/dist/qt_themes/default/icons/48x48/star.png index 19d55a0a80..c2b78f0c3e 100644 Binary files a/dist/qt_themes/default/icons/48x48/star.png and b/dist/qt_themes/default/icons/48x48/star.png differ diff --git a/dist/qt_themes/default/icons/index.theme b/dist/qt_themes/default/icons/index.theme index 6c455463ee..21b35e3e3c 100644 --- a/dist/qt_themes/default/icons/index.theme +++ b/dist/qt_themes/default/icons/index.theme @@ -1,6 +1,7 @@ [Icon Theme] Name=default -Comment=Colorful theme +Comment=default theme +Inherits=colorful Directories=16x16,48x48,256x256 [16x16] @@ -8,6 +9,6 @@ Size=16 [48x48] Size=48 - + [256x256] Size=256 diff --git a/dist/qt_themes/default/style.qss b/dist/qt_themes/default/style.qss index 16b779b1b8..921950c6c0 100644 --- a/dist/qt_themes/default/style.qss +++ b/dist/qt_themes/default/style.qss @@ -1,14 +1,3 @@ -/* -* SPDX-FileCopyrightText: 2018 yuzu Emulator Project -* SPDX-FileCopyrightText: 2024 suyu Emulator Project -* SPDX-License-Identifier: GPL-2.0-or-later -*/ - -QWidget:item:hover { - background-color: #28668d; - color: #eff0f1; -} - QAbstractSpinBox { min-height: 19px; } @@ -22,7 +11,7 @@ QPushButton#TogglableStatusBarButton { } QPushButton#TogglableStatusBarButton:checked { - color: palette(text); + color: #000000; } QPushButton#TogglableStatusBarButton:hover { @@ -49,10 +38,6 @@ QPushButton#RendererStatusBarButton:!checked { color: #0066ff; } -QPushButton#RendererStatusBarButton:!checked[dark=true] { - color: #00ccdd; -} - QPushButton#GPUStatusBarButton { color: #656565; border: 1px solid transparent; @@ -69,21 +54,13 @@ QPushButton#GPUStatusBarButton:checked { color: #b06020; } -QPushButton#GPUStatusBarButton:checked[dark=true] { - color: #ff8040; -} - QPushButton#GPUStatusBarButton:!checked { color: #109010; } -QPushButton#GPUStatusBarButton:!checked[dark=true] { - color: #40dd40; -} - QPushButton#DockingStatusBarButton { min-width: 0px; - color: palette(text); + color: #000000; border: 1px solid transparent; background-color: transparent; padding: 0px 3px 0px 3px; @@ -117,21 +94,21 @@ QGroupBox#groupPlayer5Connected:checked, QGroupBox#groupPlayer6Connected:checked, QGroupBox#groupPlayer7Connected:checked, QGroupBox#groupPlayer8Connected:checked { - background-color: palette(window); + background-color: #f5f5f5; } QWidget#topControllerApplet { - border-bottom: 1px solid palette(dark) + border-bottom: 1px solid #828790 } QWidget#bottomPerGameInput, QWidget#bottomControllerApplet { - border-top: 1px solid palette(dark) + border-top: 1px solid #828790 } QWidget#topPerGameInput, QWidget#middleControllerApplet { - background-color: palette(base) + background-color: #fff; } QWidget#topPerGameInput QComboBox, @@ -143,6 +120,10 @@ QWidget#connectedControllers { background: transparent; } +QWidget#closeButtons { + background: transparent; +} + QWidget#playersSupported, QWidget#controllersSupported, QWidget#controllerSupported1, @@ -364,7 +345,7 @@ QWidget#lineDialog { QStackedWidget#bottomOSK, QWidget#contentDialog, QWidget#contentRichDialog { - background: palette(base); + background: rgba(240, 240, 240, 1); } QWidget#contentDialog, @@ -391,7 +372,7 @@ QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical { border-radius: 4px; } -QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizontal { +QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal { background: #cdcdcd; height: 15px; margin: 3px 15px 3px 15px; @@ -421,7 +402,6 @@ QWidget#inputOSK QLineEdit { background: transparent; border: none; color: #ccc; - padding: 0px; } QWidget#inputBoxOSK { @@ -451,27 +431,6 @@ QWidget#boxOSK QLabel#label_characters_box { color: #ccc; } -QWidget#buttonsDialog, -QWidget#buttonsRichDialog, -QWidget#mainOSK, -QWidget#headerOSK, -QWidget#normalOSK, -QWidget#shiftOSK, -QWidget#numOSK, -QWidget#subOSK, -QWidget#inputOSK, -QWidget#inputBoxOSK, -QWidget#charactersOSK, -QWidget#charactersBoxOSK, -QWidget#legendOSK, -QWidget#legendOSK QWidget, -QWidget#legendOSKshift, -QWidget#legendOSKshift QWidget, -QWidget#legendOSKnum, -QWidget#legendOSKnum QWidget { - background: transparent; -} - QWidget#contentDialog QLabel#label_title, QWidget#contentRichDialog QLabel#label_title_rich { color: #888; @@ -512,8 +471,8 @@ QDialog#OverlayDialog QPushButton:pressed { } QDialog#QtSoftwareKeyboardDialog QPushButton { - background: palette(window); - border: 2px solid palette(base); + background: rgba(232, 232, 232, 1); + border: 2px solid rgba(240, 240, 240, 1); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift, @@ -522,35 +481,27 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { - background: palette(alternate-base); - border: 2px solid palette(base); + background: rgba(218, 218, 218, 1); + border: 2px solid rgba(240, 240, 240, 1); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { - color: palette(base); - background: palette(mid); - border: 2px solid palette(base); + color: rgba(240, 240, 240, 1); + background: rgba(44, 44, 44, 1); + border: 2px solid rgba(240, 240, 240, 1); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { - color: palette(base); - background: palette(highlight); - border: 2px solid palette(base); + color: rgba(240, 240, 240, 1); + background: rgba(49, 79, 239, 1); + border: 2px solid rgba(240, 240, 240, 1); } QDialog#QtSoftwareKeyboardDialog QPushButton:focus, -QDialog#QtSoftwareKeyboardDialog QPushButton:hover -{ - background: palette(base); - border: 5px solid rgba(148, 250, 202, 1); - border-radius: 6px; - outline: none; -} - QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus, @@ -563,6 +514,8 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus, + +QDialog#QtSoftwareKeyboardDialog QPushButton:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover, @@ -571,11 +524,12 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, -QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover -{ +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover { + color: rgba(0, 0, 0, 1); + background: rgba(255, 255, 255, 1); border: 5px solid rgba(148, 250, 202, 1); border-radius: 6px; outline: none; @@ -594,12 +548,48 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { - color: palette(base); + color: rgba(240, 240, 240, 1); background: rgba(150, 150, 150, 1); border: 5px solid rgba(148, 250, 202, 1); border-radius: 6px; } +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { + image: url(:/overlay/osk_button_B.png); + image-position: right; + qproperty-icon: url(:/overlay/osk_button_backspace.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { + image: url(:/overlay/osk_button_Y.png); + image-position: right; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { + image: url(:/overlay/osk_button_plus.png); + image-position: right; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift_on.png); + qproperty-iconSize: 36px; +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis, @@ -612,6 +602,47 @@ QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { color: #ccc; } +QDialog#QtSoftwareKeyboardDialog QWidget#button_L, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { + image: url(:/overlay/button_L.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { + image: url(:/overlay/arrow_left.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_R, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { + image: url(:/overlay/button_R.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { + image: url(:/overlay/arrow_right.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { + image: url(:/overlay/button_press_stick.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_X, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { + image: url(:/overlay/button_X.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_A, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { + image: url(:/overlay/button_A.png); +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, @@ -622,8 +653,8 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { - color: palette(midlight); - background-color: palette(alternate-base); + color: rgba(164, 164, 164, 1); + background-color: rgba(218, 218, 218, 1); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled, @@ -640,5 +671,22 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { - color: palette(midlight); + color: rgba(164, 164, 164, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { + image: url(:/overlay/osk_button_plus_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { + image: url(:/overlay/osk_button_B_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { + image: url(:/overlay/osk_button_Y_disabled.png); } diff --git a/dist/qt_themes/default_dark/icons/index.theme b/dist/qt_themes/default_dark/icons/index.theme index 32d84fa9bd..60a072d1d6 100644 --- a/dist/qt_themes/default_dark/icons/index.theme +++ b/dist/qt_themes/default_dark/icons/index.theme @@ -1,7 +1,7 @@ [Icon Theme] Name=default_dark Comment=Colorful theme (Dark style) -Inherits=default +Inherits=colorful Directories=16x16 [16x16] diff --git a/dist/qt_themes/default_dark/style.qrc b/dist/qt_themes/default_dark/style.qrc new file mode 100644 index 0000000000..7de4737c2c --- /dev/null +++ b/dist/qt_themes/default_dark/style.qrc @@ -0,0 +1,25 @@ + + + + ../colorful/icons/16x16/connected.png + ../colorful/icons/16x16/connected_notification.png + ../colorful/icons/16x16/disconnected.png + icons/index.theme + ../colorful_dark/icons/16x16/lock.png + ../colorful_dark/icons/16x16/view-refresh.png + ../colorful/icons/48x48/bad_folder.png + ../colorful/icons/48x48/chip.png + ../colorful/icons/48x48/folder.png + ../qdarkstyle/icons/48x48/no_avatar.png + ../colorful/icons/48x48/list-add.png + ../colorful/icons/48x48/sd_card.png + ../colorful/icons/256x256/plus_folder.png + + + + style.qss + + diff --git a/dist/qt_themes/default_dark/style.qss b/dist/qt_themes/default_dark/style.qss new file mode 100644 index 0000000000..ca6daa2d52 --- /dev/null +++ b/dist/qt_themes/default_dark/style.qss @@ -0,0 +1,687 @@ +/* +* SPDX-FileCopyrightText: 2018 yuzu Emulator Project +* SPDX-License-Identifier: GPL-2.0-or-later +*/ +QAbstractSpinBox { + min-height: 19px; +} + +QPushButton#TogglableStatusBarButton { + color: #959595; + border: 1px solid transparent; + background-color: transparent; + padding: 0px 3px 0px 3px; + text-align: center; +} + +QPushButton#TogglableStatusBarButton:checked { + color: palette(text); +} + +QPushButton#TogglableStatusBarButton:hover { + border: 1px solid #76797C; +} + +QPushButton#RendererStatusBarButton { + color: #656565; + border: 1px solid transparent; + background-color: transparent; + padding: 0px 3px 0px 3px; + text-align: center; +} + +QPushButton#RendererStatusBarButton:hover { + border: 1px solid #76797C; +} + +QPushButton#RendererStatusBarButton:checked { + color: #e85c00; +} + +QPushButton#RendererStatusBarButton:!checked { + color: #00ccdd; +} + +QPushButton#GPUStatusBarButton { + color: #656565; + border: 1px solid transparent; + background-color: transparent; + padding: 0px 3px 0px 3px; + text-align: center; +} + +QPushButton#GPUStatusBarButton:hover { + border: 1px solid #76797C; +} + +QPushButton#GPUStatusBarButton:checked { + color: #ff8040; +} + +QPushButton#GPUStatusBarButton:!checked { + color: #40dd40; +} + +QPushButton#DockingStatusBarButton { + min-width: 0px; + color: palette(text); + border: 1px solid transparent; + background-color: transparent; + padding: 0px 3px 0px 3px; + text-align: center; +} + +QPushButton#DockingStatusBarButton:hover { + border: 1px solid #76797C; +} + +QPushButton#buttonRefreshDevices { + min-width: 21px; + min-height: 21px; + max-width: 21px; + max-height: 21px; +} + +QWidget#bottomPerGameInput, +QWidget#topControllerApplet, +QWidget#bottomControllerApplet, +QGroupBox#groupPlayer1Connected:checked, +QGroupBox#groupPlayer2Connected:checked, +QGroupBox#groupPlayer3Connected:checked, +QGroupBox#groupPlayer4Connected:checked, +QGroupBox#groupPlayer5Connected:checked, +QGroupBox#groupPlayer6Connected:checked, +QGroupBox#groupPlayer7Connected:checked, +QGroupBox#groupPlayer8Connected:checked { + background-color: #f5f5f5; +} + +QWidget#topControllerApplet { + border-bottom: 1px solid #828790 +} + +QWidget#bottomPerGameInput, +QWidget#bottomControllerApplet { + border-top: 1px solid #828790 +} + +QWidget#topPerGameInput, +QWidget#middleControllerApplet { + background-color: #fff; +} + +QWidget#topPerGameInput QComboBox, +QWidget#middleControllerApplet QComboBox { + width: 120px; +} + +QWidget#connectedControllers { + background: transparent; +} + +QWidget#playersSupported, +QWidget#controllersSupported, +QWidget#controllerSupported1, +QWidget#controllerSupported2, +QWidget#controllerSupported3, +QWidget#controllerSupported4, +QWidget#controllerSupported5, +QWidget#controllerSupported6 { + border: none; + background: transparent; +} + +QGroupBox#groupPlayer1Connected, +QGroupBox#groupPlayer2Connected, +QGroupBox#groupPlayer3Connected, +QGroupBox#groupPlayer4Connected, +QGroupBox#groupPlayer5Connected, +QGroupBox#groupPlayer6Connected, +QGroupBox#groupPlayer7Connected, +QGroupBox#groupPlayer8Connected { + border: 1px solid #828790; + border-radius: 3px; + padding: 0px; + min-height: 98px; + max-height: 98px; +} + +QGroupBox#groupPlayer1Connected:unchecked, +QGroupBox#groupPlayer2Connected:unchecked, +QGroupBox#groupPlayer3Connected:unchecked, +QGroupBox#groupPlayer4Connected:unchecked, +QGroupBox#groupPlayer5Connected:unchecked, +QGroupBox#groupPlayer6Connected:unchecked, +QGroupBox#groupPlayer7Connected:unchecked, +QGroupBox#groupPlayer8Connected:unchecked { + border: 1px solid #d9d9d9; +} + +QGroupBox#groupPlayer1Connected::title, +QGroupBox#groupPlayer2Connected::title, +QGroupBox#groupPlayer3Connected::title, +QGroupBox#groupPlayer4Connected::title, +QGroupBox#groupPlayer5Connected::title, +QGroupBox#groupPlayer6Connected::title, +QGroupBox#groupPlayer7Connected::title, +QGroupBox#groupPlayer8Connected::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding-left: 0px; + padding-right: 0px; + padding-top: 1px; + margin-left: 0px; + margin-right: -4px; + margin-bottom: 4px; +} + +QCheckBox#checkboxPlayer1Connected, +QCheckBox#checkboxPlayer2Connected, +QCheckBox#checkboxPlayer3Connected, +QCheckBox#checkboxPlayer4Connected, +QCheckBox#checkboxPlayer5Connected, +QCheckBox#checkboxPlayer6Connected, +QCheckBox#checkboxPlayer7Connected, +QCheckBox#checkboxPlayer8Connected { + spacing: 0px; +} + +QWidget#Player1LEDs QCheckBox, +QWidget#Player2LEDs QCheckBox, +QWidget#Player3LEDs QCheckBox, +QWidget#Player4LEDs QCheckBox, +QWidget#Player5LEDs QCheckBox, +QWidget#Player6LEDs QCheckBox, +QWidget#Player7LEDs QCheckBox, +QWidget#Player8LEDs QCheckBox { + spacing: 0px; +} + +QWidget#Player1LEDs QCheckBox::indicator, +QWidget#Player2LEDs QCheckBox::indicator, +QWidget#Player3LEDs QCheckBox::indicator, +QWidget#Player4LEDs QCheckBox::indicator, +QWidget#Player5LEDs QCheckBox::indicator, +QWidget#Player6LEDs QCheckBox::indicator, +QWidget#Player7LEDs QCheckBox::indicator, +QWidget#Player8LEDs QCheckBox::indicator { + width: 6px; + height: 6px; + margin-left: 0px; +} + +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer1Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer2Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer3Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer4Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer5Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer6Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer7Connected::indicator, +QWidget#bottomPerGameInput QCheckBox#checkboxPlayer8Connected::indicator { + width: 12px; + height: 12px; +} + +QCheckBox#checkboxPlayer1Connected::indicator, +QCheckBox#checkboxPlayer2Connected::indicator, +QCheckBox#checkboxPlayer3Connected::indicator, +QCheckBox#checkboxPlayer4Connected::indicator, +QCheckBox#checkboxPlayer5Connected::indicator, +QCheckBox#checkboxPlayer6Connected::indicator, +QCheckBox#checkboxPlayer7Connected::indicator, +QCheckBox#checkboxPlayer8Connected::indicator { + width: 14px; + height: 14px; +} + +QGroupBox#groupPlayer1Connected::indicator, +QGroupBox#groupPlayer2Connected::indicator, +QGroupBox#groupPlayer3Connected::indicator, +QGroupBox#groupPlayer4Connected::indicator, +QGroupBox#groupPlayer5Connected::indicator, +QGroupBox#groupPlayer6Connected::indicator, +QGroupBox#groupPlayer7Connected::indicator, +QGroupBox#groupPlayer8Connected::indicator { + width: 16px; + height: 16px; +} + +QWidget#Player1LEDs QCheckBox::indicator:checked, +QWidget#Player2LEDs QCheckBox::indicator:checked, +QWidget#Player3LEDs QCheckBox::indicator:checked, +QWidget#Player4LEDs QCheckBox::indicator:checked, +QWidget#Player5LEDs QCheckBox::indicator:checked, +QWidget#Player6LEDs QCheckBox::indicator:checked, +QWidget#Player7LEDs QCheckBox::indicator:checked, +QWidget#Player8LEDs QCheckBox::indicator:checked, +QGroupBox#groupPlayer1Connected::indicator:checked, +QGroupBox#groupPlayer2Connected::indicator:checked, +QGroupBox#groupPlayer3Connected::indicator:checked, +QGroupBox#groupPlayer4Connected::indicator:checked, +QGroupBox#groupPlayer5Connected::indicator:checked, +QGroupBox#groupPlayer6Connected::indicator:checked, +QGroupBox#groupPlayer7Connected::indicator:checked, +QGroupBox#groupPlayer8Connected::indicator:checked, +QCheckBox#checkboxPlayer1Connected::indicator:checked, +QCheckBox#checkboxPlayer2Connected::indicator:checked, +QCheckBox#checkboxPlayer3Connected::indicator:checked, +QCheckBox#checkboxPlayer4Connected::indicator:checked, +QCheckBox#checkboxPlayer5Connected::indicator:checked, +QCheckBox#checkboxPlayer6Connected::indicator:checked, +QCheckBox#checkboxPlayer7Connected::indicator:checked, +QCheckBox#checkboxPlayer8Connected::indicator:checked, +QGroupBox#groupConnectedController::indicator:checked { + border-radius: 2px; + border: 1px solid #929192; + background: #39ff14; + image: none; +} + +QWidget#Player1LEDs QCheckBox::indicator:unchecked, +QWidget#Player2LEDs QCheckBox::indicator:unchecked, +QWidget#Player3LEDs QCheckBox::indicator:unchecked, +QWidget#Player4LEDs QCheckBox::indicator:unchecked, +QWidget#Player5LEDs QCheckBox::indicator:unchecked, +QWidget#Player6LEDs QCheckBox::indicator:unchecked, +QWidget#Player7LEDs QCheckBox::indicator:unchecked, +QWidget#Player8LEDs QCheckBox::indicator:unchecked, +QGroupBox#groupPlayer1Connected::indicator:unchecked, +QGroupBox#groupPlayer2Connected::indicator:unchecked, +QGroupBox#groupPlayer3Connected::indicator:unchecked, +QGroupBox#groupPlayer4Connected::indicator:unchecked, +QGroupBox#groupPlayer5Connected::indicator:unchecked, +QGroupBox#groupPlayer6Connected::indicator:unchecked, +QGroupBox#groupPlayer7Connected::indicator:unchecked, +QGroupBox#groupPlayer8Connected::indicator:unchecked, +QCheckBox#checkboxPlayer1Connected::indicator:unchecked, +QCheckBox#checkboxPlayer2Connected::indicator:unchecked, +QCheckBox#checkboxPlayer3Connected::indicator:unchecked, +QCheckBox#checkboxPlayer4Connected::indicator:unchecked, +QCheckBox#checkboxPlayer5Connected::indicator:unchecked, +QCheckBox#checkboxPlayer6Connected::indicator:unchecked, +QCheckBox#checkboxPlayer7Connected::indicator:unchecked, +QCheckBox#checkboxPlayer8Connected::indicator:unchecked, +QGroupBox#groupConnectedController::indicator:unchecked { + border-radius: 2px; + border: 1px solid #929192; + background: transparent; + image: none; +} + +QWidget#controllerPlayer1, +QWidget#controllerPlayer2, +QWidget#controllerPlayer3, +QWidget#controllerPlayer4, +QWidget#controllerPlayer5, +QWidget#controllerPlayer6, +QWidget#controllerPlayer7, +QWidget#controllerPlayer8 { + background: transparent; +} + +QDialog#QtSoftwareKeyboardDialog, +QStackedWidget#topOSK { + background: rgba(51, 51, 51, .9); +} + + +QDialog#OverlayDialog, +QStackedWidget#stackedDialog { + background: rgba(51, 51, 51, .7); +} + +QWidget#boxOSK, +QWidget#lineOSK, +QWidget#richDialog, +QWidget#lineDialog { + background: transparent; +} + +QStackedWidget#bottomOSK, +QWidget#contentDialog, +QWidget#contentRichDialog { + background: rgba(240, 240, 240, 1); +} + +QWidget#contentDialog, +QWidget#contentRichDialog { + margin: 5px; + border-radius: 6px; +} + +QWidget#buttonsDialog, +QWidget#buttonsRichDialog { + margin: 5px; + border-top: 2px solid rgba(44, 44, 44, 1); +} + +QWidget#legendOSKnum { + border-top: 1px solid rgba(44, 44, 44, 1); +} + +QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical { + background: #cdcdcd; + width: 15px; + margin: 15px 3px 15px 3px; + border: 1px transparent; + border-radius: 4px; +} + +QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal { + background: #cdcdcd; + height: 15px; + margin: 3px 15px 3px 15px; + border: 1px transparent; + border-radius: 4px; +} + +QStackedWidget#stackedDialog QTextBrowser QScrollBar::handle { + background: #fff; + border-radius: 4px; + min-height: 5px; + min-width: 5px; +} + +QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line, +QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line, +QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-page, +QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-page { + background: none; +} + +QWidget#inputOSK { + border-bottom: 3px solid rgba(255, 255, 255, .9); +} + +QWidget#inputOSK QLineEdit { + background: transparent; + border: none; + color: #ccc; +} + +QWidget#inputBoxOSK { + border: 2px solid rgba(255, 255, 255, .9); +} + +QWidget#inputBoxOSK QTextEdit { + background: transparent; + border: none; + color: #ccc; +} + +QWidget#richDialog QTextBrowser { + background: transparent; + border: none; + padding: 35px 65px; +} + + +QWidget#lineOSK QLabel#label_header { + color: #f0f0f0; +} + +QWidget#lineOSK QLabel#label_sub, +QWidget#lineOSK QLabel#label_characters, +QWidget#boxOSK QLabel#label_characters_box { + color: #ccc; +} + +QWidget#contentDialog QLabel#label_title, +QWidget#contentRichDialog QLabel#label_title_rich { + color: #888; +} + +QWidget#contentDialog QLabel#label_dialog { + padding: 20px 65px; +} + +QWidget#contentDialog QLabel#label_title, +QWidget#contentRichDialog QLabel#label_title_rich { + padding: 0px 65px; +} + +QDialog#OverlayDialog QPushButton { + color: rgba(49, 79, 239, 1); + background: transparent; + border: none; + padding: 0px; + min-width: 0px; +} + +QDialog#OverlayDialog QPushButton:focus, +QDialog#OverlayDialog QPushButton:hover { + color: rgba(49, 79, 239, 1); + background: rgba(255, 255, 255, 1); + border: 5px solid rgba(148, 250, 202, 1); + border-radius: 6px; + outline: none; +} + +QDialog#OverlayDialog QPushButton:pressed { + color: rgba(240, 240, 240, 1); + background: rgba(150, 150, 150, 1); + border: 5px solid rgba(148, 250, 202, 1); + border-radius: 6px; + outline: none; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton { + background: rgba(232, 232, 232, 1); + border: 2px solid rgba(240, 240, 240, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { + background: rgba(218, 218, 218, 1); + border: 2px solid rgba(240, 240, 240, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { + color: rgba(240, 240, 240, 1); + background: rgba(44, 44, 44, 1); + border: 2px solid rgba(240, 240, 240, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { + color: rgba(240, 240, 240, 1); + background: rgba(49, 79, 239, 1); + border: 2px solid rgba(240, 240, 240, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus, + +QDialog#QtSoftwareKeyboardDialog QPushButton:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover { + color: rgba(0, 0, 0, 1); + background: rgba(255, 255, 255, 1); + border: 5px solid rgba(148, 250, 202, 1); + border-radius: 6px; + outline: none; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { + color: rgba(240, 240, 240, 1); + background: rgba(150, 150, 150, 1); + border: 5px solid rgba(148, 250, 202, 1); + border-radius: 6px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { + image: url(:/overlay/osk_button_B.png); + image-position: right; + qproperty-icon: url(:/overlay/osk_button_backspace.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { + image: url(:/overlay/osk_button_Y.png); + image-position: right; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { + image: url(:/overlay/osk_button_plus.png); + image-position: right; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift_on.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis { + padding-bottom: 7px; +} + +QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { + background: transparent; + color: #ccc; +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_L, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { + image: url(:/overlay/button_L.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { + image: url(:/overlay/arrow_left.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_R, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { + image: url(:/overlay/button_R.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { + image: url(:/overlay/arrow_right.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { + image: url(:/overlay/button_press_stick.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_X, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { + image: url(:/overlay/button_X.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_A, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { + image: url(:/overlay/button_A.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { + color: rgba(164, 164, 164, 1); + background-color: rgba(218, 218, 218, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { + color: rgba(164, 164, 164, 1); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { + image: url(:/overlay/osk_button_plus_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { + image: url(:/overlay/osk_button_B_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { + image: url(:/overlay/osk_button_Y_disabled.png); +} diff --git a/dist/qt_themes/monochrome/icons.qrc b/dist/qt_themes/monochrome/icons.qrc deleted file mode 100644 index 4eb16294fe..0000000000 --- a/dist/qt_themes/monochrome/icons.qrc +++ /dev/null @@ -1,32 +0,0 @@ - - - - - icons/index.theme - icons/16x16/lock.png - icons/48x48/bad_folder.png - icons/48x48/chip.png - icons/48x48/folder.png - icons/48x48/list-add.png - icons/48x48/sd_card.png - icons/48x48/star.png - icons/256x256/plus_folder.png - - - - - ../monochrome_dark/icons/index.theme - ../monochrome_dark/icons/16x16/lock.png - ../monochrome_dark/icons/48x48/bad_folder.png - ../monochrome_dark/icons/48x48/chip.png - ../monochrome_dark/icons/48x48/folder.png - ../monochrome_dark/icons/48x48/list-add.png - ../monochrome_dark/icons/48x48/no_avatar.png - ../monochrome_dark/icons/48x48/sd_card.png - ../monochrome_dark/icons/48x48/star.png - ../monochrome_dark/icons/256x256/plus_folder.png - - diff --git a/dist/qt_themes/monochrome/icons/16x16/lock.png b/dist/qt_themes/monochrome/icons/16x16/lock.png deleted file mode 100644 index 69d3990508..0000000000 Binary files a/dist/qt_themes/monochrome/icons/16x16/lock.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/256x256/plus_folder.png b/dist/qt_themes/monochrome/icons/256x256/plus_folder.png deleted file mode 100644 index f44c80c3ae..0000000000 Binary files a/dist/qt_themes/monochrome/icons/256x256/plus_folder.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/48x48/bad_folder.png b/dist/qt_themes/monochrome/icons/48x48/bad_folder.png deleted file mode 100644 index 364ec646f6..0000000000 Binary files a/dist/qt_themes/monochrome/icons/48x48/bad_folder.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/48x48/chip.png b/dist/qt_themes/monochrome/icons/48x48/chip.png deleted file mode 100644 index 1b573d51af..0000000000 Binary files a/dist/qt_themes/monochrome/icons/48x48/chip.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/48x48/folder.png b/dist/qt_themes/monochrome/icons/48x48/folder.png deleted file mode 100644 index 507337fae5..0000000000 Binary files a/dist/qt_themes/monochrome/icons/48x48/folder.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/48x48/list-add.png b/dist/qt_themes/monochrome/icons/48x48/list-add.png deleted file mode 100644 index fd8a06132c..0000000000 Binary files a/dist/qt_themes/monochrome/icons/48x48/list-add.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/48x48/sd_card.png b/dist/qt_themes/monochrome/icons/48x48/sd_card.png deleted file mode 100644 index 6bcb7f6b1d..0000000000 Binary files a/dist/qt_themes/monochrome/icons/48x48/sd_card.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/icons/48x48/star.png b/dist/qt_themes/monochrome/icons/48x48/star.png deleted file mode 100644 index c2b78f0c3e..0000000000 Binary files a/dist/qt_themes/monochrome/icons/48x48/star.png and /dev/null differ diff --git a/dist/qt_themes/monochrome/style.qrc b/dist/qt_themes/monochrome/style.qrc deleted file mode 100644 index 54778e2f54..0000000000 --- a/dist/qt_themes/monochrome/style.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - ../default/style.qss - - diff --git a/dist/qt_themes/monochrome_dark/icons/index.theme b/dist/qt_themes/monochrome_dark/icons/index.theme deleted file mode 100644 index 9ca318d09e..0000000000 --- a/dist/qt_themes/monochrome_dark/icons/index.theme +++ /dev/null @@ -1,14 +0,0 @@ -[Icon Theme] -Name=monochrome_dark -Comment=Monochrome dark icons -Inherits=default_dark -Directories=16x16,48x48,256x256 - -[16x16] -Size=16 - -[48x48] -Size=48 - -[256x256] -Size=256 diff --git a/dist/qt_themes/qdarkstyle/icons.qrc b/dist/qt_themes/qdarkstyle/icons.qrc deleted file mode 100644 index d7ec900649..0000000000 --- a/dist/qt_themes/qdarkstyle/icons.qrc +++ /dev/null @@ -1,51 +0,0 @@ - - - icons/index.theme - ../default_dark/icons/16x16/lock.png - - - icons/index.theme - ../default_dark/icons/16x16/lock.png - - - rc/branch_closed-on.png - rc/branch_closed.png - rc/branch_open-on.png - rc/branch_open.png - rc/checkbox_checked.png - rc/checkbox_checked_disabled.png - rc/checkbox_checked_focus.png - rc/checkbox_indeterminate.png - rc/checkbox_indeterminate_focus.png - rc/checkbox_unchecked.png - rc/checkbox_unchecked_disabled.png - rc/checkbox_unchecked_focus.png - rc/close-hover.png - rc/close-pressed.png - rc/close.png - rc/down_arrow.png - rc/down_arrow_disabled.png - rc/Hmovetoolbar.png - rc/Hsepartoolbar.png - rc/left_arrow.png - rc/left_arrow_disabled.png - rc/radio_checked.png - rc/radio_checked_disabled.png - rc/radio_checked_focus.png - rc/radio_unchecked.png - rc/radio_unchecked_disabled.png - rc/radio_unchecked_focus.png - rc/right_arrow.png - rc/right_arrow_disabled.png - rc/sizegrip.png - rc/stylesheet-branch-end.png - rc/stylesheet-branch-more.png - rc/stylesheet-vline.png - rc/transparent.png - rc/undock.png - rc/up_arrow.png - rc/up_arrow_disabled.png - rc/Vmovetoolbar.png - rc/Vsepartoolbar.png - - diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/connected.png b/dist/qt_themes/qdarkstyle/icons/16x16/connected.png new file mode 100644 index 0000000000..0afc18cb7a Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/16x16/connected.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png b/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png new file mode 100644 index 0000000000..72466e098e Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png differ diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png b/dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png new file mode 100644 index 0000000000..7258a8cfe5 Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png differ diff --git a/dist/qt_themes/monochrome_dark/icons/16x16/lock.png b/dist/qt_themes/qdarkstyle/icons/16x16/lock.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/16x16/lock.png rename to dist/qt_themes/qdarkstyle/icons/16x16/lock.png diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png b/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png new file mode 100644 index 0000000000..d4afd76f94 Binary files /dev/null and b/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png differ diff --git a/dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png b/dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png rename to dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png b/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png rename to dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/chip.png b/dist/qt_themes/qdarkstyle/icons/48x48/chip.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/chip.png rename to dist/qt_themes/qdarkstyle/icons/48x48/chip.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/folder.png b/dist/qt_themes/qdarkstyle/icons/48x48/folder.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/folder.png rename to dist/qt_themes/qdarkstyle/icons/48x48/folder.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/list-add.png b/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/list-add.png rename to dist/qt_themes/qdarkstyle/icons/48x48/list-add.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/no_avatar.png b/dist/qt_themes/qdarkstyle/icons/48x48/no_avatar.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/no_avatar.png rename to dist/qt_themes/qdarkstyle/icons/48x48/no_avatar.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/sd_card.png b/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/sd_card.png rename to dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png diff --git a/dist/qt_themes/monochrome_dark/icons/48x48/star.png b/dist/qt_themes/qdarkstyle/icons/48x48/star.png similarity index 100% rename from dist/qt_themes/monochrome_dark/icons/48x48/star.png rename to dist/qt_themes/qdarkstyle/icons/48x48/star.png diff --git a/dist/qt_themes/qdarkstyle/icons/index.theme b/dist/qt_themes/qdarkstyle/icons/index.theme index 0059b7ac96..502717617c 100644 --- a/dist/qt_themes/qdarkstyle/icons/index.theme +++ b/dist/qt_themes/qdarkstyle/icons/index.theme @@ -1,4 +1,14 @@ [Icon Theme] Name=qdarkstyle -Comment=Dark theme (Mine Shaft style) -Inherits=default_dark +Comment=dark theme +Inherits=colorful +Directories=16x16,48x48,256x256 + +[16x16] +Size=16 + +[48x48] +Size=48 + +[256x256] +Size=256 diff --git a/dist/qt_themes/qdarkstyle/style.qrc b/dist/qt_themes/qdarkstyle/style.qrc index b1180c3e0a..a89fb26c68 100644 --- a/dist/qt_themes/qdarkstyle/style.qrc +++ b/dist/qt_themes/qdarkstyle/style.qrc @@ -1,5 +1,62 @@ - - dark.qss - + + icons/index.theme + icons/16x16/connected.png + icons/16x16/disconnected.png + icons/16x16/connected_notification.png + icons/16x16/lock.png + icons/16x16/view-refresh.png + icons/48x48/bad_folder.png + icons/48x48/chip.png + icons/48x48/folder.png + icons/48x48/no_avatar.png + icons/48x48/list-add.png + icons/48x48/sd_card.png + icons/48x48/star.png + icons/256x256/plus_folder.png + + + rc/up_arrow_disabled.png + rc/Hmovetoolbar.png + rc/stylesheet-branch-end.png + rc/branch_closed-on.png + rc/stylesheet-vline.png + rc/branch_closed.png + rc/branch_open-on.png + rc/transparent.png + rc/right_arrow_disabled.png + rc/sizegrip.png + rc/close.png + rc/close-hover.png + rc/close-pressed.png + rc/down_arrow.png + rc/Vmovetoolbar.png + rc/left_arrow.png + rc/stylesheet-branch-more.png + rc/up_arrow.png + rc/right_arrow.png + rc/left_arrow_disabled.png + rc/Hsepartoolbar.png + rc/branch_open.png + rc/Vsepartoolbar.png + rc/down_arrow_disabled.png + rc/undock.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_focus.png + rc/checkbox_checked.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked.png + rc/radio_checked_disabled.png + rc/radio_checked_focus.png + rc/radio_checked.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_focus.png + rc/radio_unchecked.png + + + style.qss + diff --git a/dist/qt_themes/qdarkstyle/dark.qss b/dist/qt_themes/qdarkstyle/style.qss similarity index 93% rename from dist/qt_themes/qdarkstyle/dark.qss rename to dist/qt_themes/qdarkstyle/style.qss index 95e575c42f..328ac942fc 100644 --- a/dist/qt_themes/qdarkstyle/dark.qss +++ b/dist/qt_themes/qdarkstyle/style.qss @@ -944,10 +944,6 @@ QListView::indicator:indeterminate:pressed { image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png); } -QSlider:horizontal { - height: 20px; -} - QSlider::groove:horizontal { border: 1px solid #565a5e; height: 4px; @@ -1384,6 +1380,10 @@ QWidget#connectedControllers { background: transparent; } +QWidget#closeButtons { + background: transparent; +} + QWidget#playersSupported, QWidget#controllersSupported, QWidget#controllerSupported1, @@ -1843,17 +1843,40 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { + image: url(:/overlay/osk_button_B_dark.png); image-position: right; + qproperty-icon: url(:/overlay/osk_button_backspace_dark.png); qproperty-iconSize: 36px; } +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { + image: url(:/overlay/osk_button_Y_dark.png); + image-position: right; +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { color: rgba(44, 44, 44, 1); + image: url(:/overlay/osk_button_plus_dark.png); image-position: right; } +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift_dark.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift_on_dark.png); + qproperty-iconSize: 36px; +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket, QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis, @@ -1866,6 +1889,47 @@ QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { color: #ccc; } +QDialog#QtSoftwareKeyboardDialog QWidget#button_L, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { + image: url(:/overlay/button_L_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { + image: url(:/overlay/arrow_left_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_R, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { + image: url(:/overlay/button_R_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { + image: url(:/overlay/arrow_right_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { + image: url(:/overlay/button_press_stick_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_X, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { + image: url(:/overlay/button_X_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_A, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { + image: url(:/overlay/button_A_dark.png); +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, @@ -1897,6 +1961,23 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { color: rgba(144, 144, 144, 1); } +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { + image: url(:/overlay/osk_button_plus_dark_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { + image: url(:/overlay/osk_button_B_dark_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { + image: url(:/overlay/osk_button_Y_dark_disabled.png); +} + QDialog#QtSoftwareKeyboardDialog QFrame, QDialog#QtSoftwareKeyboardDialog QFrame[frameShape="0"], QDialog#OverlayDialog QFrame, diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc deleted file mode 100644 index 1a071adda6..0000000000 --- a/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc +++ /dev/null @@ -1,224 +0,0 @@ - - - - - icons/index.theme - - - icons/index.theme - - - - rc/arrow_down.png - rc/arrow_down@2x.png - rc/arrow_down_disabled.png - rc/arrow_down_disabled@2x.png - rc/arrow_down_focus.png - rc/arrow_down_focus@2x.png - rc/arrow_down_pressed.png - rc/arrow_down_pressed@2x.png - rc/arrow_left.png - rc/arrow_left@2x.png - rc/arrow_left_disabled.png - rc/arrow_left_disabled@2x.png - rc/arrow_left_focus.png - rc/arrow_left_focus@2x.png - rc/arrow_left_pressed.png - rc/arrow_left_pressed@2x.png - rc/arrow_right.png - rc/arrow_right@2x.png - rc/arrow_right_disabled.png - rc/arrow_right_disabled@2x.png - rc/arrow_right_focus.png - rc/arrow_right_focus@2x.png - rc/arrow_right_pressed.png - rc/arrow_right_pressed@2x.png - rc/arrow_up.png - rc/arrow_up@2x.png - rc/arrow_up_disabled.png - rc/arrow_up_disabled@2x.png - rc/arrow_up_focus.png - rc/arrow_up_focus@2x.png - rc/arrow_up_pressed.png - rc/arrow_up_pressed@2x.png - rc/base_icon.png - rc/base_icon@2x.png - rc/base_icon_disabled.png - rc/base_icon_disabled@2x.png - rc/base_icon_focus.png - rc/base_icon_focus@2x.png - rc/base_icon_pressed.png - rc/base_icon_pressed@2x.png - rc/branch_closed.png - rc/branch_closed@2x.png - rc/branch_closed_disabled.png - rc/branch_closed_disabled@2x.png - rc/branch_closed_focus.png - rc/branch_closed_focus@2x.png - rc/branch_closed_pressed.png - rc/branch_closed_pressed@2x.png - rc/branch_end.png - rc/branch_end@2x.png - rc/branch_end_disabled.png - rc/branch_end_disabled@2x.png - rc/branch_end_focus.png - rc/branch_end_focus@2x.png - rc/branch_end_pressed.png - rc/branch_end_pressed@2x.png - rc/branch_line.png - rc/branch_line@2x.png - rc/branch_line_disabled.png - rc/branch_line_disabled@2x.png - rc/branch_line_focus.png - rc/branch_line_focus@2x.png - rc/branch_line_pressed.png - rc/branch_line_pressed@2x.png - rc/branch_more.png - rc/branch_more@2x.png - rc/branch_more_disabled.png - rc/branch_more_disabled@2x.png - rc/branch_more_focus.png - rc/branch_more_focus@2x.png - rc/branch_more_pressed.png - rc/branch_more_pressed@2x.png - rc/branch_open.png - rc/branch_open@2x.png - rc/branch_open_disabled.png - rc/branch_open_disabled@2x.png - rc/branch_open_focus.png - rc/branch_open_focus@2x.png - rc/branch_open_pressed.png - rc/branch_open_pressed@2x.png - rc/checkbox_checked.png - rc/checkbox_checked@2x.png - rc/checkbox_checked_disabled.png - rc/checkbox_checked_disabled@2x.png - rc/checkbox_checked_focus.png - rc/checkbox_checked_focus@2x.png - rc/checkbox_checked_pressed.png - rc/checkbox_checked_pressed@2x.png - rc/checkbox_indeterminate.png - rc/checkbox_indeterminate@2x.png - rc/checkbox_indeterminate_disabled.png - rc/checkbox_indeterminate_disabled@2x.png - rc/checkbox_indeterminate_focus.png - rc/checkbox_indeterminate_focus@2x.png - rc/checkbox_indeterminate_pressed.png - rc/checkbox_indeterminate_pressed@2x.png - rc/checkbox_unchecked.png - rc/checkbox_unchecked@2x.png - rc/checkbox_unchecked_disabled.png - rc/checkbox_unchecked_disabled@2x.png - rc/checkbox_unchecked_focus.png - rc/checkbox_unchecked_focus@2x.png - rc/checkbox_unchecked_pressed.png - rc/checkbox_unchecked_pressed@2x.png - rc/line_horizontal.png - rc/line_horizontal@2x.png - rc/line_horizontal_disabled.png - rc/line_horizontal_disabled@2x.png - rc/line_horizontal_focus.png - rc/line_horizontal_focus@2x.png - rc/line_horizontal_pressed.png - rc/line_horizontal_pressed@2x.png - rc/line_vertical.png - rc/line_vertical@2x.png - rc/line_vertical_disabled.png - rc/line_vertical_disabled@2x.png - rc/line_vertical_focus.png - rc/line_vertical_focus@2x.png - rc/line_vertical_pressed.png - rc/line_vertical_pressed@2x.png - rc/radio_checked.png - rc/radio_checked@2x.png - rc/radio_checked_disabled.png - rc/radio_checked_disabled@2x.png - rc/radio_checked_focus.png - rc/radio_checked_focus@2x.png - rc/radio_checked_pressed.png - rc/radio_checked_pressed@2x.png - rc/radio_unchecked.png - rc/radio_unchecked@2x.png - rc/radio_unchecked_disabled.png - rc/radio_unchecked_disabled@2x.png - rc/radio_unchecked_focus.png - rc/radio_unchecked_focus@2x.png - rc/radio_unchecked_pressed.png - rc/radio_unchecked_pressed@2x.png - rc/toolbar_move_horizontal.png - rc/toolbar_move_horizontal@2x.png - rc/toolbar_move_horizontal_disabled.png - rc/toolbar_move_horizontal_disabled@2x.png - rc/toolbar_move_horizontal_focus.png - rc/toolbar_move_horizontal_focus@2x.png - rc/toolbar_move_horizontal_pressed.png - rc/toolbar_move_horizontal_pressed@2x.png - rc/toolbar_move_vertical.png - rc/toolbar_move_vertical@2x.png - rc/toolbar_move_vertical_disabled.png - rc/toolbar_move_vertical_disabled@2x.png - rc/toolbar_move_vertical_focus.png - rc/toolbar_move_vertical_focus@2x.png - rc/toolbar_move_vertical_pressed.png - rc/toolbar_move_vertical_pressed@2x.png - rc/toolbar_separator_horizontal.png - rc/toolbar_separator_horizontal@2x.png - rc/toolbar_separator_horizontal_disabled.png - rc/toolbar_separator_horizontal_disabled@2x.png - rc/toolbar_separator_horizontal_focus.png - rc/toolbar_separator_horizontal_focus@2x.png - rc/toolbar_separator_horizontal_pressed.png - rc/toolbar_separator_horizontal_pressed@2x.png - rc/toolbar_separator_vertical.png - rc/toolbar_separator_vertical@2x.png - rc/toolbar_separator_vertical_disabled.png - rc/toolbar_separator_vertical_disabled@2x.png - rc/toolbar_separator_vertical_focus.png - rc/toolbar_separator_vertical_focus@2x.png - rc/toolbar_separator_vertical_pressed.png - rc/toolbar_separator_vertical_pressed@2x.png - rc/transparent.png - rc/transparent@2x.png - rc/transparent_disabled.png - rc/transparent_disabled@2x.png - rc/transparent_focus.png - rc/transparent_focus@2x.png - rc/transparent_pressed.png - rc/transparent_pressed@2x.png - rc/window_close.png - rc/window_close@2x.png - rc/window_close_disabled.png - rc/window_close_disabled@2x.png - rc/window_close_focus.png - rc/window_close_focus@2x.png - rc/window_close_pressed.png - rc/window_close_pressed@2x.png - rc/window_grip.png - rc/window_grip@2x.png - rc/window_grip_disabled.png - rc/window_grip_disabled@2x.png - rc/window_grip_focus.png - rc/window_grip_focus@2x.png - rc/window_grip_pressed.png - rc/window_grip_pressed@2x.png - rc/window_minimize.png - rc/window_minimize@2x.png - rc/window_minimize_disabled.png - rc/window_minimize_disabled@2x.png - rc/window_minimize_focus.png - rc/window_minimize_focus@2x.png - rc/window_minimize_pressed.png - rc/window_minimize_pressed@2x.png - rc/window_undock.png - rc/window_undock@2x.png - rc/window_undock_disabled.png - rc/window_undock_disabled@2x.png - rc/window_undock_focus.png - rc/window_undock_focus@2x.png - rc/window_undock_pressed.png - rc/window_undock_pressed@2x.png - - diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme b/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme index 34c449f19a..20f9f6d633 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme +++ b/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme @@ -1,4 +1,14 @@ [Icon Theme] Name=qdarkstyle_midnight_blue -Comment=Dark theme (Midnight Blue style) -Inherits=default_dark +Comment=dark theme +Inherits=colorful +Directories=16x16,48x48,256x256 + +[16x16] +Size=16 + +[48x48] +Size=48 + +[256x256] +Size=256 diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc index 0cdaefa035..dc3d7fecbd 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc @@ -1,5 +1,228 @@ - - dark.qss - + + icons/index.theme + ../qdarkstyle/icons/16x16/lock.png + ../qdarkstyle/icons/16x16/view-refresh.png + ../qdarkstyle/icons/48x48/bad_folder.png + ../qdarkstyle/icons/48x48/chip.png + ../qdarkstyle/icons/48x48/folder.png + ../qdarkstyle/icons/48x48/no_avatar.png + ../qdarkstyle/icons/48x48/list-add.png + ../qdarkstyle/icons/48x48/sd_card.png + ../qdarkstyle/icons/48x48/star.png + ../qdarkstyle/icons/256x256/plus_folder.png + + + rc/arrow_down.png + rc/arrow_down@2x.png + rc/arrow_down_disabled.png + rc/arrow_down_disabled@2x.png + rc/arrow_down_focus.png + rc/arrow_down_focus@2x.png + rc/arrow_down_pressed.png + rc/arrow_down_pressed@2x.png + rc/arrow_left.png + rc/arrow_left@2x.png + rc/arrow_left_disabled.png + rc/arrow_left_disabled@2x.png + rc/arrow_left_focus.png + rc/arrow_left_focus@2x.png + rc/arrow_left_pressed.png + rc/arrow_left_pressed@2x.png + rc/arrow_right.png + rc/arrow_right@2x.png + rc/arrow_right_disabled.png + rc/arrow_right_disabled@2x.png + rc/arrow_right_focus.png + rc/arrow_right_focus@2x.png + rc/arrow_right_pressed.png + rc/arrow_right_pressed@2x.png + rc/arrow_up.png + rc/arrow_up@2x.png + rc/arrow_up_disabled.png + rc/arrow_up_disabled@2x.png + rc/arrow_up_focus.png + rc/arrow_up_focus@2x.png + rc/arrow_up_pressed.png + rc/arrow_up_pressed@2x.png + rc/base_icon.png + rc/base_icon@2x.png + rc/base_icon_disabled.png + rc/base_icon_disabled@2x.png + rc/base_icon_focus.png + rc/base_icon_focus@2x.png + rc/base_icon_pressed.png + rc/base_icon_pressed@2x.png + rc/branch_closed.png + rc/branch_closed@2x.png + rc/branch_closed_disabled.png + rc/branch_closed_disabled@2x.png + rc/branch_closed_focus.png + rc/branch_closed_focus@2x.png + rc/branch_closed_pressed.png + rc/branch_closed_pressed@2x.png + rc/branch_end.png + rc/branch_end@2x.png + rc/branch_end_disabled.png + rc/branch_end_disabled@2x.png + rc/branch_end_focus.png + rc/branch_end_focus@2x.png + rc/branch_end_pressed.png + rc/branch_end_pressed@2x.png + rc/branch_line.png + rc/branch_line@2x.png + rc/branch_line_disabled.png + rc/branch_line_disabled@2x.png + rc/branch_line_focus.png + rc/branch_line_focus@2x.png + rc/branch_line_pressed.png + rc/branch_line_pressed@2x.png + rc/branch_more.png + rc/branch_more@2x.png + rc/branch_more_disabled.png + rc/branch_more_disabled@2x.png + rc/branch_more_focus.png + rc/branch_more_focus@2x.png + rc/branch_more_pressed.png + rc/branch_more_pressed@2x.png + rc/branch_open.png + rc/branch_open@2x.png + rc/branch_open_disabled.png + rc/branch_open_disabled@2x.png + rc/branch_open_focus.png + rc/branch_open_focus@2x.png + rc/branch_open_pressed.png + rc/branch_open_pressed@2x.png + rc/checkbox_checked.png + rc/checkbox_checked@2x.png + rc/checkbox_checked_disabled.png + rc/checkbox_checked_disabled@2x.png + rc/checkbox_checked_focus.png + rc/checkbox_checked_focus@2x.png + rc/checkbox_checked_pressed.png + rc/checkbox_checked_pressed@2x.png + rc/checkbox_indeterminate.png + rc/checkbox_indeterminate@2x.png + rc/checkbox_indeterminate_disabled.png + rc/checkbox_indeterminate_disabled@2x.png + rc/checkbox_indeterminate_focus.png + rc/checkbox_indeterminate_focus@2x.png + rc/checkbox_indeterminate_pressed.png + rc/checkbox_indeterminate_pressed@2x.png + rc/checkbox_unchecked.png + rc/checkbox_unchecked@2x.png + rc/checkbox_unchecked_disabled.png + rc/checkbox_unchecked_disabled@2x.png + rc/checkbox_unchecked_focus.png + rc/checkbox_unchecked_focus@2x.png + rc/checkbox_unchecked_pressed.png + rc/checkbox_unchecked_pressed@2x.png + rc/line_horizontal.png + rc/line_horizontal@2x.png + rc/line_horizontal_disabled.png + rc/line_horizontal_disabled@2x.png + rc/line_horizontal_focus.png + rc/line_horizontal_focus@2x.png + rc/line_horizontal_pressed.png + rc/line_horizontal_pressed@2x.png + rc/line_vertical.png + rc/line_vertical@2x.png + rc/line_vertical_disabled.png + rc/line_vertical_disabled@2x.png + rc/line_vertical_focus.png + rc/line_vertical_focus@2x.png + rc/line_vertical_pressed.png + rc/line_vertical_pressed@2x.png + rc/radio_checked.png + rc/radio_checked@2x.png + rc/radio_checked_disabled.png + rc/radio_checked_disabled@2x.png + rc/radio_checked_focus.png + rc/radio_checked_focus@2x.png + rc/radio_checked_pressed.png + rc/radio_checked_pressed@2x.png + rc/radio_unchecked.png + rc/radio_unchecked@2x.png + rc/radio_unchecked_disabled.png + rc/radio_unchecked_disabled@2x.png + rc/radio_unchecked_focus.png + rc/radio_unchecked_focus@2x.png + rc/radio_unchecked_pressed.png + rc/radio_unchecked_pressed@2x.png + rc/toolbar_move_horizontal.png + rc/toolbar_move_horizontal@2x.png + rc/toolbar_move_horizontal_disabled.png + rc/toolbar_move_horizontal_disabled@2x.png + rc/toolbar_move_horizontal_focus.png + rc/toolbar_move_horizontal_focus@2x.png + rc/toolbar_move_horizontal_pressed.png + rc/toolbar_move_horizontal_pressed@2x.png + rc/toolbar_move_vertical.png + rc/toolbar_move_vertical@2x.png + rc/toolbar_move_vertical_disabled.png + rc/toolbar_move_vertical_disabled@2x.png + rc/toolbar_move_vertical_focus.png + rc/toolbar_move_vertical_focus@2x.png + rc/toolbar_move_vertical_pressed.png + rc/toolbar_move_vertical_pressed@2x.png + rc/toolbar_separator_horizontal.png + rc/toolbar_separator_horizontal@2x.png + rc/toolbar_separator_horizontal_disabled.png + rc/toolbar_separator_horizontal_disabled@2x.png + rc/toolbar_separator_horizontal_focus.png + rc/toolbar_separator_horizontal_focus@2x.png + rc/toolbar_separator_horizontal_pressed.png + rc/toolbar_separator_horizontal_pressed@2x.png + rc/toolbar_separator_vertical.png + rc/toolbar_separator_vertical@2x.png + rc/toolbar_separator_vertical_disabled.png + rc/toolbar_separator_vertical_disabled@2x.png + rc/toolbar_separator_vertical_focus.png + rc/toolbar_separator_vertical_focus@2x.png + rc/toolbar_separator_vertical_pressed.png + rc/toolbar_separator_vertical_pressed@2x.png + rc/transparent.png + rc/transparent@2x.png + rc/transparent_disabled.png + rc/transparent_disabled@2x.png + rc/transparent_focus.png + rc/transparent_focus@2x.png + rc/transparent_pressed.png + rc/transparent_pressed@2x.png + rc/window_close.png + rc/window_close@2x.png + rc/window_close_disabled.png + rc/window_close_disabled@2x.png + rc/window_close_focus.png + rc/window_close_focus@2x.png + rc/window_close_pressed.png + rc/window_close_pressed@2x.png + rc/window_grip.png + rc/window_grip@2x.png + rc/window_grip_disabled.png + rc/window_grip_disabled@2x.png + rc/window_grip_focus.png + rc/window_grip_focus@2x.png + rc/window_grip_pressed.png + rc/window_grip_pressed@2x.png + rc/window_minimize.png + rc/window_minimize@2x.png + rc/window_minimize_disabled.png + rc/window_minimize_disabled@2x.png + rc/window_minimize_focus.png + rc/window_minimize_focus@2x.png + rc/window_minimize_pressed.png + rc/window_minimize_pressed@2x.png + rc/window_undock.png + rc/window_undock@2x.png + rc/window_undock_disabled.png + rc/window_undock_disabled@2x.png + rc/window_undock_focus.png + rc/window_undock_focus@2x.png + rc/window_undock_pressed.png + rc/window_undock_pressed@2x.png + + + style.qss + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss similarity index 95% rename from dist/qt_themes/qdarkstyle_midnight_blue/dark.qss rename to dist/qt_themes/qdarkstyle_midnight_blue/style.qss index 3086b90ade..eb0889b139 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qss @@ -1296,10 +1296,6 @@ QSlider:focus { border: none; } -QSlider:horizontal { - height: 20px; -} - QSlider::groove:horizontal { background: #32414B; border: 1px solid #32414B; @@ -2783,10 +2779,41 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed { border-radius: 6px; } +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num { + image: url(:/overlay/osk_button_B_dark.png); + image-position: right; + qproperty-icon: url(:/overlay/osk_button_backspace_dark.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift { + image: url(:/overlay/osk_button_Y_dark.png); + image-position: right; +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift, QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num { color: rgba(44, 44, 44, 1); + image: url(:/overlay/osk_button_plus_dark.png); + image-position: right; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift_dark.png); + qproperty-iconSize: 36px; +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift { + image: url(:/overlay/osk_button_shift_lock_off.png); + image-position: left; + qproperty-icon: url(:/overlay/osk_button_shift_on_dark.png); + qproperty-iconSize: 36px; } QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket, @@ -2801,6 +2828,47 @@ QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel { color: #ccc; } +QDialog#QtSoftwareKeyboardDialog QWidget#button_L, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num { + image: url(:/overlay/button_L_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num { + image: url(:/overlay/arrow_left_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_R, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num { + image: url(:/overlay/button_R_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num { + image: url(:/overlay/arrow_right_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick, +QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift { + image: url(:/overlay/button_press_stick_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_X, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num { + image: url(:/overlay/button_X_dark.png); +} + +QDialog#QtSoftwareKeyboardDialog QWidget#button_A, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift, +QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num { + image: url(:/overlay/button_A_dark.png); +} + QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled, @@ -2831,3 +2899,20 @@ QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled, QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled { color: rgba(144, 144, 144, 1); } + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled { + image: url(:/overlay/osk_button_plus_dark_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled { + image: url(:/overlay/osk_button_B_dark_disabled.png); +} + +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled { + image: url(:/overlay/osk_button_Y_dark_disabled.png); +} diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc deleted file mode 100644 index 60b95db02a..0000000000 --- a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - icons/index.theme - ../monochrome_dark/icons/16x16/lock.png - ../monochrome_dark/icons/48x48/bad_folder.png - ../monochrome_dark/icons/48x48/chip.png - ../monochrome_dark/icons/48x48/folder.png - ../monochrome_dark/icons/48x48/list-add.png - ../monochrome_dark/icons/48x48/sd_card.png - ../monochrome_dark/icons/48x48/star.png - ../monochrome_dark/icons/256x256/plus_folder.png - - - - icons/index.theme - ../monochrome_dark/icons/16x16/lock.png - ../monochrome_dark/icons/48x48/bad_folder.png - ../monochrome_dark/icons/48x48/chip.png - ../monochrome_dark/icons/48x48/folder.png - ../monochrome_dark/icons/48x48/list-add.png - ../monochrome_dark/icons/48x48/no_avatar.png - ../monochrome_dark/icons/48x48/sd_card.png - ../monochrome_dark/icons/48x48/star.png - ../monochrome_dark/icons/256x256/plus_folder.png - - diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme deleted file mode 100644 index d6ed7d55ec..0000000000 --- a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme +++ /dev/null @@ -1,14 +0,0 @@ -[Icon Theme] -Name=qdarkstyle_midnight_blue_monochrome -Comment=Monochrome dark theme (Midnight Blue style) -Inherits=qdarkstyle_midnight_blue -Directories=16x16,48x48,256x256 - -[16x16] -Size=16 - -[48x48] -Size=48 - -[256x256] -Size=256 diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc deleted file mode 100644 index eeb5f34cbb..0000000000 --- a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc +++ /dev/null @@ -1,8 +0,0 @@ - - - ../qdarkstyle_midnight_blue/dark.qss - - - ../qdarkstyle/dark.qss - - diff --git a/dist/qt_themes/qdarkstyle_monochrome/icons.qrc b/dist/qt_themes/qdarkstyle_monochrome/icons.qrc deleted file mode 100644 index 355fe22beb..0000000000 --- a/dist/qt_themes/qdarkstyle_monochrome/icons.qrc +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - icons/index.theme - ../monochrome_dark/icons/16x16/lock.png - ../monochrome_dark/icons/48x48/bad_folder.png - ../monochrome_dark/icons/48x48/chip.png - ../monochrome_dark/icons/48x48/folder.png - ../monochrome_dark/icons/48x48/list-add.png - ../monochrome_dark/icons/48x48/sd_card.png - ../monochrome_dark/icons/48x48/star.png - ../monochrome_dark/icons/256x256/plus_folder.png - - - - icons/index.theme - ../monochrome_dark/icons/16x16/lock.png - ../monochrome_dark/icons/48x48/bad_folder.png - ../monochrome_dark/icons/48x48/chip.png - ../monochrome_dark/icons/48x48/folder.png - ../monochrome_dark/icons/48x48/list-add.png - ../monochrome_dark/icons/48x48/no_avatar.png - ../monochrome_dark/icons/48x48/sd_card.png - ../monochrome_dark/icons/48x48/star.png - ../monochrome_dark/icons/256x256/plus_folder.png - - diff --git a/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme b/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme deleted file mode 100644 index a8fd60ba29..0000000000 --- a/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme +++ /dev/null @@ -1,14 +0,0 @@ -[Icon Theme] -Name=qdarkstyle_monochrome -Comment=Monochrome dark theme (Mine Shaft style) -Inherits=qdarkstyle -Directories=16x16,48x48,256x256 - -[16x16] -Size=16 - -[48x48] -Size=48 - -[256x256] -Size=256 diff --git a/dist/qt_themes/qdarkstyle_monochrome/style.qrc b/dist/qt_themes/qdarkstyle_monochrome/style.qrc deleted file mode 100644 index 76f7767ca8..0000000000 --- a/dist/qt_themes/qdarkstyle_monochrome/style.qrc +++ /dev/null @@ -1,8 +0,0 @@ - - - ../qdarkstyle/dark.qss - - - ../qdarkstyle/dark.qss - - diff --git a/img/need to fix bugs.png b/img/need to fix bugs.png deleted file mode 100644 index 124c55c91a..0000000000 Binary files a/img/need to fix bugs.png and /dev/null differ diff --git a/src/android/app/src/main/res/values-ar/strings.xml b/src/android/app/src/main/res/values-ar/strings.xml index 3369a613ce..6717a3527a 100644 --- a/src/android/app/src/main/res/values-ar/strings.xml +++ b/src/android/app/src/main/res/values-ar/strings.xml @@ -137,7 +137,7 @@ محاكي سويتش مفتوح المصدر المساهمين مصنوع من فريق يوزو - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors المشاريع التي تجعل تطبيق يوزو لنظام أندرويد ممكنًا البناء بيانات المستخدم @@ -149,9 +149,9 @@ تم تصدير بيانات المستخدم بنجاح تم استيراد بيانات المستخدم بنجاح تم إلغاء التصدير - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu الوصول المبكر diff --git a/src/android/app/src/main/res/values-ckb/strings.xml b/src/android/app/src/main/res/values-ckb/strings.xml index c294233f42..510b33bcad 100644 --- a/src/android/app/src/main/res/values-ckb/strings.xml +++ b/src/android/app/src/main/res/values-ckb/strings.xml @@ -103,12 +103,12 @@ ئیمۆلیتەرێکی سەرچاوە-کراوەی سویچ بەشداربووان دروستکراوە لەگەڵ \u2764 لەلایەن تیمەکەی یوزو - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors ئەو پڕۆژانەی کە یوزوی بۆ ئەندرۆید ڕەخساند بونیات - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu بەزوویی دەسپێگەشتن diff --git a/src/android/app/src/main/res/values-cs/strings.xml b/src/android/app/src/main/res/values-cs/strings.xml index 865fb76f5e..4318d89afd 100644 --- a/src/android/app/src/main/res/values-cs/strings.xml +++ b/src/android/app/src/main/res/values-cs/strings.xml @@ -86,7 +86,7 @@ Open-source Switch emulátor Přispěvatelé Vyrobeno s \u2764 od suyu týmu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Číslo sestavení Uživatelská data Exportování uživatelských dat... @@ -96,9 +96,9 @@ Uživatelská data byla úspěšně exportována. Uživatelská data byla úspěšně importována. Export zrušen - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu https://play.google.com/store/apps/details?id=org.suyu.suyu_emu.ea Žádná manuální instalace diff --git a/src/android/app/src/main/res/values-de/strings.xml b/src/android/app/src/main/res/values-de/strings.xml index 4f4f34630a..b74c08c6ce 100644 --- a/src/android/app/src/main/res/values-de/strings.xml +++ b/src/android/app/src/main/res/values-de/strings.xml @@ -122,7 +122,7 @@ Wirklich fortfahren? Ein quelloffener Switch-Emulator Beitragende Gemacht mit \u2764 vom suyu Team - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Projekte, die suyu für Android möglich machen Build Nutzerdaten @@ -131,9 +131,9 @@ Wirklich fortfahren? Nutzerdaten erfolgreich exportiert Nutzerdaten erfolgreich importiert Export abgebrochen - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Early Access diff --git a/src/android/app/src/main/res/values-es/strings.xml b/src/android/app/src/main/res/values-es/strings.xml index 8f401ce1bd..7262bff489 100644 --- a/src/android/app/src/main/res/values-es/strings.xml +++ b/src/android/app/src/main/res/values-es/strings.xml @@ -167,7 +167,7 @@ Un emulador de Switch de código abierto Contribuidores Hecho con \u2764 del equipo suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Proyectos que hacen que suyu para Android sea una realidad Versión Datos de usuario @@ -180,9 +180,9 @@ Datos de usuario importados con éxito Exportación cancelada Asegúrese de que las carpetas de datos de usuario estén en la raíz de la carpeta del zip y contengan un archivo config en config/config.ini e inténtelo de nuevo. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Early Access diff --git a/src/android/app/src/main/res/values-fa/strings.xml b/src/android/app/src/main/res/values-fa/strings.xml index a63c32e059..884e9e4334 100644 --- a/src/android/app/src/main/res/values-fa/strings.xml +++ b/src/android/app/src/main/res/values-fa/strings.xml @@ -165,7 +165,7 @@ یک شبیه‌ساز سوئیچ منبع باز مشارکت کنندگان Made with \u2764 from the suyu team - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors پروژه‌هایی که suyu را برای اندروید ممکن می‌سازند ساخت داده کاربر @@ -178,9 +178,9 @@ داده‌های کاربر با موفقیت وارد شد صدور لغو شد مطمئن شوید که پوشه‌های داده کاربر در ریشه پوشه zip و حاوی یک فایل پیکربندی در config/config.ini هستند سپس دوباره امتحان کنید. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu دسترسی زودهنگام diff --git a/src/android/app/src/main/res/values-fr/strings.xml b/src/android/app/src/main/res/values-fr/strings.xml index d1a36c0f79..34bfd2cb79 100644 --- a/src/android/app/src/main/res/values-fr/strings.xml +++ b/src/android/app/src/main/res/values-fr/strings.xml @@ -167,7 +167,7 @@ Un émulateur Switch open source Contributeurs Fait avec \u2764 de l\'équipe suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Des projets qui rendent possible suyu pour Android Build Données utilisateur @@ -180,9 +180,9 @@ Les données utilisateur ont été importées avec succès Exportation annulée Assurez-vous que les dossiers de données utilisateur se trouvent à la racine du dossier ZIP et contiennent un fichier de configuration à config/config.ini, puis réessayez. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Early Access diff --git a/src/android/app/src/main/res/values-he/strings.xml b/src/android/app/src/main/res/values-he/strings.xml index fb5163268c..ee8be05463 100644 --- a/src/android/app/src/main/res/values-he/strings.xml +++ b/src/android/app/src/main/res/values-he/strings.xml @@ -152,7 +152,7 @@ אמולטור Switch עם קוד פתוח תורמים נוצר עם \u2764 מקבוצת suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors פרוייקטים שהופכים את suyu ל Android אפשרי גרסה נתוני משתמש @@ -165,9 +165,9 @@ נתוני משתמש יובאו בהצלחה ייצוא בוטל ודא שנתוני המשתמש נמצאים בשורש קובץ ה zip ושהוא מכיל קובץ סידור ב config/config.ini ונסה שוב. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu גישה מוקדמת diff --git a/src/android/app/src/main/res/values-hu/strings.xml b/src/android/app/src/main/res/values-hu/strings.xml index 073c41f6a9..61d44a91fe 100644 --- a/src/android/app/src/main/res/values-hu/strings.xml +++ b/src/android/app/src/main/res/values-hu/strings.xml @@ -163,7 +163,7 @@ Egy nyílt forráskódú Switch emulátor Hozzájárulók \u2764 által készítve a suyu csapattól - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Projektek, amik nélkül a suyu nem jöhetett volna létre Androidra Felhasználói adatok Az összes alkalmazásadat importálása/exportálása.\n\nA felhasználói adatok importálásakor az összes meglévő felhasználói adat törlődik! @@ -175,9 +175,9 @@ Felhasználói adatok sikeresen importálva Exportálás megszakítva Ellenőrizd, hogy a felhasználói adatok mappái a zip mappa gyökerében vannak, és tartalmaznak egy konfig fájlt a config/config.ini címen, majd próbáld meg újra. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Korai hozzáférés diff --git a/src/android/app/src/main/res/values-id/strings.xml b/src/android/app/src/main/res/values-id/strings.xml index 032d4e7aad..b80ceb837b 100644 --- a/src/android/app/src/main/res/values-id/strings.xml +++ b/src/android/app/src/main/res/values-id/strings.xml @@ -163,7 +163,7 @@ Emulator Switch Open-Source Kontributor Dibuat dengan \u2764 dari tim suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Proyek yang memungkinkan suyu untuk Android Versi Data pengguna @@ -176,9 +176,9 @@ Berhasil mengimpor data pengguna Ekspor Dibatalkan Pastikan folder data pengguna berada di akar folder zip dan berisi file konfigurasi di config/config.ini dan coba lagi. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Akses lebih awal diff --git a/src/android/app/src/main/res/values-it/strings.xml b/src/android/app/src/main/res/values-it/strings.xml index d4f7f8eca2..7a923d2fc3 100644 --- a/src/android/app/src/main/res/values-it/strings.xml +++ b/src/android/app/src/main/res/values-it/strings.xml @@ -155,7 +155,7 @@ Un emulatore della Switch open-source. Collaboratori Realizzato con \u2764 dal team suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Progetti che rendono suyu per Android possibile Compilazione Dati Utente @@ -168,9 +168,9 @@ Dati Utente importati con successo. Esportazione annullata Assicurati che la cartella dei Dati dell\'utente stiano nella radice del file.zip e che sia presente una cartella config in config/config.ini, poi, riprova. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Accesso Anticipato diff --git a/src/android/app/src/main/res/values-ja/strings.xml b/src/android/app/src/main/res/values-ja/strings.xml index 58be4d92df..5294298faa 100644 --- a/src/android/app/src/main/res/values-ja/strings.xml +++ b/src/android/app/src/main/res/values-ja/strings.xml @@ -122,7 +122,7 @@ オープンソースのSwitchエミュレータ 貢献者 suyuチームの\u2764で作られた - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors suyu for Androidの作成を可能にしたプロジェクト ビルド ユーザデータ @@ -132,9 +132,9 @@ ユーザデータのエクスポートに成功しました ユーザデータのインポートに成功しました エクスポートをキャンセルしました - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu 早期アクセス diff --git a/src/android/app/src/main/res/values-ko/strings.xml b/src/android/app/src/main/res/values-ko/strings.xml index b843589fcd..4a32020520 100644 --- a/src/android/app/src/main/res/values-ko/strings.xml +++ b/src/android/app/src/main/res/values-ko/strings.xml @@ -163,7 +163,7 @@ 오픈 소스 Switch 에뮬레이터 기여자 suyu 팀의 \u2764로 제작 - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Android용 suyu를 가능하게 하는 프로젝트 빌드 유저 데이터 @@ -176,9 +176,9 @@ 유저 데이터를 가져왔습니다. 내보내기 취소됨 유저 데이터 폴더가 ZIP 폴더의 루트 디렉토리에 위치하고 config/config.ini 구성 파일이 있는지 확인하고 다시 시도하세요. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu 앞서 해보기 diff --git a/src/android/app/src/main/res/values-nb/strings.xml b/src/android/app/src/main/res/values-nb/strings.xml index 5ba71ffcb3..c9ba29339b 100644 --- a/src/android/app/src/main/res/values-nb/strings.xml +++ b/src/android/app/src/main/res/values-nb/strings.xml @@ -103,12 +103,12 @@ En Switch-emulator med åpen kildekode Bidragsytere Laget med \u2764 fra suyu-teamet - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Prosjekter som gjør suyu for Android mulig Bygg - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Tidlig tilgang diff --git a/src/android/app/src/main/res/values-pl/strings.xml b/src/android/app/src/main/res/values-pl/strings.xml index 490547daa2..fedb52c0da 100644 --- a/src/android/app/src/main/res/values-pl/strings.xml +++ b/src/android/app/src/main/res/values-pl/strings.xml @@ -103,12 +103,12 @@ Otwarto-źródłowy emulator konsoli Switch Współtwórcy Stworzone z \u2764 przez zespół suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Projekty dzięki którym suyu mógł zostać stworzony Wersja - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Wczesny dostęp diff --git a/src/android/app/src/main/res/values-pt-rBR/strings.xml b/src/android/app/src/main/res/values-pt-rBR/strings.xml index ae2036d4b4..2abc99fb9f 100644 --- a/src/android/app/src/main/res/values-pt-rBR/strings.xml +++ b/src/android/app/src/main/res/values-pt-rBR/strings.xml @@ -167,7 +167,7 @@ Um emulador de Switch de código aberto Colaboradores Feito com \u2764 da equipe do Suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Projetos que tornam o suyu para Android possível Versão da Compilação Dados do usuário @@ -180,9 +180,9 @@ Dados de usuário importados com sucesso Exportação cancelada Verifique se as pastas de dados do usuário estão na raiz da pasta zip, se possuem um arquivo de configuração em config/config.ini e tente novamente. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Acesso Antecipado diff --git a/src/android/app/src/main/res/values-pt-rPT/strings.xml b/src/android/app/src/main/res/values-pt-rPT/strings.xml index 4c34f902be..e326cdd400 100644 --- a/src/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/src/android/app/src/main/res/values-pt-rPT/strings.xml @@ -167,7 +167,7 @@ Um emulador Switch de código aberto Contribuidores Feito com \u2764 da equipa do Suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Projetos que tornam o suyu para Android possível Versão Dado de utilizados @@ -180,9 +180,9 @@ Dados de utilizador importado com sucesso Exportação cancelada Verifiqua se as pastas de dados do utilizados estão na raiz da pasta zip e contêm um arquivo de configuração em config/config.ini e tenta novamente. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Acesso antecipado diff --git a/src/android/app/src/main/res/values-ru/strings.xml b/src/android/app/src/main/res/values-ru/strings.xml index f86af3c931..c78667db11 100644 --- a/src/android/app/src/main/res/values-ru/strings.xml +++ b/src/android/app/src/main/res/values-ru/strings.xml @@ -170,7 +170,7 @@ Эмулятор Switch с открытым исходным кодом Контрибьюторы Сделано с \u2764 от команды suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Проекты, которые сделали suyu для Android возможным Сборка Данные пользователя @@ -183,9 +183,9 @@ Пользовательские данные успешно импортированы Экспорт отменен Убедитесь что папки пользовательских данных находятся в корне zip-папки и содержат файл конфигурации config/config.ini и повторите попытку. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Ранний доступ diff --git a/src/android/app/src/main/res/values-uk/strings.xml b/src/android/app/src/main/res/values-uk/strings.xml index 2564c03205..9b8c71ccfd 100644 --- a/src/android/app/src/main/res/values-uk/strings.xml +++ b/src/android/app/src/main/res/values-uk/strings.xml @@ -89,11 +89,11 @@ Емулятор Switch із відкритим першокодом Вкладники Зроблено з \u2764 від команди suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Збірка - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Ранній доступ diff --git a/src/android/app/src/main/res/values-vi/strings.xml b/src/android/app/src/main/res/values-vi/strings.xml index 272d8000ed..4c0446fc96 100644 --- a/src/android/app/src/main/res/values-vi/strings.xml +++ b/src/android/app/src/main/res/values-vi/strings.xml @@ -103,12 +103,12 @@ Một giả lập Switch mã nguồn mở Người đóng góp Được làm với \u2764 từ nhóm suyu - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Các dự án làm cho suyu trên Android trở thành điều có thể Dựng - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Early Access diff --git a/src/android/app/src/main/res/values-zh-rCN/strings.xml b/src/android/app/src/main/res/values-zh-rCN/strings.xml index 6834e8c708..1cecb2bbf8 100644 --- a/src/android/app/src/main/res/values-zh-rCN/strings.xml +++ b/src/android/app/src/main/res/values-zh-rCN/strings.xml @@ -163,7 +163,7 @@ 一款开放源代码的 Switch 模拟器 贡献者 suyu 团队的用 \u2764 制作 - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Android 版 suyu 离不开这些项目的支持 构建版本 用户数据 @@ -176,9 +176,9 @@ 导入用户数据成功 已取消导出数据 请确保用户数据文件夹位于 zip 压缩包的根目录,并在 config/config.ini 路径中包含配置文件,然后重试。 - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu 抢先体验 diff --git a/src/android/app/src/main/res/values-zh-rTW/strings.xml b/src/android/app/src/main/res/values-zh-rTW/strings.xml index 5cf8f6f15a..4b2926a95f 100644 --- a/src/android/app/src/main/res/values-zh-rTW/strings.xml +++ b/src/android/app/src/main/res/values-zh-rTW/strings.xml @@ -163,7 +163,7 @@ 一個開放原始碼的 Switch 模擬器 參與者 使用來自 suyu 團隊的 \u2764 製作 - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors 這些專案使 suyu Android 版成為可能 組建 使用者資料 @@ -176,9 +176,9 @@ 使用者資料匯入成功 匯出已取消 請確保使用者資料夾位於 zip 壓縮檔的根目錄,並在 config/config.ini 路徑中包含組態檔案,並再試一次。 - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu 搶先體驗 diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index cbbfd9c766..da9c9d2cf8 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -170,7 +170,7 @@ An open-source Switch emulator Contributors Made with \u2764 from the suyu team - https://git.suyu.dev/suyu/suyu/activity/ + https://github.com/suyu-emu/suyu/graphs/contributors Projects that make suyu for Android possible Build User data @@ -183,9 +183,9 @@ User data imported successfully Export cancelled Make sure the user data folders are at the root of the zip folder and contain a config file at config/config.ini and try again. - https://chat.suyu.dev/ + https://discord.gg/suyu https://suyu.dev/ - https://git.suyu.dev/ + https://github.com/suyu-emu Early Access diff --git a/src/audio_core/common/feature_support.h b/src/audio_core/common/feature_support.h index e2e00769c2..e71905ae84 100644 --- a/src/audio_core/common/feature_support.h +++ b/src/audio_core/common/feature_support.h @@ -13,7 +13,7 @@ #include "common/polyfill_ranges.h" namespace AudioCore { -constexpr u32 CurrentRevision = 12; +constexpr u32 CurrentRevision = 11; enum class SupportTags { CommandProcessingTimeEstimatorVersion4, diff --git a/src/audio_core/device/audio_buffers.h b/src/audio_core/device/audio_buffers.h index 6e5e27ae3d..9e84a9c059 100644 --- a/src/audio_core/device/audio_buffers.h +++ b/src/audio_core/device/audio_buffers.h @@ -54,8 +54,7 @@ public: const s32 to_register{std::min(std::min(appended_count, BufferAppendLimit), BufferAppendLimit - registered_count)}; - out_buffers.reserve(to_register); - for (s32 i = 0; i < to_register; ++i) { + for (s32 i = 0; i < to_register; i++) { s32 index{appended_index - appended_count}; if (index < 0) { index += N; @@ -181,7 +180,6 @@ public: return 0; } - buffers_flushed.reserve(registered_count + appended_count); while (registered_count > 0) { auto index{registered_index - registered_count}; if (index < 0) { diff --git a/src/common/fs/fs_paths.h b/src/common/fs/fs_paths.h index de06571a6f..3720976efe 100644 --- a/src/common/fs/fs_paths.h +++ b/src/common/fs/fs_paths.h @@ -15,7 +15,6 @@ #define CONFIG_DIR "config" #define CRASH_DUMPS_DIR "crash_dumps" #define DUMP_DIR "dump" -#define ICONS_DIR "icons" #define KEYS_DIR "keys" #define LOAD_DIR "load" #define LOG_DIR "log" @@ -25,7 +24,7 @@ #define SDMC_DIR "sdmc" #define SHADER_DIR "shader" #define TAS_DIR "tas" -#define THEMES_DIR "qt_themes" +#define ICONS_DIR "icons" // suyu-specific files diff --git a/src/common/fs/path_util.cpp b/src/common/fs/path_util.cpp index 9362e18c39..e23f53fb9d 100644 --- a/src/common/fs/path_util.cpp +++ b/src/common/fs/path_util.cpp @@ -121,7 +121,6 @@ public: GenerateSuyuPath(SuyuPath::ConfigDir, suyu_path_config); GenerateSuyuPath(SuyuPath::CrashDumpsDir, suyu_path / CRASH_DUMPS_DIR); GenerateSuyuPath(SuyuPath::DumpDir, suyu_path / DUMP_DIR); - GenerateSuyuPath(SuyuPath::IconsDir, suyu_path / ICONS_DIR); GenerateSuyuPath(SuyuPath::KeysDir, suyu_path / KEYS_DIR); GenerateSuyuPath(SuyuPath::LoadDir, suyu_path / LOAD_DIR); GenerateSuyuPath(SuyuPath::LogDir, suyu_path / LOG_DIR); @@ -131,7 +130,7 @@ public: GenerateSuyuPath(SuyuPath::SDMCDir, suyu_path / SDMC_DIR); GenerateSuyuPath(SuyuPath::ShaderDir, suyu_path / SHADER_DIR); GenerateSuyuPath(SuyuPath::TASDir, suyu_path / TAS_DIR); - GenerateSuyuPath(SuyuPath::ThemesDir, suyu_path / THEMES_DIR); + GenerateSuyuPath(SuyuPath::IconsDir, suyu_path / ICONS_DIR); } private: diff --git a/src/common/fs/path_util.h b/src/common/fs/path_util.h index 1ac4a26eea..2076fbcd43 100644 --- a/src/common/fs/path_util.h +++ b/src/common/fs/path_util.h @@ -17,7 +17,6 @@ enum class SuyuPath { ConfigDir, // Where config files are stored. CrashDumpsDir, // Where crash dumps are stored. DumpDir, // Where dumped data is stored. - IconsDir, // Where Icons for Windows shortcuts are stored. KeysDir, // Where key files are stored. LoadDir, // Where cheat/mod files are stored. LogDir, // Where log files are stored. @@ -27,7 +26,7 @@ enum class SuyuPath { SDMCDir, // Where the emulated SDMC is stored. ShaderDir, // Where shaders are stored. TASDir, // Where TAS scripts are stored. - ThemesDir, // Where users should put their custom themes + IconsDir, // Where Icons for Windows shortcuts are stored. }; /** diff --git a/src/common/logging/formatter.h b/src/common/logging/formatter.h index 16bddde8fe..88e55505de 100644 --- a/src/common/logging/formatter.h +++ b/src/common/logging/formatter.h @@ -14,7 +14,7 @@ template struct fmt::formatter, char>> : formatter> { template - auto format(const T& value, FormatContext& ctx) const -> decltype(ctx.out()) { + auto format(const T& value, FormatContext& ctx) -> decltype(ctx.out()) { return fmt::formatter>::format( static_cast>(value), ctx); } diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 3339d5b4f0..948c557674 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -67,7 +67,6 @@ SWITCHABLE(u8, true); // Used in UISettings // TODO see if we can move this to uisettings.cpp SWITCHABLE(ConfirmStop, true); -SWITCHABLE(DarkModeState, true); #undef SETTING #undef SWITCHABLE diff --git a/src/common/settings.h b/src/common/settings.h index 4e993ea622..829759c94b 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +// Modified by palfaiate on <2024/03/07> + #pragma once #include @@ -88,7 +90,6 @@ SWITCHABLE(u8, true); // Used in UISettings // TODO see if we can move this to uisettings.h SWITCHABLE(ConfirmStop, true); -SWITCHABLE(DarkModeState, true); #undef SETTING #undef SWITCHABLE diff --git a/src/common/settings_enums.h b/src/common/settings_enums.h index 777f5b1b0a..fabae6d687 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -155,8 +155,6 @@ ENUM(ConsoleMode, Handheld, Docked); ENUM(AppletMode, HLE, LLE); -ENUM(DarkModeState, Off, On, Auto); - template inline std::string CanonicalizeEnum(Type id) { const auto group = EnumMetadata::Canonicalizations(); diff --git a/src/common/typed_address.h b/src/common/typed_address.h index a1deb89a04..d5e743583d 100644 --- a/src/common/typed_address.h +++ b/src/common/typed_address.h @@ -262,7 +262,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Common::PhysicalAddress& addr, FormatContext& ctx) const { + auto format(const Common::PhysicalAddress& addr, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{:#x}", static_cast(addr.GetValue())); } }; @@ -273,7 +273,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Common::ProcessAddress& addr, FormatContext& ctx) const { + auto format(const Common::ProcessAddress& addr, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{:#x}", static_cast(addr.GetValue())); } }; @@ -284,7 +284,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Common::VirtualAddress& addr, FormatContext& ctx) const { + auto format(const Common::VirtualAddress& addr, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{:#x}", static_cast(addr.GetValue())); } }; diff --git a/src/core/arm/dynarmic/dynarmic_cp15.cpp b/src/core/arm/dynarmic/dynarmic_cp15.cpp index ee97ac6395..f3eee0d42a 100644 --- a/src/core/arm/dynarmic/dynarmic_cp15.cpp +++ b/src/core/arm/dynarmic/dynarmic_cp15.cpp @@ -22,7 +22,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Dynarmic::A32::CoprocReg& reg, FormatContext& ctx) const { + auto format(const Dynarmic::A32::CoprocReg& reg, FormatContext& ctx) { return fmt::format_to(ctx.out(), "cp{}", static_cast(reg)); } }; diff --git a/src/core/core.cpp b/src/core/core.cpp index 83517d46cc..0cb81d6d8f 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -80,7 +80,6 @@ FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, if (filename == "00") { const auto dir = vfs->OpenDirectory(dir_name, FileSys::OpenMode::Read); std::vector concat; - concat.reserve(0x10); for (u32 i = 0; i < 0x10; ++i) { const auto file_name = fmt::format("{:02X}", i); diff --git a/src/core/debugger/gdbstub.cpp b/src/core/debugger/gdbstub.cpp index 22bc71e4d4..80091cc7e0 100644 --- a/src/core/debugger/gdbstub.cpp +++ b/src/core/debugger/gdbstub.cpp @@ -9,7 +9,6 @@ #include #include -#include #include "common/hex_util.h" #include "common/logging/log.h" @@ -482,7 +481,6 @@ void GDBStub::HandleQuery(std::string_view command) { // beginning of list const auto& threads = GetProcess()->GetThreadList(); std::vector thread_ids; - thread_ids.reserve(threads.size()); for (const auto& thread : threads) { thread_ids.push_back(fmt::format("{:x}", thread.GetThreadId())); } diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp index fae8e74e44..c208be83f2 100644 --- a/src/core/file_sys/registered_cache.cpp +++ b/src/core/file_sys/registered_cache.cpp @@ -261,7 +261,7 @@ std::vector PlaceholderCache::List() const { std::vector out; for (const auto& sdir : dir->GetSubdirectories()) { for (const auto& file : sdir->GetFiles()) { - const auto& name = file->GetName(); + const auto name = file->GetName(); if (name.length() == 36 && name.ends_with(".nca")) { out.push_back(Common::HexStringToArray<0x10>(name.substr(0, 32))); } diff --git a/src/core/file_sys/submission_package.cpp b/src/core/file_sys/submission_package.cpp index 4ab7e03590..68e8ec22fc 100644 --- a/src/core/file_sys/submission_package.cpp +++ b/src/core/file_sys/submission_package.cpp @@ -117,9 +117,7 @@ std::vector> NSP::GetNCAsCollapsed() const { if (extracted) LOG_WARNING(Service_FS, "called on an NSP that is of type extracted."); std::vector> out; - out.reserve(ncas.size()); for (const auto& map : ncas) { - out.reserve(map.second.size()); for (const auto& inner_map : map.second) out.push_back(inner_map.second); } diff --git a/src/core/file_sys/system_archive/ng_word.cpp b/src/core/file_sys/system_archive/ng_word.cpp index 61b0ed2f7b..1fa67877dd 100644 --- a/src/core/file_sys/system_archive/ng_word.cpp +++ b/src/core/file_sys/system_archive/ng_word.cpp @@ -10,7 +10,7 @@ namespace FileSys::SystemArchive { namespace NgWord1Data { -[[maybe_unused]] constexpr std::size_t NUMBER_WORD_TXT_FILES = 0x10; +constexpr std::size_t NUMBER_WORD_TXT_FILES = 0x10; // Should this archive replacement mysteriously not work on a future game, consider updating. constexpr std::array VERSION_DAT{0x0, 0x0, 0x0, 0x20}; // 11.0.1 System Version @@ -24,7 +24,7 @@ constexpr std::array WORD_TXT{ VirtualDir NgWord1() { std::vector files; - files.reserve(files.size() + 2); + files.reserve(NgWord1Data::NUMBER_WORD_TXT_FILES); for (std::size_t i = 0; i < files.size(); ++i) { files.push_back(MakeArrayFile(NgWord1Data::WORD_TXT, fmt::format("{}.txt", i))); @@ -54,7 +54,7 @@ constexpr std::array AC_NX_DATA{ VirtualDir NgWord2() { std::vector files; - files.reserve(NgWord2Data::NUMBER_AC_NX_FILES + 4); + files.reserve(NgWord2Data::NUMBER_AC_NX_FILES * 3); for (std::size_t i = 0; i < NgWord2Data::NUMBER_AC_NX_FILES; ++i) { files.push_back(MakeArrayFile(NgWord2Data::AC_NX_DATA, fmt::format("ac_{}_b1_nx", i))); diff --git a/src/core/file_sys/system_archive/time_zone_binary.cpp b/src/core/file_sys/system_archive/time_zone_binary.cpp index 3fa703a6fa..316ff0dc6f 100644 --- a/src/core/file_sys/system_archive/time_zone_binary.cpp +++ b/src/core/file_sys/system_archive/time_zone_binary.cpp @@ -37,7 +37,6 @@ const static std::map& directory, const std::map>& files) { - directory.reserve(files.size()); for (const auto& [filename, data] : files) { const auto data_copy{data}; const std::string filename_copy{filename}; @@ -55,7 +54,6 @@ static std::vector GenerateZoneinfoFiles() { VirtualDir TimeZoneBinary() { std::vector america_sub_dirs; - america_sub_dirs.reserve(tzdb_america_dirs.size()); for (const auto& [dir_name, files] : tzdb_america_dirs) { std::vector vfs_files; GenerateFiles(vfs_files, files); @@ -64,7 +62,6 @@ VirtualDir TimeZoneBinary() { } std::vector zoneinfo_sub_dirs; - zoneinfo_sub_dirs.reserve(tzdb_zoneinfo_dirs.size()); for (const auto& [dir_name, files] : tzdb_zoneinfo_dirs) { std::vector vfs_files; GenerateFiles(vfs_files, files); diff --git a/src/core/file_sys/vfs/vfs_cached.cpp b/src/core/file_sys/vfs/vfs_cached.cpp index 9f570520bb..01cd0f1e08 100644 --- a/src/core/file_sys/vfs/vfs_cached.cpp +++ b/src/core/file_sys/vfs/vfs_cached.cpp @@ -38,8 +38,7 @@ VirtualDir CachedVfsDirectory::GetSubdirectory(std::string_view dir_name) const std::vector CachedVfsDirectory::GetFiles() const { std::vector out; - out.reserve(files.size()); - for (const auto& [_, file] : files) { + for (auto& [file_name, file] : files) { out.push_back(file); } return out; @@ -47,8 +46,7 @@ std::vector CachedVfsDirectory::GetFiles() const { std::vector CachedVfsDirectory::GetSubdirectories() const { std::vector out; - out.reserve(dirs.size()); - for (auto& [_, dir] : dirs) { + for (auto& [dir_name, dir] : dirs) { out.push_back(dir); } return out; diff --git a/src/core/hle/kernel/k_memory_block.h b/src/core/hle/kernel/k_memory_block.h index d2b7e9a66e..46ee7e8cb3 100644 --- a/src/core/hle/kernel/k_memory_block.h +++ b/src/core/hle/kernel/k_memory_block.h @@ -175,8 +175,9 @@ constexpr KMemoryPermission ConvertToKMemoryPermission(Svc::MemoryPermission per return static_cast( (static_cast(perm) & KMemoryPermission::UserMask) | KMemoryPermission::KernelRead | - ((static_cast(perm) & KMemoryPermission::UserWrite) - << KMemoryPermission::KernelShift) | + ((static_cast(perm) & Svc::MemoryPermission::UserWrite) + ? KMemoryPermission::KernelWrite + : KMemoryPermission::None) | (perm == Svc::MemoryPermission::None ? KMemoryPermission::NotMapped : KMemoryPermission::None)); } diff --git a/src/core/hle/kernel/k_page_table_base.cpp b/src/core/hle/kernel/k_page_table_base.cpp index e67105dea4..6063b0e4db 100644 --- a/src/core/hle/kernel/k_page_table_base.cpp +++ b/src/core/hle/kernel/k_page_table_base.cpp @@ -172,7 +172,6 @@ Result KPageTableBase::InitializeForKernel(bool is_64_bit, KVirtualAddress start m_mapped_unsafe_physical_memory = 0; m_mapped_insecure_memory = 0; m_mapped_ipc_server_memory = 0; - m_alias_region_extra_size = 0; m_memory_block_slab_manager = m_kernel.GetSystemSystemResource().GetMemoryBlockSlabManagerPointer(); @@ -270,12 +269,6 @@ Result KPageTableBase::InitializeForProcess(Svc::CreateProcessFlag as_type, bool process_code_end = m_code_region_end; } - m_alias_region_extra_size = 0; - if (as_type == Svc::CreateProcessFlag::EnableReservedRegionExtraSize) { - m_alias_region_extra_size = GetAddressSpaceSize() / 8; - alias_region_size += m_alias_region_extra_size; - } - // Set other basic fields. m_enable_aslr = enable_aslr; m_enable_device_address_space_merge = enable_das_merge; @@ -1601,7 +1594,7 @@ size_t KPageTableBase::GetAliasCodeDataSize() const { } Result KPageTableBase::AllocateAndMapPagesImpl(PageLinkedList* page_list, KProcessAddress address, - size_t num_pages, KMemoryPermission perm) { + size_t num_pages, KPageProperties& perm) { ASSERT(this->IsLockedByCurrentThread()); // Create a page group to hold the pages we allocate. @@ -1622,7 +1615,6 @@ Result KPageTableBase::AllocateAndMapPagesImpl(PageLinkedList* page_list, KProce } // Map the pages. - const KPageProperties properties = {perm, false, false, DisableMergeAttribute::None}; R_RETURN(this->Operate(page_list, address, num_pages, pg, properties, OperationType::MapGroup, false)); } @@ -2756,12 +2748,12 @@ Result KPageTableBase::MapPages(KProcessAddress* out_addr, size_t num_pages, siz KScopedPageTableUpdater updater(this); // Perform mapping operation. + KPageProperties properties = {perm, false, false, DisableMergeAttribute::DisableHead}; if (is_pa_valid) { - const KPageProperties properties = {perm, false, false, DisableMergeAttribute::DisableHead}; R_TRY(this->Operate(updater.GetPageList(), addr, num_pages, phys_addr, true, properties, OperationType::Map, false)); } else { - R_TRY(this->AllocateAndMapPagesImpl(updater.GetPageList(), addr, num_pages, perm)); + R_TRY(this->AllocateAndMapPagesImpl(updater.GetPageList(), addr, num_pages, properties)); } // Update the blocks. @@ -2800,7 +2792,8 @@ Result KPageTableBase::MapPages(KProcessAddress address, size_t num_pages, KMemo KScopedPageTableUpdater updater(this); // Map the pages. - R_TRY(this->AllocateAndMapPagesImpl(updater.GetPageList(), address, num_pages, perm)); + KPageProperties properties = {perm, false, false, DisableMergeAttribute::DisableHead}; + R_TRY(this->AllocateAndMapPagesImpl(updater.GetPageList(), address, num_pages, properties)); // Update the blocks. m_memory_block_manager.Update(std::addressof(allocator), address, num_pages, state, perm, diff --git a/src/core/hle/kernel/k_page_table_base.h b/src/core/hle/kernel/k_page_table_base.h index d944306b70..d199ac6974 100644 --- a/src/core/hle/kernel/k_page_table_base.h +++ b/src/core/hle/kernel/k_page_table_base.h @@ -208,7 +208,6 @@ private: size_t m_mapped_unsafe_physical_memory{}; size_t m_mapped_insecure_memory{}; size_t m_mapped_ipc_server_memory{}; - size_t m_alias_region_extra_size{}; mutable KLightLock m_general_lock; mutable KLightLock m_map_physical_memory_lock; KLightLock m_device_map_lock; @@ -442,7 +441,7 @@ private: Svc::MemoryState state) const; Result AllocateAndMapPagesImpl(PageLinkedList* page_list, KProcessAddress address, - size_t num_pages, KMemoryPermission perm); + size_t num_pages, KPageProperties& perm); Result MapPageGroupImpl(PageLinkedList* page_list, KProcessAddress address, const KPageGroup& pg, const KPageProperties properties, bool reuse_ll); @@ -683,9 +682,6 @@ public: size_t GetAliasRegionSize() const { return m_alias_region_end - m_alias_region_start; } - size_t GetReservedRegionExtraSize() const { - return m_alias_region_extra_size; - } size_t GetStackRegionSize() const { return m_stack_region_end - m_stack_region_start; } diff --git a/src/core/hle/kernel/k_process_page_table.h b/src/core/hle/kernel/k_process_page_table.h index 38c5fb8162..346d7ca083 100644 --- a/src/core/hle/kernel/k_process_page_table.h +++ b/src/core/hle/kernel/k_process_page_table.h @@ -410,9 +410,6 @@ public: size_t GetAliasRegionSize() const { return m_page_table.GetAliasRegionSize(); } - size_t GetReservedRegionExtraSize() const { - return m_page_table.GetReservedRegionExtraSize(); - } size_t GetStackRegionSize() const { return m_page_table.GetStackRegionSize(); } diff --git a/src/core/hle/kernel/svc/svc_info.cpp b/src/core/hle/kernel/svc/svc_info.cpp index 007bb9f705..231e4d0e1b 100644 --- a/src/core/hle/kernel/svc/svc_info.cpp +++ b/src/core/hle/kernel/svc/svc_info.cpp @@ -37,8 +37,7 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle case InfoType::TotalNonSystemMemorySize: case InfoType::UsedNonSystemMemorySize: case InfoType::IsApplication: - case InfoType::FreeThreadCount: - case InfoType::ReservedRegionExtraSize: { + case InfoType::FreeThreadCount: { R_UNLESS(info_sub_id == 0, ResultInvalidEnumValue); const auto& handle_table = GetCurrentProcess(system.Kernel()).GetHandleTable(); @@ -135,10 +134,6 @@ Result GetInfo(Core::System& system, u64* result, InfoType info_id_type, Handle } R_SUCCEED(); - case InfoType::ReservedRegionExtraSize: - *result = process->GetPageTable().GetReservedRegionExtraSize(); - R_SUCCEED(); - default: break; } diff --git a/src/core/hle/kernel/svc_types.h b/src/core/hle/kernel/svc_types.h index df92fa0089..ab432ea78b 100644 --- a/src/core/hle/kernel/svc_types.h +++ b/src/core/hle/kernel/svc_types.h @@ -153,7 +153,6 @@ enum class InfoType : u32 { ThreadTickCount = 25, IsSvcPermitted = 26, IoRegionHint = 27, - ReservedRegionExtraSize = 28, MesosphereMeta = 65000, MesosphereCurrentProcess = 65001, @@ -643,12 +642,9 @@ enum class CreateProcessFlag : u32 { // 11.x+ DisableDeviceAddressSpaceMerge. DisableDeviceAddressSpaceMerge = (1 << 12), - EnableReservedRegionExtraSize = (1 << 13), - // Mask of all flags. All = Is64Bit | AddressSpaceMask | EnableDebug | EnableAslr | IsApplication | - PoolPartitionMask | OptimizeMemoryAllocation | DisableDeviceAddressSpaceMerge | - EnableReservedRegionExtraSize, + PoolPartitionMask | OptimizeMemoryAllocation | DisableDeviceAddressSpaceMerge, }; DECLARE_ENUM_FLAG_OPERATORS(CreateProcessFlag); diff --git a/src/core/hle/service/acc/acc.cpp b/src/core/hle/service/acc/acc.cpp index fd7104dfee..d0771996b7 100644 --- a/src/core/hle/service/acc/acc.cpp +++ b/src/core/hle/service/acc/acc.cpp @@ -323,7 +323,7 @@ public: {11, &IProfileCommon::LoadImage, "LoadImage"}, {20, &IProfileCommon::GetImageSize, "GetLargeImageSize"}, // 18.0.0+ {21, &IProfileCommon::LoadImage, "LoadLargeImage"}, // 18.0.0+ - {30, &IProfileCommon::Unknown, "GetImageId"}, // 18.0.0+ + {30, nullptr, "GetImageId"}, // 18.0.0+ }; RegisterHandlers(functions); @@ -494,13 +494,6 @@ protected: rb.Push(ResultSuccess); } - void Unknown(HLERequestContext& ctx) { - LOG_WARNING(Service_ACC, "(STUBBED) called"); - IPC::ResponseBuilder rb{ctx, 3}; - rb.Push(ResultSuccess); - rb.Push(0); - } - ProfileManager& profile_manager; Common::UUID user_id{}; ///< The user id this profile refers to. }; @@ -516,15 +509,7 @@ class IProfileEditor final : public IProfileCommon { public: explicit IProfileEditor(Core::System& system_, Common::UUID user_id_, ProfileManager& profile_manager_) - : IProfileCommon{system_, "IProfileEditor", true, user_id_, profile_manager_} { - // clang-format off - static const FunctionInfo functions[] = { - {30, &IProfileEditor::Unknown, "Unknown"}, - }; - // clang-format on - - RegisterHandlers(functions); - } + : IProfileCommon{system_, "IProfileEditor", true, user_id_, profile_manager_} {} }; class ISessionObject final : public ServiceFramework { diff --git a/src/core/hle/service/am/window_system.cpp b/src/core/hle/service/am/window_system.cpp index ca289a84d1..5cf24007cc 100644 --- a/src/core/hle/service/am/window_system.cpp +++ b/src/core/hle/service/am/window_system.cpp @@ -121,7 +121,7 @@ void WindowSystem::RequestAppletVisibilityState(Applet& applet, bool visible) { void WindowSystem::OnOperationModeChanged() { std::scoped_lock lk{m_lock}; - for (const auto& [_, applet] : m_applets) { + for (const auto& [aruid, applet] : m_applets) { std::scoped_lock lk2{applet->lock}; applet->lifecycle_manager.OnOperationAndPerformanceModeChanged(); } @@ -130,7 +130,7 @@ void WindowSystem::OnOperationModeChanged() { void WindowSystem::OnExitRequested() { std::scoped_lock lk{m_lock}; - for (const auto& [_, applet] : m_applets) { + for (const auto& [aruid, applet] : m_applets) { std::scoped_lock lk2{applet->lock}; applet->lifecycle_manager.RequestExit(); } @@ -156,7 +156,7 @@ void WindowSystem::OnHomeButtonPressed(ButtonPressDuration type) { void WindowSystem::PruneTerminatedAppletsLocked() { for (auto it = m_applets.begin(); it != m_applets.end(); /* ... */) { - const auto& [_, applet] = *it; + const auto& [aruid, applet] = *it; std::scoped_lock lk{applet->lock}; diff --git a/src/core/hle/service/ldn/lan_discovery.cpp b/src/core/hle/service/ldn/lan_discovery.cpp index e947a3c2a0..b9db19618a 100644 --- a/src/core/hle/service/ldn/lan_discovery.cpp +++ b/src/core/hle/service/ldn/lan_discovery.cpp @@ -119,7 +119,7 @@ Result LANDiscovery::Scan(std::span out_networks, s16& out_count, std::this_thread::sleep_for(std::chrono::seconds(1)); std::scoped_lock lock{packet_mutex}; - for (const auto& [_, info] : scan_results) { + for (const auto& [key, info] : scan_results) { if (out_count >= static_cast(out_networks.size())) { break; } diff --git a/src/core/hle/service/nfc/common/device.cpp b/src/core/hle/service/nfc/common/device.cpp index 652dff0457..bf29bb354e 100644 --- a/src/core/hle/service/nfc/common/device.cpp +++ b/src/core/hle/service/nfc/common/device.cpp @@ -15,7 +15,6 @@ #endif #include -#include #include "common/fs/file.h" #include "common/fs/fs.h" diff --git a/src/core/hle/service/ns/application_manager_interface.cpp b/src/core/hle/service/ns/application_manager_interface.cpp index df0bd8acce..7a91727f97 100644 --- a/src/core/hle/service/ns/application_manager_interface.cpp +++ b/src/core/hle/service/ns/application_manager_interface.cpp @@ -348,7 +348,7 @@ Result IApplicationManagerInterface::ListApplicationRecord( size_t i = 0; u8 ii = 24; - for (const auto& [_, game] : installed_games) { + for (const auto& [slot, game] : installed_games) { if (i >= limit) { break; } diff --git a/src/core/hle/service/psc/time/common.h b/src/core/hle/service/psc/time/common.h index 5474e5a0c9..3e13144a0d 100644 --- a/src/core/hle/service/psc/time/common.h +++ b/src/core/hle/service/psc/time/common.h @@ -167,7 +167,7 @@ constexpr inline Result GetSpanBetweenTimePoints(s64* out_seconds, const SteadyC template <> struct fmt::formatter : fmt::formatter { template - auto format(Service::PSC::Time::TimeType type, FormatContext& ctx) const { + auto format(Service::PSC::Time::TimeType type, FormatContext& ctx) { const string_view name = [type] { using Service::PSC::Time::TimeType; switch (type) { @@ -270,4 +270,4 @@ struct fmt::formatter time_point.rtc_offset, time_point.diff_scale, time_point.shift_amount, time_point.lower, time_point.upper); } -}; +}; \ No newline at end of file diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index 2cf12aba52..1095dcf6c3 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp @@ -28,7 +28,7 @@ ServiceManager::ServiceManager(Kernel::KernelCore& kernel_) : kernel{kernel_} { } ServiceManager::~ServiceManager() { - for (auto& [_, port] : service_ports) { + for (auto& [name, port] : service_ports) { port->Close(); } diff --git a/src/input_common/drivers/sdl_driver.cpp b/src/input_common/drivers/sdl_driver.cpp index 20aecf4c76..eea607b66d 100644 --- a/src/input_common/drivers/sdl_driver.cpp +++ b/src/input_common/drivers/sdl_driver.cpp @@ -571,7 +571,7 @@ SDLDriver::~SDLDriver() { std::vector SDLDriver::GetInputDevices() const { std::vector devices; std::unordered_map> joycon_pairs; - for (const auto& [_, value] : joystick_map) { + for (const auto& [key, value] : joystick_map) { for (const auto& joystick : value) { if (!joystick->GetSDLJoystick()) { continue; @@ -591,7 +591,7 @@ std::vector SDLDriver::GetInputDevices() const { } // Add dual controllers - for (const auto& [_, value] : joystick_map) { + for (const auto& [key, value] : joystick_map) { for (const auto& joystick : value) { if (joystick->IsJoyconRight()) { if (!joycon_pairs.contains(joystick->GetPort())) { diff --git a/src/shader_recompiler/backend/glasm/reg_alloc.h b/src/shader_recompiler/backend/glasm/reg_alloc.h index 207a075f19..bd6e2d929c 100644 --- a/src/shader_recompiler/backend/glasm/reg_alloc.h +++ b/src/shader_recompiler/backend/glasm/reg_alloc.h @@ -184,7 +184,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(Shader::Backend::GLASM::Id id, FormatContext& ctx) const { + auto format(Shader::Backend::GLASM::Id id, FormatContext& ctx) { return Shader::Backend::GLASM::FormatTo(ctx, id); } }; @@ -195,7 +195,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Backend::GLASM::Register& value, FormatContext& ctx) const { + auto format(const Shader::Backend::GLASM::Register& value, FormatContext& ctx) { if (value.type != Shader::Backend::GLASM::Type::Register) { throw Shader::InvalidArgument("Register value type is not register"); } @@ -209,7 +209,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Backend::GLASM::ScalarRegister& value, FormatContext& ctx) const { + auto format(const Shader::Backend::GLASM::ScalarRegister& value, FormatContext& ctx) { if (value.type != Shader::Backend::GLASM::Type::Register) { throw Shader::InvalidArgument("Register value type is not register"); } @@ -223,7 +223,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Backend::GLASM::ScalarU32& value, FormatContext& ctx) const { + auto format(const Shader::Backend::GLASM::ScalarU32& value, FormatContext& ctx) { switch (value.type) { case Shader::Backend::GLASM::Type::Void: break; @@ -244,7 +244,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Backend::GLASM::ScalarS32& value, FormatContext& ctx) const { + auto format(const Shader::Backend::GLASM::ScalarS32& value, FormatContext& ctx) { switch (value.type) { case Shader::Backend::GLASM::Type::Void: break; @@ -265,7 +265,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Backend::GLASM::ScalarF32& value, FormatContext& ctx) const { + auto format(const Shader::Backend::GLASM::ScalarF32& value, FormatContext& ctx) { switch (value.type) { case Shader::Backend::GLASM::Type::Void: break; @@ -286,7 +286,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Backend::GLASM::ScalarF64& value, FormatContext& ctx) const { + auto format(const Shader::Backend::GLASM::ScalarF64& value, FormatContext& ctx) { switch (value.type) { case Shader::Backend::GLASM::Type::Void: break; diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp index 75767448c3..945cdb42bc 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_image.cpp @@ -196,11 +196,8 @@ Id Texture(EmitContext& ctx, IR::TextureInstInfo info, [[maybe_unused]] const IR } Id TextureImage(EmitContext& ctx, IR::TextureInstInfo info, const IR::Value& index) { - // if (!index.IsImmediate() || index.Type() != Shader::IR::Type::U32 || index.U32() != 0) { - // throw NotImplementedException("Indirect image indexing"); - // } - if (index.Type() != Shader::IR::Type::U32) { - LOG_WARNING(Shader_SPIRV, "Non-U32 type provided as index: {}", index.Type()); + if (!index.IsImmediate() || index.U32() != 0) { + throw NotImplementedException("Indirect image indexing"); } if (info.type == TextureType::Buffer) { const TextureBufferDefinition& def{ctx.texture_buffers.at(info.descriptor_index)}; @@ -218,11 +215,8 @@ Id TextureImage(EmitContext& ctx, IR::TextureInstInfo info, const IR::Value& ind } std::pair Image(EmitContext& ctx, const IR::Value& index, IR::TextureInstInfo info) { - // if (!index.IsImmediate() || index.Type() != Shader::IR::Type::U32 || index.U32() != 0) { - // throw NotImplementedException("Indirect image indexing"); - // } - if (index.Type() != Shader::IR::Type::U32) { - LOG_WARNING(Shader_SPIRV, "Non-U32 type provided as index: {}", index.Type()); + if (!index.IsImmediate() || index.U32() != 0) { + throw NotImplementedException("Indirect image indexing"); } if (info.type == TextureType::Buffer) { const ImageBufferDefinition def{ctx.image_buffers.at(info.descriptor_index)}; diff --git a/src/shader_recompiler/frontend/ir/attribute.h b/src/shader_recompiler/frontend/ir/attribute.h index 407a1f4bc1..5f039b6f65 100644 --- a/src/shader_recompiler/frontend/ir/attribute.h +++ b/src/shader_recompiler/frontend/ir/attribute.h @@ -250,7 +250,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::Attribute& attribute, FormatContext& ctx) const { + auto format(const Shader::IR::Attribute& attribute, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{}", Shader::IR::NameOf(attribute)); } }; diff --git a/src/shader_recompiler/frontend/ir/condition.h b/src/shader_recompiler/frontend/ir/condition.h index 0b77b6590b..1cad46b9b9 100644 --- a/src/shader_recompiler/frontend/ir/condition.h +++ b/src/shader_recompiler/frontend/ir/condition.h @@ -52,7 +52,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::Condition& cond, FormatContext& ctx) const { + auto format(const Shader::IR::Condition& cond, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{}", Shader::IR::NameOf(cond)); } }; diff --git a/src/shader_recompiler/frontend/ir/flow_test.h b/src/shader_recompiler/frontend/ir/flow_test.h index f758d13127..88f7c9e82e 100644 --- a/src/shader_recompiler/frontend/ir/flow_test.h +++ b/src/shader_recompiler/frontend/ir/flow_test.h @@ -55,7 +55,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::FlowTest& flow_test, FormatContext& ctx) const { + auto format(const Shader::IR::FlowTest& flow_test, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{}", Shader::IR::NameOf(flow_test)); } }; diff --git a/src/shader_recompiler/frontend/ir/opcodes.h b/src/shader_recompiler/frontend/ir/opcodes.h index 767c5ae15a..e300714f3a 100644 --- a/src/shader_recompiler/frontend/ir/opcodes.h +++ b/src/shader_recompiler/frontend/ir/opcodes.h @@ -54,7 +54,7 @@ constexpr Type F64x2{Type::F64x2}; constexpr Type F64x3{Type::F64x3}; constexpr Type F64x4{Type::F64x4}; -constexpr OpcodeMeta META_TABLE[] { +constexpr OpcodeMeta META_TABLE[]{ #define OPCODE(name_token, type_token, ...) \ { \ .name{#name_token}, \ @@ -103,7 +103,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::Opcode& op, FormatContext& ctx) const { + auto format(const Shader::IR::Opcode& op, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{}", Shader::IR::NameOf(op)); } }; diff --git a/src/shader_recompiler/frontend/ir/pred.h b/src/shader_recompiler/frontend/ir/pred.h index f3f92b063a..a77c1e2a7a 100644 --- a/src/shader_recompiler/frontend/ir/pred.h +++ b/src/shader_recompiler/frontend/ir/pred.h @@ -33,7 +33,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::Pred& pred, FormatContext& ctx) const { + auto format(const Shader::IR::Pred& pred, FormatContext& ctx) { if (pred == Shader::IR::Pred::PT) { return fmt::format_to(ctx.out(), "PT"); } else { diff --git a/src/shader_recompiler/frontend/ir/reg.h b/src/shader_recompiler/frontend/ir/reg.h index 610492759d..f7cb716a97 100644 --- a/src/shader_recompiler/frontend/ir/reg.h +++ b/src/shader_recompiler/frontend/ir/reg.h @@ -319,7 +319,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::Reg& reg, FormatContext& ctx) const { + auto format(const Shader::IR::Reg& reg, FormatContext& ctx) { if (reg == Shader::IR::Reg::RZ) { return fmt::format_to(ctx.out(), "RZ"); } else if (static_cast(reg) >= 0 && static_cast(reg) < 255) { diff --git a/src/shader_recompiler/frontend/ir/type.h b/src/shader_recompiler/frontend/ir/type.h index 17b520c6dd..04c8c4ddbe 100644 --- a/src/shader_recompiler/frontend/ir/type.h +++ b/src/shader_recompiler/frontend/ir/type.h @@ -54,7 +54,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::IR::Type& type, FormatContext& ctx) const { + auto format(const Shader::IR::Type& type, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{}", NameOf(type)); } }; diff --git a/src/shader_recompiler/frontend/maxwell/location.h b/src/shader_recompiler/frontend/maxwell/location.h index 0dd16723a2..0c0477e2db 100644 --- a/src/shader_recompiler/frontend/maxwell/location.h +++ b/src/shader_recompiler/frontend/maxwell/location.h @@ -102,7 +102,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Maxwell::Location& location, FormatContext& ctx) const { + auto format(const Shader::Maxwell::Location& location, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{:04x}", location.Offset()); } }; diff --git a/src/shader_recompiler/frontend/maxwell/opcodes.h b/src/shader_recompiler/frontend/maxwell/opcodes.h index b3a493ff6a..72dd143c2a 100644 --- a/src/shader_recompiler/frontend/maxwell/opcodes.h +++ b/src/shader_recompiler/frontend/maxwell/opcodes.h @@ -23,7 +23,7 @@ struct fmt::formatter { return ctx.begin(); } template - auto format(const Shader::Maxwell::Opcode& opcode, FormatContext& ctx) const { + auto format(const Shader::Maxwell::Opcode& opcode, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{}", NameOf(opcode)); } }; diff --git a/src/suyu/aboutdialog.ui b/src/suyu/aboutdialog.ui index f0752f3746..d3ed825310 100644 --- a/src/suyu/aboutdialog.ui +++ b/src/suyu/aboutdialog.ui @@ -127,7 +127,7 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://suyu.dev"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://chat.suyu.dev"><span style=" text-decoration: underline; color:#039be5;">Chat</span></a> | <a href="https://git.suyu.dev/suyu/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.suyu.dev/suyu/suyu/src/branch/dev/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://suyu.dev"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://discord.com/invite/2gQRBp44KT"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://git.suyu.dev/suyu/suyu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.suyu.dev/suyu/suyu/activity"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.suyu.dev/suyu/suyu/src/branch/dev/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> true diff --git a/src/suyu/applets/qt_controller.cpp b/src/suyu/applets/qt_controller.cpp index d41d23eceb..f27ab835e5 100644 --- a/src/suyu/applets/qt_controller.cpp +++ b/src/suyu/applets/qt_controller.cpp @@ -384,12 +384,10 @@ bool QtControllerSelectorDialog::CheckIfParametersMet() { void QtControllerSelectorDialog::SetSupportedControllers() { const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("midnight"))) { - return QStringLiteral("_midnight"); - } else if (GMainWindow::CheckDarkMode() || - QIcon::themeName().contains(QStringLiteral("dark"))) { - // Use dark icons if current OS mode is dark, or the theme contains "dark" in its name + if (QIcon::themeName().contains(QStringLiteral("dark"))) { return QStringLiteral("_dark"); + } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + return QStringLiteral("_midnight"); } else { return QString{}; } @@ -574,12 +572,10 @@ void QtControllerSelectorDialog::UpdateControllerIcon(std::size_t player_index) } const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("midnight"))) { - return QStringLiteral("_midnight"); - } else if (GMainWindow::CheckDarkMode() || - QIcon::themeName().contains(QStringLiteral("dark"))) { - // Use dark icons if current OS mode is dark, or the theme contains "dark" in its name + if (QIcon::themeName().contains(QStringLiteral("dark"))) { return QStringLiteral("_dark"); + } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + return QStringLiteral("_midnight"); } else { return QString{}; } diff --git a/src/suyu/applets/qt_software_keyboard.cpp b/src/suyu/applets/qt_software_keyboard.cpp index 3a88656a17..a1bcfa717e 100644 --- a/src/suyu/applets/qt_software_keyboard.cpp +++ b/src/suyu/applets/qt_software_keyboard.cpp @@ -372,14 +372,6 @@ QtSoftwareKeyboardDialog::~QtSoftwareKeyboardDialog() { StopInputThread(); } -QString QtSoftwareKeyboardDialog::theme() { - if (GMainWindow::CheckDarkMode()) { - return QStringLiteral("_dark"); - } else { - return QString{}; - } -} - void QtSoftwareKeyboardDialog::ShowNormalKeyboard(QPoint pos, QSize size) { if (isVisible()) { return; @@ -390,7 +382,6 @@ void QtSoftwareKeyboardDialog::ShowNormalKeyboard(QPoint pos, QSize size) { SetKeyboardType(); SetPasswordMode(); SetControllerImage(); - SetButtonImages(); DisableKeyboardButtons(); SetBackspaceOkEnabled(); @@ -458,7 +449,6 @@ void QtSoftwareKeyboardDialog::ShowInlineKeyboard( SetKeyboardType(); SetControllerImage(); - SetButtonImages(); DisableKeyboardButtons(); SetBackspaceOkEnabled(); @@ -832,146 +822,68 @@ void QtSoftwareKeyboardDialog::SetControllerImage() { const auto controller_type = handheld->IsConnected() ? handheld->GetNpadStyleIndex() : player_1->GetNpadStyleIndex(); + const QString theme = [] { + if (QIcon::themeName().contains(QStringLiteral("dark")) || + QIcon::themeName().contains(QStringLiteral("midnight"))) { + return QStringLiteral("_dark"); + } else { + return QString{}; + } + }(); + switch (controller_type) { case Core::HID::NpadStyleIndex::Fullkey: case Core::HID::NpadStyleIndex::GameCube: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); break; case Core::HID::NpadStyleIndex::JoyconDual: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); break; case Core::HID::NpadStyleIndex::JoyconLeft: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") - .arg(theme())); + QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") + .arg(theme)); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") - .arg(theme())); + QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") + .arg(theme)); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") - .arg(theme())); + QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") + .arg(theme)); break; case Core::HID::NpadStyleIndex::JoyconRight: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") - .arg(theme())); + QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") + .arg(theme)); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") - .arg(theme())); + QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") + .arg(theme)); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") - .arg(theme())); + QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") + .arg(theme)); break; case Core::HID::NpadStyleIndex::Handheld: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); + QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); break; default: break; } } -void QtSoftwareKeyboardDialog::SetButtonImages() { - QString button_backspace_stylesheet = - QStringLiteral("QPushButton {" - " image: url(:/overlay%1/osk_button_B.png);" - " image-position: right;" - " qproperty-icon: url(:/overlay%1/osk_button_backspace.png); }" - "QPushButton:disabled { image: url(:/overlay%1/osk_button_B_disabled.png);}") - .arg(theme()); - ui->button_backspace->setStyleSheet(button_backspace_stylesheet); - ui->button_backspace_shift->setStyleSheet(button_backspace_stylesheet); - ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); - ui->button_backspace_num->setStyleSheet(button_backspace_stylesheet); - - QString button_space_stylesheet = - QStringLiteral("QPushButton {" - " image: url(:/overlay%1/osk_button_Y.png);" - " image-position: right;" - " qproperty-icon: url(:/overlay%1/osk_button_space.png); }" - "QPushButton:disabled { image: url(:/overlay%1/osk_button_Y_disabled.png);}") - .arg(theme()); - ui->button_space->setStyleSheet(button_space_stylesheet); - ui->button_space_shift->setStyleSheet(button_space_stylesheet); - - QString button_ok_stylesheet = - QStringLiteral( - "QPushButton { image: url(:/overlay%1/osk_button_plus.png); }" - "QPushButton:disabled { image: url(:/overlay%1/osk_button_plus_disabled.png); }") - .arg(theme()); - ui->button_ok->setStyleSheet(button_ok_stylesheet); - ui->button_ok_shift->setStyleSheet(button_ok_stylesheet); - ui->button_ok_num->setStyleSheet(button_ok_stylesheet); - - QString button_shift_stylesheet = - QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" - "image-position: left;" - "qproperty-icon: url(:/overlay%1/osk_button_shift.png);") - .arg(theme()); - ui->button_shift->setStyleSheet(button_shift_stylesheet); - - QString button_shift_shift_stylesheet = - QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" - "image-position: left;" - "qproperty-icon: url(:/overlay%1/osk_button_shift_on.png);") - .arg(theme()); - ui->button_shift_shift->setStyleSheet(button_shift_shift_stylesheet); - ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); - - QString L_stylesheet = QStringLiteral("image: url(:/overlay%1/button_L.png);").arg(theme()); - ui->button_L->setStyleSheet(L_stylesheet); - ui->button_L_shift->setStyleSheet(L_stylesheet); - ui->button_L_num->setStyleSheet(L_stylesheet); - - QString R_stylesheet = QStringLiteral("image: url(:/overlay%1/button_R.png);").arg(theme()); - ui->button_R->setStyleSheet(R_stylesheet); - ui->button_R_shift->setStyleSheet(R_stylesheet); - ui->button_R_num->setStyleSheet(R_stylesheet); - - QString arrow_left_stylesheet = - QStringLiteral("image: url(:/overlay%1/arrow_left.png);").arg(theme()); - ui->arrow_left->setStyleSheet(arrow_left_stylesheet); - ui->arrow_left_shift->setStyleSheet(arrow_left_stylesheet); - ui->arrow_left_num->setStyleSheet(arrow_left_stylesheet); - - QString arrow_right_stylesheet = - QStringLiteral("image: url(:/overlay%1/arrow_right.png);").arg(theme()); - ui->arrow_right->setStyleSheet(arrow_right_stylesheet); - ui->arrow_right_shift->setStyleSheet(arrow_right_stylesheet); - ui->arrow_right_num->setStyleSheet(arrow_right_stylesheet); - - QString button_press_stick_stylesheet = - QStringLiteral("image: url(:/overlay%1/button_press_stick.png);").arg(theme()); - ui->button_press_stick->setStyleSheet(button_press_stick_stylesheet); - ui->button_press_stick_shift->setStyleSheet(button_press_stick_stylesheet); - - QString button_X_stylesheet = - QStringLiteral("image: url(:/overlay%1/button_X.png);").arg(theme()); - ui->button_X->setStyleSheet(button_X_stylesheet); - ui->button_X_shift->setStyleSheet(button_X_stylesheet); - ui->button_X_num->setStyleSheet(button_X_stylesheet); - - QString button_A_stylesheet = - QStringLiteral("image: url(:/overlay%1/button_A.png);").arg(theme()); - ui->button_A->setStyleSheet(button_A_stylesheet); - ui->button_A_shift->setStyleSheet(button_A_stylesheet); - ui->button_A_num->setStyleSheet(button_A_stylesheet); -} - void QtSoftwareKeyboardDialog::DisableKeyboardButtons() { switch (bottom_osk_index) { case BottomOSKIndex::LowerCase: @@ -1138,8 +1050,10 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() { ui->bottomOSK->setCurrentIndex(static_cast(bottom_osk_index)); ui->button_shift_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);")); + QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" + "\nimage-position: left;")); + ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); break; case BottomOSKIndex::UpperCase: @@ -1150,6 +1064,9 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() { QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);" "\nimage-position: left;")); + ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); + ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); + ui->label_shift_shift->setText(QStringLiteral("Caps Lock")); bottom_osk_index = BottomOSKIndex::LowerCase; @@ -1161,6 +1078,9 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() { QStringLiteral("image: url(:/overlay/osk_button_shift_lock_on.png);" "\nimage-position: left;")); + ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); + ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); + ui->label_shift_shift->setText(QStringLiteral("Caps Lock Off")); } break; diff --git a/src/suyu/applets/qt_software_keyboard.h b/src/suyu/applets/qt_software_keyboard.h index fda6ac623d..7e2fdf09ea 100644 --- a/src/suyu/applets/qt_software_keyboard.h +++ b/src/suyu/applets/qt_software_keyboard.h @@ -80,12 +80,6 @@ private: NumberPad, }; - /** - * Get the current theme suffix - * @return an empty string for light theme, "_dark" for dark theme - */ - QString theme(); - /** * Moves and resizes the window to a specified position and size. * @@ -115,9 +109,6 @@ private: /// Sets the controller image at the bottom left of the software keyboard. void SetControllerImage(); - /// Sets the controller image at the bottom left of the software keyboard. - void SetButtonImages(); - /// Disables buttons based on initialize_parameters. void DisableKeyboardButtons(); diff --git a/src/suyu/configuration/configure_applets.cpp b/src/suyu/configuration/configure_applets.cpp index d5e3520718..a607fa3af8 100644 --- a/src/suyu/configuration/configure_applets.cpp +++ b/src/suyu/configuration/configure_applets.cpp @@ -69,7 +69,7 @@ void ConfigureApplets::Setup(const ConfigurationShared::Builder& builder) { applets_hold.emplace(setting->Id(), widget); } - for (const auto& [_, widget] : applets_hold) { + for (const auto& [label, widget] : applets_hold) { library_applets_layout.addWidget(widget); } } diff --git a/src/suyu/configuration/configure_audio.cpp b/src/suyu/configuration/configure_audio.cpp index 5ecd79ae31..2341131585 100644 --- a/src/suyu/configuration/configure_audio.cpp +++ b/src/suyu/configuration/configure_audio.cpp @@ -164,7 +164,7 @@ void ConfigureAudio::Setup(const ConfigurationShared::Builder& builder) { } } - for (const auto& [_, widget] : hold) { + for (const auto& [id, widget] : hold) { layout.addWidget(widget); } } diff --git a/src/suyu/configuration/configure_cpu.cpp b/src/suyu/configuration/configure_cpu.cpp index 0a26f531fb..ce266642ff 100644 --- a/src/suyu/configuration/configure_cpu.cpp +++ b/src/suyu/configuration/configure_cpu.cpp @@ -79,7 +79,7 @@ void ConfigureCpu::Setup(const ConfigurationShared::Builder& builder) { } } - for (const auto& [_, widget] : unsafe_hold) { + for (const auto& [label, widget] : unsafe_hold) { unsafe_layout->addWidget(widget); } diff --git a/src/suyu/configuration/configure_general.cpp b/src/suyu/configuration/configure_general.cpp index f8007574d4..689d9be2b8 100644 --- a/src/suyu/configuration/configure_general.cpp +++ b/src/suyu/configuration/configure_general.cpp @@ -81,10 +81,10 @@ void ConfigureGeneral::Setup(const ConfigurationShared::Builder& builder) { } } - for (const auto& [_, widget] : general_hold) { + for (const auto& [id, widget] : general_hold) { general_layout.addWidget(widget); } - for (const auto& [_, widget] : linux_hold) { + for (const auto& [id, widget] : linux_hold) { linux_layout.addWidget(widget); } } diff --git a/src/suyu/configuration/configure_graphics.cpp b/src/suyu/configuration/configure_graphics.cpp index 54cdd8d25f..d11110a74a 100644 --- a/src/suyu/configuration/configure_graphics.cpp +++ b/src/suyu/configuration/configure_graphics.cpp @@ -358,7 +358,7 @@ void ConfigureGraphics::Setup(const ConfigurationShared::Builder& builder) { } } - for (const auto& [_, widget] : hold_graphics) { + for (const auto& [id, widget] : hold_graphics) { graphics_layout.addWidget(widget); } diff --git a/src/suyu/configuration/configure_graphics_advanced.cpp b/src/suyu/configuration/configure_graphics_advanced.cpp index 28b3f7c3c8..8cdae0a65d 100644 --- a/src/suyu/configuration/configure_graphics_advanced.cpp +++ b/src/suyu/configuration/configure_graphics_advanced.cpp @@ -53,7 +53,7 @@ void ConfigureGraphicsAdvanced::Setup(const ConfigurationShared::Builder& builde checkbox_enable_compute_pipelines = widget; } } - for (const auto& [_, widget] : hold) { + for (const auto& [id, widget] : hold) { layout.addWidget(widget); } } diff --git a/src/suyu/configuration/configure_input_player.ui b/src/suyu/configuration/configure_input_player.ui index 761015cd94..5beb1b6bfc 100644 --- a/src/suyu/configuration/configure_input_player.ui +++ b/src/suyu/configuration/configure_input_player.ui @@ -1430,12 +1430,12 @@ - - - 0 - 0 - - + + + 0 + 0 + + ZL @@ -1481,20 +1481,20 @@ - - - - 70 - 40 - - - - 100 - - - Qt::Horizontal - - + + + + 70 + 15 + + + + 100 + + + Qt::Horizontal + + @@ -1927,22 +1927,22 @@ - - - - - 70 - 40 - - - - 100 - - - Qt::Horizontal - - - + + + + + 70 + 15 + + + + 100 + + + Qt::Horizontal + + + diff --git a/src/suyu/configuration/configure_linux_tab.cpp b/src/suyu/configuration/configure_linux_tab.cpp index 488db7b932..1db9893b71 100644 --- a/src/suyu/configuration/configure_linux_tab.cpp +++ b/src/suyu/configuration/configure_linux_tab.cpp @@ -50,7 +50,7 @@ void ConfigureLinuxTab::Setup(const ConfigurationShared::Builder& builder) { linux_hold.insert({setting->Id(), widget}); } - for (const auto& [_, widget] : linux_hold) { + for (const auto& [id, widget] : linux_hold) { linux_layout.addWidget(widget); } } diff --git a/src/suyu/configuration/configure_system.cpp b/src/suyu/configuration/configure_system.cpp index e0312eb6fc..3204303e98 100644 --- a/src/suyu/configuration/configure_system.cpp +++ b/src/suyu/configuration/configure_system.cpp @@ -174,10 +174,10 @@ void ConfigureSystem::Setup(const ConfigurationShared::Builder& builder) { widget->deleteLater(); } } - for (const auto& [_, widget] : core_hold) { + for (const auto& [label, widget] : core_hold) { core_layout.addWidget(widget); } - for (const auto& [_, widget] : system_hold) { + for (const auto& [id, widget] : system_hold) { system_layout.addWidget(widget); } } diff --git a/src/suyu/configuration/configure_ui.cpp b/src/suyu/configuration/configure_ui.cpp index 74add9bbd3..a3648c5b1c 100644 --- a/src/suyu/configuration/configure_ui.cpp +++ b/src/suyu/configuration/configure_ui.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include "common/common_types.h" #include "common/fs/path_util.h" @@ -30,8 +29,6 @@ #include "suyu/uisettings.h" #include "ui_configure_ui.h" -using Settings::DarkModeState; - namespace { constexpr std::array default_game_icon_sizes{ std::make_pair(0, QT_TRANSLATE_NOOP("ConfigureUI", "None")), @@ -83,7 +80,7 @@ static void PopulateResolutionComboBox(QComboBox* screenshot_height, QWidget* pa const auto& enumeration = Settings::EnumMetadata::Canonicalizations(); std::set resolutions{}; - for (const auto& [_, value] : enumeration) { + for (const auto& [name, value] : enumeration) { const float up_factor = GetUpFactor(value); u32 height_undocked = Layout::ScreenUndocked::Height * up_factor; u32 height_docked = Layout::ScreenDocked::Height * up_factor; @@ -109,31 +106,11 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent) InitializeLanguageComboBox(); - for (const auto& theme : UISettings::included_themes) { + for (const auto& theme : UISettings::themes) { ui->theme_combobox->addItem(QString::fromUtf8(theme.first), QString::fromUtf8(theme.second)); } - // Add custom styles stored in yuzu directory - const QDir themes_local_dir( - QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::ThemesDir))); - for (const QString& theme_dir : - themes_local_dir.entryList(QDir::NoDot | QDir::NoDotDot | QDir::Dirs)) { - // folders ending with "_dark" are reserved for dark variant icons of other styles - if (theme_dir.endsWith(QStringLiteral("_dark"))) { - continue; - } - // Split at _ and capitalize words in name - QStringList cased_name; - for (QString word : theme_dir.split(QChar::fromLatin1('_'))) { - cased_name.append(word.at(0).toUpper() + word.mid(1)); - } - QString theme_name = cased_name.join(QChar::fromLatin1(' ')); - theme_name += QStringLiteral(" (%1)").arg(tr("Custom")); - - ui->theme_combobox->addItem(theme_name, themes_local_dir.filePath(theme_dir)); - } - InitializeIconSizeComboBox(); InitializeRowComboBoxes(); @@ -156,9 +133,6 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent) &ConfigureUi::RequestGameListUpdate); connect(ui->row_2_text_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, &ConfigureUi::RequestGameListUpdate); - // Update available dark mode options depending on selected style - connect(ui->theme_combobox, QOverload::of(&QComboBox::currentIndexChanged), this, - &ConfigureUi::UpdateDarkModeOptions); // Update text ComboBoxes after user interaction. connect(ui->row_1_text_combobox, QOverload::of(&QComboBox::activated), @@ -190,9 +164,7 @@ ConfigureUi::~ConfigureUi() = default; void ConfigureUi::ApplyConfiguration() { UISettings::values.theme = - ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString(); - UISettings::values.dark_mode_state = - static_cast(ui->dark_mode_combobox->currentData().toUInt()); + ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString().toStdString(); UISettings::values.show_add_ons = ui->show_add_ons->isChecked(); UISettings::values.show_compat = ui->show_compat->isChecked(); UISettings::values.show_size = ui->show_size->isChecked(); @@ -214,71 +186,13 @@ void ConfigureUi::ApplyConfiguration() { system.ApplySettings(); } -void ConfigureUi::UpdateDarkModeOptions() { - ui->dark_mode_combobox->clear(); - - QString selected_theme = ui->theme_combobox->currentData().toString(); - - /* Dark mode option are added according to the modes the current style supports */ - bool has_common_style = QFile::exists(selected_theme + QStringLiteral("/style.qss")); - bool has_light_style = QFile::exists(selected_theme + QStringLiteral("/light.qss")); - bool has_dark_style = QFile::exists(selected_theme + QStringLiteral("/dark.qss")); -#ifdef _WIN32 - // Indicate which option needs a restart to be applied, depending on current environment - // variable - QByteArray current_qt_qpa = qgetenv("QT_QPA_PLATFORM"); - if (current_qt_qpa.contains("darkmode=2")) { - if (has_common_style || (has_dark_style && has_light_style)) { - ui->dark_mode_combobox->addItem(tr("Auto"), QVariant::fromValue(DarkModeState::Auto)); - } - if (has_common_style || has_dark_style) { - ui->dark_mode_combobox->addItem(tr("Always On") + - QStringLiteral(" (%1)").arg(tr("Needs restart")), - QVariant::fromValue(DarkModeState::On)); - } - if (has_common_style || has_light_style) { - ui->dark_mode_combobox->addItem(tr("Always Off") + - QStringLiteral(" (%1)").arg(tr("Needs restart")), - QVariant::fromValue(DarkModeState::Off)); - } - } else { - if (has_common_style || (has_dark_style && has_light_style)) { - ui->dark_mode_combobox->addItem(tr("Auto") + - QStringLiteral(" (%1)").arg(tr("Needs restart")), - QVariant::fromValue(DarkModeState::Auto)); - } - if (has_common_style || has_dark_style) { - ui->dark_mode_combobox->addItem(tr("Always On"), - QVariant::fromValue(DarkModeState::On)); - } - if (has_common_style || has_light_style) { - ui->dark_mode_combobox->addItem(tr("Always Off"), - QVariant::fromValue(DarkModeState::Off)); - } - } -#else - if (has_common_style || (has_dark_style && has_light_style)) { - ui->dark_mode_combobox->addItem(tr("Auto"), QVariant::fromValue(DarkModeState::Auto)); - } - if (has_common_style || has_dark_style) { - ui->dark_mode_combobox->addItem(tr("Always On"), QVariant::fromValue(DarkModeState::On)); - } - if (has_common_style || has_light_style) { - ui->dark_mode_combobox->addItem(tr("Always Off"), QVariant::fromValue(DarkModeState::Off)); - } -#endif -} - void ConfigureUi::RequestGameListUpdate() { UISettings::values.is_game_list_reload_pending.exchange(true); } void ConfigureUi::SetConfiguration() { - ui->theme_combobox->setCurrentIndex(ui->theme_combobox->findData(UISettings::values.theme)); - // Dark mode options are populated after the theme is selected, to get the current configuration - UpdateDarkModeOptions(); - ui->dark_mode_combobox->setCurrentIndex( - ui->dark_mode_combobox->findData(QVariant::fromValue(UISettings::values.dark_mode_state))); + ui->theme_combobox->setCurrentIndex( + ui->theme_combobox->findData(QString::fromStdString(UISettings::values.theme))); ui->language_combobox->setCurrentIndex(ui->language_combobox->findData( QString::fromStdString(UISettings::values.language.GetValue()))); ui->show_add_ons->setChecked(UISettings::values.show_add_ons.GetValue()); diff --git a/src/suyu/configuration/configure_ui.h b/src/suyu/configuration/configure_ui.h index a52ad7cc74..2a2563a131 100644 --- a/src/suyu/configuration/configure_ui.h +++ b/src/suyu/configuration/configure_ui.h @@ -34,7 +34,6 @@ signals: void LanguageChanged(const QString& locale); private: - void UpdateDarkModeOptions(); void RequestGameListUpdate(); void SetConfiguration(); diff --git a/src/suyu/configuration/configure_ui.ui b/src/suyu/configuration/configure_ui.ui index cdd46005fd..b8e6483814 100644 --- a/src/suyu/configuration/configure_ui.ui +++ b/src/suyu/configuration/configure_ui.ui @@ -63,20 +63,6 @@ - - - - - - Dark Mode: - - - - - - - - diff --git a/src/suyu/configuration/input_profiles.cpp b/src/suyu/configuration/input_profiles.cpp index 5add5f057b..a2ca806899 100644 --- a/src/suyu/configuration/input_profiles.cpp +++ b/src/suyu/configuration/input_profiles.cpp @@ -61,7 +61,7 @@ std::vector InputProfiles::GetInputProfileNames() { auto it = map_profiles.cbegin(); while (it != map_profiles.cend()) { - const auto& [profile_name, _] = *it; + const auto& [profile_name, config] = *it; if (!ProfileExistsInFilesystem(profile_name)) { it = map_profiles.erase(it); continue; diff --git a/src/suyu/configuration/qt_config.cpp b/src/suyu/configuration/qt_config.cpp index 2ed14ee2be..37951b9c84 100644 --- a/src/suyu/configuration/qt_config.cpp +++ b/src/suyu/configuration/qt_config.cpp @@ -260,10 +260,9 @@ void QtConfig::ReadShortcutValues() { void QtConfig::ReadUIValues() { BeginGroup(Settings::TranslateCategory(Settings::Category::Ui)); - UISettings::values.theme = - QString::fromStdString(ReadStringSetting("theme", std::string(UISettings::default_theme))); - UISettings::values.dark_mode_state = static_cast( - ReadIntegerSetting("dark_mode_state", static_cast(DarkModeState::Auto))); + UISettings::values.theme = ReadStringSetting( + std::string("theme"), + std::string(UISettings::themes[static_cast(UISettings::default_theme)].second)); ReadUIGamelistValues(); ReadUILayoutValues(); @@ -469,10 +468,10 @@ void QtConfig::SaveUIValues() { WriteCategory(Settings::Category::Ui); WriteCategory(Settings::Category::UiGeneral); - WriteStringSetting("theme", UISettings::values.theme.toStdString(), - std::make_optional(std::string(UISettings::default_theme))); - WriteIntegerSetting("dark_mode_state", static_cast(UISettings::values.dark_mode_state), - std::make_optional(static_cast(DarkModeState::Auto))); + WriteStringSetting( + std::string("theme"), UISettings::values.theme, + std::make_optional(std::string( + UISettings::themes[static_cast(UISettings::default_theme)].second))); SaveUIGamelistValues(); SaveUILayoutValues(); diff --git a/src/suyu/configuration/shared_widget.cpp b/src/suyu/configuration/shared_widget.cpp index 8a552d68c9..76a6b417cd 100644 --- a/src/suyu/configuration/shared_widget.cpp +++ b/src/suyu/configuration/shared_widget.cpp @@ -135,7 +135,7 @@ QWidget* Widget::CreateCombobox(std::function& serializer, const ComboboxTranslations* enumeration{nullptr}; if (combobox_enumerations.contains(type)) { enumeration = &combobox_enumerations.at(type); - for (const auto& [_, name] : *enumeration) { + for (const auto& [id, name] : *enumeration) { combobox->addItem(name); } } else { @@ -223,7 +223,7 @@ QWidget* Widget::CreateRadioGroup(std::function& serializer, }; if (!Settings::IsConfiguringGlobal()) { - for (const auto& [_, button] : radio_buttons) { + for (const auto& [id, button] : radio_buttons) { QObject::connect(button, &QAbstractButton::clicked, [touch]() { touch(); }); } } diff --git a/src/suyu/debugger/wait_tree.cpp b/src/suyu/debugger/wait_tree.cpp index b5ee4bcfdf..b339862ba7 100644 --- a/src/suyu/debugger/wait_tree.cpp +++ b/src/suyu/debugger/wait_tree.cpp @@ -35,8 +35,9 @@ constexpr std::array, 10> WaitTreeColors{{ }}; bool IsDarkTheme() { - return UISettings::values.theme.contains(QStringLiteral("dark")) || - UISettings::values.theme.contains(QStringLiteral("midnight")); + const auto& theme = UISettings::values.theme; + return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_midnight_blue") || + theme == std::string("colorful_dark") || theme == std::string("colorful_midnight_blue"); } } // namespace diff --git a/src/suyu/game_list.cpp b/src/suyu/game_list.cpp index 132ff30b0c..bda0d489bf 100644 --- a/src/suyu/game_list.cpp +++ b/src/suyu/game_list.cpp @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later // Modified by palfaiate on <2024/03/07> -// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball #include #include @@ -581,9 +580,6 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri remove_menu->addSeparator(); QAction* remove_shader_cache = remove_menu->addAction(tr("Remove All Pipeline Caches")); QAction* remove_all_content = remove_menu->addAction(tr("Remove All Installed Contents")); - QMenu* dump_romfs_menu = context_menu.addMenu(tr("Dump RomFS")); - QAction* dump_romfs = dump_romfs_menu->addAction(tr("Dump RomFS")); - QAction* dump_romfs_sdmc = dump_romfs_menu->addAction(tr("Dump RomFS to SDMC")); QAction* verify_integrity = context_menu.addAction(tr("Verify Integrity")); QAction* copy_tid = context_menu.addAction(tr("Copy Title ID to Clipboard")); QAction* navigate_to_gamedb_entry = context_menu.addAction(tr("Navigate to GameDB entry")); @@ -651,12 +647,6 @@ void GameList::AddGamePopup(QMenu& context_menu, u64 program_id, const std::stri connect(remove_cache_storage, &QAction::triggered, [this, program_id, path] { emit RemoveFileRequested(program_id, GameListRemoveTarget::CacheStorage, path); }); - connect(dump_romfs, &QAction::triggered, [this, program_id, path]() { - emit DumpRomFSRequested(program_id, path, DumpRomFSTarget::Normal); - }); - connect(dump_romfs_sdmc, &QAction::triggered, [this, program_id, path]() { - emit DumpRomFSRequested(program_id, path, DumpRomFSTarget::SDMC); - }); connect(verify_integrity, &QAction::triggered, [this, path]() { emit VerifyIntegrityRequested(path); }); connect(copy_tid, &QAction::triggered, diff --git a/src/suyu/game_list.h b/src/suyu/game_list.h index 4adb6403ef..7568e1b6e0 100644 --- a/src/suyu/game_list.h +++ b/src/suyu/game_list.h @@ -2,7 +2,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later // Modified by palfaiate on <2024/03/07> -// Reverted palfaiate's changes on <2024/03/25> -Nine-Ball #pragma once @@ -53,11 +52,6 @@ enum class GameListRemoveTarget { CacheStorage, }; -enum class DumpRomFSTarget { - Normal, - SDMC, -}; - enum class GameListShortcutTarget { Desktop, Applications, @@ -119,7 +113,6 @@ signals: void RemoveFileRequested(u64 program_id, GameListRemoveTarget target, const std::string& game_path); void RemovePlayTimeRequested(u64 program_id); - void DumpRomFSRequested(u64 program_id, const std::string& game_path, DumpRomFSTarget target); void VerifyIntegrityRequested(const std::string& game_path); void CopyTIDRequested(u64 program_id); void CreateShortcut(u64 program_id, const std::string& game_path, diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index 991ff67768..a7a61f5cb3 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -1,6 +1,8 @@ // SPDX-FileCopyrightText: 2014 Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +// Modified by palfaiate on <2024/03/07> + #include #include #include @@ -8,9 +10,6 @@ #include #include #include - -#include - #include "core/hle/service/am/applet_manager.h" #include "core/loader/nca.h" #include "core/loader/nro.h" @@ -21,9 +20,6 @@ #endif #ifdef __unix__ #include -#include -#include -#include #include #include "common/linux/gamemode.h" #endif @@ -59,18 +55,6 @@ #include "suyu/multiplayer/state.h" #include "suyu/util/controller_navigation.h" -// These are wrappers to avoid the calls to CreateDirectory and CreateFile because of the Windows -static FileSys::VirtualDir VfsFilesystemCreateDirectoryWrapper( - const FileSys::VirtualFilesystem& vfs, const std::string& path, FileSys::OpenMode mode) { - return vfs->CreateDirectory(path, mode); -} - -// Overloaded function, also removed by palafiate -static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::VirtualDir& dir, - const std::string& path) { - return dir->CreateFile(path); -} - #include #include @@ -287,6 +271,18 @@ static void OverrideWindowsFont() { } #endif +bool GMainWindow::CheckDarkMode() { +#ifdef __unix__ + const QPalette test_palette(qApp->palette()); + const QColor text_color = test_palette.color(QPalette::Active, QPalette::Text); + const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); + return (text_color.value() > window_color.value()); +#else + // TODO: Windows + return false; +#endif // __unix__ +} + GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulkan) : ui{std::make_unique()}, system{std::make_unique()}, input_subsystem{std::make_shared()}, config{std::move(config_)}, @@ -307,12 +303,15 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk ui->setupUi(this); statusBar()->hide(); + // Check dark mode before a theme is loaded + os_dark_mode = CheckDarkMode(); startup_icon_theme = QIcon::themeName(); - // fallback can only be set once, default theme icons are okay on both light/dark - QIcon::setFallbackThemeName(QStringLiteral("default")); + // fallback can only be set once, colorful theme icons are okay on both light/dark + QIcon::setFallbackThemeName(QStringLiteral("colorful")); QIcon::setFallbackSearchPaths(QStringList(QStringLiteral(":/icons"))); default_theme_paths = QIcon::themeSearchPaths(); + UpdateUITheme(); SetDiscordEnabled(UISettings::values.enable_discord_presence.GetValue()); discord_rpc->Update(); @@ -330,7 +329,6 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk SetDefaultUIGeometry(); RestoreUIState(); - UpdateUITheme(); ConnectMenuEvents(); ConnectWidgetEvents(); @@ -451,10 +449,7 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk SDL_EnableScreenSaver(); #endif -#ifdef __unix__ SetupPrepareForSleep(); - ListenColorSchemeChange(); -#endif QStringList args = QApplication::arguments(); @@ -1470,7 +1465,6 @@ void GMainWindow::ConnectWidgetEvents() { connect(game_list, &GameList::RemoveFileRequested, this, &GMainWindow::OnGameListRemoveFile); connect(game_list, &GameList::RemovePlayTimeRequested, this, &GMainWindow::OnGameListRemovePlayTimeData); - connect(game_list, &GameList::DumpRomFSRequested, this, &GMainWindow::OnGameListDumpRomFS); connect(game_list, &GameList::VerifyIntegrityRequested, this, &GMainWindow::OnGameListVerifyIntegrity); connect(game_list, &GameList::CopyTIDRequested, this, &GMainWindow::OnGameListCopyTID); @@ -1653,8 +1647,8 @@ void GMainWindow::OnDisplayTitleBars(bool show) { } } -#ifdef __unix__ void GMainWindow::SetupPrepareForSleep() { +#ifdef __unix__ auto bus = QDBusConnection::systemBus(); if (bus.isConnected()) { const bool success = bus.connect( @@ -1668,8 +1662,8 @@ void GMainWindow::SetupPrepareForSleep() { } else { LOG_WARNING(Frontend, "QDBusConnection system bus is not connected"); } -} #endif // __unix__ +} void GMainWindow::OnPrepareForSleep(bool prepare_sleep) { if (emu_thread == nullptr) { @@ -1850,7 +1844,7 @@ bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPa const auto description = tr("%1
Please follow the " "suyu quickstart guide to redump your files.
You can refer " - "to the suyu wiki or the suyu Chat for help.", + "to the suyu wiki or the suyu Discord for help.", "%1 signifies an error string.") .arg(QString::fromStdString( GetResultStatusString(static_cast(error_id)))); @@ -2375,68 +2369,6 @@ void GMainWindow::OnTransferableShaderCacheOpenFile(u64 program_id) { QDesktopServices::openUrl(QUrl::fromLocalFile(qt_shader_cache_path)); } -static bool RomFSRawCopy(size_t total_size, size_t& read_size, QProgressDialog& dialog, - const FileSys::VirtualDir& src, const FileSys::VirtualDir& dest, - bool full) { - if (src == nullptr || dest == nullptr || !src->IsReadable() || !dest->IsWritable()) - return false; - if (dialog.wasCanceled()) - return false; - - std::vector buffer(CopyBufferSize); - auto last_timestamp = std::chrono::steady_clock::now(); - - const auto QtRawCopy = [&](const FileSys::VirtualFile& src_file, - const FileSys::VirtualFile& dest_file) { - if (src_file == nullptr || dest_file == nullptr) { - return false; - } - if (!dest_file->Resize(src_file->GetSize())) { - return false; - } - - for (std::size_t i = 0; i < src_file->GetSize(); i += buffer.size()) { - if (dialog.wasCanceled()) { - dest_file->Resize(0); - return false; - } - - using namespace std::literals::chrono_literals; - const auto new_timestamp = std::chrono::steady_clock::now(); - - if ((new_timestamp - last_timestamp) > 33ms) { - last_timestamp = new_timestamp; - dialog.setValue( - static_cast(std::min(read_size, total_size) * 100 / total_size)); - QCoreApplication::processEvents(); - } - - const auto read = src_file->Read(buffer.data(), buffer.size(), i); - dest_file->Write(buffer.data(), read, i); - - read_size += read; - } - - return true; - }; - - if (full) { - for (const auto& file : src->GetFiles()) { - const auto out = VfsDirectoryCreateFileWrapper(dest, file->GetName()); - if (!QtRawCopy(file, out)) - return false; - } - } - - for (const auto& dir : src->GetSubdirectories()) { - const auto out = dest->CreateSubdirectory(dir->GetName()); - if (!RomFSRawCopy(total_size, read_size, dialog, dir, out, full)) - return false; - } - - return true; -} - QString GMainWindow::GetGameListErrorRemoving(InstalledEntryType type) const { switch (type) { case InstalledEntryType::Game: @@ -2678,121 +2610,6 @@ void GMainWindow::RemoveCacheStorage(u64 program_id) { Common::FS::RemoveDirRecursively(path); } -void GMainWindow::OnGameListDumpRomFS(u64 program_id, const std::string& game_path, - DumpRomFSTarget target) { - const auto failed = [this] { - QMessageBox::warning(this, tr("RomFS Extraction Failed!"), - tr("There was an error copying the RomFS files or the user " - "cancelled the operation.")); - }; - - const auto loader = - Loader::GetLoader(*system, vfs->OpenFile(game_path, FileSys::OpenMode::Read)); - if (loader == nullptr) { - failed(); - return; - } - - FileSys::VirtualFile packed_update_raw{}; - loader->ReadUpdateRaw(packed_update_raw); - - const auto& installed = system->GetContentProvider(); - - u64 title_id{}; - u8 raw_type{}; - if (!SelectRomFSDumpTarget(installed, program_id, &title_id, &raw_type)) { - failed(); - return; - } - - const auto type = static_cast(raw_type); - const auto base_nca = installed.GetEntry(title_id, type); - if (!base_nca) { - failed(); - return; - } - - const FileSys::NCA update_nca{packed_update_raw, nullptr}; - if (type != FileSys::ContentRecordType::Program || - update_nca.GetStatus() != Loader::ResultStatus::ErrorMissingBKTRBaseRomFS || - update_nca.GetTitleId() != FileSys::GetUpdateTitleID(title_id)) { - packed_update_raw = {}; - } - - const auto base_romfs = base_nca->GetRomFS(); - const auto dump_dir = - target == DumpRomFSTarget::Normal - ? Common::FS::GetSuyuPath(Common::FS::SuyuPath::DumpDir) - : Common::FS::GetSuyuPath(Common::FS::SuyuPath::SDMCDir) / "atmosphere" / "contents"; - const auto romfs_dir = fmt::format("{:016X}/romfs", title_id); - - const auto path = Common::FS::PathToUTF8String(dump_dir / romfs_dir); - - const FileSys::PatchManager pm{title_id, system->GetFileSystemController(), installed}; - auto romfs = pm.PatchRomFS(base_nca.get(), base_romfs, type, packed_update_raw, false); - - const auto out = VfsFilesystemCreateDirectoryWrapper(vfs, path, FileSys::OpenMode::ReadWrite); - - if (out == nullptr) { - failed(); - vfs->DeleteDirectory(path); - return; - } - - bool ok = false; - const QStringList selections{tr("Full"), tr("Skeleton")}; - const auto res = QInputDialog::getItem( - this, tr("Select RomFS Dump Mode"), - tr("Please select the how you would like the RomFS dumped.
Full will copy all of the " - "files into the new directory while
skeleton will only create the directory " - "structure."), - selections, 0, false, &ok); - if (!ok) { - failed(); - vfs->DeleteDirectory(path); - return; - } - - const auto extracted = FileSys::ExtractRomFS(romfs); - if (extracted == nullptr) { - failed(); - return; - } - - const auto full = res == selections.constFirst(); - - // The expected required space is the size of the RomFS + 1 GiB - const auto minimum_free_space = romfs->GetSize() + 0x40000000; - - if (full && Common::FS::GetFreeSpaceSize(path) < minimum_free_space) { - QMessageBox::warning(this, tr("RomFS Extraction Failed!"), - tr("There is not enough free space at %1 to extract the RomFS. Please " - "free up space or select a different dump directory at " - "Emulation > Configure > System > Filesystem > Dump Root") - .arg(QString::fromStdString(path))); - return; - } - - QProgressDialog progress(tr("Extracting RomFS..."), tr("Cancel"), 0, 100, this); - progress.setWindowModality(Qt::WindowModal); - progress.setMinimumDuration(100); - progress.setAutoClose(false); - progress.setAutoReset(false); - - size_t read_size = 0; - - if (RomFSRawCopy(romfs->GetSize(), read_size, progress, extracted, out, full)) { - progress.close(); - QMessageBox::information(this, tr("RomFS Extraction Succeeded!"), - tr("The operation completed successfully.")); - QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromStdString(path))); - } else { - progress.close(); - failed(); - vfs->DeleteDirectory(path); - } -} - void GMainWindow::OnGameListVerifyIntegrity(const std::string& game_path) { const auto NotImplemented = [this] { QMessageBox::warning(this, tr("Integrity verification couldn't be performed!"), @@ -3725,8 +3542,7 @@ void GMainWindow::ResetWindowSize1080() { } void GMainWindow::OnConfigure() { - const QString old_theme = UISettings::values.theme; - DarkModeState old_dark_mode_state = UISettings::values.dark_mode_state; + const auto old_theme = UISettings::values.theme; const bool old_discord_presence = UISettings::values.enable_discord_presence.GetValue(); const auto old_language_index = Settings::values.language_index.GetValue(); #ifdef __unix__ @@ -3785,8 +3601,7 @@ void GMainWindow::OnConfigure() { } InitializeHotkeys(); - if (UISettings::values.theme != old_theme || - UISettings::values.dark_mode_state != old_dark_mode_state) { + if (UISettings::values.theme != old_theme) { UpdateUITheme(); } if (UISettings::values.enable_discord_presence.GetValue() != old_discord_presence) { @@ -3802,6 +3617,8 @@ void GMainWindow::OnConfigure() { multiplayer_state->UpdateCredentials(); } + emit UpdateThemedIcons(); + const auto reload = UISettings::values.is_game_list_reload_pending.exchange(false); if (reload || Settings::values.language_index.GetValue() != old_language_index) { game_list->PopulateAsync(UISettings::values.game_dirs); @@ -4863,66 +4680,6 @@ void GMainWindow::SetFirmwareVersion() { firmware_label->setToolTip(QString::fromStdString(display_title)); } -bool GMainWindow::SelectRomFSDumpTarget(const FileSys::ContentProvider& installed, u64 program_id, - u64* selected_title_id, u8* selected_content_record_type) { - using ContentInfo = std::tuple; - boost::container::flat_set available_title_ids; - - const auto RetrieveEntries = [&](FileSys::TitleType title_type, - FileSys::ContentRecordType record_type) { - const auto entries = installed.ListEntriesFilter(title_type, record_type); - for (const auto& entry : entries) { - if (FileSys::GetBaseTitleID(entry.title_id) == program_id && - installed.GetEntry(entry)->GetStatus() == Loader::ResultStatus::Success) { - available_title_ids.insert({entry.title_id, title_type, record_type}); - } - } - }; - - RetrieveEntries(FileSys::TitleType::Application, FileSys::ContentRecordType::Program); - RetrieveEntries(FileSys::TitleType::Application, FileSys::ContentRecordType::HtmlDocument); - RetrieveEntries(FileSys::TitleType::Application, FileSys::ContentRecordType::LegalInformation); - RetrieveEntries(FileSys::TitleType::AOC, FileSys::ContentRecordType::Data); - - if (available_title_ids.empty()) { - return false; - } - - size_t title_index = 0; - - if (available_title_ids.size() > 1) { - QStringList list; - for (auto& [title_id, title_type, record_type] : available_title_ids) { - const auto hex_title_id = QString::fromStdString(fmt::format("{:X}", title_id)); - if (record_type == FileSys::ContentRecordType::Program) { - list.push_back(QStringLiteral("Program [%1]").arg(hex_title_id)); - } else if (record_type == FileSys::ContentRecordType::HtmlDocument) { - list.push_back(QStringLiteral("HTML document [%1]").arg(hex_title_id)); - } else if (record_type == FileSys::ContentRecordType::LegalInformation) { - list.push_back(QStringLiteral("Legal information [%1]").arg(hex_title_id)); - } else { - list.push_back( - QStringLiteral("DLC %1 [%2]").arg(title_id & 0x7FF).arg(hex_title_id)); - } - } - - bool ok; - const auto res = QInputDialog::getItem( - this, tr("Select RomFS Dump Target"), - tr("Please select which RomFS you would like to dump."), list, 0, false, &ok); - if (!ok) { - return false; - } - - title_index = list.indexOf(res); - } - - const auto& [title_id, title_type, record_type] = *available_title_ids.nth(title_index); - *selected_title_id = title_id; - *selected_content_record_type = static_cast(record_type); - return true; -} - bool GMainWindow::ConfirmClose() { if (emu_thread == nullptr || UISettings::values.confirm_before_stopping.GetValue() == ConfirmStop::Ask_Never) { @@ -5042,105 +4799,9 @@ void GMainWindow::filterBarSetChecked(bool state) { emit(OnToggleFilterBar()); } -void GMainWindow::UpdateUITheme() { - const QString default_theme = QString::fromStdString(UISettings::default_theme.data()); - QString current_theme = UISettings::values.theme; - if (current_theme.isEmpty()) { - current_theme = default_theme; - } - - UpdateIcons(current_theme); - - /* Find the stylesheet to load */ - if (TryLoadStylesheet(current_theme)) { - return; - } - - // Reading new theme failed, loading default stylesheet - LOG_ERROR(Frontend, "Unable to open style \"{}\", fallback to the default theme", - current_theme.toStdString()); - - if (TryLoadStylesheet(QStringLiteral(":/%1").arg(default_theme))) { - return; - } - - // Reading default failed, loading empty stylesheet - LOG_ERROR(Frontend, "Unable to set default style, stylesheet file not found"); - - qApp->setStyleSheet({}); - setStyleSheet({}); -} - -void GMainWindow::UpdateIcons(const QString& theme_path) { - // Get the theme directory from its path - std::size_t last_slash = theme_path.toStdString().find_last_of("/"); - QString theme_dir = QString::fromStdString(theme_path.toStdString().substr(last_slash + 1)); - - // Append _dark to the theme name to use dark variant icons - if (CheckDarkMode()) { - LOG_DEBUG(Frontend, "Using icons from: {}", theme_dir.toStdString() + "_dark"); - QIcon::setThemeName(theme_dir + QStringLiteral("_dark")); - } else { - LOG_DEBUG(Frontend, "Using icons from: {}", theme_dir.toStdString()); - QIcon::setThemeName(theme_dir); - } - - const QString theme_directory{ - QString::fromStdString(Common::FS::GetSuyuPathString(Common::FS::SuyuPath::ThemesDir))}; - - // Set path for default icons - // Use icon resources from application binary and current theme local subdirectory, if it exists - QStringList theme_paths; - theme_paths << QString::fromStdString(":/icons") << QStringLiteral("%1").arg(theme_directory); - QIcon::setThemeSearchPaths(theme_paths); - - // Change current directory, to allow user themes to add their own icons - QDir::setCurrent(QStringLiteral("%1/%2").arg(theme_directory, UISettings::values.theme)); - - emit UpdateThemedIcons(); -} - -bool GMainWindow::TryLoadStylesheet(const QString& theme_uri) { - LOG_DEBUG(Frontend, "TryLoadStylesheet()"); - QString style_path; - - // Use themed stylesheet if it exists - if (CheckDarkMode()) { - style_path = theme_uri + QStringLiteral("/dark.qss"); - } else { - style_path = theme_uri + QStringLiteral("/light.qss"); - } - if (!QFile::exists(style_path)) { - LOG_DEBUG(Frontend, "No themed (light/dark) stylesheet, using default one"); - // Use common stylesheet if themed one does not exist - style_path = theme_uri + QStringLiteral("/style.qss"); - } - - // Loading stylesheet - QFile style_file(style_path); - if (style_file.open(QFile::ReadOnly | QFile::Text)) { - // Update the color palette before applying the stylesheet - UpdateThemePalette(); - - LOG_DEBUG(Frontend, "Loading stylesheet in: {}", theme_uri.toStdString()); - QTextStream ts_theme(&style_file); - qApp->setStyleSheet(ts_theme.readAll()); - setStyleSheet(ts_theme.readAll()); - SetCustomStylesheet(); - - return true; - } - // Opening the file failed - return false; -} - -bool GMainWindow::TryLoadStylesheet(const std::filesystem::path& theme_path) { - return TryLoadStylesheet(QString::fromStdString(theme_path.string() + "/")); -} - static void AdjustLinkColor() { QPalette new_pal(qApp->palette()); - if (GMainWindow::CheckDarkMode()) { + if (UISettings::IsDarkTheme()) { new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255)); } else { new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255)); @@ -5150,262 +4811,54 @@ static void AdjustLinkColor() { } } -void GMainWindow::UpdateThemePalette() { - LOG_DEBUG(Frontend, "UpdateThemePalette()"); - QPalette themePalette(qApp->palette()); -#ifdef _WIN32 - QColor dark(25, 25, 25); - QString style_name; - if (CheckDarkMode()) { - // We check that the dark mode state is "On" and force a dark palette - if (UISettings::values.dark_mode_state == DarkModeState::On) { - // Set Default Windows Dark palette on Windows platforms to force Dark mode - themePalette.setColor(QPalette::Window, Qt::black); - themePalette.setColor(QPalette::WindowText, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); - themePalette.setColor(QPalette::Base, Qt::black); - themePalette.setColor(QPalette::AlternateBase, dark); - themePalette.setColor(QPalette::ToolTipBase, Qt::white); - themePalette.setColor(QPalette::ToolTipText, Qt::black); - themePalette.setColor(QPalette::Text, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127)); - themePalette.setColor(QPalette::Dark, QColor(128, 128, 128)); - themePalette.setColor(QPalette::Shadow, Qt::white); - themePalette.setColor(QPalette::Button, Qt::black); - themePalette.setColor(QPalette::ButtonText, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127)); - themePalette.setColor(QPalette::BrightText, QColor(192, 192, 192)); - themePalette.setColor(QPalette::Link, QColor(0, 140, 200)); - themePalette.setColor(QPalette::Highlight, QColor(24, 70, 93)); - themePalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(0, 85, 255)); - themePalette.setColor(QPalette::HighlightedText, QColor(239, 240, 241)); - themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, - QColor(239, 240, 241)); - } +void GMainWindow::UpdateUITheme() { + const QString default_theme = QString::fromUtf8( + UISettings::themes[static_cast(UISettings::default_theme)].second); + QString current_theme = QString::fromStdString(UISettings::values.theme); - // AlternateBase is kept at rgb(233, 231, 227) or rgb(245, 245, 245) on Windows dark - // palette, fix this. Sometimes, it even is rgb(0, 0, 0), but uses a very light gray for - // alternate rows, do not know why - if (themePalette.alternateBase().color() == QColor(233, 231, 227) || - themePalette.alternateBase().color() == QColor(245, 245, 245) || - themePalette.alternateBase().color() == QColor(0, 0, 0)) { - themePalette.setColor(QPalette::AlternateBase, dark); - alternate_base_modified = true; - } - // Use fusion theme, since its close to windowsvista, but works well with a dark palette - style_name = QStringLiteral("fusion"); - } else { - // Reset AlternateBase if it has been modified - if (alternate_base_modified) { - themePalette.setColor(QPalette::AlternateBase, QColor(245, 245, 245)); - alternate_base_modified = false; - } - // Reset light palette - themePalette = this->style()->standardPalette(); - // Reset Windows theme to the default - style_name = QStringLiteral("windowsvista"); + if (current_theme.isEmpty()) { + current_theme = default_theme; } - LOG_DEBUG(Frontend, "Using style: {}", style_name.toStdString()); - qApp->setStyle(style_name); -#elif defined(__APPLE__) - // Force the usage of the light palette in light mode - if (CheckDarkMode()) { - // Reset dark palette - themePalette = this->style()->standardPalette(); - } else { - themePalette.setColor(QPalette::Window, QColor(236, 236, 236)); - themePalette.setColor(QPalette::WindowText, Qt::black); - themePalette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::black); - themePalette.setColor(QPalette::Base, Qt::white); - themePalette.setColor(QPalette::AlternateBase, QColor(245, 245, 245)); - themePalette.setColor(QPalette::ToolTipBase, Qt::white); - themePalette.setColor(QPalette::ToolTipText, Qt::black); - themePalette.setColor(QPalette::Text, Qt::black); - themePalette.setColor(QPalette::Disabled, QPalette::Text, Qt::black); - themePalette.setColor(QPalette::Dark, QColor(191, 191, 191)); - themePalette.setColor(QPalette::Shadow, Qt::black); - themePalette.setColor(QPalette::Button, QColor(236, 236, 236)); - themePalette.setColor(QPalette::ButtonText, Qt::black); - themePalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(147, 147, 147)); - themePalette.setColor(QPalette::BrightText, Qt::white); - themePalette.setColor(QPalette::Link, QColor(0, 140, 200)); - themePalette.setColor(QPalette::Highlight, QColor(179, 215, 255)); - themePalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(220, 220, 220)); - themePalette.setColor(QPalette::HighlightedText, Qt::black); - themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::black); - } -#else - if (CheckDarkMode()) { - // Set Dark palette on non Windows platforms (that may not have a dark palette) - themePalette.setColor(QPalette::Window, QColor(53, 53, 53)); - themePalette.setColor(QPalette::WindowText, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127)); - themePalette.setColor(QPalette::Base, QColor(42, 42, 42)); - themePalette.setColor(QPalette::AlternateBase, QColor(66, 66, 66)); - themePalette.setColor(QPalette::ToolTipBase, Qt::white); - themePalette.setColor(QPalette::ToolTipText, QColor(53, 53, 53)); - themePalette.setColor(QPalette::Text, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127)); - themePalette.setColor(QPalette::Dark, QColor(35, 35, 35)); - themePalette.setColor(QPalette::Shadow, QColor(20, 20, 20)); - themePalette.setColor(QPalette::Button, QColor(53, 53, 53)); - themePalette.setColor(QPalette::ButtonText, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127)); - themePalette.setColor(QPalette::BrightText, Qt::red); - themePalette.setColor(QPalette::Link, QColor(42, 130, 218)); - themePalette.setColor(QPalette::Highlight, QColor(42, 130, 218)); - themePalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(80, 80, 80)); - themePalette.setColor(QPalette::HighlightedText, Qt::white); - themePalette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(127, 127, 127)); - } else { - // Reset light palette - themePalette = this->style()->standardPalette(); - } -#endif - qApp->setPalette(themePalette); + +#ifdef _WIN32 + QIcon::setThemeName(current_theme); AdjustLinkColor(); -} - -void GMainWindow::SetCustomStylesheet() { - setStyleSheet(QStringLiteral("QStatusBar::item { border: none; }")); - - // Set "dark" qss property value, that may be used in stylesheets - bool is_dark_mode = CheckDarkMode(); - if (renderer_status_button) { - renderer_status_button->setProperty("dark", is_dark_mode); - } - if (gpu_accuracy_button) { - gpu_accuracy_button->setProperty("dark", is_dark_mode); - } -#ifdef _WIN32 - // Windows dark mode uses "fusion" style. Make it look like more "windowsvista" light style - if (is_dark_mode) { - /* the groove expands to the size of the slider by default. by giving it a height, it has a - fixed size */ - /* handle is placed by default on the contents rect of the groove. Negative margin expands - it outside the groove */ - setStyleSheet(QStringLiteral("QSlider:horizontal{ height:30px; }\ - QSlider::sub-page:horizontal { background-color: palette(highlight); }\ - QSlider::add-page:horizontal { background-color: palette(midlight);}\ - QSlider::groove:horizontal { border-width: 1px; margin: 1px 0; height: 2px;}\ - QSlider::handle:horizontal { border-width: 1px; border-style: solid; border-color: palette(dark);\ - width: 10px; margin: -10px 0px; }\ - QSlider::handle { background-color: palette(button); }\ - QSlider::handle:hover { background-color: palette(highlight); }")); - } -#endif -} - -#ifdef __unix__ -bool GMainWindow::ListenColorSchemeChange() { - auto bus = QDBusConnection::sessionBus(); - if (bus.isConnected()) { - const QString dbus_service = QStringLiteral("org.freedesktop.portal.Desktop"); - const QString dbus_path = QStringLiteral("/org/freedesktop/portal/desktop"); - const QString dbus_interface = QStringLiteral("org.freedesktop.portal.Settings"); - const QString dbus_method = QStringLiteral("SettingChanged"); - QStringList dbus_arguments; - dbus_arguments << QStringLiteral("org.freedesktop.appearance") - << QStringLiteral("color-scheme"); - const QString dbus_signature = QStringLiteral("ssv"); - - LOG_INFO(Frontend, "Connected to DBus, listening for OS theme changes"); - return bus.connect(dbus_service, dbus_path, dbus_interface, dbus_method, dbus_arguments, - dbus_signature, this, SLOT(UpdateUITheme())); - } - LOG_WARNING(Frontend, "Unable to connect to DBus to listen for OS theme changes"); - return false; -} -#endif - -bool GMainWindow::CheckDarkMode() { - bool is_dark_mode_auto; -#ifdef _WIN32 - // Dark mode cannot be changed after the app started on Windows - is_dark_mode_auto = qgetenv("QT_QPA_PLATFORM").contains("darkmode=2"); #else - is_dark_mode_auto = UISettings::values.dark_mode_state == DarkModeState::Auto; -#endif - if (!is_dark_mode_auto) { - return UISettings::values.dark_mode_state == DarkModeState::On; + if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) { + QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme + : startup_icon_theme); + QIcon::setThemeSearchPaths(QStringList(default_theme_paths)); + if (CheckDarkMode()) { + current_theme = QStringLiteral("default_dark"); + } } else { - const QPalette current_palette(qApp->palette()); -#ifdef __unix__ - QProcess process; - - // Using the freedesktop specifications for checking dark mode - LOG_DEBUG(Frontend, "Retrieving theme from freedesktop color-scheme..."); - QStringList gdbus_arguments; - gdbus_arguments << QStringLiteral("--dest=org.freedesktop.portal.Desktop") - << QStringLiteral("--object-path /org/freedesktop/portal/desktop") - << QStringLiteral("--method org.freedesktop.portal.Settings.Read") - << QStringLiteral("org.freedesktop.appearance color-scheme"); - process.start(QStringLiteral("gdbus call --session"), gdbus_arguments); - process.waitForFinished(1000); - QByteArray dbus_output = process.readAllStandardOutput(); - - if (!dbus_output.isEmpty()) { - const int systemColorSchema = QString::fromUtf8(dbus_output).trimmed().right(1).toInt(); - return systemColorSchema == 1; - } - - // Try alternative for Gnome if the previous one failed - QStringList gsettings_arguments; - gsettings_arguments << QStringLiteral("get") - << QStringLiteral("org.gnome.desktop.interface") - << QStringLiteral("color-scheme"); - - LOG_DEBUG(Frontend, "failed, retrieving theme from gsettings color-scheme..."); - process.start(QStringLiteral("gsettings"), gsettings_arguments); - process.waitForFinished(1000); - QByteArray gsettings_output = process.readAllStandardOutput(); - - // Try older gtk-theme method if the previous one failed - if (gsettings_output.isEmpty()) { - LOG_DEBUG(Frontend, "failed, retrieving theme from gtk-theme..."); - gsettings_arguments.takeLast(); - gsettings_arguments << QStringLiteral("gtk-theme"); - - process.start(QStringLiteral("gsettings"), gsettings_arguments); - process.waitForFinished(1000); - gsettings_output = process.readAllStandardOutput(); - } - - // Interpret gsettings value if it succeeded - if (!gsettings_output.isEmpty()) { - QString systeme_theme = QString::fromUtf8(gsettings_output); - LOG_DEBUG(Frontend, "Gsettings output: {}", systeme_theme.toStdString()); - return systeme_theme.contains(QStringLiteral("dark"), Qt::CaseInsensitive); - } - LOG_DEBUG(Frontend, "failed, retrieving theme from palette"); + QIcon::setThemeName(current_theme); + QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons"))); + AdjustLinkColor(); + } #endif - // Use default method based on palette swap by OS. It is the only method on Windows with - // Qt 5. Windows needs QT_QPA_PLATFORM env variable set to windows:darkmode=2 to force - // palette change - return (current_palette.color(QPalette::WindowText).lightness() > - current_palette.color(QPalette::Window).lightness()); - } -} - -void GMainWindow::changeEvent(QEvent* event) { - // PaletteChange event appears to only reach so far into the GUI, explicitly asking to - // UpdateUITheme is a decent work around - if (event->type() == QEvent::PaletteChange || - event->type() == QEvent::ApplicationPaletteChange) { - LOG_DEBUG(Frontend, - "Window color palette changed by event: {} (QEvent::PaletteChange is: {})", - event->type(), QEvent::PaletteChange); - const QPalette test_palette(qApp->palette()); - // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too - const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); - - if (last_window_color != window_color) { - last_window_color = window_color; - - UpdateUITheme(); + if (current_theme != default_theme) { + QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)}; + QFile f(theme_uri); + if (!f.open(QFile::ReadOnly | QFile::Text)) { + LOG_ERROR(Frontend, "Unable to open style \"{}\", fallback to the default theme", + UISettings::values.theme); + current_theme = default_theme; } } - QWidget::changeEvent(event); + + QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)}; + QFile f(theme_uri); + if (f.open(QFile::ReadOnly | QFile::Text)) { + QTextStream ts(&f); + qApp->setStyleSheet(ts.readAll()); + setStyleSheet(ts.readAll()); + } else { + LOG_ERROR(Frontend, "Unable to set style \"{}\", stylesheet file not found", + UISettings::values.theme); + qApp->setStyleSheet({}); + setStyleSheet({}); + } } void GMainWindow::LoadTranslation() { @@ -5460,6 +4913,26 @@ void GMainWindow::SetGamemodeEnabled(bool state) { } #endif +void GMainWindow::changeEvent(QEvent* event) { +#ifdef __unix__ + // PaletteChange event appears to only reach so far into the GUI, explicitly asking to + // UpdateUITheme is a decent work around + if (event->type() == QEvent::PaletteChange) { + const QPalette test_palette(qApp->palette()); + const QString current_theme = QString::fromStdString(UISettings::values.theme); + // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too + static QColor last_window_color; + const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); + if (last_window_color != window_color && (current_theme == QStringLiteral("default") || + current_theme == QStringLiteral("colorful"))) { + UpdateUITheme(); + } + last_window_color = window_color; + } +#endif // __unix__ + QWidget::changeEvent(event); +} + Service::AM::FrontendAppletParameters GMainWindow::ApplicationAppletParameters() { return Service::AM::FrontendAppletParameters{ .applet_id = Service::AM::AppletId::Application, @@ -5586,31 +5059,6 @@ int main(int argc, char* argv[]) { QCoreApplication::setApplicationName(QStringLiteral("suyu")); #ifdef _WIN32 - QByteArray current_qt_qpa = qgetenv("QT_QPA_PLATFORM"); - // Follow dark mode setting, if the "-platform" launch option is not set. - // Otherwise, just follow dark mode for the window decoration (title bar). - if (!current_qt_qpa.contains(":darkmode=")) { - if (UISettings::values.dark_mode_state == DarkModeState::Auto) { - // When setting is Auto, force adapting window decoration and stylesheet palette to use - // Windows theme. Default is darkmode:0, which always uses light palette - if (current_qt_qpa.isEmpty()) { - // Set the value - qputenv("QT_QPA_PLATFORM", QByteArray("windows:darkmode=2")); - } else { - // Concatenate to the existing value - qputenv("QT_QPA_PLATFORM", current_qt_qpa + ",darkmode=2"); - } - } else { - // When setting is no Auto, adapt window decoration to the palette used - if (current_qt_qpa.isEmpty()) { - // Set the value - qputenv("QT_QPA_PLATFORM", QByteArray("windows:darkmode=1")); - } else { - // Concatenate to the existing value - qputenv("QT_QPA_PLATFORM", current_qt_qpa + ",darkmode=1"); - } - } - } // Increases the maximum open file limit to 8192 _setmaxstdio(8192); #endif diff --git a/src/suyu/main.h b/src/suyu/main.h index e17c8c0607..e20950e238 100644 --- a/src/suyu/main.h +++ b/src/suyu/main.h @@ -25,8 +25,9 @@ #include "suyu/util/controller_navigation.h" #ifdef __unix__ -#include #include +#include +#include #endif class QtConfig; @@ -50,7 +51,6 @@ class WaitTreeWidget; enum class GameListOpenTarget; enum class GameListRemoveTarget; enum class GameListShortcutTarget; -enum class DumpRomFSTarget; enum class InstalledEntryType; class GameListPlaceholder; @@ -167,7 +167,7 @@ class GMainWindow : public QMainWindow { public: void filterBarSetChecked(bool state); - static bool CheckDarkMode(); + void UpdateUITheme(); explicit GMainWindow(std::unique_ptr config_, bool has_broken_vulkan); ~GMainWindow() override; @@ -259,44 +259,12 @@ private: void SetDefaultUIGeometry(); void RestoreUIState(); - /** - * Load the icons used by the current theme. Use dark icons if the current mode is dark - */ - void UpdateIcons(const QString& theme_used); - /** - * Set the palette used by the stylsheet for the dark/light mode selected, according to the OS - */ - void UpdateThemePalette(); - /** - * Try to load a stylesheet from its URI. - * If the path starts with ":/", its embedded in the app, otherwise its in a local directory - * @returns true if the text file could be opened as read-only - */ - bool TryLoadStylesheet(const QString& theme_uri); - /** - * Try to load a stylesheet from filesystem path - * @returns true if the text file could be opened as read-only - */ - bool TryLoadStylesheet(const std::filesystem::path& theme_path); - /** - * Default customizations to the stylesheets - */ - void SetCustomStylesheet(); -#ifdef __unix__ - /** - * Create a signal to update the UI theme when the OS color scheme is changed - * @returns true if we could connect to dbus - */ - bool ListenColorSchemeChange(); -#endif void ConnectWidgetEvents(); void ConnectMenuEvents(); void UpdateMenuState(); -#ifdef __unix__ void SetupPrepareForSleep(); -#endif void PreventOSSleep(); void AllowOSSleep(); @@ -379,7 +347,6 @@ private slots: void OnGameListRemoveFile(u64 program_id, GameListRemoveTarget target, const std::string& game_path); void OnGameListRemovePlayTimeData(u64 program_id); - void OnGameListDumpRomFS(u64 program_id, const std::string& game_path, DumpRomFSTarget target); void OnGameListVerifyIntegrity(const std::string& game_path); void OnGameListCopyTID(u64 program_id); void OnGameListNavigateToGamedbEntry(u64 program_id, @@ -428,7 +395,6 @@ private slots: void ResetWindowSize720(); void ResetWindowSize900(); void ResetWindowSize1080(); - void UpdateUITheme(); void OnAlbum(); void OnCabinet(Service::NFP::CabinetMode mode); void OnMiiEdit(); @@ -475,7 +441,7 @@ private: void OpenURL(const QUrl& url); void LoadTranslation(); void OpenPerGameConfiguration(u64 title_id, const std::string& file_name); - bool CheckSystemArchiveDecryption(); + bool CheckDarkMode(); bool CheckFirmwarePresence(); void SetFirmwareVersion(); void ConfigureFilesystemProvider(const std::string& filepath); @@ -559,8 +525,7 @@ private: QTimer update_input_timer; QString startup_icon_theme; - bool alternate_base_modified = false; - QColor last_window_color; + bool os_dark_mode = false; // FS std::shared_ptr vfs; diff --git a/src/suyu/play_time_manager.cpp b/src/suyu/play_time_manager.cpp index ede966da6e..9a046c69a1 100644 --- a/src/suyu/play_time_manager.cpp +++ b/src/suyu/play_time_manager.cpp @@ -87,7 +87,7 @@ std::optional GetCurrentUserPlayTimePath( std::vector elements; elements.reserve(play_time_db.size()); - for (const auto& [program_id, play_time] : play_time_db) { + for (auto& [program_id, play_time] : play_time_db) { if (program_id != 0) { elements.push_back(PlayTimeElement{program_id, play_time}); } diff --git a/src/suyu/startup_checks.cpp b/src/suyu/startup_checks.cpp index 07e8bcb5d8..292fbcbbaa 100644 --- a/src/suyu/startup_checks.cpp +++ b/src/suyu/startup_checks.cpp @@ -5,7 +5,6 @@ #ifdef _WIN32 #include -#include #include #include #elif defined(SUYU_UNIX) diff --git a/src/suyu/uisettings.cpp b/src/suyu/uisettings.cpp index 7cf32ddd0e..60d4063c8c 100644 --- a/src/suyu/uisettings.cpp +++ b/src/suyu/uisettings.cpp @@ -22,15 +22,21 @@ namespace FS = Common::FS; namespace UISettings { -const Themes included_themes{{ - {"Default", ":/default"}, - {"Default monochrome", ":/monochrome"}, - {"Mine Shaft", ":/qdarkstyle"}, - {"Mine Shaft monochrome", ":/qdarkstyle_monochrome"}, - {"Midnight Blue", ":/qdarkstyle_midnight_blue"}, - {"Midnight Blue monochrome", ":/qdarkstyle_midnight_blue_monochrome"}, +const Themes themes{{ + {"Default", "default"}, + {"Default Colorful", "colorful"}, + {"Dark", "qdarkstyle"}, + {"Dark Colorful", "colorful_dark"}, + {"Midnight Blue", "qdarkstyle_midnight_blue"}, + {"Midnight Blue Colorful", "colorful_midnight_blue"}, }}; +bool IsDarkTheme() { + const auto& theme = UISettings::values.theme; + return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_midnight_blue") || + theme == std::string("colorful_dark") || theme == std::string("colorful_midnight_blue"); +} + Values values = {}; u32 CalculateWidth(u32 height, Settings::AspectRatio ratio) { diff --git a/src/suyu/uisettings.h b/src/suyu/uisettings.h index ded6a42244..cab889680f 100644 --- a/src/suyu/uisettings.h +++ b/src/suyu/uisettings.h @@ -18,7 +18,6 @@ using Settings::Category; using Settings::ConfirmStop; -using Settings::DarkModeState; using Settings::Setting; using Settings::SwitchableSetting; @@ -36,6 +35,8 @@ extern template class Setting; namespace UISettings { +bool IsDarkTheme(); + struct ContextualShortcut { std::string keyseq; std::string controller_keyseq; @@ -49,10 +50,25 @@ struct Shortcut { ContextualShortcut shortcut; }; -static constexpr std::string_view default_theme{":/default"}; +enum class Theme { + Default, + DefaultColorful, + Dark, + DarkColorful, + MidnightBlue, + MidnightBlueColorful, +}; + +static constexpr Theme default_theme{ +#ifdef _WIN32 + Theme::DarkColorful +#else + Theme::DefaultColorful +#endif +}; using Themes = std::array, 6>; -extern const Themes included_themes; +extern const Themes themes; struct GameDir { std::string path; @@ -144,8 +160,7 @@ struct Values { QStringList recent_files; Setting language{linkage, {}, "language", Category::Paths}; - QString theme; - DarkModeState dark_mode_state; + std::string theme; // Shortcut name std::vector shortcuts; @@ -263,4 +278,3 @@ Q_DECLARE_METATYPE(Settings::RendererBackend); Q_DECLARE_METATYPE(Settings::ShaderBackend); Q_DECLARE_METATYPE(Settings::AstcRecompression); Q_DECLARE_METATYPE(Settings::AstcDecodeMode); -Q_DECLARE_METATYPE(Settings::DarkModeState); diff --git a/src/tests/video_core/memory_tracker.cpp b/src/tests/video_core/memory_tracker.cpp index bfdcc8a16c..45b1a91dc5 100644 --- a/src/tests/video_core/memory_tracker.cpp +++ b/src/tests/video_core/memory_tracker.cpp @@ -45,7 +45,7 @@ public: [[nodiscard]] unsigned Count() const noexcept { unsigned count = 0; - for (const auto& [_, value] : page_table) { + for (const auto& [index, value] : page_table) { count += value; } return count; diff --git a/src/video_core/host1x/host1x.h b/src/video_core/host1x/host1x.h index 6de360d363..8debac93dd 100644 --- a/src/video_core/host1x/host1x.h +++ b/src/video_core/host1x/host1x.h @@ -45,7 +45,7 @@ public: // Vic does not know which nvdec is producing frames for it, so search all the fds here for // the given offset. for (auto& map : m_presentation_order) { - for (auto& [offset, _] : map.second) { + for (auto& [offset, frame] : map.second) { if (offset == search_offset) { return map.first; } @@ -53,7 +53,7 @@ public: } for (auto& map : m_decode_order) { - for (auto& [offset, _] : map.second) { + for (auto& [offset, frame] : map.second) { if (offset == search_offset) { return map.first; } diff --git a/src/video_core/texture_cache/formatter.h b/src/video_core/texture_cache/formatter.h index ea1c2df791..cabbfcb2dd 100644 --- a/src/video_core/texture_cache/formatter.h +++ b/src/video_core/texture_cache/formatter.h @@ -13,7 +13,7 @@ template <> struct fmt::formatter : fmt::formatter { template - auto format(VideoCore::Surface::PixelFormat format, FormatContext& ctx) const { + auto format(VideoCore::Surface::PixelFormat format, FormatContext& ctx) { using VideoCore::Surface::PixelFormat; const string_view name = [format] { switch (format) { @@ -234,7 +234,7 @@ struct fmt::formatter : fmt::formatter struct fmt::formatter : fmt::formatter { template - auto format(VideoCommon::ImageType type, FormatContext& ctx) const { + auto format(VideoCommon::ImageType type, FormatContext& ctx) { const string_view name = [type] { using VideoCommon::ImageType; switch (type) { @@ -262,7 +262,7 @@ struct fmt::formatter { } template - auto format(const VideoCommon::Extent3D& extent, FormatContext& ctx) const { + auto format(const VideoCommon::Extent3D& extent, FormatContext& ctx) { return fmt::format_to(ctx.out(), "{{{}, {}, {}}}", extent.width, extent.height, extent.depth); }