diff --git a/.reuse/dep5 b/.reuse/dep5 index baf1354bf6..9779726e3f 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -5,10 +5,13 @@ 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 @@ -22,8 +25,7 @@ Copyright: suyu Emulator Project License: GPL-2.0-or-later Files: dist/qt_themes/qdarkstyle*/LICENSE.* - dist/qt_themes/qdarkstyle*/style.qrc - dist/qt_themes/qdarkstyle*/style.qss + dist/qt_themes/qdarkstyle*/dark.qss Copyright: 2013 Colin Duquesnoy 2019 Daniel Cosmo Pizetta License: MIT @@ -33,28 +35,28 @@ Copyright: 2013 Colin Duquesnoy 2019 Daniel Cosmo Pizetta License: CC-BY-4.0 -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 +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 Copyright: Refactoring UI Inc. License: MIT Comment: https://github.com/tailwindlabs/heroicons -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 +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 Copyright: Icons8 License: MIT Comment: https://github.com/icons8/flat-color-icons @@ -70,15 +72,15 @@ Files: dist/qt_themes/*/icons/48x48/no_avatar.png Copyright: Ionic (http://ionic.io/) License: MIT -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 +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 Copyright: SVG Repo License: CC0-1.0 Files: dist/qt_themes/*/icons/16x16/view-refresh.png - dist/qt_themes/default/icons/16x16/lock.png - dist/qt_themes/qdarkstyle/icons/16x16/lock.png + dist/qt_themes/monochrome/icons/16x16/lock.png + dist/qt_themes/monochrome_dark/icons/16x16/lock.png Copyright: Google, Inc. License: Apache-2.0 diff --git a/dist/icons/overlay/osk_button_backspace.png b/dist/icons/overlay/osk_button_backspace.png index b7dc332282..b212efbbc3 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/overlay.qrc b/dist/icons/overlay/overlay.qrc index 8d7833aca0..2319e6dd28 100644 --- a/dist/icons/overlay/overlay.qrc +++ b/dist/icons/overlay/overlay.qrc @@ -6,64 +6,66 @@ 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 - controller_single_joycon_left_y_dark.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 diff --git a/dist/icons/overlay/arrow_left_dark.png b/dist/icons/overlay_dark/arrow_left.png similarity index 100% rename from dist/icons/overlay/arrow_left_dark.png rename to dist/icons/overlay_dark/arrow_left.png diff --git a/dist/icons/overlay/arrow_right_dark.png b/dist/icons/overlay_dark/arrow_right.png similarity index 100% rename from dist/icons/overlay/arrow_right_dark.png rename to dist/icons/overlay_dark/arrow_right.png diff --git a/dist/icons/overlay/button_A_dark.png b/dist/icons/overlay_dark/button_A.png similarity index 100% rename from dist/icons/overlay/button_A_dark.png rename to dist/icons/overlay_dark/button_A.png diff --git a/dist/icons/overlay/button_B_dark.png b/dist/icons/overlay_dark/button_B.png similarity index 100% rename from dist/icons/overlay/button_B_dark.png rename to dist/icons/overlay_dark/button_B.png diff --git a/dist/icons/overlay/button_L_dark.png b/dist/icons/overlay_dark/button_L.png similarity index 100% rename from dist/icons/overlay/button_L_dark.png rename to dist/icons/overlay_dark/button_L.png diff --git a/dist/icons/overlay/button_R_dark.png b/dist/icons/overlay_dark/button_R.png similarity index 100% rename from dist/icons/overlay/button_R_dark.png rename to dist/icons/overlay_dark/button_R.png diff --git a/dist/icons/overlay/button_X_dark.png b/dist/icons/overlay_dark/button_X.png similarity index 100% rename from dist/icons/overlay/button_X_dark.png rename to dist/icons/overlay_dark/button_X.png diff --git a/dist/icons/overlay/button_Y_dark.png b/dist/icons/overlay_dark/button_Y.png similarity index 100% rename from dist/icons/overlay/button_Y_dark.png rename to dist/icons/overlay_dark/button_Y.png diff --git a/dist/icons/overlay/button_minus_dark.png b/dist/icons/overlay_dark/button_minus.png similarity index 100% rename from dist/icons/overlay/button_minus_dark.png rename to dist/icons/overlay_dark/button_minus.png diff --git a/dist/icons/overlay/button_plus_dark.png b/dist/icons/overlay_dark/button_plus.png similarity index 100% rename from dist/icons/overlay/button_plus_dark.png rename to dist/icons/overlay_dark/button_plus.png diff --git a/dist/icons/overlay/button_press_stick_dark.png b/dist/icons/overlay_dark/button_press_stick.png similarity index 100% rename from dist/icons/overlay/button_press_stick_dark.png rename to dist/icons/overlay_dark/button_press_stick.png diff --git a/dist/icons/overlay/controller_dual_joycon_dark.png b/dist/icons/overlay_dark/controller_dual_joycon.png similarity index 100% rename from dist/icons/overlay/controller_dual_joycon_dark.png rename to dist/icons/overlay_dark/controller_dual_joycon.png diff --git a/dist/icons/overlay/controller_handheld_dark.png b/dist/icons/overlay_dark/controller_handheld.png similarity index 100% rename from dist/icons/overlay/controller_handheld_dark.png rename to dist/icons/overlay_dark/controller_handheld.png diff --git a/dist/icons/overlay/controller_pro_dark.png b/dist/icons/overlay_dark/controller_pro.png similarity index 100% rename from dist/icons/overlay/controller_pro_dark.png rename to dist/icons/overlay_dark/controller_pro.png diff --git a/dist/icons/overlay/controller_single_joycon_left_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left.png diff --git a/dist/icons/overlay/controller_single_joycon_left_a_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_a.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_a_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_a.png diff --git a/dist/icons/overlay/controller_single_joycon_left_b_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_b.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_b_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_b.png diff --git a/dist/icons/overlay/controller_single_joycon_left_x_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_x.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_x_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_x.png diff --git a/dist/icons/overlay/controller_single_joycon_left_y_dark.png b/dist/icons/overlay_dark/controller_single_joycon_left_y.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_left_y_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_left_y.png diff --git a/dist/icons/overlay/controller_single_joycon_right_dark.png b/dist/icons/overlay_dark/controller_single_joycon_right.png similarity index 100% rename from dist/icons/overlay/controller_single_joycon_right_dark.png rename to dist/icons/overlay_dark/controller_single_joycon_right.png diff --git a/dist/icons/overlay/osk_button_B_dark.png b/dist/icons/overlay_dark/osk_button_B.png similarity index 100% rename from dist/icons/overlay/osk_button_B_dark.png rename to dist/icons/overlay_dark/osk_button_B.png diff --git a/dist/icons/overlay/osk_button_B_dark_disabled.png b/dist/icons/overlay_dark/osk_button_B_disabled.png similarity index 100% rename from dist/icons/overlay/osk_button_B_dark_disabled.png rename to dist/icons/overlay_dark/osk_button_B_disabled.png diff --git a/dist/icons/overlay/osk_button_Y_dark.png b/dist/icons/overlay_dark/osk_button_Y.png similarity index 100% rename from dist/icons/overlay/osk_button_Y_dark.png rename to dist/icons/overlay_dark/osk_button_Y.png diff --git a/dist/icons/overlay/osk_button_Y_dark_disabled.png b/dist/icons/overlay_dark/osk_button_Y_disabled.png similarity index 100% rename from dist/icons/overlay/osk_button_Y_dark_disabled.png rename to dist/icons/overlay_dark/osk_button_Y_disabled.png diff --git a/dist/icons/overlay/osk_button_backspace_dark.png b/dist/icons/overlay_dark/osk_button_backspace.png similarity index 100% rename from dist/icons/overlay/osk_button_backspace_dark.png rename to dist/icons/overlay_dark/osk_button_backspace.png diff --git a/dist/icons/overlay/osk_button_plus_dark.png b/dist/icons/overlay_dark/osk_button_plus.png similarity index 100% rename from dist/icons/overlay/osk_button_plus_dark.png rename to dist/icons/overlay_dark/osk_button_plus.png diff --git a/dist/icons/overlay/osk_button_plus_dark_disabled.png b/dist/icons/overlay_dark/osk_button_plus_disabled.png similarity index 100% rename from dist/icons/overlay/osk_button_plus_dark_disabled.png rename to dist/icons/overlay_dark/osk_button_plus_disabled.png diff --git a/dist/icons/overlay/osk_button_shift_dark.png b/dist/icons/overlay_dark/osk_button_shift.png similarity index 100% rename from dist/icons/overlay/osk_button_shift_dark.png rename to dist/icons/overlay_dark/osk_button_shift.png diff --git a/dist/icons/overlay/osk_button_shift_on_dark.png b/dist/icons/overlay_dark/osk_button_shift_on.png similarity index 100% rename from dist/icons/overlay/osk_button_shift_on_dark.png rename to dist/icons/overlay_dark/osk_button_shift_on.png diff --git a/dist/qt_themes/colorful/icons/16x16/connected.png b/dist/qt_themes/colorful/icons/16x16/connected.png deleted file mode 100644 index 0afc18cb7a..0000000000 Binary files a/dist/qt_themes/colorful/icons/16x16/connected.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/16x16/connected_notification.png b/dist/qt_themes/colorful/icons/16x16/connected_notification.png deleted file mode 100644 index 72466e098e..0000000000 Binary files a/dist/qt_themes/colorful/icons/16x16/connected_notification.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/16x16/disconnected.png b/dist/qt_themes/colorful/icons/16x16/disconnected.png deleted file mode 100644 index 7258a8cfe5..0000000000 Binary files a/dist/qt_themes/colorful/icons/16x16/disconnected.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/16x16/lock.png b/dist/qt_themes/colorful/icons/16x16/lock.png deleted file mode 100644 index fd27069d80..0000000000 Binary files a/dist/qt_themes/colorful/icons/16x16/lock.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/256x256/plus_folder.png b/dist/qt_themes/colorful/icons/256x256/plus_folder.png deleted file mode 100644 index 760fe6245e..0000000000 Binary files a/dist/qt_themes/colorful/icons/256x256/plus_folder.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/48x48/bad_folder.png b/dist/qt_themes/colorful/icons/48x48/bad_folder.png deleted file mode 100644 index 34069c6b23..0000000000 Binary files a/dist/qt_themes/colorful/icons/48x48/bad_folder.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/48x48/chip.png b/dist/qt_themes/colorful/icons/48x48/chip.png deleted file mode 100644 index 6fa1589995..0000000000 Binary files a/dist/qt_themes/colorful/icons/48x48/chip.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/48x48/folder.png b/dist/qt_themes/colorful/icons/48x48/folder.png deleted file mode 100644 index 498de4c629..0000000000 Binary files a/dist/qt_themes/colorful/icons/48x48/folder.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/48x48/list-add.png b/dist/qt_themes/colorful/icons/48x48/list-add.png deleted file mode 100644 index 74e4882aae..0000000000 Binary files a/dist/qt_themes/colorful/icons/48x48/list-add.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/48x48/sd_card.png b/dist/qt_themes/colorful/icons/48x48/sd_card.png deleted file mode 100644 index 652d61bc32..0000000000 Binary files a/dist/qt_themes/colorful/icons/48x48/sd_card.png and /dev/null differ diff --git a/dist/qt_themes/colorful/icons/48x48/star.png b/dist/qt_themes/colorful/icons/48x48/star.png deleted file mode 100644 index 19d55a0a80..0000000000 Binary files a/dist/qt_themes/colorful/icons/48x48/star.png and /dev/null differ diff --git a/dist/qt_themes/colorful/style.qrc b/dist/qt_themes/colorful/style.qrc deleted file mode 100644 index 82cd367be9..0000000000 --- a/dist/qt_themes/colorful/style.qrc +++ /dev/null @@ -1,30 +0,0 @@ - - - - - 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/colorful_dark/icons/index.theme b/dist/qt_themes/colorful_dark/icons/index.theme deleted file mode 100644 index b37a06df78..0000000000 --- a/dist/qt_themes/colorful_dark/icons/index.theme +++ /dev/null @@ -1,8 +0,0 @@ -[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 deleted file mode 100644 index 72451ef023..0000000000 --- a/dist/qt_themes/colorful_dark/style.qrc +++ /dev/null @@ -1,57 +0,0 @@ - - - - - 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 deleted file mode 100644 index dcb2c50d68..0000000000 --- a/dist/qt_themes/colorful_midnight_blue/icons/index.theme +++ /dev/null @@ -1,8 +0,0 @@ -[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 deleted file mode 100644 index b9821c6722..0000000000 --- a/dist/qt_themes/colorful_midnight_blue/style.qrc +++ /dev/null @@ -1,63 +0,0 @@ - - - - - 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 4522865b4c..125bc3f342 100644 --- a/dist/qt_themes/default/default.qrc +++ b/dist/qt_themes/default/default.qrc @@ -4,23 +4,37 @@ 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 - - style.qss + + + + ../default_dark/icons/index.theme + ../default_dark/icons/16x16/lock.png + ../default_dark/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/colorful/icons/16x16/checked.png b/dist/qt_themes/default/icons/16x16/checked.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/checked.png rename to dist/qt_themes/default/icons/16x16/checked.png diff --git a/dist/qt_themes/colorful/icons/16x16/failed.png b/dist/qt_themes/default/icons/16x16/failed.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/failed.png rename to dist/qt_themes/default/icons/16x16/failed.png diff --git a/dist/qt_themes/colorful/icons/16x16/info.png b/dist/qt_themes/default/icons/16x16/info.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/info.png rename to dist/qt_themes/default/icons/16x16/info.png diff --git a/dist/qt_themes/default/icons/16x16/lock.png b/dist/qt_themes/default/icons/16x16/lock.png index 69d3990508..fd27069d80 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/colorful/icons/16x16/sync.png b/dist/qt_themes/default/icons/16x16/sync.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/sync.png rename to dist/qt_themes/default/icons/16x16/sync.png diff --git a/dist/qt_themes/colorful/icons/16x16/view-refresh.png b/dist/qt_themes/default/icons/16x16/view-refresh.png similarity index 100% rename from dist/qt_themes/colorful/icons/16x16/view-refresh.png rename to dist/qt_themes/default/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/default/icons/256x256/plus_folder.png b/dist/qt_themes/default/icons/256x256/plus_folder.png index f44c80c3ae..760fe6245e 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 364ec646f6..34069c6b23 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 1b573d51af..6fa1589995 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 507337fae5..498de4c629 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 fd8a06132c..74e4882aae 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/colorful/icons/48x48/no_avatar.png b/dist/qt_themes/default/icons/48x48/no_avatar.png similarity index 100% rename from dist/qt_themes/colorful/icons/48x48/no_avatar.png rename to dist/qt_themes/default/icons/48x48/no_avatar.png diff --git a/dist/qt_themes/default/icons/48x48/sd_card.png b/dist/qt_themes/default/icons/48x48/sd_card.png index 6bcb7f6b1d..652d61bc32 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 c2b78f0c3e..19d55a0a80 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 21b35e3e3c..6c455463ee 100644 --- a/dist/qt_themes/default/icons/index.theme +++ b/dist/qt_themes/default/icons/index.theme @@ -1,7 +1,6 @@ [Icon Theme] Name=default -Comment=default theme -Inherits=colorful +Comment=Colorful theme Directories=16x16,48x48,256x256 [16x16] @@ -9,6 +8,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 921950c6c0..16b779b1b8 100644 --- a/dist/qt_themes/default/style.qss +++ b/dist/qt_themes/default/style.qss @@ -1,3 +1,14 @@ +/* +* 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; } @@ -11,7 +22,7 @@ QPushButton#TogglableStatusBarButton { } QPushButton#TogglableStatusBarButton:checked { - color: #000000; + color: palette(text); } QPushButton#TogglableStatusBarButton:hover { @@ -38,6 +49,10 @@ QPushButton#RendererStatusBarButton:!checked { color: #0066ff; } +QPushButton#RendererStatusBarButton:!checked[dark=true] { + color: #00ccdd; +} + QPushButton#GPUStatusBarButton { color: #656565; border: 1px solid transparent; @@ -54,13 +69,21 @@ 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: #000000; + color: palette(text); border: 1px solid transparent; background-color: transparent; padding: 0px 3px 0px 3px; @@ -94,21 +117,21 @@ QGroupBox#groupPlayer5Connected:checked, QGroupBox#groupPlayer6Connected:checked, QGroupBox#groupPlayer7Connected:checked, QGroupBox#groupPlayer8Connected:checked { - background-color: #f5f5f5; + background-color: palette(window); } QWidget#topControllerApplet { - border-bottom: 1px solid #828790 + border-bottom: 1px solid palette(dark) } QWidget#bottomPerGameInput, QWidget#bottomControllerApplet { - border-top: 1px solid #828790 + border-top: 1px solid palette(dark) } QWidget#topPerGameInput, QWidget#middleControllerApplet { - background-color: #fff; + background-color: palette(base) } QWidget#topPerGameInput QComboBox, @@ -120,10 +143,6 @@ QWidget#connectedControllers { background: transparent; } -QWidget#closeButtons { - background: transparent; -} - QWidget#playersSupported, QWidget#controllersSupported, QWidget#controllerSupported1, @@ -345,7 +364,7 @@ QWidget#lineDialog { QStackedWidget#bottomOSK, QWidget#contentDialog, QWidget#contentRichDialog { - background: rgba(240, 240, 240, 1); + background: palette(base); } QWidget#contentDialog, @@ -372,7 +391,7 @@ QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical { border-radius: 4px; } -QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal { +QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizontal { background: #cdcdcd; height: 15px; margin: 3px 15px 3px 15px; @@ -402,6 +421,7 @@ QWidget#inputOSK QLineEdit { background: transparent; border: none; color: #ccc; + padding: 0px; } QWidget#inputBoxOSK { @@ -431,6 +451,27 @@ 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; @@ -471,8 +512,8 @@ QDialog#OverlayDialog QPushButton:pressed { } QDialog#QtSoftwareKeyboardDialog QPushButton { - background: rgba(232, 232, 232, 1); - border: 2px solid rgba(240, 240, 240, 1); + background: palette(window); + border: 2px solid palette(base); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift, @@ -481,27 +522,35 @@ 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); + background: palette(alternate-base); + border: 2px solid palette(base); } 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); + color: palette(base); + background: palette(mid); + border: 2px solid palette(base); } 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); + color: palette(base); + background: palette(highlight); + border: 2px solid palette(base); } 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, @@ -514,8 +563,6 @@ 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, @@ -524,12 +571,11 @@ 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); +QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover, +QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover +{ border: 5px solid rgba(148, 250, 202, 1); border-radius: 6px; outline: none; @@ -548,48 +594,12 @@ 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); + color: palette(base); 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, @@ -602,47 +612,6 @@ 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, @@ -653,8 +622,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: rgba(164, 164, 164, 1); - background-color: rgba(218, 218, 218, 1); + color: palette(midlight); + background-color: palette(alternate-base); } QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled, @@ -671,22 +640,5 @@ 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); + color: palette(midlight); } diff --git a/dist/qt_themes/colorful_dark/icons/16x16/lock.png b/dist/qt_themes/default_dark/icons/16x16/lock.png similarity index 100% rename from dist/qt_themes/colorful_dark/icons/16x16/lock.png rename to dist/qt_themes/default_dark/icons/16x16/lock.png diff --git a/dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png b/dist/qt_themes/default_dark/icons/16x16/view-refresh.png similarity index 100% rename from dist/qt_themes/colorful_dark/icons/16x16/view-refresh.png rename to dist/qt_themes/default_dark/icons/16x16/view-refresh.png diff --git a/dist/qt_themes/default_dark/icons/index.theme b/dist/qt_themes/default_dark/icons/index.theme index 60a072d1d6..32d84fa9bd 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=colorful +Inherits=default Directories=16x16 [16x16] diff --git a/dist/qt_themes/default_dark/style.qrc b/dist/qt_themes/default_dark/style.qrc deleted file mode 100644 index 7de4737c2c..0000000000 --- a/dist/qt_themes/default_dark/style.qrc +++ /dev/null @@ -1,25 +0,0 @@ - - - - ../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 deleted file mode 100644 index ca6daa2d52..0000000000 --- a/dist/qt_themes/default_dark/style.qss +++ /dev/null @@ -1,687 +0,0 @@ -/* -* 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 new file mode 100644 index 0000000000..4eb16294fe --- /dev/null +++ b/dist/qt_themes/monochrome/icons.qrc @@ -0,0 +1,32 @@ + + + + + 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 new file mode 100644 index 0000000000..69d3990508 Binary files /dev/null and b/dist/qt_themes/monochrome/icons/16x16/lock.png differ diff --git a/dist/qt_themes/monochrome/icons/256x256/plus_folder.png b/dist/qt_themes/monochrome/icons/256x256/plus_folder.png new file mode 100644 index 0000000000..f44c80c3ae Binary files /dev/null and b/dist/qt_themes/monochrome/icons/256x256/plus_folder.png differ diff --git a/dist/qt_themes/monochrome/icons/48x48/bad_folder.png b/dist/qt_themes/monochrome/icons/48x48/bad_folder.png new file mode 100644 index 0000000000..364ec646f6 Binary files /dev/null and b/dist/qt_themes/monochrome/icons/48x48/bad_folder.png differ diff --git a/dist/qt_themes/monochrome/icons/48x48/chip.png b/dist/qt_themes/monochrome/icons/48x48/chip.png new file mode 100644 index 0000000000..1b573d51af Binary files /dev/null and b/dist/qt_themes/monochrome/icons/48x48/chip.png differ diff --git a/dist/qt_themes/monochrome/icons/48x48/folder.png b/dist/qt_themes/monochrome/icons/48x48/folder.png new file mode 100644 index 0000000000..507337fae5 Binary files /dev/null and b/dist/qt_themes/monochrome/icons/48x48/folder.png differ diff --git a/dist/qt_themes/monochrome/icons/48x48/list-add.png b/dist/qt_themes/monochrome/icons/48x48/list-add.png new file mode 100644 index 0000000000..fd8a06132c Binary files /dev/null and b/dist/qt_themes/monochrome/icons/48x48/list-add.png differ diff --git a/dist/qt_themes/monochrome/icons/48x48/sd_card.png b/dist/qt_themes/monochrome/icons/48x48/sd_card.png new file mode 100644 index 0000000000..6bcb7f6b1d Binary files /dev/null and b/dist/qt_themes/monochrome/icons/48x48/sd_card.png differ diff --git a/dist/qt_themes/monochrome/icons/48x48/star.png b/dist/qt_themes/monochrome/icons/48x48/star.png new file mode 100644 index 0000000000..c2b78f0c3e Binary files /dev/null and b/dist/qt_themes/monochrome/icons/48x48/star.png differ diff --git a/dist/qt_themes/colorful/icons/index.theme b/dist/qt_themes/monochrome/icons/index.theme similarity index 60% rename from dist/qt_themes/colorful/icons/index.theme rename to dist/qt_themes/monochrome/icons/index.theme index 6eb3c69495..c2764622e0 100644 --- a/dist/qt_themes/colorful/icons/index.theme +++ b/dist/qt_themes/monochrome/icons/index.theme @@ -1,8 +1,9 @@ [Icon Theme] -Name=colorful -Comment=Colorful theme +Name=monochrome +Comment=Monochrome light icons +Inherits=default Directories=16x16,48x48,256x256 - + [16x16] Size=16 diff --git a/dist/qt_themes/monochrome/style.qrc b/dist/qt_themes/monochrome/style.qrc new file mode 100644 index 0000000000..54778e2f54 --- /dev/null +++ b/dist/qt_themes/monochrome/style.qrc @@ -0,0 +1,5 @@ + + + ../default/style.qss + + diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/lock.png b/dist/qt_themes/monochrome_dark/icons/16x16/lock.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/16x16/lock.png rename to dist/qt_themes/monochrome_dark/icons/16x16/lock.png diff --git a/dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png b/dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png rename to dist/qt_themes/monochrome_dark/icons/256x256/plus_folder.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png b/dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png rename to dist/qt_themes/monochrome_dark/icons/48x48/bad_folder.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/chip.png b/dist/qt_themes/monochrome_dark/icons/48x48/chip.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/chip.png rename to dist/qt_themes/monochrome_dark/icons/48x48/chip.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/folder.png b/dist/qt_themes/monochrome_dark/icons/48x48/folder.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/folder.png rename to dist/qt_themes/monochrome_dark/icons/48x48/folder.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png b/dist/qt_themes/monochrome_dark/icons/48x48/list-add.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/list-add.png rename to dist/qt_themes/monochrome_dark/icons/48x48/list-add.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/no_avatar.png b/dist/qt_themes/monochrome_dark/icons/48x48/no_avatar.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/no_avatar.png rename to dist/qt_themes/monochrome_dark/icons/48x48/no_avatar.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png b/dist/qt_themes/monochrome_dark/icons/48x48/sd_card.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/sd_card.png rename to dist/qt_themes/monochrome_dark/icons/48x48/sd_card.png diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/star.png b/dist/qt_themes/monochrome_dark/icons/48x48/star.png similarity index 100% rename from dist/qt_themes/qdarkstyle/icons/48x48/star.png rename to dist/qt_themes/monochrome_dark/icons/48x48/star.png diff --git a/dist/qt_themes/monochrome_dark/icons/index.theme b/dist/qt_themes/monochrome_dark/icons/index.theme new file mode 100644 index 0000000000..9ca318d09e --- /dev/null +++ b/dist/qt_themes/monochrome_dark/icons/index.theme @@ -0,0 +1,14 @@ +[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/style.qss b/dist/qt_themes/qdarkstyle/dark.qss similarity index 93% rename from dist/qt_themes/qdarkstyle/style.qss rename to dist/qt_themes/qdarkstyle/dark.qss index 328ac942fc..95e575c42f 100644 --- a/dist/qt_themes/qdarkstyle/style.qss +++ b/dist/qt_themes/qdarkstyle/dark.qss @@ -944,6 +944,10 @@ 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; @@ -1380,10 +1384,6 @@ QWidget#connectedControllers { background: transparent; } -QWidget#closeButtons { - background: transparent; -} - QWidget#playersSupported, QWidget#controllersSupported, QWidget#controllerSupported1, @@ -1843,40 +1843,17 @@ 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, @@ -1889,47 +1866,6 @@ 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, @@ -1961,23 +1897,6 @@ 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/icons.qrc b/dist/qt_themes/qdarkstyle/icons.qrc new file mode 100644 index 0000000000..d7ec900649 --- /dev/null +++ b/dist/qt_themes/qdarkstyle/icons.qrc @@ -0,0 +1,51 @@ + + + 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 deleted file mode 100644 index 0afc18cb7a..0000000000 Binary files a/dist/qt_themes/qdarkstyle/icons/16x16/connected.png and /dev/null differ diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png b/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png deleted file mode 100644 index 72466e098e..0000000000 Binary files a/dist/qt_themes/qdarkstyle/icons/16x16/connected_notification.png and /dev/null differ diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png b/dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png deleted file mode 100644 index 7258a8cfe5..0000000000 Binary files a/dist/qt_themes/qdarkstyle/icons/16x16/disconnected.png and /dev/null differ diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png b/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png deleted file mode 100644 index d4afd76f94..0000000000 Binary files a/dist/qt_themes/qdarkstyle/icons/16x16/view-refresh.png and /dev/null differ diff --git a/dist/qt_themes/qdarkstyle/icons/index.theme b/dist/qt_themes/qdarkstyle/icons/index.theme index 502717617c..0059b7ac96 100644 --- a/dist/qt_themes/qdarkstyle/icons/index.theme +++ b/dist/qt_themes/qdarkstyle/icons/index.theme @@ -1,14 +1,4 @@ [Icon Theme] Name=qdarkstyle -Comment=dark theme -Inherits=colorful -Directories=16x16,48x48,256x256 - -[16x16] -Size=16 - -[48x48] -Size=48 - -[256x256] -Size=256 +Comment=Dark theme (Mine Shaft style) +Inherits=default_dark diff --git a/dist/qt_themes/qdarkstyle/style.qrc b/dist/qt_themes/qdarkstyle/style.qrc index a89fb26c68..b1180c3e0a 100644 --- a/dist/qt_themes/qdarkstyle/style.qrc +++ b/dist/qt_themes/qdarkstyle/style.qrc @@ -1,62 +1,5 @@ - - 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 - + + dark.qss + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss b/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss similarity index 95% rename from dist/qt_themes/qdarkstyle_midnight_blue/style.qss rename to dist/qt_themes/qdarkstyle_midnight_blue/dark.qss index eb0889b139..3086b90ade 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qss +++ b/dist/qt_themes/qdarkstyle_midnight_blue/dark.qss @@ -1296,6 +1296,10 @@ QSlider:focus { border: none; } +QSlider:horizontal { + height: 20px; +} + QSlider::groove:horizontal { background: #32414B; border: 1px solid #32414B; @@ -2779,41 +2783,10 @@ 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, @@ -2828,47 +2801,6 @@ 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, @@ -2899,20 +2831,3 @@ 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/icons.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc new file mode 100644 index 0000000000..1a071adda6 --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue/icons.qrc @@ -0,0 +1,224 @@ + + + + + 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 20f9f6d633..34c449f19a 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme +++ b/dist/qt_themes/qdarkstyle_midnight_blue/icons/index.theme @@ -1,14 +1,4 @@ [Icon Theme] Name=qdarkstyle_midnight_blue -Comment=dark theme -Inherits=colorful -Directories=16x16,48x48,256x256 - -[16x16] -Size=16 - -[48x48] -Size=48 - -[256x256] -Size=256 +Comment=Dark theme (Midnight Blue style) +Inherits=default_dark diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc index dc3d7fecbd..0cdaefa035 100644 --- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc +++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc @@ -1,228 +1,5 @@ - - 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 - + + dark.qss + diff --git a/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc new file mode 100644 index 0000000000..60b95db02a --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons.qrc @@ -0,0 +1,33 @@ + + + + + + + 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 new file mode 100644 index 0000000000..d6ed7d55ec --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/icons/index.theme @@ -0,0 +1,14 @@ +[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 new file mode 100644 index 0000000000..eeb5f34cbb --- /dev/null +++ b/dist/qt_themes/qdarkstyle_midnight_blue_monochrome/style.qrc @@ -0,0 +1,8 @@ + + + ../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 new file mode 100644 index 0000000000..355fe22beb --- /dev/null +++ b/dist/qt_themes/qdarkstyle_monochrome/icons.qrc @@ -0,0 +1,33 @@ + + + + + + + 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 new file mode 100644 index 0000000000..a8fd60ba29 --- /dev/null +++ b/dist/qt_themes/qdarkstyle_monochrome/icons/index.theme @@ -0,0 +1,14 @@ +[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 new file mode 100644 index 0000000000..76f7767ca8 --- /dev/null +++ b/dist/qt_themes/qdarkstyle_monochrome/style.qrc @@ -0,0 +1,8 @@ + + + ../qdarkstyle/dark.qss + + + ../qdarkstyle/dark.qss + + diff --git a/src/common/fs/fs_paths.h b/src/common/fs/fs_paths.h index 3720976efe..de06571a6f 100644 --- a/src/common/fs/fs_paths.h +++ b/src/common/fs/fs_paths.h @@ -15,6 +15,7 @@ #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" @@ -24,7 +25,7 @@ #define SDMC_DIR "sdmc" #define SHADER_DIR "shader" #define TAS_DIR "tas" -#define ICONS_DIR "icons" +#define THEMES_DIR "qt_themes" // suyu-specific files diff --git a/src/common/fs/path_util.cpp b/src/common/fs/path_util.cpp index e23f53fb9d..9362e18c39 100644 --- a/src/common/fs/path_util.cpp +++ b/src/common/fs/path_util.cpp @@ -121,6 +121,7 @@ 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); @@ -130,7 +131,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::IconsDir, suyu_path / ICONS_DIR); + GenerateSuyuPath(SuyuPath::ThemesDir, suyu_path / THEMES_DIR); } private: diff --git a/src/common/fs/path_util.h b/src/common/fs/path_util.h index 2076fbcd43..1ac4a26eea 100644 --- a/src/common/fs/path_util.h +++ b/src/common/fs/path_util.h @@ -17,6 +17,7 @@ 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. @@ -26,7 +27,7 @@ enum class SuyuPath { SDMCDir, // Where the emulated SDMC is stored. ShaderDir, // Where shaders are stored. TASDir, // Where TAS scripts are stored. - IconsDir, // Where Icons for Windows shortcuts are stored. + ThemesDir, // Where users should put their custom themes }; /** diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 948c557674..3339d5b4f0 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp @@ -67,6 +67,7 @@ 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 98c3958c00..4e993ea622 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -88,6 +88,7 @@ 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 fabae6d687..777f5b1b0a 100644 --- a/src/common/settings_enums.h +++ b/src/common/settings_enums.h @@ -155,6 +155,8 @@ 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/suyu/applets/qt_controller.cpp b/src/suyu/applets/qt_controller.cpp index f27ab835e5..d41d23eceb 100644 --- a/src/suyu/applets/qt_controller.cpp +++ b/src/suyu/applets/qt_controller.cpp @@ -384,10 +384,12 @@ bool QtControllerSelectorDialog::CheckIfParametersMet() { void QtControllerSelectorDialog::SetSupportedControllers() { const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("dark"))) { - return QStringLiteral("_dark"); - } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + 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 + return QStringLiteral("_dark"); } else { return QString{}; } @@ -572,10 +574,12 @@ void QtControllerSelectorDialog::UpdateControllerIcon(std::size_t player_index) } const QString theme = [] { - if (QIcon::themeName().contains(QStringLiteral("dark"))) { - return QStringLiteral("_dark"); - } else if (QIcon::themeName().contains(QStringLiteral("midnight"))) { + 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 + return QStringLiteral("_dark"); } else { return QString{}; } diff --git a/src/suyu/applets/qt_software_keyboard.cpp b/src/suyu/applets/qt_software_keyboard.cpp index a1bcfa717e..3a88656a17 100644 --- a/src/suyu/applets/qt_software_keyboard.cpp +++ b/src/suyu/applets/qt_software_keyboard.cpp @@ -372,6 +372,14 @@ 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; @@ -382,6 +390,7 @@ void QtSoftwareKeyboardDialog::ShowNormalKeyboard(QPoint pos, QSize size) { SetKeyboardType(); SetPasswordMode(); SetControllerImage(); + SetButtonImages(); DisableKeyboardButtons(); SetBackspaceOkEnabled(); @@ -449,6 +458,7 @@ void QtSoftwareKeyboardDialog::ShowInlineKeyboard( SetKeyboardType(); SetControllerImage(); + SetButtonImages(); DisableKeyboardButtons(); SetBackspaceOkEnabled(); @@ -822,68 +832,146 @@ 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/controller_pro%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_pro%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_pro.png);").arg(theme())); break; case Core::HID::NpadStyleIndex::JoyconDual: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_dual_joycon%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_dual_joycon.png);").arg(theme())); break; case Core::HID::NpadStyleIndex::JoyconLeft: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") + .arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") + .arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_left%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_left.png);") + .arg(theme())); break; case Core::HID::NpadStyleIndex::JoyconRight: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") + .arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") + .arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_single_joycon_right%1.png);") - .arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_single_joycon_right.png);") + .arg(theme())); break; case Core::HID::NpadStyleIndex::Handheld: ui->icon_controller->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); ui->icon_controller_shift->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_handheld.png);").arg(theme())); ui->icon_controller_num->setStyleSheet( - QStringLiteral("image: url(:/overlay/controller_handheld%1.png);").arg(theme)); + QStringLiteral("image: url(:/overlay%1/controller_handheld.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: @@ -1050,10 +1138,8 @@ 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);" - "\nimage-position: left;")); + QStringLiteral("image: url(:/overlay/osk_button_shift_lock_off.png);")); - ui->button_shift_shift->setIconSize(ui->button_shift->iconSize()); ui->button_backspace_shift->setIconSize(ui->button_backspace->iconSize()); break; case BottomOSKIndex::UpperCase: @@ -1064,9 +1150,6 @@ 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; @@ -1078,9 +1161,6 @@ 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 7e2fdf09ea..fda6ac623d 100644 --- a/src/suyu/applets/qt_software_keyboard.h +++ b/src/suyu/applets/qt_software_keyboard.h @@ -80,6 +80,12 @@ 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. * @@ -109,6 +115,9 @@ 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_input_player.ui b/src/suyu/configuration/configure_input_player.ui index 5beb1b6bfc..761015cd94 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 - 15 - - - - 100 - - - Qt::Horizontal - - + + + + 70 + 40 + + + + 100 + + + Qt::Horizontal + + @@ -1927,22 +1927,22 @@ - - - - - 70 - 15 - - - - 100 - - - Qt::Horizontal - - - + + + + + 70 + 40 + + + + 100 + + + Qt::Horizontal + + + diff --git a/src/suyu/configuration/configure_ui.cpp b/src/suyu/configuration/configure_ui.cpp index a3648c5b1c..589c035589 100644 --- a/src/suyu/configuration/configure_ui.cpp +++ b/src/suyu/configuration/configure_ui.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include "common/common_types.h" #include "common/fs/path_util.h" @@ -29,6 +30,8 @@ #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")), @@ -106,11 +109,31 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent) InitializeLanguageComboBox(); - for (const auto& theme : UISettings::themes) { + for (const auto& theme : UISettings::included_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(); @@ -133,6 +156,9 @@ 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), @@ -164,7 +190,9 @@ ConfigureUi::~ConfigureUi() = default; void ConfigureUi::ApplyConfiguration() { UISettings::values.theme = - ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString().toStdString(); + ui->theme_combobox->itemData(ui->theme_combobox->currentIndex()).toString(); + UISettings::values.dark_mode_state = + static_cast(ui->dark_mode_combobox->currentData().toUInt()); 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(); @@ -186,13 +214,71 @@ 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(QString::fromStdString(UISettings::values.theme))); + 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->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 2a2563a131..a52ad7cc74 100644 --- a/src/suyu/configuration/configure_ui.h +++ b/src/suyu/configuration/configure_ui.h @@ -34,6 +34,7 @@ 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 b8e6483814..cdd46005fd 100644 --- a/src/suyu/configuration/configure_ui.ui +++ b/src/suyu/configuration/configure_ui.ui @@ -63,6 +63,20 @@ + + + + + + Dark Mode: + + + + + + + + diff --git a/src/suyu/configuration/qt_config.cpp b/src/suyu/configuration/qt_config.cpp index 37951b9c84..2ed14ee2be 100644 --- a/src/suyu/configuration/qt_config.cpp +++ b/src/suyu/configuration/qt_config.cpp @@ -260,9 +260,10 @@ void QtConfig::ReadShortcutValues() { void QtConfig::ReadUIValues() { BeginGroup(Settings::TranslateCategory(Settings::Category::Ui)); - UISettings::values.theme = ReadStringSetting( - std::string("theme"), - std::string(UISettings::themes[static_cast(UISettings::default_theme)].second)); + 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))); ReadUIGamelistValues(); ReadUILayoutValues(); @@ -468,10 +469,10 @@ void QtConfig::SaveUIValues() { WriteCategory(Settings::Category::Ui); WriteCategory(Settings::Category::UiGeneral); - WriteStringSetting( - std::string("theme"), UISettings::values.theme, - std::make_optional(std::string( - UISettings::themes[static_cast(UISettings::default_theme)].second))); + 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))); SaveUIGamelistValues(); SaveUILayoutValues(); diff --git a/src/suyu/debugger/wait_tree.cpp b/src/suyu/debugger/wait_tree.cpp index b339862ba7..b5ee4bcfdf 100644 --- a/src/suyu/debugger/wait_tree.cpp +++ b/src/suyu/debugger/wait_tree.cpp @@ -35,9 +35,8 @@ constexpr std::array, 10> WaitTreeColors{{ }}; 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"); + return UISettings::values.theme.contains(QStringLiteral("dark")) || + UISettings::values.theme.contains(QStringLiteral("midnight")); } } // namespace diff --git a/src/suyu/main.cpp b/src/suyu/main.cpp index baa98f2849..42a5a6587c 100644 --- a/src/suyu/main.cpp +++ b/src/suyu/main.cpp @@ -8,6 +8,7 @@ #include #include #include + #include "core/hle/service/am/applet_manager.h" #include "core/loader/nca.h" #include "core/loader/nro.h" @@ -18,6 +19,9 @@ #endif #ifdef __unix__ #include +#include +#include +#include #include #include "common/linux/gamemode.h" #endif @@ -281,18 +285,6 @@ 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_)}, @@ -313,15 +305,12 @@ 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, colorful theme icons are okay on both light/dark - QIcon::setFallbackThemeName(QStringLiteral("colorful")); + // fallback can only be set once, default theme icons are okay on both light/dark + QIcon::setFallbackThemeName(QStringLiteral("default")); QIcon::setFallbackSearchPaths(QStringList(QStringLiteral(":/icons"))); default_theme_paths = QIcon::themeSearchPaths(); - UpdateUITheme(); SetDiscordEnabled(UISettings::values.enable_discord_presence.GetValue()); discord_rpc->Update(); @@ -339,6 +328,7 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk SetDefaultUIGeometry(); RestoreUIState(); + UpdateUITheme(); ConnectMenuEvents(); ConnectWidgetEvents(); @@ -459,7 +449,10 @@ GMainWindow::GMainWindow(std::unique_ptr config_, bool has_broken_vulk SDL_EnableScreenSaver(); #endif +#ifdef __unix__ SetupPrepareForSleep(); + ListenColorSchemeChange(); +#endif QStringList args = QApplication::arguments(); @@ -1658,8 +1651,8 @@ void GMainWindow::OnDisplayTitleBars(bool show) { } } -void GMainWindow::SetupPrepareForSleep() { #ifdef __unix__ +void GMainWindow::SetupPrepareForSleep() { auto bus = QDBusConnection::systemBus(); if (bus.isConnected()) { const bool success = bus.connect( @@ -1673,8 +1666,8 @@ void GMainWindow::SetupPrepareForSleep() { } else { LOG_WARNING(Frontend, "QDBusConnection system bus is not connected"); } -#endif // __unix__ } +#endif // __unix__ void GMainWindow::OnPrepareForSleep(bool prepare_sleep) { if (emu_thread == nullptr) { @@ -3730,7 +3723,8 @@ void GMainWindow::ResetWindowSize1080() { } void GMainWindow::OnConfigure() { - const auto old_theme = UISettings::values.theme; + const QString old_theme = UISettings::values.theme; + DarkModeState old_dark_mode_state = UISettings::values.dark_mode_state; const bool old_discord_presence = UISettings::values.enable_discord_presence.GetValue(); const auto old_language_index = Settings::values.language_index.GetValue(); #ifdef __unix__ @@ -3789,7 +3783,8 @@ void GMainWindow::OnConfigure() { } InitializeHotkeys(); - if (UISettings::values.theme != old_theme) { + if (UISettings::values.theme != old_theme || + UISettings::values.dark_mode_state != old_dark_mode_state) { UpdateUITheme(); } if (UISettings::values.enable_discord_presence.GetValue() != old_discord_presence) { @@ -3805,8 +3800,6 @@ 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); @@ -5047,9 +5040,105 @@ 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 (UISettings::IsDarkTheme()) { + if (GMainWindow::CheckDarkMode()) { new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255)); } else { new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255)); @@ -5059,54 +5148,262 @@ static void AdjustLinkColor() { } } -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); - - if (current_theme.isEmpty()) { - current_theme = default_theme; - } - +void GMainWindow::UpdateThemePalette() { + LOG_DEBUG(Frontend, "UpdateThemePalette()"); + QPalette themePalette(qApp->palette()); #ifdef _WIN32 - QIcon::setThemeName(current_theme); - AdjustLinkColor(); -#else - 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"); + 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)); } + + // 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 { - QIcon::setThemeName(current_theme); - QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons"))); - AdjustLinkColor(); + // 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"); + } + 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 - 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; + qApp->setPalette(themePalette); + 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; + } 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"); +#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(); } } - - 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({}); - } + QWidget::changeEvent(event); } void GMainWindow::LoadTranslation() { @@ -5161,26 +5458,6 @@ 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, @@ -5307,6 +5584,31 @@ 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 b2b0f9afc4..e17c8c0607 100644 --- a/src/suyu/main.h +++ b/src/suyu/main.h @@ -25,9 +25,8 @@ #include "suyu/util/controller_navigation.h" #ifdef __unix__ +#include #include -#include -#include #endif class QtConfig; @@ -168,7 +167,7 @@ class GMainWindow : public QMainWindow { public: void filterBarSetChecked(bool state); - void UpdateUITheme(); + static bool CheckDarkMode(); explicit GMainWindow(std::unique_ptr config_, bool has_broken_vulkan); ~GMainWindow() override; @@ -260,12 +259,44 @@ 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(); @@ -397,6 +428,7 @@ private slots: void ResetWindowSize720(); void ResetWindowSize900(); void ResetWindowSize1080(); + void UpdateUITheme(); void OnAlbum(); void OnCabinet(Service::NFP::CabinetMode mode); void OnMiiEdit(); @@ -443,7 +475,7 @@ private: void OpenURL(const QUrl& url); void LoadTranslation(); void OpenPerGameConfiguration(u64 title_id, const std::string& file_name); - bool CheckDarkMode(); + bool CheckSystemArchiveDecryption(); bool CheckFirmwarePresence(); void SetFirmwareVersion(); void ConfigureFilesystemProvider(const std::string& filepath); @@ -527,7 +559,8 @@ private: QTimer update_input_timer; QString startup_icon_theme; - bool os_dark_mode = false; + bool alternate_base_modified = false; + QColor last_window_color; // FS std::shared_ptr vfs; diff --git a/src/suyu/startup_checks.cpp b/src/suyu/startup_checks.cpp index 292fbcbbaa..07e8bcb5d8 100644 --- a/src/suyu/startup_checks.cpp +++ b/src/suyu/startup_checks.cpp @@ -5,6 +5,7 @@ #ifdef _WIN32 #include +#include #include #include #elif defined(SUYU_UNIX) diff --git a/src/suyu/uisettings.cpp b/src/suyu/uisettings.cpp index 60d4063c8c..7cf32ddd0e 100644 --- a/src/suyu/uisettings.cpp +++ b/src/suyu/uisettings.cpp @@ -22,21 +22,15 @@ namespace FS = Common::FS; namespace UISettings { -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"}, +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"}, }}; -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 cab889680f..ded6a42244 100644 --- a/src/suyu/uisettings.h +++ b/src/suyu/uisettings.h @@ -18,6 +18,7 @@ using Settings::Category; using Settings::ConfirmStop; +using Settings::DarkModeState; using Settings::Setting; using Settings::SwitchableSetting; @@ -35,8 +36,6 @@ extern template class Setting; namespace UISettings { -bool IsDarkTheme(); - struct ContextualShortcut { std::string keyseq; std::string controller_keyseq; @@ -50,25 +49,10 @@ struct Shortcut { ContextualShortcut shortcut; }; -enum class Theme { - Default, - DefaultColorful, - Dark, - DarkColorful, - MidnightBlue, - MidnightBlueColorful, -}; - -static constexpr Theme default_theme{ -#ifdef _WIN32 - Theme::DarkColorful -#else - Theme::DefaultColorful -#endif -}; +static constexpr std::string_view default_theme{":/default"}; using Themes = std::array, 6>; -extern const Themes themes; +extern const Themes included_themes; struct GameDir { std::string path; @@ -160,7 +144,8 @@ struct Values { QStringList recent_files; Setting language{linkage, {}, "language", Category::Paths}; - std::string theme; + QString theme; + DarkModeState dark_mode_state; // Shortcut name std::vector shortcuts; @@ -278,3 +263,4 @@ 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);