summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Kyle K2022-07-28 07:50:20 -0700
committerGravatar Kyle K2022-08-05 05:22:27 -0700
commitb51db125676fb1257e3bacbd19df3ae686ae69df (patch)
treefab6123cf5823d5be438cf342ad053a4f3cf1648
parentMerge pull request #8702 from liamwhite/format-swap (diff)
downloadyuzu-b51db125676fb1257e3bacbd19df3ae686ae69df.tar.gz
yuzu-b51db125676fb1257e3bacbd19df3ae686ae69df.tar.xz
yuzu-b51db125676fb1257e3bacbd19df3ae686ae69df.zip
Linux: handle dark system themes nicely
yuzu's default theme doesn't specify everything, which is fine for windows, but in linux anything unspecified is set to the users theme. Symptoms of this are that a linux user with a dark theme won't think to change the theme to a dark theme when first using yuzu Idea here is to try and support arbitrary themes on linux. preliminary work on a "default_dark" theme, used only as overlay for any themes that are measured to be dark mode. Other work done: FreeDesktop standard icon names: plus -> list-add delete refresh, we use view-refresh remove duplicated icons for qdarkstyle_midnight_blue referencing icon aliases in the qrc files is the way to go Note: Dynamic style changing doesn't appear to work with AppImage
-rw-r--r--.reuse/dep510
-rw-r--r--dist/qt_themes/colorful/icons/48x48/list-add.png (renamed from dist/qt_themes/colorful/icons/48x48/plus.png)bin496 -> 496 bytes
-rw-r--r--dist/qt_themes/colorful/style.qrc2
-rw-r--r--dist/qt_themes/colorful_dark/icons/16x16/refresh.pngbin362 -> 0 bytes
-rw-r--r--dist/qt_themes/colorful_dark/icons/index.theme2
-rw-r--r--dist/qt_themes/colorful_dark/style.qrc2
-rw-r--r--dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.pngbin362 -> 0 bytes
-rw-r--r--dist/qt_themes/colorful_midnight_blue/style.qrc2
-rw-r--r--dist/qt_themes/default/default.qrc2
-rw-r--r--dist/qt_themes/default/icons/16x16/refresh.pngbin349 -> 0 bytes
-rw-r--r--dist/qt_themes/default/icons/48x48/list-add.png (renamed from dist/qt_themes/default/icons/48x48/plus.png)bin316 -> 316 bytes
-rw-r--r--dist/qt_themes/default_dark/icons/index.theme8
-rw-r--r--dist/qt_themes/default_dark/style.qrc25
-rw-r--r--dist/qt_themes/default_dark/style.qss689
-rw-r--r--dist/qt_themes/qdarkstyle/icons/16x16/refresh.pngbin362 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle/icons/48x48/list-add.png (renamed from dist/qt_themes/qdarkstyle/icons/48x48/plus.png)bin339 -> 339 bytes
-rw-r--r--dist/qt_themes/qdarkstyle/style.qrc2
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/lock.pngbin304 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.pngbin362 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.pngbin362 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/256x256/plus_folder.pngbin3438 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/bad_folder.pngbin1098 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/chip.pngbin15120 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/folder.pngbin542 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/plus.pngbin339 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/sd_card.pngbin676 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/star.pngbin725 -> 0 bytes
-rw-r--r--dist/qt_themes/qdarkstyle_midnight_blue/style.qrc19
-rw-r--r--src/yuzu/game_list.cpp2
-rw-r--r--src/yuzu/game_list_p.h2
-rw-r--r--src/yuzu/main.cpp82
-rw-r--r--src/yuzu/main.h5
32 files changed, 819 insertions, 35 deletions
diff --git a/.reuse/dep5 b/.reuse/dep5
index e2ee4f456..5251870fb 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -41,20 +41,18 @@ Files: dist/qt_themes/*/icons/16x16/connected.png
41 dist/qt_themes/*/icons/48x48/sd_card.png 41 dist/qt_themes/*/icons/48x48/sd_card.png
42 dist/qt_themes/*/icons/48x48/star.png 42 dist/qt_themes/*/icons/48x48/star.png
43 dist/qt_themes/*/icons/256x256/plus_folder.png 43 dist/qt_themes/*/icons/256x256/plus_folder.png
44 dist/qt_themes/colorful/icons/48x48/plus.png 44 dist/qt_themes/colorful/icons/48x48/list-add.png
45 dist/qt_themes/default/icons/16x16/checked.png 45 dist/qt_themes/default/icons/16x16/checked.png
46 dist/qt_themes/default/icons/16x16/failed.png 46 dist/qt_themes/default/icons/16x16/failed.png
47Copyright: https://icons8.com 47Copyright: https://icons8.com
48License: CC-BY-ND-3.0 48License: CC-BY-ND-3.0
49 49
50Files: dist/qt_themes/*/icons/16x16/refresh.png 50Files: dist/qt_themes/*/icons/16x16/view-refresh.png
51 dist/qt_themes/*/icons/16x16/view-refresh.png
52Copyright: Google, Inc. 51Copyright: Google, Inc.
53License: Apache-2.0 52License: Apache-2.0
54 53
55Files: dist/qt_themes/default/icons/48x48/plus.png 54Files: dist/qt_themes/default/icons/48x48/list-add.png
56 dist/qt_themes/qdarkstyle/icons/48x48/plus.png 55 dist/qt_themes/qdarkstyle/icons/48x48/list-add.png
57 dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/plus.png
58Copyright: BreadFish64 56Copyright: BreadFish64
59License: CC0-1.0 57License: CC0-1.0
60 58
diff --git a/dist/qt_themes/colorful/icons/48x48/plus.png b/dist/qt_themes/colorful/icons/48x48/list-add.png
index bc2c47c91..bc2c47c91 100644
--- a/dist/qt_themes/colorful/icons/48x48/plus.png
+++ b/dist/qt_themes/colorful/icons/48x48/list-add.png
Binary files differ
diff --git a/dist/qt_themes/colorful/style.qrc b/dist/qt_themes/colorful/style.qrc
index 4b3f28d89..507e0e58b 100644
--- a/dist/qt_themes/colorful/style.qrc
+++ b/dist/qt_themes/colorful/style.qrc
@@ -13,7 +13,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
13 <file alias="48x48/bad_folder.png">icons/48x48/bad_folder.png</file> 13 <file alias="48x48/bad_folder.png">icons/48x48/bad_folder.png</file>
14 <file alias="48x48/chip.png">icons/48x48/chip.png</file> 14 <file alias="48x48/chip.png">icons/48x48/chip.png</file>
15 <file alias="48x48/folder.png">icons/48x48/folder.png</file> 15 <file alias="48x48/folder.png">icons/48x48/folder.png</file>
16 <file alias="48x48/plus.png">icons/48x48/plus.png</file> 16 <file alias="48x48/list-add.png">icons/48x48/list-add.png</file>
17 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file> 17 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
18 <file alias="48x48/star.png">icons/48x48/star.png</file> 18 <file alias="48x48/star.png">icons/48x48/star.png</file>
19 <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file> 19 <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
diff --git a/dist/qt_themes/colorful_dark/icons/16x16/refresh.png b/dist/qt_themes/colorful_dark/icons/16x16/refresh.png
deleted file mode 100644
index d4afd76f9..000000000
--- a/dist/qt_themes/colorful_dark/icons/16x16/refresh.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/colorful_dark/icons/index.theme b/dist/qt_themes/colorful_dark/icons/index.theme
index 19dc0369a..b37a06df7 100644
--- a/dist/qt_themes/colorful_dark/icons/index.theme
+++ b/dist/qt_themes/colorful_dark/icons/index.theme
@@ -3,6 +3,6 @@ Name=colorful_dark
3Comment=Colorful theme (Dark style) 3Comment=Colorful theme (Dark style)
4Inherits=colorful 4Inherits=colorful
5Directories=16x16 5Directories=16x16
6 6
7[16x16] 7[16x16]
8Size=16 8Size=16
diff --git a/dist/qt_themes/colorful_dark/style.qrc b/dist/qt_themes/colorful_dark/style.qrc
index 50e78c37b..9853fd438 100644
--- a/dist/qt_themes/colorful_dark/style.qrc
+++ b/dist/qt_themes/colorful_dark/style.qrc
@@ -15,7 +15,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
15 <file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file> 15 <file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
16 <file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file> 16 <file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
17 <file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file> 17 <file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
18 <file alias="48x48/plus.png">../colorful/icons/48x48/plus.png</file> 18 <file alias="48x48/list-add.png">../colorful/icons/48x48/list-add.png</file>
19 <file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file> 19 <file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
20 <file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file> 20 <file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
21 </qresource> 21 </qresource>
diff --git a/dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.png b/dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.png
deleted file mode 100644
index d4afd76f9..000000000
--- a/dist/qt_themes/colorful_midnight_blue/icons/16x16/refresh.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/colorful_midnight_blue/style.qrc b/dist/qt_themes/colorful_midnight_blue/style.qrc
index ac8cb0d49..1081d281d 100644
--- a/dist/qt_themes/colorful_midnight_blue/style.qrc
+++ b/dist/qt_themes/colorful_midnight_blue/style.qrc
@@ -11,7 +11,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
11 <file alias="48x48/bad_folder.png">../colorful/icons/48x48/bad_folder.png</file> 11 <file alias="48x48/bad_folder.png">../colorful/icons/48x48/bad_folder.png</file>
12 <file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file> 12 <file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
13 <file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file> 13 <file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
14 <file alias="48x48/plus.png">../colorful/icons/48x48/plus.png</file> 14 <file alias="48x48/list-add.png">../colorful/icons/48x48/list-add.png</file>
15 <file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file> 15 <file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
16 <file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file> 16 <file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
17 </qresource> 17 </qresource>
diff --git a/dist/qt_themes/default/default.qrc b/dist/qt_themes/default/default.qrc
index ef080c221..a07f2a9c1 100644
--- a/dist/qt_themes/default/default.qrc
+++ b/dist/qt_themes/default/default.qrc
@@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
17 <file alias="48x48/chip.png">icons/48x48/chip.png</file> 17 <file alias="48x48/chip.png">icons/48x48/chip.png</file>
18 <file alias="48x48/folder.png">icons/48x48/folder.png</file> 18 <file alias="48x48/folder.png">icons/48x48/folder.png</file>
19 <file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file> 19 <file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
20 <file alias="48x48/plus.png">icons/48x48/plus.png</file> 20 <file alias="48x48/list-add.png">icons/48x48/list-add.png</file>
21 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file> 21 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
22 <file alias="48x48/star.png">icons/48x48/star.png</file> 22 <file alias="48x48/star.png">icons/48x48/star.png</file>
23 <file alias="256x256/yuzu.png">icons/256x256/yuzu.png</file> 23 <file alias="256x256/yuzu.png">icons/256x256/yuzu.png</file>
diff --git a/dist/qt_themes/default/icons/16x16/refresh.png b/dist/qt_themes/default/icons/16x16/refresh.png
deleted file mode 100644
index 69f9474ac..000000000
--- a/dist/qt_themes/default/icons/16x16/refresh.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/default/icons/48x48/plus.png b/dist/qt_themes/default/icons/48x48/list-add.png
index dbc74687b..dbc74687b 100644
--- a/dist/qt_themes/default/icons/48x48/plus.png
+++ b/dist/qt_themes/default/icons/48x48/list-add.png
Binary files differ
diff --git a/dist/qt_themes/default_dark/icons/index.theme b/dist/qt_themes/default_dark/icons/index.theme
new file mode 100644
index 000000000..60a072d1d
--- /dev/null
+++ b/dist/qt_themes/default_dark/icons/index.theme
@@ -0,0 +1,8 @@
1[Icon Theme]
2Name=default_dark
3Comment=Colorful theme (Dark style)
4Inherits=colorful
5Directories=16x16
6
7[16x16]
8Size=16
diff --git a/dist/qt_themes/default_dark/style.qrc b/dist/qt_themes/default_dark/style.qrc
new file mode 100644
index 000000000..7de4737c2
--- /dev/null
+++ b/dist/qt_themes/default_dark/style.qrc
@@ -0,0 +1,25 @@
1<!--
2SPDX-FileCopyrightText: 2022 yuzu Emulator Project
3SPDX-License-Identifier: GPL-2.0-or-later
4-->
5<RCC>
6 <qresource prefix="icons/default_dark">
7 <file alias="16x16/connected.png">../colorful/icons/16x16/connected.png</file>
8 <file alias="16x16/connected_notification.png">../colorful/icons/16x16/connected_notification.png</file>
9 <file alias="16x16/disconnected.png">../colorful/icons/16x16/disconnected.png</file>
10 <file alias="index.theme">icons/index.theme</file>
11 <file alias="16x16/lock.png">../colorful_dark/icons/16x16/lock.png</file>
12 <file alias="16x16/view-refresh.png">../colorful_dark/icons/16x16/view-refresh.png</file>
13 <file alias="48x48/bad_folder.png">../colorful/icons/48x48/bad_folder.png</file>
14 <file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
15 <file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
16 <file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
17 <file alias="48x48/list-add.png">../colorful/icons/48x48/list-add.png</file>
18 <file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
19 <file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
20 </qresource>
21
22 <qresource prefix="default_dark">
23 <file>style.qss</file>
24 </qresource>
25</RCC>
diff --git a/dist/qt_themes/default_dark/style.qss b/dist/qt_themes/default_dark/style.qss
new file mode 100644
index 000000000..356996357
--- /dev/null
+++ b/dist/qt_themes/default_dark/style.qss
@@ -0,0 +1,689 @@
1/*
2* SPDX-FileCopyrightText: 2018 yuzu Emulator Project
3* SPDX-License-Identifier: GPL-2.0-or-later
4*/
5QAbstractSpinBox {
6 min-height: 19px;
7}
8
9QPushButton#TogglableStatusBarButton {
10 color: #959595;
11 border: 1px solid transparent;
12 background-color: transparent;
13 padding: 0px 3px 0px 3px;
14 text-align: center;
15}
16
17/*
18QPushButton#TogglableStatusBarButton:checked {
19 color: #000000;
20}
21*/
22
23QPushButton#TogglableStatusBarButton:hover {
24 border: 1px solid #76797C;
25}
26
27QPushButton#RendererStatusBarButton {
28 color: #656565;
29 border: 1px solid transparent;
30 background-color: transparent;
31 padding: 0px 3px 0px 3px;
32 text-align: center;
33}
34
35QPushButton#RendererStatusBarButton:hover {
36 border: 1px solid #76797C;
37}
38
39QPushButton#RendererStatusBarButton:checked {
40 color: #e85c00;
41}
42
43QPushButton#RendererStatusBarButton:!checked {
44 color: #0066ff;
45}
46
47QPushButton#GPUStatusBarButton {
48 color: #656565;
49 border: 1px solid transparent;
50 background-color: transparent;
51 padding: 0px 3px 0px 3px;
52 text-align: center;
53}
54
55QPushButton#GPUStatusBarButton:hover {
56 border: 1px solid #76797C;
57}
58
59QPushButton#GPUStatusBarButton:checked {
60 color: #b06020;
61}
62
63QPushButton#GPUStatusBarButton:!checked {
64 color: #109010;
65}
66
67QPushButton#DockingStatusBarButton {
68 min-width: 0px;
69 /*color: #000000;*/
70 border: 1px solid transparent;
71 background-color: transparent;
72 padding: 0px 3px 0px 3px;
73 text-align: center;
74}
75
76QPushButton#DockingStatusBarButton:hover {
77 border: 1px solid #76797C;
78}
79
80QPushButton#buttonRefreshDevices {
81 min-width: 21px;
82 min-height: 21px;
83 max-width: 21px;
84 max-height: 21px;
85}
86
87QWidget#bottomPerGameInput,
88QWidget#topControllerApplet,
89QWidget#bottomControllerApplet,
90QGroupBox#groupPlayer1Connected:checked,
91QGroupBox#groupPlayer2Connected:checked,
92QGroupBox#groupPlayer3Connected:checked,
93QGroupBox#groupPlayer4Connected:checked,
94QGroupBox#groupPlayer5Connected:checked,
95QGroupBox#groupPlayer6Connected:checked,
96QGroupBox#groupPlayer7Connected:checked,
97QGroupBox#groupPlayer8Connected:checked {
98 background-color: #f5f5f5;
99}
100
101QWidget#topControllerApplet {
102 border-bottom: 1px solid #828790
103}
104
105QWidget#bottomPerGameInput,
106QWidget#bottomControllerApplet {
107 border-top: 1px solid #828790
108}
109
110QWidget#topPerGameInput,
111QWidget#middleControllerApplet {
112 background-color: #fff;
113}
114
115QWidget#topPerGameInput QComboBox,
116QWidget#middleControllerApplet QComboBox {
117 width: 120px;
118}
119
120QWidget#connectedControllers {
121 background: transparent;
122}
123
124QWidget#playersSupported,
125QWidget#controllersSupported,
126QWidget#controllerSupported1,
127QWidget#controllerSupported2,
128QWidget#controllerSupported3,
129QWidget#controllerSupported4,
130QWidget#controllerSupported5,
131QWidget#controllerSupported6 {
132 border: none;
133 background: transparent;
134}
135
136QGroupBox#groupPlayer1Connected,
137QGroupBox#groupPlayer2Connected,
138QGroupBox#groupPlayer3Connected,
139QGroupBox#groupPlayer4Connected,
140QGroupBox#groupPlayer5Connected,
141QGroupBox#groupPlayer6Connected,
142QGroupBox#groupPlayer7Connected,
143QGroupBox#groupPlayer8Connected {
144 border: 1px solid #828790;
145 border-radius: 3px;
146 padding: 0px;
147 min-height: 98px;
148 max-height: 98px;
149}
150
151QGroupBox#groupPlayer1Connected:unchecked,
152QGroupBox#groupPlayer2Connected:unchecked,
153QGroupBox#groupPlayer3Connected:unchecked,
154QGroupBox#groupPlayer4Connected:unchecked,
155QGroupBox#groupPlayer5Connected:unchecked,
156QGroupBox#groupPlayer6Connected:unchecked,
157QGroupBox#groupPlayer7Connected:unchecked,
158QGroupBox#groupPlayer8Connected:unchecked {
159 border: 1px solid #d9d9d9;
160}
161
162QGroupBox#groupPlayer1Connected::title,
163QGroupBox#groupPlayer2Connected::title,
164QGroupBox#groupPlayer3Connected::title,
165QGroupBox#groupPlayer4Connected::title,
166QGroupBox#groupPlayer5Connected::title,
167QGroupBox#groupPlayer6Connected::title,
168QGroupBox#groupPlayer7Connected::title,
169QGroupBox#groupPlayer8Connected::title {
170 subcontrol-origin: margin;
171 subcontrol-position: top left;
172 padding-left: 0px;
173 padding-right: 0px;
174 padding-top: 1px;
175 margin-left: 0px;
176 margin-right: -4px;
177 margin-bottom: 4px;
178}
179
180QCheckBox#checkboxPlayer1Connected,
181QCheckBox#checkboxPlayer2Connected,
182QCheckBox#checkboxPlayer3Connected,
183QCheckBox#checkboxPlayer4Connected,
184QCheckBox#checkboxPlayer5Connected,
185QCheckBox#checkboxPlayer6Connected,
186QCheckBox#checkboxPlayer7Connected,
187QCheckBox#checkboxPlayer8Connected {
188 spacing: 0px;
189}
190
191QWidget#Player1LEDs QCheckBox,
192QWidget#Player2LEDs QCheckBox,
193QWidget#Player3LEDs QCheckBox,
194QWidget#Player4LEDs QCheckBox,
195QWidget#Player5LEDs QCheckBox,
196QWidget#Player6LEDs QCheckBox,
197QWidget#Player7LEDs QCheckBox,
198QWidget#Player8LEDs QCheckBox {
199 spacing: 0px;
200}
201
202QWidget#Player1LEDs QCheckBox::indicator,
203QWidget#Player2LEDs QCheckBox::indicator,
204QWidget#Player3LEDs QCheckBox::indicator,
205QWidget#Player4LEDs QCheckBox::indicator,
206QWidget#Player5LEDs QCheckBox::indicator,
207QWidget#Player6LEDs QCheckBox::indicator,
208QWidget#Player7LEDs QCheckBox::indicator,
209QWidget#Player8LEDs QCheckBox::indicator {
210 width: 6px;
211 height: 6px;
212 margin-left: 0px;
213}
214
215QWidget#bottomPerGameInput QCheckBox#checkboxPlayer1Connected::indicator,
216QWidget#bottomPerGameInput QCheckBox#checkboxPlayer2Connected::indicator,
217QWidget#bottomPerGameInput QCheckBox#checkboxPlayer3Connected::indicator,
218QWidget#bottomPerGameInput QCheckBox#checkboxPlayer4Connected::indicator,
219QWidget#bottomPerGameInput QCheckBox#checkboxPlayer5Connected::indicator,
220QWidget#bottomPerGameInput QCheckBox#checkboxPlayer6Connected::indicator,
221QWidget#bottomPerGameInput QCheckBox#checkboxPlayer7Connected::indicator,
222QWidget#bottomPerGameInput QCheckBox#checkboxPlayer8Connected::indicator {
223 width: 12px;
224 height: 12px;
225}
226
227QCheckBox#checkboxPlayer1Connected::indicator,
228QCheckBox#checkboxPlayer2Connected::indicator,
229QCheckBox#checkboxPlayer3Connected::indicator,
230QCheckBox#checkboxPlayer4Connected::indicator,
231QCheckBox#checkboxPlayer5Connected::indicator,
232QCheckBox#checkboxPlayer6Connected::indicator,
233QCheckBox#checkboxPlayer7Connected::indicator,
234QCheckBox#checkboxPlayer8Connected::indicator {
235 width: 14px;
236 height: 14px;
237}
238
239QGroupBox#groupPlayer1Connected::indicator,
240QGroupBox#groupPlayer2Connected::indicator,
241QGroupBox#groupPlayer3Connected::indicator,
242QGroupBox#groupPlayer4Connected::indicator,
243QGroupBox#groupPlayer5Connected::indicator,
244QGroupBox#groupPlayer6Connected::indicator,
245QGroupBox#groupPlayer7Connected::indicator,
246QGroupBox#groupPlayer8Connected::indicator {
247 width: 16px;
248 height: 16px;
249}
250
251QWidget#Player1LEDs QCheckBox::indicator:checked,
252QWidget#Player2LEDs QCheckBox::indicator:checked,
253QWidget#Player3LEDs QCheckBox::indicator:checked,
254QWidget#Player4LEDs QCheckBox::indicator:checked,
255QWidget#Player5LEDs QCheckBox::indicator:checked,
256QWidget#Player6LEDs QCheckBox::indicator:checked,
257QWidget#Player7LEDs QCheckBox::indicator:checked,
258QWidget#Player8LEDs QCheckBox::indicator:checked,
259QGroupBox#groupPlayer1Connected::indicator:checked,
260QGroupBox#groupPlayer2Connected::indicator:checked,
261QGroupBox#groupPlayer3Connected::indicator:checked,
262QGroupBox#groupPlayer4Connected::indicator:checked,
263QGroupBox#groupPlayer5Connected::indicator:checked,
264QGroupBox#groupPlayer6Connected::indicator:checked,
265QGroupBox#groupPlayer7Connected::indicator:checked,
266QGroupBox#groupPlayer8Connected::indicator:checked,
267QCheckBox#checkboxPlayer1Connected::indicator:checked,
268QCheckBox#checkboxPlayer2Connected::indicator:checked,
269QCheckBox#checkboxPlayer3Connected::indicator:checked,
270QCheckBox#checkboxPlayer4Connected::indicator:checked,
271QCheckBox#checkboxPlayer5Connected::indicator:checked,
272QCheckBox#checkboxPlayer6Connected::indicator:checked,
273QCheckBox#checkboxPlayer7Connected::indicator:checked,
274QCheckBox#checkboxPlayer8Connected::indicator:checked,
275QGroupBox#groupConnectedController::indicator:checked {
276 border-radius: 2px;
277 border: 1px solid #929192;
278 background: #39ff14;
279 image: none;
280}
281
282QWidget#Player1LEDs QCheckBox::indicator:unchecked,
283QWidget#Player2LEDs QCheckBox::indicator:unchecked,
284QWidget#Player3LEDs QCheckBox::indicator:unchecked,
285QWidget#Player4LEDs QCheckBox::indicator:unchecked,
286QWidget#Player5LEDs QCheckBox::indicator:unchecked,
287QWidget#Player6LEDs QCheckBox::indicator:unchecked,
288QWidget#Player7LEDs QCheckBox::indicator:unchecked,
289QWidget#Player8LEDs QCheckBox::indicator:unchecked,
290QGroupBox#groupPlayer1Connected::indicator:unchecked,
291QGroupBox#groupPlayer2Connected::indicator:unchecked,
292QGroupBox#groupPlayer3Connected::indicator:unchecked,
293QGroupBox#groupPlayer4Connected::indicator:unchecked,
294QGroupBox#groupPlayer5Connected::indicator:unchecked,
295QGroupBox#groupPlayer6Connected::indicator:unchecked,
296QGroupBox#groupPlayer7Connected::indicator:unchecked,
297QGroupBox#groupPlayer8Connected::indicator:unchecked,
298QCheckBox#checkboxPlayer1Connected::indicator:unchecked,
299QCheckBox#checkboxPlayer2Connected::indicator:unchecked,
300QCheckBox#checkboxPlayer3Connected::indicator:unchecked,
301QCheckBox#checkboxPlayer4Connected::indicator:unchecked,
302QCheckBox#checkboxPlayer5Connected::indicator:unchecked,
303QCheckBox#checkboxPlayer6Connected::indicator:unchecked,
304QCheckBox#checkboxPlayer7Connected::indicator:unchecked,
305QCheckBox#checkboxPlayer8Connected::indicator:unchecked,
306QGroupBox#groupConnectedController::indicator:unchecked {
307 border-radius: 2px;
308 border: 1px solid #929192;
309 background: transparent;
310 image: none;
311}
312
313QWidget#controllerPlayer1,
314QWidget#controllerPlayer2,
315QWidget#controllerPlayer3,
316QWidget#controllerPlayer4,
317QWidget#controllerPlayer5,
318QWidget#controllerPlayer6,
319QWidget#controllerPlayer7,
320QWidget#controllerPlayer8 {
321 background: transparent;
322}
323
324QDialog#QtSoftwareKeyboardDialog,
325QStackedWidget#topOSK {
326 background: rgba(51, 51, 51, .9);
327}
328
329
330QDialog#OverlayDialog,
331QStackedWidget#stackedDialog {
332 background: rgba(51, 51, 51, .7);
333}
334
335QWidget#boxOSK,
336QWidget#lineOSK,
337QWidget#richDialog,
338QWidget#lineDialog {
339 background: transparent;
340}
341
342QStackedWidget#bottomOSK,
343QWidget#contentDialog,
344QWidget#contentRichDialog {
345 background: rgba(240, 240, 240, 1);
346}
347
348QWidget#contentDialog,
349QWidget#contentRichDialog {
350 margin: 5px;
351 border-radius: 6px;
352}
353
354QWidget#buttonsDialog,
355QWidget#buttonsRichDialog {
356 margin: 5px;
357 border-top: 2px solid rgba(44, 44, 44, 1);
358}
359
360QWidget#legendOSKnum {
361 border-top: 1px solid rgba(44, 44, 44, 1);
362}
363
364QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical {
365 background: #cdcdcd;
366 width: 15px;
367 margin: 15px 3px 15px 3px;
368 border: 1px transparent;
369 border-radius: 4px;
370}
371
372QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal {
373 background: #cdcdcd;
374 height: 15px;
375 margin: 3px 15px 3px 15px;
376 border: 1px transparent;
377 border-radius: 4px;
378}
379
380QStackedWidget#stackedDialog QTextBrowser QScrollBar::handle {
381 background: #fff;
382 border-radius: 4px;
383 min-height: 5px;
384 min-width: 5px;
385}
386
387QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line,
388QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line,
389QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-page,
390QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-page {
391 background: none;
392}
393
394QWidget#inputOSK {
395 border-bottom: 3px solid rgba(255, 255, 255, .9);
396}
397
398QWidget#inputOSK QLineEdit {
399 background: transparent;
400 border: none;
401 color: #ccc;
402}
403
404QWidget#inputBoxOSK {
405 border: 2px solid rgba(255, 255, 255, .9);
406}
407
408QWidget#inputBoxOSK QTextEdit {
409 background: transparent;
410 border: none;
411 color: #ccc;
412}
413
414QWidget#richDialog QTextBrowser {
415 background: transparent;
416 border: none;
417 padding: 35px 65px;
418}
419
420
421QWidget#lineOSK QLabel#label_header {
422 color: #f0f0f0;
423}
424
425QWidget#lineOSK QLabel#label_sub,
426QWidget#lineOSK QLabel#label_characters,
427QWidget#boxOSK QLabel#label_characters_box {
428 color: #ccc;
429}
430
431QWidget#contentDialog QLabel#label_title,
432QWidget#contentRichDialog QLabel#label_title_rich {
433 color: #888;
434}
435
436QWidget#contentDialog QLabel#label_dialog {
437 padding: 20px 65px;
438}
439
440QWidget#contentDialog QLabel#label_title,
441QWidget#contentRichDialog QLabel#label_title_rich {
442 padding: 0px 65px;
443}
444
445QDialog#OverlayDialog QPushButton {
446 color: rgba(49, 79, 239, 1);
447 background: transparent;
448 border: none;
449 padding: 0px;
450 min-width: 0px;
451}
452
453QDialog#OverlayDialog QPushButton:focus,
454QDialog#OverlayDialog QPushButton:hover {
455 color: rgba(49, 79, 239, 1);
456 background: rgba(255, 255, 255, 1);
457 border: 5px solid rgba(148, 250, 202, 1);
458 border-radius: 6px;
459 outline: none;
460}
461
462QDialog#OverlayDialog QPushButton:pressed {
463 color: rgba(240, 240, 240, 1);
464 background: rgba(150, 150, 150, 1);
465 border: 5px solid rgba(148, 250, 202, 1);
466 border-radius: 6px;
467 outline: none;
468}
469
470QDialog#QtSoftwareKeyboardDialog QPushButton {
471 background: rgba(232, 232, 232, 1);
472 border: 2px solid rgba(240, 240, 240, 1);
473}
474
475QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift,
476QDialog#QtSoftwareKeyboardDialog QPushButton#button_return,
477QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
478QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift,
479QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift,
480QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
481 background: rgba(218, 218, 218, 1);
482 border: 2px solid rgba(240, 240, 240, 1);
483}
484
485QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
486QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
487QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
488 color: rgba(240, 240, 240, 1);
489 background: rgba(44, 44, 44, 1);
490 border: 2px solid rgba(240, 240, 240, 1);
491}
492
493QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
494QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
495QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
496 color: rgba(240, 240, 240, 1);
497 background: rgba(49, 79, 239, 1);
498 border: 2px solid rgba(240, 240, 240, 1);
499}
500
501QDialog#QtSoftwareKeyboardDialog QPushButton:focus,
502QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus,
503QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus,
504QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus,
505QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus,
506QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus,
507QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus,
508QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus,
509QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus,
510QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus,
511QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus,
512QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus,
513QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus,
514
515QDialog#QtSoftwareKeyboardDialog QPushButton:hover,
516QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover,
517QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover,
518QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover,
519QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover,
520QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover,
521QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover,
522QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover,
523QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover,
524QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover,
525QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover,
526QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover,
527QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover {
528 color: rgba(0, 0, 0, 1);
529 background: rgba(255, 255, 255, 1);
530 border: 5px solid rgba(148, 250, 202, 1);
531 border-radius: 6px;
532 outline: none;
533}
534
535QDialog#QtSoftwareKeyboardDialog QPushButton:pressed,
536QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed,
537QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed,
538QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed,
539QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed,
540QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed,
541QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed,
542QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed,
543QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed,
544QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed,
545QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed,
546QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed,
547QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed {
548 color: rgba(240, 240, 240, 1);
549 background: rgba(150, 150, 150, 1);
550 border: 5px solid rgba(148, 250, 202, 1);
551 border-radius: 6px;
552}
553
554QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
555QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
556QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
557 image: url(:/overlay/osk_button_B.png);
558 image-position: right;
559 qproperty-icon: url(:/overlay/osk_button_backspace.png);
560 qproperty-iconSize: 36px;
561}
562
563QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
564QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
565 image: url(:/overlay/osk_button_Y.png);
566 image-position: right;
567}
568
569QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
570QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
571QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
572 image: url(:/overlay/osk_button_plus.png);
573 image-position: right;
574}
575
576QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift {
577 image: url(:/overlay/osk_button_shift_lock_off.png);
578 image-position: left;
579 qproperty-icon: url(:/overlay/osk_button_shift.png);
580 qproperty-iconSize: 36px;
581}
582
583QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift {
584 image: url(:/overlay/osk_button_shift_lock_off.png);
585 image-position: left;
586 qproperty-icon: url(:/overlay/osk_button_shift_on.png);
587 qproperty-iconSize: 36px;
588}
589
590QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket,
591QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket,
592QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis,
593QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis {
594 padding-bottom: 7px;
595}
596
597QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel {
598 background: transparent;
599 color: #ccc;
600}
601
602QDialog#QtSoftwareKeyboardDialog QWidget#button_L,
603QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift,
604QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num {
605 image: url(:/overlay/button_L.png);
606}
607
608QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left,
609QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift,
610QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num {
611 image: url(:/overlay/arrow_left.png);
612}
613
614QDialog#QtSoftwareKeyboardDialog QWidget#button_R,
615QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift,
616QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num {
617 image: url(:/overlay/button_R.png);
618}
619
620QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right,
621QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift,
622QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num {
623 image: url(:/overlay/arrow_right.png);
624}
625
626QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick,
627QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift {
628 image: url(:/overlay/button_press_stick.png);
629}
630
631QDialog#QtSoftwareKeyboardDialog QWidget#button_X,
632QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift,
633QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num {
634 image: url(:/overlay/button_X.png);
635}
636
637QDialog#QtSoftwareKeyboardDialog QWidget#button_A,
638QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift,
639QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num {
640 image: url(:/overlay/button_A.png);
641}
642
643QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
644QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
645QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled,
646QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
647QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
648QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled,
649QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled,
650QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
651QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled,
652QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
653 color: rgba(164, 164, 164, 1);
654 background-color: rgba(218, 218, 218, 1);
655}
656
657QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled,
658QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled,
659QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled,
660QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled,
661QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled,
662QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled,
663QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled,
664QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled,
665QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled,
666QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled,
667QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled,
668QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled,
669QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled,
670QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled {
671 color: rgba(164, 164, 164, 1);
672}
673
674QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
675QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
676QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled {
677 image: url(:/overlay/osk_button_plus_disabled.png);
678}
679
680QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
681QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
682QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
683 image: url(:/overlay/osk_button_B_disabled.png);
684}
685
686QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
687QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled {
688 image: url(:/overlay/osk_button_Y_disabled.png);
689}
diff --git a/dist/qt_themes/qdarkstyle/icons/16x16/refresh.png b/dist/qt_themes/qdarkstyle/icons/16x16/refresh.png
deleted file mode 100644
index d4afd76f9..000000000
--- a/dist/qt_themes/qdarkstyle/icons/16x16/refresh.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle/icons/48x48/plus.png b/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png
index 16cc8b4f4..16cc8b4f4 100644
--- a/dist/qt_themes/qdarkstyle/icons/48x48/plus.png
+++ b/dist/qt_themes/qdarkstyle/icons/48x48/list-add.png
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle/style.qrc b/dist/qt_themes/qdarkstyle/style.qrc
index f770e09fd..a89fb26c6 100644
--- a/dist/qt_themes/qdarkstyle/style.qrc
+++ b/dist/qt_themes/qdarkstyle/style.qrc
@@ -10,7 +10,7 @@
10 <file alias="48x48/chip.png">icons/48x48/chip.png</file> 10 <file alias="48x48/chip.png">icons/48x48/chip.png</file>
11 <file alias="48x48/folder.png">icons/48x48/folder.png</file> 11 <file alias="48x48/folder.png">icons/48x48/folder.png</file>
12 <file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file> 12 <file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
13 <file alias="48x48/plus.png">icons/48x48/plus.png</file> 13 <file alias="48x48/list-add.png">icons/48x48/list-add.png</file>
14 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file> 14 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
15 <file alias="48x48/star.png">icons/48x48/star.png</file> 15 <file alias="48x48/star.png">icons/48x48/star.png</file>
16 <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file> 16 <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/lock.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/lock.png
deleted file mode 100644
index c750a39e8..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/lock.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.png
deleted file mode 100644
index d4afd76f9..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/refresh.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.png
deleted file mode 100644
index d4afd76f9..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/16x16/view-refresh.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/256x256/plus_folder.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/256x256/plus_folder.png
deleted file mode 100644
index 303f9a321..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/256x256/plus_folder.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/bad_folder.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/bad_folder.png
deleted file mode 100644
index 4a9709623..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/bad_folder.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/chip.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/chip.png
deleted file mode 100644
index 973fabd05..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/chip.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/folder.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/folder.png
deleted file mode 100644
index 0f1e987d6..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/folder.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/plus.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/plus.png
deleted file mode 100644
index 16cc8b4f4..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/plus.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/sd_card.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/sd_card.png
deleted file mode 100644
index 0291c6542..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/sd_card.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/star.png b/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/star.png
deleted file mode 100644
index 90d423a1d..000000000
--- a/dist/qt_themes/qdarkstyle_midnight_blue/icons/48x48/star.png
+++ /dev/null
Binary files differ
diff --git a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc
index 142dd3288..dc3d7fecb 100644
--- a/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc
+++ b/dist/qt_themes/qdarkstyle_midnight_blue/style.qrc
@@ -1,15 +1,16 @@
1<RCC> 1<RCC>
2 <qresource prefix="icons/qdarkstyle_midnight_blue"> 2 <qresource prefix="icons/qdarkstyle_midnight_blue">
3 <file alias="index.theme">icons/index.theme</file> 3 <file alias="index.theme">icons/index.theme</file>
4 <file alias="16x16/lock.png">icons/16x16/lock.png</file> 4 <file alias="16x16/lock.png">../qdarkstyle/icons/16x16/lock.png</file>
5 <file alias="16x16/view-refresh.png">icons/16x16/view-refresh.png</file> 5 <file alias="16x16/view-refresh.png">../qdarkstyle/icons/16x16/view-refresh.png</file>
6 <file alias="48x48/bad_folder.png">icons/48x48/bad_folder.png</file> 6 <file alias="48x48/bad_folder.png">../qdarkstyle/icons/48x48/bad_folder.png</file>
7 <file alias="48x48/chip.png">icons/48x48/chip.png</file> 7 <file alias="48x48/chip.png">../qdarkstyle/icons/48x48/chip.png</file>
8 <file alias="48x48/folder.png">icons/48x48/folder.png</file> 8 <file alias="48x48/folder.png">../qdarkstyle/icons/48x48/folder.png</file>
9 <file alias="48x48/plus.png">icons/48x48/plus.png</file> 9 <file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
10 <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file> 10 <file alias="48x48/list-add.png">../qdarkstyle/icons/48x48/list-add.png</file>
11 <file alias="48x48/star.png">icons/48x48/star.png</file> 11 <file alias="48x48/sd_card.png">../qdarkstyle/icons/48x48/sd_card.png</file>
12 <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file> 12 <file alias="48x48/star.png">../qdarkstyle/icons/48x48/star.png</file>
13 <file alias="256x256/plus_folder.png">../qdarkstyle/icons/256x256/plus_folder.png</file>
13 </qresource> 14 </qresource>
14 <qresource prefix="qss_icons"> 15 <qresource prefix="qss_icons">
15 <file>rc/arrow_down.png</file> 16 <file>rc/arrow_down.png</file>
diff --git a/src/yuzu/game_list.cpp b/src/yuzu/game_list.cpp
index 041e6ac11..c4b1f65bd 100644
--- a/src/yuzu/game_list.cpp
+++ b/src/yuzu/game_list.cpp
@@ -286,7 +286,7 @@ void GameList::OnUpdateThemedIcons() {
286 } 286 }
287 case GameListItemType::AddDir: 287 case GameListItemType::AddDir:
288 child->setData( 288 child->setData(
289 QIcon::fromTheme(QStringLiteral("plus")) 289 QIcon::fromTheme(QStringLiteral("list-add"))
290 .pixmap(icon_size) 290 .pixmap(icon_size)
291 .scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), 291 .scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation),
292 Qt::DecorationRole); 292 Qt::DecorationRole);
diff --git a/src/yuzu/game_list_p.h b/src/yuzu/game_list_p.h
index e7667cf60..0e19be22d 100644
--- a/src/yuzu/game_list_p.h
+++ b/src/yuzu/game_list_p.h
@@ -294,7 +294,7 @@ public:
294 294
295 const int icon_size = UISettings::values.folder_icon_size.GetValue(); 295 const int icon_size = UISettings::values.folder_icon_size.GetValue();
296 296
297 setData(QIcon::fromTheme(QStringLiteral("plus")) 297 setData(QIcon::fromTheme(QStringLiteral("list-add"))
298 .pixmap(icon_size) 298 .pixmap(icon_size)
299 .scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation), 299 .scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation),
300 Qt::DecorationRole); 300 Qt::DecorationRole);
diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp
index f8c234082..e473ac6da 100644
--- a/src/yuzu/main.cpp
+++ b/src/yuzu/main.cpp
@@ -257,6 +257,18 @@ static QString PrettyProductName() {
257 return QSysInfo::prettyProductName(); 257 return QSysInfo::prettyProductName();
258} 258}
259 259
260bool GMainWindow::check_dark_mode() {
261#ifdef __linux__
262 const QPalette test_palette(qApp->palette());
263 const QColor text_color = test_palette.color(QPalette::Active, QPalette::Text);
264 const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window);
265 return (text_color.value() > window_color.value());
266#else
267 // TODO: Windows
268 return false;
269#endif // __linux__
270}
271
260GMainWindow::GMainWindow(bool has_broken_vulkan) 272GMainWindow::GMainWindow(bool has_broken_vulkan)
261 : ui{std::make_unique<Ui::MainWindow>()}, system{std::make_unique<Core::System>()}, 273 : ui{std::make_unique<Ui::MainWindow>()}, system{std::make_unique<Core::System>()},
262 input_subsystem{std::make_shared<InputCommon::InputSubsystem>()}, 274 input_subsystem{std::make_shared<InputCommon::InputSubsystem>()},
@@ -274,6 +286,13 @@ GMainWindow::GMainWindow(bool has_broken_vulkan)
274 ui->setupUi(this); 286 ui->setupUi(this);
275 statusBar()->hide(); 287 statusBar()->hide();
276 288
289 // Check dark mode before a theme is loaded
290 os_dark_mode = check_dark_mode();
291 startup_icon_theme = QIcon::themeName();
292 // fallback can only be set once, colorful theme icons are okay on both light/dark
293 QIcon::setFallbackThemeName(QStringLiteral("colorful"));
294 QIcon::setFallbackSearchPaths(QStringList(QStringLiteral(":/icons")));
295
277 default_theme_paths = QIcon::themeSearchPaths(); 296 default_theme_paths = QIcon::themeSearchPaths();
278 UpdateUITheme(); 297 UpdateUITheme();
279 298
@@ -3930,8 +3949,21 @@ void GMainWindow::filterBarSetChecked(bool state) {
3930 emit(OnToggleFilterBar()); 3949 emit(OnToggleFilterBar());
3931} 3950}
3932 3951
3952static void AdjustLinkColor() {
3953 QPalette new_pal(qApp->palette());
3954 if (UISettings::IsDarkTheme()) {
3955 new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255));
3956 } else {
3957 new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255));
3958 }
3959 if (qApp->palette().color(QPalette::Link) != new_pal.color(QPalette::Link)) {
3960 qApp->setPalette(new_pal);
3961 }
3962}
3963
3933void GMainWindow::UpdateUITheme() { 3964void GMainWindow::UpdateUITheme() {
3934 const QString default_theme = QStringLiteral("default"); 3965 const QString default_theme =
3966 QString::fromUtf8(UISettings::themes[static_cast<size_t>(Config::default_theme)].second);
3935 QString current_theme = UISettings::values.theme; 3967 QString current_theme = UISettings::values.theme;
3936 QStringList theme_paths(default_theme_paths); 3968 QStringList theme_paths(default_theme_paths);
3937 3969
@@ -3939,6 +3971,23 @@ void GMainWindow::UpdateUITheme() {
3939 current_theme = default_theme; 3971 current_theme = default_theme;
3940 } 3972 }
3941 3973
3974#ifdef _WIN32
3975 QIcon::setThemeName(current_theme);
3976 AdjustLinkColor();
3977#else
3978 if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) {
3979 QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme
3980 : startup_icon_theme);
3981 QIcon::setThemeSearchPaths(theme_paths);
3982 if (check_dark_mode()) {
3983 current_theme = QStringLiteral("default_dark");
3984 }
3985 } else {
3986 QIcon::setThemeName(current_theme);
3987 QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons")));
3988 AdjustLinkColor();
3989 }
3990#endif
3942 if (current_theme != default_theme) { 3991 if (current_theme != default_theme) {
3943 QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)}; 3992 QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)};
3944 QFile f(theme_uri); 3993 QFile f(theme_uri);
@@ -3961,17 +4010,6 @@ void GMainWindow::UpdateUITheme() {
3961 qApp->setStyleSheet({}); 4010 qApp->setStyleSheet({});
3962 setStyleSheet({}); 4011 setStyleSheet({});
3963 } 4012 }
3964
3965 QPalette new_pal(qApp->palette());
3966 if (UISettings::IsDarkTheme()) {
3967 new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255));
3968 } else {
3969 new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255));
3970 }
3971 qApp->setPalette(new_pal);
3972
3973 QIcon::setThemeName(current_theme);
3974 QIcon::setThemeSearchPaths(theme_paths);
3975} 4013}
3976 4014
3977void GMainWindow::LoadTranslation() { 4015void GMainWindow::LoadTranslation() {
@@ -4022,6 +4060,26 @@ void GMainWindow::SetDiscordEnabled([[maybe_unused]] bool state) {
4022 discord_rpc->Update(); 4060 discord_rpc->Update();
4023} 4061}
4024 4062
4063void GMainWindow::changeEvent(QEvent* event) {
4064#ifdef __linux__
4065 // PaletteChange event appears to only reach so far into the GUI, explicitly asking to
4066 // UpdateUITheme is a decent work around
4067 if (event->type() == QEvent::PaletteChange) {
4068 const QPalette test_palette(qApp->palette());
4069 const QString current_theme = UISettings::values.theme;
4070 // Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too
4071 static QColor last_window_color;
4072 const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window);
4073 if (last_window_color != window_color && (current_theme == QStringLiteral("default") ||
4074 current_theme == QStringLiteral("colorful"))) {
4075 UpdateUITheme();
4076 }
4077 last_window_color = window_color;
4078 }
4079#endif // __linux__
4080 QWidget::changeEvent(event);
4081}
4082
4025#ifdef main 4083#ifdef main
4026#undef main 4084#undef main
4027#endif 4085#endif
diff --git a/src/yuzu/main.h b/src/yuzu/main.h
index 23b67a14e..2d1c8857b 100644
--- a/src/yuzu/main.h
+++ b/src/yuzu/main.h
@@ -251,6 +251,7 @@ private:
251 bool ConfirmForceLockedExit(); 251 bool ConfirmForceLockedExit();
252 void RequestGameExit(); 252 void RequestGameExit();
253 void RequestGameResume(); 253 void RequestGameResume();
254 void changeEvent(QEvent* event) override;
254 void closeEvent(QCloseEvent* event) override; 255 void closeEvent(QCloseEvent* event) override;
255 256
256#ifdef __linux__ 257#ifdef __linux__
@@ -392,6 +393,10 @@ private:
392 QTimer mouse_hide_timer; 393 QTimer mouse_hide_timer;
393 QTimer mouse_center_timer; 394 QTimer mouse_center_timer;
394 395
396 QString startup_icon_theme;
397 bool os_dark_mode = false;
398 bool check_dark_mode();
399
395 // FS 400 // FS
396 std::shared_ptr<FileSys::VfsFilesystem> vfs; 401 std::shared_ptr<FileSys::VfsFilesystem> vfs;
397 std::unique_ptr<FileSys::ManualContentProvider> provider; 402 std::unique_ptr<FileSys::ManualContentProvider> provider;