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);