Compare commits

..

4 Commits

Author SHA1 Message Date
flodavid 5624391445 Fix qdarkstyle and midnight blue sliders being cropped
- Allow Threshold sliders in control configuration to be up to 40px tall, instead of 15
2024-03-27 12:48:53 +01:00
flodavid f90d259bc1 Add dark mode configuration setting in UI tab
- Allows to choose "Auto", "Always On" or "Always Off"
  - Dark mode options are only shown if the style does not support theme
- If Auto is chosen, value is retrieved from OS
  - On Windows, the application needs a restart to apply the settings
- Use the default dark palette for Windows, like on Linux
2024-03-27 12:48:53 +01:00
flodavid df9dea3f3d Rework themes to easily use light/dark palette, using only different icons
- Renamed themes:
  - "colorful" to "default" and "colorful_dark" to "default_dark"
  - "default" to "monochrome" and "default_dark" to "monochrome_dark"
  - "colorful_midnight_blue" to "qdarkstyle_midnight_blue"
  - "qdarkstyle_midnight_blue" to "qdarkstyle_midnight_blue_monochrome"
  - qdarkstyle is renamed from "Dark" to "Mine Shaft" in the UI
- default and monochrome themes all use the same qss stylesheet
- Remove the ability to select "default_dark" directly
    - Default has better support for light and dark
    - Controller and Keyboard applets icons and style adapt to dark mode
- Add "qdarkstyle_monochrome" theme
- Remove duplicated icon files
2024-03-27 12:38:37 +01:00
flodavid faa76d372c Automatic dark theme switching for Windows and Linux
- Windows dark theme uses "fusion" style, which is better suited, but has minor differences
- Improve OS theme detection
  - Linux:
    - Listen for OS color schemes changes on D-Bus
    - Read OS scheme for D-Bus. Fallback with gsettings, reading org.gnome.desktop.interface.
      First "color-scheme" key, then "gtk-theme". Finally, fallback to checking window palette
  - Windows (dark mode detection was not implemented before):
    - Force dark palette when OS uses dark mode by setting QT_QPA_PLATFORM to "windows:darkmode=2"
    - This enables to detect dark mode by checking the window palette
- Improve theming capabilites:
  - Linux uses custom palette when dark mode is detected.
    By using palette(xxx) in .qss files, there is no need to create a dark stylesheet
  - Allow themes to have stylesheet variants, dark.qss and light.qss
  - If current mode is dark, use dark icons for controller and keyboard applets
  - Add "dark" property to RendererStatusBarButton and GPUStatusBarButton, set to true when dark mode is used.
    Allows to have distinct colors for GPU API and accuracy buttons depending on dark mode or not
  - Enable all themes to have dark icon alternatives, not just "default" and "colorful"
    - If dark mode, icons are loaded from the directory "THEME-NAME_dark/icons"
  - If current mode is dark, use dark icons for controller and keyboard applets
  - Only qdarkstyle, qdarkstyle_midnight_blue, colorful_dark and
    colorful_midnight_blue used elements specific to dark themes
2024-03-27 12:34:33 +01:00
41 changed files with 229 additions and 371 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -6,64 +6,66 @@ SPDX-License-Identifier: GPL-2.0-or-later
<RCC>
<qresource prefix="overlay">
<file>arrow_left.png</file>
<file>arrow_left_dark.png</file>
<file>arrow_right.png</file>
<file>arrow_right_dark.png</file>
<file>button_minus.png</file>
<file>button_minus_dark.png</file>
<file>button_plus.png</file>
<file>button_plus_dark.png</file>
<file>button_A.png</file>
<file>button_A_dark.png</file>
<file>button_B.png</file>
<file>button_B_dark.png</file>
<file>button_X.png</file>
<file>button_X_dark.png</file>
<file>button_Y.png</file>
<file>button_Y_dark.png</file>
<file>button_L.png</file>
<file>button_L_dark.png</file>
<file>button_R.png</file>
<file>button_R_dark.png</file>
<file>button_press_stick.png</file>
<file>button_press_stick_dark.png</file>
<file>osk_button_B.png</file>
<file>osk_button_B_disabled.png</file>
<file>osk_button_B_dark.png</file>
<file>osk_button_B_dark_disabled.png</file>
<file>osk_button_Y.png</file>
<file>osk_button_Y_disabled.png</file>
<file>osk_button_Y_dark.png</file>
<file>osk_button_Y_dark_disabled.png</file>
<file>osk_button_backspace.png</file>
<file>osk_button_backspace_dark.png</file>
<file>osk_button_plus.png</file>
<file>osk_button_plus_disabled.png</file>
<file>osk_button_plus_dark.png</file>
<file>osk_button_plus_dark_disabled.png</file>
<file>osk_button_shift.png</file>
<file>osk_button_shift_dark.png</file>
<file>osk_button_shift_on.png</file>
<file>osk_button_shift_on_dark.png</file>
<file>osk_button_shift_lock_on.png</file>
<file>osk_button_shift_lock_off.png</file>
<file>controller_dual_joycon.png</file>
<file>controller_dual_joycon_dark.png</file>
<file>controller_pro.png</file>
<file>controller_pro_dark.png</file>
<file>controller_handheld.png</file>
<file>controller_handheld_dark.png</file>
<file>controller_single_joycon_left.png</file>
<file>controller_single_joycon_left_dark.png</file>
<file>controller_single_joycon_right.png</file>
<file>controller_single_joycon_right_dark.png</file>
<file>controller_single_joycon_left_a.png</file>
<file>controller_single_joycon_left_a_dark.png</file>
<file>controller_single_joycon_left_b.png</file>
<file>controller_single_joycon_left_b_dark.png</file>
<file>controller_single_joycon_left_x.png</file>
<file>controller_single_joycon_left_x_dark.png</file>
<file>controller_single_joycon_left_y.png</file>
<file>controller_single_joycon_left_y_dark.png</file>
</qresource>
<qresource prefix="overlay_dark">
<file alias="arrow_left.png">../overlay_dark/arrow_left.png</file>
<file alias="arrow_right.png">../overlay_dark/arrow_right.png</file>
<file alias="button_minus.png">../overlay_dark/button_minus.png</file>
<file alias="button_plus.png">../overlay_dark/button_plus.png</file>
<file alias="button_A.png">../overlay_dark/button_A.png</file>
<file alias="button_B.png">../overlay_dark/button_B.png</file>
<file alias="button_X.png">../overlay_dark/button_X.png</file>
<file alias="button_Y.png">../overlay_dark/button_Y.png</file>
<file alias="button_L.png">../overlay_dark/button_L.png</file>
<file alias="button_R.png">../overlay_dark/button_R.png</file>
<file alias="button_press_stick.png">../overlay_dark/button_press_stick.png</file>
<file alias="osk_button_B.png">../overlay_dark/osk_button_B.png</file>
<file alias="osk_button_B_disabled.png">../overlay_dark/osk_button_B.png</file>
<file alias="osk_button_Y.png">../overlay_dark/osk_button_Y.png</file>
<file alias="osk_button_Y_disabled.png">../overlay_dark/osk_button_Y.png</file>
<file alias="osk_button_backspace.png">../overlay_dark/osk_button_backspace.png</file>
<file alias="osk_button_plus.png">../overlay_dark/osk_button_plus.png</file>
<file alias="osk_button_plus_disabled.png">../overlay_dark/osk_button_plus.png</file>
<file alias="osk_button_shift.png">../overlay_dark/osk_button_shift.png</file>
<file alias="osk_button_shift_on.png">../overlay_dark/osk_button_shift_on.png</file>
<file alias="controller_dual_joycon.png">../overlay_dark/controller_dual_joycon.png</file>
<file alias="controller_pro.png">../overlay_dark/controller_pro.png</file>
<file alias="controller_handheld.png">../overlay_dark/controller_handheld.png</file>
<file alias="controller_single_joycon_left.png">../overlay_dark/controller_single_joycon_left.png</file>
<file alias="controller_single_joycon_right.png">../overlay_dark/controller_single_joycon_right.png</file>
<file alias="controller_single_joycon_left_a.png">../overlay_dark/controller_single_joycon_left_a.png</file>
<file alias="controller_single_joycon_left_b.png">../overlay_dark/controller_single_joycon_left_b.png</file>
<file alias="controller_single_joycon_left_x.png">../overlay_dark/controller_single_joycon_left_x.png</file>
<file alias="controller_single_joycon_left_y.png">../overlay_dark/controller_single_joycon_left_y.png</file>
</qresource>
</RCC>

View File

Before

Width:  |  Height:  |  Size: 712 B

After

Width:  |  Height:  |  Size: 712 B

View File

Before

Width:  |  Height:  |  Size: 683 B

After

Width:  |  Height:  |  Size: 683 B

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 745 B

After

Width:  |  Height:  |  Size: 745 B

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -120,21 +120,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,
@ -367,7 +367,7 @@ QWidget#lineDialog {
QStackedWidget#bottomOSK,
QWidget#contentDialog,
QWidget#contentRichDialog {
background: rgba(240, 240, 240, 1);
background: palette(base);
}
QWidget#contentDialog,
@ -424,6 +424,7 @@ QWidget#inputOSK QLineEdit {
background: transparent;
border: none;
color: #ccc;
padding: 0px;
}
QWidget#inputBoxOSK {
@ -453,6 +454,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;
@ -493,8 +515,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,
@ -503,27 +525,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,
@ -536,8 +566,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,
@ -546,12 +574,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;
@ -570,48 +597,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,
@ -624,47 +615,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,
@ -675,8 +625,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,
@ -693,22 +643,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);
}

View File

@ -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,

View File

@ -1,5 +1,5 @@
<RCC>
<qresource prefix="qdarkstyle">
<file>style.qss</file>
<file>dark.qss</file>
</qresource>
</RCC>

View File

@ -2783,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,
@ -2832,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,
@ -2903,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);
}

View File

@ -1,5 +1,5 @@
<RCC>
<qresource prefix="qdarkstyle_midnight_blue">
<file>style.qss</file>
<file>dark.qss</file>
</qresource>
</RCC>

View File

@ -1,8 +1,8 @@
<RCC>
<qresource prefix="qdarkstyle_midnight_blue_monochrome">
<file alias="style.qss">../qdarkstyle_midnight_blue/style.qss</file>
<file alias="dark.qss">../qdarkstyle_midnight_blue/dark.qss</file>
</qresource>
<qresource prefix="qdarkstyle_midnight_blue_monochrome_dark">
<file alias="style.qss">../qdarkstyle/style.qss</file>
<file alias="dark.qss">../qdarkstyle/dark.qss</file>
</qresource>
</RCC>

View File

@ -1,8 +1,8 @@
<RCC>
<qresource prefix="qdarkstyle_monochrome">
<file alias="style.qss">../qdarkstyle/style.qss</file>
<file alias="dark.qss">../qdarkstyle/dark.qss</file>
</qresource>
<qresource prefix="qdarkstyle_monochrome_dark">
<file alias="style.qss">../qdarkstyle/style.qss</file>
<file alias="dark.qss">../qdarkstyle/dark.qss</file>
</qresource>
</RCC>

View File

@ -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,70 +832,146 @@ void QtSoftwareKeyboardDialog::SetControllerImage() {
const auto controller_type =
handheld->IsConnected() ? handheld->GetNpadStyleIndex() : player_1->GetNpadStyleIndex();
const QString theme = [] {
// Use dark icons if current OS mode is dark, or the theme contains "dark", or "midnight" in
// its name
if (GMainWindow::CheckDarkMode() || 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:
@ -1052,10 +1138,8 @@ void QtSoftwareKeyboardDialog::ChangeBottomOSKIndex() {
ui->bottomOSK->setCurrentIndex(static_cast<int>(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:
@ -1066,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;
@ -1080,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;

View File

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

View File

@ -136,7 +136,6 @@ ConfigureUi::ConfigureUi(Core::System& system_, QWidget* parent)
InitializeIconSizeComboBox();
InitializeRowComboBoxes();
UpdateDarkModeOptions();
PopulateResolutionComboBox(ui->screenshot_height, this);
@ -233,23 +232,28 @@ void ConfigureUi::UpdateDarkModeOptions() {
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")),
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")),
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")),
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));
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));
ui->dark_mode_combobox->addItem(tr("Always Off"),
QVariant::fromValue(DarkModeState::Off));
}
}
#else
@ -271,6 +275,8 @@ void ConfigureUi::RequestGameListUpdate() {
void ConfigureUi::SetConfiguration() {
ui->theme_combobox->setCurrentIndex(ui->theme_combobox->findData(UISettings::values.theme));
// Dark mode options are populated after the theme is selected, to get the current configuration
UpdateDarkModeOptions();
ui->dark_mode_combobox->setCurrentIndex(
ui->dark_mode_combobox->findData(QVariant::fromValue(UISettings::values.dark_mode_state)));
ui->language_combobox->setCurrentIndex(ui->language_combobox->findData(