[UI] Switch to green-ish theme

This commit is contained in:
Herman S.
2025-10-12 13:17:03 +09:00
parent 67e6763147
commit f86e27f2f1
3 changed files with 173 additions and 30 deletions
+2 -2
View File
@@ -147,14 +147,14 @@ void AchievementsDialogQt::SetupUI() {
" background-color: #2D2D2D;"
" alternate-background-color: #2D2D2D;"
" gridline-color: #444444;"
" selection-background-color: #3D5A80;"
" selection-background-color: rgba(16, 124, 16, 120);"
"}"
"QTableWidget::item {"
" border-bottom: 1px solid #444444;"
" padding: 0px;"
"}"
"QTableWidget::item:selected {"
" background-color: #3D5A80;"
" background-color: rgba(16, 124, 16, 120);"
"}");
// Row height - consistent minimum height with auto-resize for content
+10 -7
View File
@@ -17,6 +17,7 @@
#include <QImage>
#include <QMenu>
#include <QMessageBox>
#include <QPalette>
#include <QScrollBar>
#include <QUrl>
#include <chrono>
@@ -274,9 +275,11 @@ void GameListDialogQt::SetupUI() {
table_widget_->setContextMenuPolicy(Qt::CustomContextMenu);
table_widget_->setMouseTracking(true);
// Disable default table item hover highlighting (we handle it in row widget)
// Set Xbox green theme for table
table_widget_->setStyleSheet(
"QTableWidget::item:hover { background-color: transparent; }");
"QTableWidget::item:hover { background-color: transparent; }"
"QTableWidget::item:selected { background-color: rgba(16, 124, 16, 120); "
"}");
// Auto-hide scrollbar - only show when hovering or scrolling
table_widget_->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
@@ -610,7 +613,7 @@ void GameListDialogQt::PopulateTable() {
row_widget->setObjectName("GameListRow");
row_widget->setStyleSheet(
"#GameListRow { border-bottom: 1px solid rgba(128, 128, 128, 50); }"
"#GameListRow:hover { background-color: rgba(128, 128, 128, 50); }");
"#GameListRow:hover { background-color: rgba(16, 124, 16, 80); }");
auto* row_layout = new QHBoxLayout(row_widget);
row_layout->setContentsMargins(10, 10, 10, 10);
row_layout->setSpacing(15);
@@ -1234,12 +1237,12 @@ void GameListDialogQt::ShowScrollbar() {
" margin: 0px;"
"}"
"QScrollBar::handle:vertical {"
" background: rgba(128, 128, 128, 180);"
" background: rgba(16, 124, 16, 180);"
" min-height: 20px;"
" border-radius: 5px;"
"}"
"QScrollBar::handle:vertical:hover {"
" background: rgba(128, 128, 128, 220);"
" background: rgba(16, 124, 16, 220);"
"}"
"QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {"
" height: 0px;"
@@ -1268,12 +1271,12 @@ void GameListDialogQt::HideScrollbar() {
" margin: 0px;"
"}"
"QScrollBar::handle:vertical {"
" background: rgba(128, 128, 128, 0);"
" background: rgba(16, 124, 16, 0);"
" min-height: 20px;"
" border-radius: 5px;"
"}"
"QScrollBar::handle:vertical:hover {"
" background: rgba(128, 128, 128, 180);"
" background: rgba(16, 124, 16, 180);"
"}"
"QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {"
" height: 0px;"
+161 -21
View File
@@ -32,25 +32,43 @@ int main(int argc, char** argv) {
QApplication qt_app(argc, argv);
// Force dark theme
// Force Fusion style to ensure consistent styling across platforms
qt_app.setStyle("Fusion");
// Force dark theme with Xbox green highlights
QPalette dark_palette;
dark_palette.setColor(QPalette::Window, QColor(53, 53, 53));
dark_palette.setColor(QPalette::WindowText, Qt::white);
dark_palette.setColor(QPalette::Base, QColor(35, 35, 35));
dark_palette.setColor(QPalette::AlternateBase, QColor(53, 53, 53));
dark_palette.setColor(QPalette::ToolTipBase, QColor(25, 25, 25));
dark_palette.setColor(QPalette::ToolTipText, Qt::white);
dark_palette.setColor(QPalette::Text, Qt::white);
dark_palette.setColor(QPalette::Button, QColor(53, 53, 53));
dark_palette.setColor(QPalette::ButtonText, Qt::white);
dark_palette.setColor(QPalette::BrightText, Qt::red);
dark_palette.setColor(QPalette::Link, QColor(42, 130, 218));
dark_palette.setColor(QPalette::Highlight, QColor(42, 130, 218));
dark_palette.setColor(QPalette::HighlightedText, Qt::black);
dark_palette.setColor(QPalette::Disabled, QPalette::Text,
QColor(127, 127, 127));
dark_palette.setColor(QPalette::Disabled, QPalette::ButtonText,
QColor(127, 127, 127));
// Set colors for all color groups (Active, Inactive, Disabled) to avoid any
// blue
for (auto group :
{QPalette::Active, QPalette::Inactive, QPalette::Disabled}) {
dark_palette.setColor(group, QPalette::Window, QColor(53, 53, 53));
dark_palette.setColor(group, QPalette::WindowText, Qt::white);
dark_palette.setColor(group, QPalette::Base, QColor(35, 35, 35));
dark_palette.setColor(group, QPalette::AlternateBase, QColor(53, 53, 53));
dark_palette.setColor(group, QPalette::ToolTipBase, QColor(25, 25, 25));
dark_palette.setColor(group, QPalette::ToolTipText, Qt::white);
dark_palette.setColor(
group, QPalette::Text,
group == QPalette::Disabled ? QColor(127, 127, 127) : Qt::white);
dark_palette.setColor(group, QPalette::Button, QColor(53, 53, 53));
dark_palette.setColor(
group, QPalette::ButtonText,
group == QPalette::Disabled ? QColor(127, 127, 127) : Qt::white);
dark_palette.setColor(group, QPalette::BrightText, Qt::red);
dark_palette.setColor(group, QPalette::Link, QColor(16, 124, 16));
dark_palette.setColor(group, QPalette::LinkVisited, QColor(14, 106, 14));
dark_palette.setColor(group, QPalette::Highlight,
group == QPalette::Disabled ? QColor(14, 106, 14)
: QColor(16, 124, 16));
dark_palette.setColor(group, QPalette::HighlightedText, Qt::white);
dark_palette.setColor(group, QPalette::Light, QColor(80, 80, 80));
dark_palette.setColor(group, QPalette::Midlight, QColor(66, 66, 66));
dark_palette.setColor(group, QPalette::Dark, QColor(26, 26, 26));
dark_palette.setColor(group, QPalette::Mid, QColor(40, 40, 40));
dark_palette.setColor(group, QPalette::Shadow, Qt::black);
}
qt_app.setPalette(dark_palette);
// Fix menu spacing and styling
@@ -58,6 +76,14 @@ int main(int argc, char** argv) {
"QMenuBar::item { "
" padding: 5px 10px; "
"} "
"QMenuBar::item:selected { "
" background-color: rgb(16, 124, 16); "
" color: white; "
"} "
"QMenuBar::item:pressed { "
" background-color: rgb(16, 124, 16); "
" color: white; "
"} "
"QMenu { "
" background-color: rgb(53, 53, 53); "
" border: 1px solid rgb(80, 80, 80); "
@@ -68,10 +94,124 @@ int main(int argc, char** argv) {
" background-color: transparent; "
"} "
"QMenu::item:selected { "
" background-color: rgb(42, 130, 218); "
" color: black; "
" background-color: rgb(16, 124, 16); "
" color: white; "
"} "
"QMenu::indicator { width: 0px; margin-left: 0px; }");
"QMenu::indicator { width: 0px; margin-left: 0px; } "
// Scrollbars - Xbox green theme
"QScrollBar:vertical { "
" border: none; "
" background: transparent; "
" width: 12px; "
" margin: 0px; "
"} "
"QScrollBar::handle:vertical { "
" background: rgba(16, 124, 16, 180); "
" min-height: 20px; "
" border-radius: 6px; "
"} "
"QScrollBar::handle:vertical:hover { "
" background: rgba(16, 124, 16, 220); "
"} "
"QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { "
" height: 0px; "
"} "
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { "
" background: none; "
"} "
"QScrollBar:horizontal { "
" border: none; "
" background: transparent; "
" height: 12px; "
" margin: 0px; "
"} "
"QScrollBar::handle:horizontal { "
" background: rgba(16, 124, 16, 180); "
" min-width: 20px; "
" border-radius: 6px; "
"} "
"QScrollBar::handle:horizontal:hover { "
" background: rgba(16, 124, 16, 220); "
"} "
"QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal { "
" width: 0px; "
"} "
"QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { "
" background: none; "
"} "
// Table headers - Xbox green theme
"QHeaderView::section { "
" background-color: rgb(45, 45, 45); "
" color: white; "
" padding: 5px; "
" border: 1px solid rgb(80, 80, 80); "
"} "
"QHeaderView::section:hover { "
" background-color: rgb(16, 124, 16); "
"} "
// Table widgets - Xbox green focus outline
"QTableWidget:focus, QTableView:focus { "
" border: 2px solid rgb(16, 124, 16); "
" outline: none; "
"} "
"QTableWidget, QTableView { "
" border: 1px solid rgb(80, 80, 80); "
"} "
// Checkboxes - Xbox green theme
"QCheckBox::indicator:checked { "
" background-color: rgb(16, 124, 16); "
" border: 1px solid rgb(16, 124, 16); "
"} "
"QCheckBox::indicator:hover { "
" border: 1px solid rgb(16, 124, 16); "
"} "
// Input fields - Xbox green focus
"QLineEdit:focus, QTextEdit:focus, QPlainTextEdit:focus, QSpinBox:focus, "
"QDoubleSpinBox:focus, QComboBox:focus { "
" border: 2px solid rgb(16, 124, 16); "
" outline: none; "
"} "
"QLineEdit, QTextEdit, QPlainTextEdit, QSpinBox, QDoubleSpinBox, "
"QComboBox { "
" border: 1px solid rgb(80, 80, 80); "
"} "
// ComboBox dropdown - Xbox green theme
"QComboBox:hover { "
" border: 2px solid rgb(16, 124, 16); "
"} "
"QComboBox:on { "
" border: 2px solid rgb(16, 124, 16); "
"} "
"QComboBox::drop-down:hover { "
" background-color: rgba(16, 124, 16, 100); "
"} "
"QComboBox QAbstractItemView::item:hover { "
" background-color: rgba(16, 124, 16, 80); "
"} "
// List widgets - Xbox green theme
"QListView::item:selected, QTreeView::item:selected { "
" background-color: rgb(16, 124, 16); "
" color: white; "
"} "
"QListView::item:hover, QTreeView::item:hover { "
" background-color: rgba(16, 124, 16, 80); "
"} "
// Buttons hover - Xbox green theme
"QPushButton:hover { "
" background-color: rgba(16, 124, 16, 100); "
" border: 1px solid rgb(16, 124, 16); "
"} "
"QPushButton:pressed { "
" background-color: rgb(16, 124, 16); "
"} "
// Tab widget - Xbox green theme
"QTabBar::tab:selected { "
" background-color: rgb(16, 124, 16); "
" color: white; "
"} "
"QTabBar::tab:hover { "
" background-color: rgba(16, 124, 16, 100); "
"}");
// Set different application name for game processes so they show as separate
// dock entries. Check if we have a target file argument (game process) or not