early-access version 2891
This commit is contained in:
parent
3f64006179
commit
c788e6a23a
21 changed files with 944 additions and 53 deletions
|
@ -1,7 +1,7 @@
|
||||||
yuzu emulator early access
|
yuzu emulator early access
|
||||||
=============
|
=============
|
||||||
|
|
||||||
This is the source code for early-access 2890.
|
This is the source code for early-access 2891.
|
||||||
|
|
||||||
## Legal Notice
|
## Legal Notice
|
||||||
|
|
||||||
|
|
BIN
dist/qt_themes/colorful/icons/48x48/list-add.png
vendored
Executable file
BIN
dist/qt_themes/colorful/icons/48x48/list-add.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 496 B |
2
dist/qt_themes/colorful/style.qrc
vendored
2
dist/qt_themes/colorful/style.qrc
vendored
|
@ -13,7 +13,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
<file alias="48x48/bad_folder.png">icons/48x48/bad_folder.png</file>
|
<file alias="48x48/bad_folder.png">icons/48x48/bad_folder.png</file>
|
||||||
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
||||||
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
||||||
<file alias="48x48/plus.png">icons/48x48/plus.png</file>
|
<file alias="48x48/list-add.png">icons/48x48/list-add.png</file>
|
||||||
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
||||||
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
||||||
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
|
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
|
||||||
|
|
2
dist/qt_themes/colorful_dark/style.qrc
vendored
2
dist/qt_themes/colorful_dark/style.qrc
vendored
|
@ -15,7 +15,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
<file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
|
<file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
|
||||||
<file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
|
<file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
|
||||||
<file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
|
<file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
|
||||||
<file alias="48x48/plus.png">../colorful/icons/48x48/plus.png</file>
|
<file alias="48x48/list-add.png">../colorful/icons/48x48/list-add.png</file>
|
||||||
<file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
|
<file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
|
||||||
<file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
|
<file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
|
|
@ -11,7 +11,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
<file alias="48x48/bad_folder.png">../colorful/icons/48x48/bad_folder.png</file>
|
<file alias="48x48/bad_folder.png">../colorful/icons/48x48/bad_folder.png</file>
|
||||||
<file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
|
<file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
|
||||||
<file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
|
<file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
|
||||||
<file alias="48x48/plus.png">../colorful/icons/48x48/plus.png</file>
|
<file alias="48x48/list-add.png">../colorful/icons/48x48/list-add.png</file>
|
||||||
<file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
|
<file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
|
||||||
<file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
|
<file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
|
2
dist/qt_themes/default/default.qrc
vendored
2
dist/qt_themes/default/default.qrc
vendored
|
@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
||||||
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
||||||
<file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
|
<file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
|
||||||
<file alias="48x48/plus.png">icons/48x48/plus.png</file>
|
<file alias="48x48/list-add.png">icons/48x48/list-add.png</file>
|
||||||
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
||||||
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
||||||
<file alias="256x256/yuzu.png">icons/256x256/yuzu.png</file>
|
<file alias="256x256/yuzu.png">icons/256x256/yuzu.png</file>
|
||||||
|
|
BIN
dist/qt_themes/default/icons/48x48/list-add.png
vendored
Executable file
BIN
dist/qt_themes/default/icons/48x48/list-add.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 316 B |
8
dist/qt_themes/default_dark/icons/index.theme
vendored
Executable file
8
dist/qt_themes/default_dark/icons/index.theme
vendored
Executable file
|
@ -0,0 +1,8 @@
|
||||||
|
[Icon Theme]
|
||||||
|
Name=default_dark
|
||||||
|
Comment=Colorful theme (Dark style)
|
||||||
|
Inherits=colorful
|
||||||
|
Directories=16x16
|
||||||
|
|
||||||
|
[16x16]
|
||||||
|
Size=16
|
25
dist/qt_themes/default_dark/style.qrc
vendored
Executable file
25
dist/qt_themes/default_dark/style.qrc
vendored
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
<!--
|
||||||
|
SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
|
SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
-->
|
||||||
|
<RCC>
|
||||||
|
<qresource prefix="icons/default_dark">
|
||||||
|
<file alias="16x16/connected.png">../colorful/icons/16x16/connected.png</file>
|
||||||
|
<file alias="16x16/connected_notification.png">../colorful/icons/16x16/connected_notification.png</file>
|
||||||
|
<file alias="16x16/disconnected.png">../colorful/icons/16x16/disconnected.png</file>
|
||||||
|
<file alias="index.theme">icons/index.theme</file>
|
||||||
|
<file alias="16x16/lock.png">../colorful_dark/icons/16x16/lock.png</file>
|
||||||
|
<file alias="16x16/view-refresh.png">../colorful_dark/icons/16x16/view-refresh.png</file>
|
||||||
|
<file alias="48x48/bad_folder.png">../colorful/icons/48x48/bad_folder.png</file>
|
||||||
|
<file alias="48x48/chip.png">../colorful/icons/48x48/chip.png</file>
|
||||||
|
<file alias="48x48/folder.png">../colorful/icons/48x48/folder.png</file>
|
||||||
|
<file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
|
||||||
|
<file alias="48x48/list-add.png">../colorful/icons/48x48/list-add.png</file>
|
||||||
|
<file alias="48x48/sd_card.png">../colorful/icons/48x48/sd_card.png</file>
|
||||||
|
<file alias="256x256/plus_folder.png">../colorful/icons/256x256/plus_folder.png</file>
|
||||||
|
</qresource>
|
||||||
|
|
||||||
|
<qresource prefix="default_dark">
|
||||||
|
<file>style.qss</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
687
dist/qt_themes/default_dark/style.qss
vendored
Executable file
687
dist/qt_themes/default_dark/style.qss
vendored
Executable file
|
@ -0,0 +1,687 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
|
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
*/
|
||||||
|
QAbstractSpinBox {
|
||||||
|
min-height: 19px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#TogglableStatusBarButton {
|
||||||
|
color: #959595;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0px 3px 0px 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#TogglableStatusBarButton:checked {
|
||||||
|
color: palette(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#TogglableStatusBarButton:hover {
|
||||||
|
border: 1px solid #76797C;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton {
|
||||||
|
color: #656565;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0px 3px 0px 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton:hover {
|
||||||
|
border: 1px solid #76797C;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton:checked {
|
||||||
|
color: #e85c00;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton:!checked {
|
||||||
|
color: #00ccdd;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#GPUStatusBarButton {
|
||||||
|
color: #656565;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0px 3px 0px 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#GPUStatusBarButton:hover {
|
||||||
|
border: 1px solid #76797C;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#GPUStatusBarButton:checked {
|
||||||
|
color: #ff8040;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#GPUStatusBarButton:!checked {
|
||||||
|
color: #40dd40;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#DockingStatusBarButton {
|
||||||
|
min-width: 0px;
|
||||||
|
color: palette(text);
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0px 3px 0px 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#DockingStatusBarButton:hover {
|
||||||
|
border: 1px solid #76797C;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#buttonRefreshDevices {
|
||||||
|
min-width: 21px;
|
||||||
|
min-height: 21px;
|
||||||
|
max-width: 21px;
|
||||||
|
max-height: 21px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#bottomPerGameInput,
|
||||||
|
QWidget#topControllerApplet,
|
||||||
|
QWidget#bottomControllerApplet,
|
||||||
|
QGroupBox#groupPlayer1Connected:checked,
|
||||||
|
QGroupBox#groupPlayer2Connected:checked,
|
||||||
|
QGroupBox#groupPlayer3Connected:checked,
|
||||||
|
QGroupBox#groupPlayer4Connected:checked,
|
||||||
|
QGroupBox#groupPlayer5Connected:checked,
|
||||||
|
QGroupBox#groupPlayer6Connected:checked,
|
||||||
|
QGroupBox#groupPlayer7Connected:checked,
|
||||||
|
QGroupBox#groupPlayer8Connected:checked {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#topControllerApplet {
|
||||||
|
border-bottom: 1px solid #828790
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#bottomPerGameInput,
|
||||||
|
QWidget#bottomControllerApplet {
|
||||||
|
border-top: 1px solid #828790
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#topPerGameInput,
|
||||||
|
QWidget#middleControllerApplet {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#topPerGameInput QComboBox,
|
||||||
|
QWidget#middleControllerApplet QComboBox {
|
||||||
|
width: 120px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#connectedControllers {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#playersSupported,
|
||||||
|
QWidget#controllersSupported,
|
||||||
|
QWidget#controllerSupported1,
|
||||||
|
QWidget#controllerSupported2,
|
||||||
|
QWidget#controllerSupported3,
|
||||||
|
QWidget#controllerSupported4,
|
||||||
|
QWidget#controllerSupported5,
|
||||||
|
QWidget#controllerSupported6 {
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QGroupBox#groupPlayer1Connected,
|
||||||
|
QGroupBox#groupPlayer2Connected,
|
||||||
|
QGroupBox#groupPlayer3Connected,
|
||||||
|
QGroupBox#groupPlayer4Connected,
|
||||||
|
QGroupBox#groupPlayer5Connected,
|
||||||
|
QGroupBox#groupPlayer6Connected,
|
||||||
|
QGroupBox#groupPlayer7Connected,
|
||||||
|
QGroupBox#groupPlayer8Connected {
|
||||||
|
border: 1px solid #828790;
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 0px;
|
||||||
|
min-height: 98px;
|
||||||
|
max-height: 98px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QGroupBox#groupPlayer1Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer2Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer3Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer4Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer5Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer6Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer7Connected:unchecked,
|
||||||
|
QGroupBox#groupPlayer8Connected:unchecked {
|
||||||
|
border: 1px solid #d9d9d9;
|
||||||
|
}
|
||||||
|
|
||||||
|
QGroupBox#groupPlayer1Connected::title,
|
||||||
|
QGroupBox#groupPlayer2Connected::title,
|
||||||
|
QGroupBox#groupPlayer3Connected::title,
|
||||||
|
QGroupBox#groupPlayer4Connected::title,
|
||||||
|
QGroupBox#groupPlayer5Connected::title,
|
||||||
|
QGroupBox#groupPlayer6Connected::title,
|
||||||
|
QGroupBox#groupPlayer7Connected::title,
|
||||||
|
QGroupBox#groupPlayer8Connected::title {
|
||||||
|
subcontrol-origin: margin;
|
||||||
|
subcontrol-position: top left;
|
||||||
|
padding-left: 0px;
|
||||||
|
padding-right: 0px;
|
||||||
|
padding-top: 1px;
|
||||||
|
margin-left: 0px;
|
||||||
|
margin-right: -4px;
|
||||||
|
margin-bottom: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QCheckBox#checkboxPlayer1Connected,
|
||||||
|
QCheckBox#checkboxPlayer2Connected,
|
||||||
|
QCheckBox#checkboxPlayer3Connected,
|
||||||
|
QCheckBox#checkboxPlayer4Connected,
|
||||||
|
QCheckBox#checkboxPlayer5Connected,
|
||||||
|
QCheckBox#checkboxPlayer6Connected,
|
||||||
|
QCheckBox#checkboxPlayer7Connected,
|
||||||
|
QCheckBox#checkboxPlayer8Connected {
|
||||||
|
spacing: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#Player1LEDs QCheckBox,
|
||||||
|
QWidget#Player2LEDs QCheckBox,
|
||||||
|
QWidget#Player3LEDs QCheckBox,
|
||||||
|
QWidget#Player4LEDs QCheckBox,
|
||||||
|
QWidget#Player5LEDs QCheckBox,
|
||||||
|
QWidget#Player6LEDs QCheckBox,
|
||||||
|
QWidget#Player7LEDs QCheckBox,
|
||||||
|
QWidget#Player8LEDs QCheckBox {
|
||||||
|
spacing: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#Player1LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player2LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player3LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player4LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player5LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player6LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player7LEDs QCheckBox::indicator,
|
||||||
|
QWidget#Player8LEDs QCheckBox::indicator {
|
||||||
|
width: 6px;
|
||||||
|
height: 6px;
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer1Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer2Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer3Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer4Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer5Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer6Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer7Connected::indicator,
|
||||||
|
QWidget#bottomPerGameInput QCheckBox#checkboxPlayer8Connected::indicator {
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QCheckBox#checkboxPlayer1Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer2Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer3Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer4Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer5Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer6Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer7Connected::indicator,
|
||||||
|
QCheckBox#checkboxPlayer8Connected::indicator {
|
||||||
|
width: 14px;
|
||||||
|
height: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QGroupBox#groupPlayer1Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer2Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer3Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer4Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer5Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer6Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer7Connected::indicator,
|
||||||
|
QGroupBox#groupPlayer8Connected::indicator {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#Player1LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player2LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player3LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player4LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player5LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player6LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player7LEDs QCheckBox::indicator:checked,
|
||||||
|
QWidget#Player8LEDs QCheckBox::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer1Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer2Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer3Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer4Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer5Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer6Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer7Connected::indicator:checked,
|
||||||
|
QGroupBox#groupPlayer8Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer1Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer2Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer3Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer4Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer5Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer6Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer7Connected::indicator:checked,
|
||||||
|
QCheckBox#checkboxPlayer8Connected::indicator:checked,
|
||||||
|
QGroupBox#groupConnectedController::indicator:checked {
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid #929192;
|
||||||
|
background: #39ff14;
|
||||||
|
image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#Player1LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player2LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player3LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player4LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player5LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player6LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player7LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QWidget#Player8LEDs QCheckBox::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer1Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer2Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer3Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer4Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer5Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer6Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer7Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupPlayer8Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer1Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer2Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer3Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer4Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer5Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer6Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer7Connected::indicator:unchecked,
|
||||||
|
QCheckBox#checkboxPlayer8Connected::indicator:unchecked,
|
||||||
|
QGroupBox#groupConnectedController::indicator:unchecked {
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid #929192;
|
||||||
|
background: transparent;
|
||||||
|
image: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#controllerPlayer1,
|
||||||
|
QWidget#controllerPlayer2,
|
||||||
|
QWidget#controllerPlayer3,
|
||||||
|
QWidget#controllerPlayer4,
|
||||||
|
QWidget#controllerPlayer5,
|
||||||
|
QWidget#controllerPlayer6,
|
||||||
|
QWidget#controllerPlayer7,
|
||||||
|
QWidget#controllerPlayer8 {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog,
|
||||||
|
QStackedWidget#topOSK {
|
||||||
|
background: rgba(51, 51, 51, .9);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QDialog#OverlayDialog,
|
||||||
|
QStackedWidget#stackedDialog {
|
||||||
|
background: rgba(51, 51, 51, .7);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#boxOSK,
|
||||||
|
QWidget#lineOSK,
|
||||||
|
QWidget#richDialog,
|
||||||
|
QWidget#lineDialog {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStackedWidget#bottomOSK,
|
||||||
|
QWidget#contentDialog,
|
||||||
|
QWidget#contentRichDialog {
|
||||||
|
background: rgba(240, 240, 240, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#contentDialog,
|
||||||
|
QWidget#contentRichDialog {
|
||||||
|
margin: 5px;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#buttonsDialog,
|
||||||
|
QWidget#buttonsRichDialog {
|
||||||
|
margin: 5px;
|
||||||
|
border-top: 2px solid rgba(44, 44, 44, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#legendOSKnum {
|
||||||
|
border-top: 1px solid rgba(44, 44, 44, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::vertical {
|
||||||
|
background: #cdcdcd;
|
||||||
|
width: 15px;
|
||||||
|
margin: 15px 3px 15px 3px;
|
||||||
|
border: 1px transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::horizoncal {
|
||||||
|
background: #cdcdcd;
|
||||||
|
height: 15px;
|
||||||
|
margin: 3px 15px 3px 15px;
|
||||||
|
border: 1px transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::handle {
|
||||||
|
background: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
min-height: 5px;
|
||||||
|
min-width: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-line,
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-line,
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::add-page,
|
||||||
|
QStackedWidget#stackedDialog QTextBrowser QScrollBar::sub-page {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#inputOSK {
|
||||||
|
border-bottom: 3px solid rgba(255, 255, 255, .9);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#inputOSK QLineEdit {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#inputBoxOSK {
|
||||||
|
border: 2px solid rgba(255, 255, 255, .9);
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#inputBoxOSK QTextEdit {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#richDialog QTextBrowser {
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
padding: 35px 65px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QWidget#lineOSK QLabel#label_header {
|
||||||
|
color: #f0f0f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#lineOSK QLabel#label_sub,
|
||||||
|
QWidget#lineOSK QLabel#label_characters,
|
||||||
|
QWidget#boxOSK QLabel#label_characters_box {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#contentDialog QLabel#label_title,
|
||||||
|
QWidget#contentRichDialog QLabel#label_title_rich {
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#contentDialog QLabel#label_dialog {
|
||||||
|
padding: 20px 65px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget#contentDialog QLabel#label_title,
|
||||||
|
QWidget#contentRichDialog QLabel#label_title_rich {
|
||||||
|
padding: 0px 65px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#OverlayDialog QPushButton {
|
||||||
|
color: rgba(49, 79, 239, 1);
|
||||||
|
background: transparent;
|
||||||
|
border: none;
|
||||||
|
padding: 0px;
|
||||||
|
min-width: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#OverlayDialog QPushButton:focus,
|
||||||
|
QDialog#OverlayDialog QPushButton:hover {
|
||||||
|
color: rgba(49, 79, 239, 1);
|
||||||
|
background: rgba(255, 255, 255, 1);
|
||||||
|
border: 5px solid rgba(148, 250, 202, 1);
|
||||||
|
border-radius: 6px;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#OverlayDialog QPushButton:pressed {
|
||||||
|
color: rgba(240, 240, 240, 1);
|
||||||
|
background: rgba(150, 150, 150, 1);
|
||||||
|
border: 5px solid rgba(148, 250, 202, 1);
|
||||||
|
border-radius: 6px;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton {
|
||||||
|
background: rgba(232, 232, 232, 1);
|
||||||
|
border: 2px solid rgba(240, 240, 240, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
|
||||||
|
background: rgba(218, 218, 218, 1);
|
||||||
|
border: 2px solid rgba(240, 240, 240, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
|
||||||
|
color: rgba(240, 240, 240, 1);
|
||||||
|
background: rgba(44, 44, 44, 1);
|
||||||
|
border: 2px solid rgba(240, 240, 240, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
|
||||||
|
color: rgba(240, 240, 240, 1);
|
||||||
|
background: rgba(49, 79, 239, 1);
|
||||||
|
border: 2px solid rgba(240, 240, 240, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:focus,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:focus,
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:hover,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:hover {
|
||||||
|
color: rgba(0, 0, 0, 1);
|
||||||
|
background: rgba(255, 255, 255, 1);
|
||||||
|
border: 5px solid rgba(148, 250, 202, 1);
|
||||||
|
border-radius: 6px;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:pressed,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:pressed {
|
||||||
|
color: rgba(240, 240, 240, 1);
|
||||||
|
background: rgba(150, 150, 150, 1);
|
||||||
|
border: 5px solid rgba(148, 250, 202, 1);
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num {
|
||||||
|
image: url(:/overlay/osk_button_B.png);
|
||||||
|
image-position: right;
|
||||||
|
qproperty-icon: url(:/overlay/osk_button_backspace.png);
|
||||||
|
qproperty-iconSize: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift {
|
||||||
|
image: url(:/overlay/osk_button_Y.png);
|
||||||
|
image-position: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num {
|
||||||
|
image: url(:/overlay/osk_button_plus.png);
|
||||||
|
image-position: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift {
|
||||||
|
image: url(:/overlay/osk_button_shift_lock_off.png);
|
||||||
|
image-position: left;
|
||||||
|
qproperty-icon: url(:/overlay/osk_button_shift.png);
|
||||||
|
qproperty-iconSize: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_shift_shift {
|
||||||
|
image: url(:/overlay/osk_button_shift_lock_off.png);
|
||||||
|
image-position: left;
|
||||||
|
qproperty-icon: url(:/overlay/osk_button_shift_on.png);
|
||||||
|
qproperty-iconSize: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_bracket,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_bracket,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_left_parenthesis,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_right_parenthesis {
|
||||||
|
padding-bottom: 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#titleOSK QLabel {
|
||||||
|
background: transparent;
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_L,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_L_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_L_num {
|
||||||
|
image: url(:/overlay/button_L.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#arrow_left_num {
|
||||||
|
image: url(:/overlay/arrow_left.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_R,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_R_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_R_num {
|
||||||
|
image: url(:/overlay/button_R.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#arrow_right_num {
|
||||||
|
image: url(:/overlay/arrow_right.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_press_stick_shift {
|
||||||
|
image: url(:/overlay/button_press_stick.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_X,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_X_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_X_num {
|
||||||
|
image: url(:/overlay/button_X.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_A,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_A_shift,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QWidget#button_A_num {
|
||||||
|
image: url(:/overlay/button_A.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return_shift:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
|
||||||
|
color: rgba(164, 164, 164, 1);
|
||||||
|
background-color: rgba(218, 218, 218, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_at:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_slash:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_percent:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_1:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_2:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_3:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_4:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_5:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_6:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_7:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_8:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_9:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_0:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_return:disabled {
|
||||||
|
color: rgba(164, 164, 164, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_shift:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_ok_num:disabled {
|
||||||
|
image: url(:/overlay/osk_button_plus_disabled.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_shift:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_backspace_num:disabled {
|
||||||
|
image: url(:/overlay/osk_button_B_disabled.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space:disabled,
|
||||||
|
QDialog#QtSoftwareKeyboardDialog QPushButton#button_space_shift:disabled {
|
||||||
|
image: url(:/overlay/osk_button_Y_disabled.png);
|
||||||
|
}
|
BIN
dist/qt_themes/qdarkstyle/icons/48x48/list-add.png
vendored
Executable file
BIN
dist/qt_themes/qdarkstyle/icons/48x48/list-add.png
vendored
Executable file
Binary file not shown.
After Width: | Height: | Size: 339 B |
2
dist/qt_themes/qdarkstyle/style.qrc
vendored
2
dist/qt_themes/qdarkstyle/style.qrc
vendored
|
@ -10,7 +10,7 @@
|
||||||
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
||||||
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
||||||
<file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
|
<file alias="48x48/no_avatar.png">icons/48x48/no_avatar.png</file>
|
||||||
<file alias="48x48/plus.png">icons/48x48/plus.png</file>
|
<file alias="48x48/list-add.png">icons/48x48/list-add.png</file>
|
||||||
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
||||||
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
||||||
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
|
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="icons/qdarkstyle_midnight_blue">
|
<qresource prefix="icons/qdarkstyle_midnight_blue">
|
||||||
<file alias="index.theme">icons/index.theme</file>
|
<file alias="index.theme">icons/index.theme</file>
|
||||||
<file alias="16x16/lock.png">icons/16x16/lock.png</file>
|
<file alias="16x16/lock.png">../qdarkstyle/icons/16x16/lock.png</file>
|
||||||
<file alias="16x16/view-refresh.png">icons/16x16/view-refresh.png</file>
|
<file alias="16x16/view-refresh.png">../qdarkstyle/icons/16x16/view-refresh.png</file>
|
||||||
<file alias="48x48/bad_folder.png">icons/48x48/bad_folder.png</file>
|
<file alias="48x48/bad_folder.png">../qdarkstyle/icons/48x48/bad_folder.png</file>
|
||||||
<file alias="48x48/chip.png">icons/48x48/chip.png</file>
|
<file alias="48x48/chip.png">../qdarkstyle/icons/48x48/chip.png</file>
|
||||||
<file alias="48x48/folder.png">icons/48x48/folder.png</file>
|
<file alias="48x48/folder.png">../qdarkstyle/icons/48x48/folder.png</file>
|
||||||
<file alias="48x48/plus.png">icons/48x48/plus.png</file>
|
<file alias="48x48/no_avatar.png">../qdarkstyle/icons/48x48/no_avatar.png</file>
|
||||||
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
|
<file alias="48x48/list-add.png">../qdarkstyle/icons/48x48/list-add.png</file>
|
||||||
<file alias="48x48/star.png">icons/48x48/star.png</file>
|
<file alias="48x48/sd_card.png">../qdarkstyle/icons/48x48/sd_card.png</file>
|
||||||
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
|
<file alias="48x48/star.png">../qdarkstyle/icons/48x48/star.png</file>
|
||||||
|
<file alias="256x256/plus_folder.png">../qdarkstyle/icons/256x256/plus_folder.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="qss_icons">
|
<qresource prefix="qss_icons">
|
||||||
<file>rc/arrow_down.png</file>
|
<file>rc/arrow_down.png</file>
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "common/thread.h"
|
||||||
#include "core/hid/emulated_controller.h"
|
#include "core/hid/emulated_controller.h"
|
||||||
#include "core/hid/input_converter.h"
|
#include "core/hid/input_converter.h"
|
||||||
|
|
||||||
|
@ -84,18 +85,57 @@ void EmulatedController::ReloadFromSettings() {
|
||||||
motion_params[index] = Common::ParamPackage(player.motions[index]);
|
motion_params[index] = Common::ParamPackage(player.motions[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
controller.colors_state.fullkey = {
|
||||||
|
.body =
|
||||||
|
{
|
||||||
|
.b = static_cast<u8>((player.body_color_left >> 16) & 0xFF),
|
||||||
|
.g = static_cast<u8>((player.body_color_left >> 8) & 0xFF),
|
||||||
|
.r = static_cast<u8>(player.body_color_left & 0xFF),
|
||||||
|
.a = 0xff,
|
||||||
|
},
|
||||||
|
.button =
|
||||||
|
{
|
||||||
|
.b = static_cast<u8>((player.button_color_left >> 16) & 0xFF),
|
||||||
|
.g = static_cast<u8>((player.button_color_left >> 8) & 0xFF),
|
||||||
|
.r = static_cast<u8>(player.button_color_left & 0xFF),
|
||||||
|
.a = 0xff,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
controller.colors_state.left = {
|
controller.colors_state.left = {
|
||||||
.body = player.body_color_left,
|
.body =
|
||||||
.button = player.button_color_left,
|
{
|
||||||
|
.b = static_cast<u8>((player.body_color_left >> 16) & 0xFF),
|
||||||
|
.g = static_cast<u8>((player.body_color_left >> 8) & 0xFF),
|
||||||
|
.r = static_cast<u8>(player.body_color_left & 0xFF),
|
||||||
|
.a = 0xff,
|
||||||
|
},
|
||||||
|
.button =
|
||||||
|
{
|
||||||
|
.b = static_cast<u8>((player.button_color_left >> 16) & 0xFF),
|
||||||
|
.g = static_cast<u8>((player.button_color_left >> 8) & 0xFF),
|
||||||
|
.r = static_cast<u8>(player.button_color_left & 0xFF),
|
||||||
|
.a = 0xff,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
controller.colors_state.right = {
|
controller.colors_state.right = {
|
||||||
.body = player.body_color_right,
|
.body =
|
||||||
.button = player.button_color_right,
|
{
|
||||||
|
.b = static_cast<u8>((player.body_color_right >> 16) & 0xFF),
|
||||||
|
.g = static_cast<u8>((player.body_color_right >> 8) & 0xFF),
|
||||||
|
.r = static_cast<u8>(player.body_color_right & 0xFF),
|
||||||
|
.a = 0xff,
|
||||||
|
},
|
||||||
|
.button =
|
||||||
|
{
|
||||||
|
.b = static_cast<u8>((player.button_color_right >> 16) & 0xFF),
|
||||||
|
.g = static_cast<u8>((player.button_color_right >> 8) & 0xFF),
|
||||||
|
.r = static_cast<u8>(player.button_color_right & 0xFF),
|
||||||
|
.a = 0xff,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
controller.colors_state.fullkey = controller.colors_state.left;
|
|
||||||
|
|
||||||
// Other or debug controller should always be a pro controller
|
// Other or debug controller should always be a pro controller
|
||||||
if (npad_id_type != NpadIdType::Other) {
|
if (npad_id_type != NpadIdType::Other) {
|
||||||
SetNpadStyleIndex(MapSettingsTypeToNPad(player.controller_type));
|
SetNpadStyleIndex(MapSettingsTypeToNPad(player.controller_type));
|
||||||
|
@ -952,6 +992,9 @@ bool EmulatedController::TestVibration(std::size_t device_index) {
|
||||||
// Send a slight vibration to test for rumble support
|
// Send a slight vibration to test for rumble support
|
||||||
output_devices[device_index]->SetVibration(test_vibration);
|
output_devices[device_index]->SetVibration(test_vibration);
|
||||||
|
|
||||||
|
// Wait for about 15ms to ensure the controller is ready for the stop command
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(15));
|
||||||
|
|
||||||
// Stop any vibration and return the result
|
// Stop any vibration and return the result
|
||||||
return output_devices[device_index]->SetVibration(zero_vibration) ==
|
return output_devices[device_index]->SetVibration(zero_vibration) ==
|
||||||
Common::Input::VibrationError::None;
|
Common::Input::VibrationError::None;
|
||||||
|
|
|
@ -327,10 +327,18 @@ struct TouchState {
|
||||||
};
|
};
|
||||||
static_assert(sizeof(TouchState) == 0x28, "Touchstate is an invalid size");
|
static_assert(sizeof(TouchState) == 0x28, "Touchstate is an invalid size");
|
||||||
|
|
||||||
|
struct NpadColor {
|
||||||
|
u8 b{};
|
||||||
|
u8 g{};
|
||||||
|
u8 r{};
|
||||||
|
u8 a{};
|
||||||
|
};
|
||||||
|
static_assert(sizeof(NpadColor) == 4, "NpadColor is an invalid size");
|
||||||
|
|
||||||
// This is nn::hid::NpadControllerColor
|
// This is nn::hid::NpadControllerColor
|
||||||
struct NpadControllerColor {
|
struct NpadControllerColor {
|
||||||
u32 body{};
|
NpadColor body{};
|
||||||
u32 button{};
|
NpadColor button{};
|
||||||
};
|
};
|
||||||
static_assert(sizeof(NpadControllerColor) == 8, "NpadControllerColor is an invalid size");
|
static_assert(sizeof(NpadControllerColor) == 8, "NpadControllerColor is an invalid size");
|
||||||
|
|
||||||
|
|
|
@ -163,28 +163,51 @@ void Controller_NPad::InitNewlyAddedController(Core::HID::NpadIdType npad_id) {
|
||||||
}
|
}
|
||||||
LOG_DEBUG(Service_HID, "Npad connected {}", npad_id);
|
LOG_DEBUG(Service_HID, "Npad connected {}", npad_id);
|
||||||
const auto controller_type = controller.device->GetNpadStyleIndex();
|
const auto controller_type = controller.device->GetNpadStyleIndex();
|
||||||
|
const auto& body_colors = controller.device->GetColors();
|
||||||
|
const auto& battery_level = controller.device->GetBattery();
|
||||||
auto* shared_memory = controller.shared_memory;
|
auto* shared_memory = controller.shared_memory;
|
||||||
if (controller_type == Core::HID::NpadStyleIndex::None) {
|
if (controller_type == Core::HID::NpadStyleIndex::None) {
|
||||||
controller.styleset_changed_event->GetWritableEvent().Signal();
|
controller.styleset_changed_event->GetWritableEvent().Signal();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset memory values
|
||||||
shared_memory->style_tag.raw = Core::HID::NpadStyleSet::None;
|
shared_memory->style_tag.raw = Core::HID::NpadStyleSet::None;
|
||||||
shared_memory->device_type.raw = 0;
|
shared_memory->device_type.raw = 0;
|
||||||
shared_memory->system_properties.raw = 0;
|
shared_memory->system_properties.raw = 0;
|
||||||
|
shared_memory->joycon_color.attribute = ColorAttribute::NoController;
|
||||||
|
shared_memory->joycon_color.attribute = ColorAttribute::NoController;
|
||||||
|
shared_memory->fullkey_color = {};
|
||||||
|
shared_memory->joycon_color.left = {};
|
||||||
|
shared_memory->joycon_color.right = {};
|
||||||
|
shared_memory->battery_level_dual = {};
|
||||||
|
shared_memory->battery_level_left = {};
|
||||||
|
shared_memory->battery_level_right = {};
|
||||||
|
|
||||||
switch (controller_type) {
|
switch (controller_type) {
|
||||||
case Core::HID::NpadStyleIndex::None:
|
case Core::HID::NpadStyleIndex::None:
|
||||||
ASSERT(false);
|
ASSERT(false);
|
||||||
break;
|
break;
|
||||||
case Core::HID::NpadStyleIndex::ProController:
|
case Core::HID::NpadStyleIndex::ProController:
|
||||||
|
shared_memory->fullkey_color.attribute = ColorAttribute::Ok;
|
||||||
|
shared_memory->fullkey_color.fullkey = body_colors.fullkey;
|
||||||
|
shared_memory->battery_level_dual = battery_level.dual.battery_level;
|
||||||
shared_memory->style_tag.fullkey.Assign(1);
|
shared_memory->style_tag.fullkey.Assign(1);
|
||||||
shared_memory->device_type.fullkey.Assign(1);
|
shared_memory->device_type.fullkey.Assign(1);
|
||||||
shared_memory->system_properties.is_vertical.Assign(1);
|
shared_memory->system_properties.is_vertical.Assign(1);
|
||||||
shared_memory->system_properties.use_plus.Assign(1);
|
shared_memory->system_properties.use_plus.Assign(1);
|
||||||
shared_memory->system_properties.use_minus.Assign(1);
|
shared_memory->system_properties.use_minus.Assign(1);
|
||||||
|
shared_memory->system_properties.is_charging_joy_dual.Assign(
|
||||||
|
battery_level.dual.is_charging);
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::SwitchProController;
|
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::SwitchProController;
|
||||||
shared_memory->sixaxis_fullkey_properties.is_newly_assigned.Assign(1);
|
shared_memory->sixaxis_fullkey_properties.is_newly_assigned.Assign(1);
|
||||||
break;
|
break;
|
||||||
case Core::HID::NpadStyleIndex::Handheld:
|
case Core::HID::NpadStyleIndex::Handheld:
|
||||||
|
shared_memory->fullkey_color.attribute = ColorAttribute::Ok;
|
||||||
|
shared_memory->joycon_color.attribute = ColorAttribute::Ok;
|
||||||
|
shared_memory->fullkey_color.fullkey = body_colors.fullkey;
|
||||||
|
shared_memory->joycon_color.left = body_colors.left;
|
||||||
|
shared_memory->joycon_color.right = body_colors.right;
|
||||||
shared_memory->style_tag.handheld.Assign(1);
|
shared_memory->style_tag.handheld.Assign(1);
|
||||||
shared_memory->device_type.handheld_left.Assign(1);
|
shared_memory->device_type.handheld_left.Assign(1);
|
||||||
shared_memory->device_type.handheld_right.Assign(1);
|
shared_memory->device_type.handheld_right.Assign(1);
|
||||||
|
@ -192,47 +215,86 @@ void Controller_NPad::InitNewlyAddedController(Core::HID::NpadIdType npad_id) {
|
||||||
shared_memory->system_properties.use_plus.Assign(1);
|
shared_memory->system_properties.use_plus.Assign(1);
|
||||||
shared_memory->system_properties.use_minus.Assign(1);
|
shared_memory->system_properties.use_minus.Assign(1);
|
||||||
shared_memory->system_properties.use_directional_buttons.Assign(1);
|
shared_memory->system_properties.use_directional_buttons.Assign(1);
|
||||||
|
shared_memory->system_properties.is_charging_joy_dual.Assign(
|
||||||
|
battery_level.left.is_charging);
|
||||||
|
shared_memory->system_properties.is_charging_joy_left.Assign(
|
||||||
|
battery_level.left.is_charging);
|
||||||
|
shared_memory->system_properties.is_charging_joy_right.Assign(
|
||||||
|
battery_level.right.is_charging);
|
||||||
shared_memory->assignment_mode = NpadJoyAssignmentMode::Dual;
|
shared_memory->assignment_mode = NpadJoyAssignmentMode::Dual;
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type =
|
shared_memory->applet_nfc_xcd.applet_footer.type =
|
||||||
AppletFooterUiType::HandheldJoyConLeftJoyConRight;
|
AppletFooterUiType::HandheldJoyConLeftJoyConRight;
|
||||||
shared_memory->sixaxis_handheld_properties.is_newly_assigned.Assign(1);
|
shared_memory->sixaxis_handheld_properties.is_newly_assigned.Assign(1);
|
||||||
break;
|
break;
|
||||||
case Core::HID::NpadStyleIndex::JoyconDual:
|
case Core::HID::NpadStyleIndex::JoyconDual:
|
||||||
|
shared_memory->fullkey_color.attribute = ColorAttribute::Ok;
|
||||||
|
shared_memory->joycon_color.attribute = ColorAttribute::Ok;
|
||||||
shared_memory->style_tag.joycon_dual.Assign(1);
|
shared_memory->style_tag.joycon_dual.Assign(1);
|
||||||
if (controller.is_dual_left_connected) {
|
if (controller.is_dual_left_connected) {
|
||||||
|
shared_memory->joycon_color.left = body_colors.left;
|
||||||
|
shared_memory->battery_level_left = battery_level.left.battery_level;
|
||||||
shared_memory->device_type.joycon_left.Assign(1);
|
shared_memory->device_type.joycon_left.Assign(1);
|
||||||
shared_memory->system_properties.use_minus.Assign(1);
|
shared_memory->system_properties.use_minus.Assign(1);
|
||||||
|
shared_memory->system_properties.is_charging_joy_left.Assign(
|
||||||
|
battery_level.left.is_charging);
|
||||||
shared_memory->sixaxis_dual_left_properties.is_newly_assigned.Assign(1);
|
shared_memory->sixaxis_dual_left_properties.is_newly_assigned.Assign(1);
|
||||||
}
|
}
|
||||||
if (controller.is_dual_right_connected) {
|
if (controller.is_dual_right_connected) {
|
||||||
|
shared_memory->joycon_color.right = body_colors.right;
|
||||||
|
shared_memory->battery_level_right = battery_level.right.battery_level;
|
||||||
shared_memory->device_type.joycon_right.Assign(1);
|
shared_memory->device_type.joycon_right.Assign(1);
|
||||||
shared_memory->system_properties.use_plus.Assign(1);
|
shared_memory->system_properties.use_plus.Assign(1);
|
||||||
|
shared_memory->system_properties.is_charging_joy_right.Assign(
|
||||||
|
battery_level.right.is_charging);
|
||||||
shared_memory->sixaxis_dual_right_properties.is_newly_assigned.Assign(1);
|
shared_memory->sixaxis_dual_right_properties.is_newly_assigned.Assign(1);
|
||||||
}
|
}
|
||||||
shared_memory->system_properties.use_directional_buttons.Assign(1);
|
shared_memory->system_properties.use_directional_buttons.Assign(1);
|
||||||
shared_memory->system_properties.is_vertical.Assign(1);
|
shared_memory->system_properties.is_vertical.Assign(1);
|
||||||
shared_memory->assignment_mode = NpadJoyAssignmentMode::Dual;
|
shared_memory->assignment_mode = NpadJoyAssignmentMode::Dual;
|
||||||
|
|
||||||
if (controller.is_dual_left_connected && controller.is_dual_right_connected) {
|
if (controller.is_dual_left_connected && controller.is_dual_right_connected) {
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyDual;
|
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyDual;
|
||||||
|
shared_memory->fullkey_color.fullkey = body_colors.left;
|
||||||
|
shared_memory->battery_level_dual = battery_level.left.battery_level;
|
||||||
|
shared_memory->system_properties.is_charging_joy_dual.Assign(
|
||||||
|
battery_level.left.is_charging);
|
||||||
} else if (controller.is_dual_left_connected) {
|
} else if (controller.is_dual_left_connected) {
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyDualLeftOnly;
|
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyDualLeftOnly;
|
||||||
|
shared_memory->fullkey_color.fullkey = body_colors.left;
|
||||||
|
shared_memory->battery_level_dual = battery_level.left.battery_level;
|
||||||
|
shared_memory->system_properties.is_charging_joy_dual.Assign(
|
||||||
|
battery_level.left.is_charging);
|
||||||
} else {
|
} else {
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyDualRightOnly;
|
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyDualRightOnly;
|
||||||
|
shared_memory->fullkey_color.fullkey = body_colors.right;
|
||||||
|
shared_memory->battery_level_dual = battery_level.right.battery_level;
|
||||||
|
shared_memory->system_properties.is_charging_joy_dual.Assign(
|
||||||
|
battery_level.right.is_charging);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case Core::HID::NpadStyleIndex::JoyconLeft:
|
case Core::HID::NpadStyleIndex::JoyconLeft:
|
||||||
|
shared_memory->joycon_color.attribute = ColorAttribute::Ok;
|
||||||
|
shared_memory->joycon_color.left = body_colors.left;
|
||||||
|
shared_memory->battery_level_dual = battery_level.left.battery_level;
|
||||||
shared_memory->style_tag.joycon_left.Assign(1);
|
shared_memory->style_tag.joycon_left.Assign(1);
|
||||||
shared_memory->device_type.joycon_left.Assign(1);
|
shared_memory->device_type.joycon_left.Assign(1);
|
||||||
shared_memory->system_properties.is_horizontal.Assign(1);
|
shared_memory->system_properties.is_horizontal.Assign(1);
|
||||||
shared_memory->system_properties.use_minus.Assign(1);
|
shared_memory->system_properties.use_minus.Assign(1);
|
||||||
|
shared_memory->system_properties.is_charging_joy_left.Assign(
|
||||||
|
battery_level.left.is_charging);
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyLeftHorizontal;
|
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyLeftHorizontal;
|
||||||
shared_memory->sixaxis_left_properties.is_newly_assigned.Assign(1);
|
shared_memory->sixaxis_left_properties.is_newly_assigned.Assign(1);
|
||||||
break;
|
break;
|
||||||
case Core::HID::NpadStyleIndex::JoyconRight:
|
case Core::HID::NpadStyleIndex::JoyconRight:
|
||||||
|
shared_memory->joycon_color.attribute = ColorAttribute::Ok;
|
||||||
|
shared_memory->joycon_color.right = body_colors.right;
|
||||||
|
shared_memory->battery_level_right = battery_level.right.battery_level;
|
||||||
shared_memory->style_tag.joycon_right.Assign(1);
|
shared_memory->style_tag.joycon_right.Assign(1);
|
||||||
shared_memory->device_type.joycon_right.Assign(1);
|
shared_memory->device_type.joycon_right.Assign(1);
|
||||||
shared_memory->system_properties.is_horizontal.Assign(1);
|
shared_memory->system_properties.is_horizontal.Assign(1);
|
||||||
shared_memory->system_properties.use_plus.Assign(1);
|
shared_memory->system_properties.use_plus.Assign(1);
|
||||||
|
shared_memory->system_properties.is_charging_joy_right.Assign(
|
||||||
|
battery_level.right.is_charging);
|
||||||
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyRightHorizontal;
|
shared_memory->applet_nfc_xcd.applet_footer.type = AppletFooterUiType::JoyRightHorizontal;
|
||||||
shared_memory->sixaxis_right_properties.is_newly_assigned.Assign(1);
|
shared_memory->sixaxis_right_properties.is_newly_assigned.Assign(1);
|
||||||
break;
|
break;
|
||||||
|
@ -269,21 +331,6 @@ void Controller_NPad::InitNewlyAddedController(Core::HID::NpadIdType npad_id) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto& body_colors = controller.device->GetColors();
|
|
||||||
|
|
||||||
shared_memory->fullkey_color.attribute = ColorAttribute::Ok;
|
|
||||||
shared_memory->fullkey_color.fullkey = body_colors.fullkey;
|
|
||||||
|
|
||||||
shared_memory->joycon_color.attribute = ColorAttribute::Ok;
|
|
||||||
shared_memory->joycon_color.left = body_colors.left;
|
|
||||||
shared_memory->joycon_color.right = body_colors.right;
|
|
||||||
|
|
||||||
// TODO: Investigate when we should report all batery types
|
|
||||||
const auto& battery_level = controller.device->GetBattery();
|
|
||||||
shared_memory->battery_level_dual = battery_level.dual.battery_level;
|
|
||||||
shared_memory->battery_level_left = battery_level.left.battery_level;
|
|
||||||
shared_memory->battery_level_right = battery_level.right.battery_level;
|
|
||||||
|
|
||||||
controller.is_connected = true;
|
controller.is_connected = true;
|
||||||
controller.device->Connect();
|
controller.device->Connect();
|
||||||
SignalStyleSetChangedEvent(npad_id);
|
SignalStyleSetChangedEvent(npad_id);
|
||||||
|
|
|
@ -286,7 +286,7 @@ void GameList::OnUpdateThemedIcons() {
|
||||||
}
|
}
|
||||||
case GameListItemType::AddDir:
|
case GameListItemType::AddDir:
|
||||||
child->setData(
|
child->setData(
|
||||||
QIcon::fromTheme(QStringLiteral("plus"))
|
QIcon::fromTheme(QStringLiteral("list-add"))
|
||||||
.pixmap(icon_size)
|
.pixmap(icon_size)
|
||||||
.scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation),
|
.scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation),
|
||||||
Qt::DecorationRole);
|
Qt::DecorationRole);
|
||||||
|
|
|
@ -294,7 +294,7 @@ public:
|
||||||
|
|
||||||
const int icon_size = UISettings::values.folder_icon_size.GetValue();
|
const int icon_size = UISettings::values.folder_icon_size.GetValue();
|
||||||
|
|
||||||
setData(QIcon::fromTheme(QStringLiteral("plus"))
|
setData(QIcon::fromTheme(QStringLiteral("list-add"))
|
||||||
.pixmap(icon_size)
|
.pixmap(icon_size)
|
||||||
.scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation),
|
.scaled(icon_size, icon_size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation),
|
||||||
Qt::DecorationRole);
|
Qt::DecorationRole);
|
||||||
|
|
|
@ -258,6 +258,18 @@ static QString PrettyProductName() {
|
||||||
return QSysInfo::prettyProductName();
|
return QSysInfo::prettyProductName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool GMainWindow::check_dark_mode() {
|
||||||
|
#ifdef __linux__
|
||||||
|
const QPalette test_palette(qApp->palette());
|
||||||
|
const QColor text_color = test_palette.color(QPalette::Active, QPalette::Text);
|
||||||
|
const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window);
|
||||||
|
return (text_color.value() > window_color.value());
|
||||||
|
#else
|
||||||
|
// TODO: Windows
|
||||||
|
return false;
|
||||||
|
#endif // __linux__
|
||||||
|
}
|
||||||
|
|
||||||
GMainWindow::GMainWindow(bool has_broken_vulkan)
|
GMainWindow::GMainWindow(bool has_broken_vulkan)
|
||||||
: ui{std::make_unique<Ui::MainWindow>()}, system{std::make_unique<Core::System>()},
|
: ui{std::make_unique<Ui::MainWindow>()}, system{std::make_unique<Core::System>()},
|
||||||
input_subsystem{std::make_shared<InputCommon::InputSubsystem>()},
|
input_subsystem{std::make_shared<InputCommon::InputSubsystem>()},
|
||||||
|
@ -275,6 +287,13 @@ GMainWindow::GMainWindow(bool has_broken_vulkan)
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
statusBar()->hide();
|
statusBar()->hide();
|
||||||
|
|
||||||
|
// Check dark mode before a theme is loaded
|
||||||
|
os_dark_mode = check_dark_mode();
|
||||||
|
startup_icon_theme = QIcon::themeName();
|
||||||
|
// fallback can only be set once, colorful theme icons are okay on both light/dark
|
||||||
|
QIcon::setFallbackThemeName(QStringLiteral("colorful"));
|
||||||
|
QIcon::setFallbackSearchPaths(QStringList(QStringLiteral(":/icons")));
|
||||||
|
|
||||||
default_theme_paths = QIcon::themeSearchPaths();
|
default_theme_paths = QIcon::themeSearchPaths();
|
||||||
UpdateUITheme();
|
UpdateUITheme();
|
||||||
|
|
||||||
|
@ -3936,8 +3955,21 @@ void GMainWindow::filterBarSetChecked(bool state) {
|
||||||
emit(OnToggleFilterBar());
|
emit(OnToggleFilterBar());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void AdjustLinkColor() {
|
||||||
|
QPalette new_pal(qApp->palette());
|
||||||
|
if (UISettings::IsDarkTheme()) {
|
||||||
|
new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255));
|
||||||
|
} else {
|
||||||
|
new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255));
|
||||||
|
}
|
||||||
|
if (qApp->palette().color(QPalette::Link) != new_pal.color(QPalette::Link)) {
|
||||||
|
qApp->setPalette(new_pal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void GMainWindow::UpdateUITheme() {
|
void GMainWindow::UpdateUITheme() {
|
||||||
const QString default_theme = QStringLiteral("default");
|
const QString default_theme =
|
||||||
|
QString::fromUtf8(UISettings::themes[static_cast<size_t>(Config::default_theme)].second);
|
||||||
QString current_theme = UISettings::values.theme;
|
QString current_theme = UISettings::values.theme;
|
||||||
QStringList theme_paths(default_theme_paths);
|
QStringList theme_paths(default_theme_paths);
|
||||||
|
|
||||||
|
@ -3945,6 +3977,23 @@ void GMainWindow::UpdateUITheme() {
|
||||||
current_theme = default_theme;
|
current_theme = default_theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
QIcon::setThemeName(current_theme);
|
||||||
|
AdjustLinkColor();
|
||||||
|
#else
|
||||||
|
if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) {
|
||||||
|
QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme
|
||||||
|
: startup_icon_theme);
|
||||||
|
QIcon::setThemeSearchPaths(theme_paths);
|
||||||
|
if (check_dark_mode()) {
|
||||||
|
current_theme = QStringLiteral("default_dark");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
QIcon::setThemeName(current_theme);
|
||||||
|
QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons")));
|
||||||
|
AdjustLinkColor();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (current_theme != default_theme) {
|
if (current_theme != default_theme) {
|
||||||
QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)};
|
QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)};
|
||||||
QFile f(theme_uri);
|
QFile f(theme_uri);
|
||||||
|
@ -3967,17 +4016,6 @@ void GMainWindow::UpdateUITheme() {
|
||||||
qApp->setStyleSheet({});
|
qApp->setStyleSheet({});
|
||||||
setStyleSheet({});
|
setStyleSheet({});
|
||||||
}
|
}
|
||||||
|
|
||||||
QPalette new_pal(qApp->palette());
|
|
||||||
if (UISettings::IsDarkTheme()) {
|
|
||||||
new_pal.setColor(QPalette::Link, QColor(0, 190, 255, 255));
|
|
||||||
} else {
|
|
||||||
new_pal.setColor(QPalette::Link, QColor(0, 140, 200, 255));
|
|
||||||
}
|
|
||||||
qApp->setPalette(new_pal);
|
|
||||||
|
|
||||||
QIcon::setThemeName(current_theme);
|
|
||||||
QIcon::setThemeSearchPaths(theme_paths);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::LoadTranslation() {
|
void GMainWindow::LoadTranslation() {
|
||||||
|
@ -4023,6 +4061,26 @@ void GMainWindow::SetDiscordEnabled([[maybe_unused]] bool state) {
|
||||||
discord_rpc->Update();
|
discord_rpc->Update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GMainWindow::changeEvent(QEvent* event) {
|
||||||
|
#ifdef __linux__
|
||||||
|
// PaletteChange event appears to only reach so far into the GUI, explicitly asking to
|
||||||
|
// UpdateUITheme is a decent work around
|
||||||
|
if (event->type() == QEvent::PaletteChange) {
|
||||||
|
const QPalette test_palette(qApp->palette());
|
||||||
|
const QString current_theme = UISettings::values.theme;
|
||||||
|
// Keeping eye on QPalette::Window to avoid looping. QPalette::Text might be useful too
|
||||||
|
static QColor last_window_color;
|
||||||
|
const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window);
|
||||||
|
if (last_window_color != window_color && (current_theme == QStringLiteral("default") ||
|
||||||
|
current_theme == QStringLiteral("colorful"))) {
|
||||||
|
UpdateUITheme();
|
||||||
|
}
|
||||||
|
last_window_color = window_color;
|
||||||
|
}
|
||||||
|
#endif // __linux__
|
||||||
|
QWidget::changeEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef main
|
#ifdef main
|
||||||
#undef main
|
#undef main
|
||||||
#endif
|
#endif
|
||||||
|
@ -4068,6 +4126,15 @@ int main(int argc, char* argv[]) {
|
||||||
QCoreApplication::setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity);
|
QCoreApplication::setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity);
|
||||||
QApplication app(argc, argv);
|
QApplication app(argc, argv);
|
||||||
|
|
||||||
|
// Workaround for QTBUG-85409, for Suzhou numerals the number 1 is actually \u3021
|
||||||
|
// so we can see if we get \u3008 instead
|
||||||
|
// TL;DR all other number formats are consecutive in unicode code points
|
||||||
|
// This bug is fixed in Qt6, specifically 6.0.0-alpha1
|
||||||
|
const QLocale locale = QLocale::system();
|
||||||
|
if (QStringLiteral("\u3008") == locale.toString(1)) {
|
||||||
|
QLocale::setDefault(QLocale::system().name());
|
||||||
|
}
|
||||||
|
|
||||||
// Qt changes the locale and causes issues in float conversion using std::to_string() when
|
// Qt changes the locale and causes issues in float conversion using std::to_string() when
|
||||||
// generating shaders
|
// generating shaders
|
||||||
setlocale(LC_ALL, "C");
|
setlocale(LC_ALL, "C");
|
||||||
|
|
|
@ -251,6 +251,7 @@ private:
|
||||||
bool ConfirmForceLockedExit();
|
bool ConfirmForceLockedExit();
|
||||||
void RequestGameExit();
|
void RequestGameExit();
|
||||||
void RequestGameResume();
|
void RequestGameResume();
|
||||||
|
void changeEvent(QEvent* event) override;
|
||||||
void closeEvent(QCloseEvent* event) override;
|
void closeEvent(QCloseEvent* event) override;
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
|
@ -392,6 +393,10 @@ private:
|
||||||
QTimer mouse_hide_timer;
|
QTimer mouse_hide_timer;
|
||||||
QTimer mouse_center_timer;
|
QTimer mouse_center_timer;
|
||||||
|
|
||||||
|
QString startup_icon_theme;
|
||||||
|
bool os_dark_mode = false;
|
||||||
|
bool check_dark_mode();
|
||||||
|
|
||||||
// FS
|
// FS
|
||||||
std::shared_ptr<FileSys::VfsFilesystem> vfs;
|
std::shared_ptr<FileSys::VfsFilesystem> vfs;
|
||||||
std::unique_ptr<FileSys::ManualContentProvider> provider;
|
std::unique_ptr<FileSys::ManualContentProvider> provider;
|
||||||
|
|
Loading…
Reference in a new issue