From 6fce8bd2ca4056ce5a66c2a0c4596fac05bc9c81 Mon Sep 17 00:00:00 2001 From: BearOso Date: Sun, 20 Aug 2023 14:01:13 -0500 Subject: [PATCH] Qt: Clean up style tweaking. --- qt/src/BindingPanel.cpp | 4 +--- qt/src/ControllerPanel.cpp | 3 +-- qt/src/EmuApplication.cpp | 18 ++++++++++++++++++ qt/src/EmuApplication.hpp | 3 ++- qt/src/EmuMainWindow.cpp | 5 +---- qt/src/EmuSettingsWindow.cpp | 5 +---- qt/src/main.cpp | 3 --- 7 files changed, 24 insertions(+), 17 deletions(-) diff --git a/qt/src/BindingPanel.cpp b/qt/src/BindingPanel.cpp index d4c976cd..add2b292 100644 --- a/qt/src/BindingPanel.cpp +++ b/qt/src/BindingPanel.cpp @@ -12,9 +12,7 @@ BindingPanel::BindingPanel(EmuApplication *app) void BindingPanel::setTableWidget(QTableWidget *bindingTableWidget, EmuBinding *binding, int width, int height) { - QString iconset = ":/icons/blackicons/"; - if (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark) - iconset = ":/icons/whiteicons/"; + QString iconset = app->iconPrefix(); keyboard_icon.addFile(iconset + "key.svg"); joypad_icon.addFile(iconset + "joypad.svg"); this->binding_table_widget = bindingTableWidget; diff --git a/qt/src/ControllerPanel.cpp b/qt/src/ControllerPanel.cpp index dc8804af..d5b7a5b4 100644 --- a/qt/src/ControllerPanel.cpp +++ b/qt/src/ControllerPanel.cpp @@ -6,7 +6,6 @@ #include #include #include -#include ControllerPanel::ControllerPanel(EmuApplication *app) : BindingPanel(app) @@ -49,7 +48,7 @@ ControllerPanel::ControllerPanel(EmuApplication *app) editToolButton->setMenu(&edit_menu); editToolButton->setPopupMode(QToolButton::InstantPopup); - QString iconset = QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark ? ":/icons/whiteicons/" : ":/icons/blackicons/"; + QString iconset = app->iconPrefix(); const char *icons[] = { "up", "down", "left", "right", "a", "b", "x", "y", "l", "r", "start", "select", "a", "b", "x", "y", "l", "r" }; diff --git a/qt/src/EmuApplication.cpp b/qt/src/EmuApplication.cpp index 0455edfe..a7cca90c 100644 --- a/qt/src/EmuApplication.cpp +++ b/qt/src/EmuApplication.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include using namespace std::chrono_literals; @@ -523,6 +524,23 @@ bool EmuApplication::isCoreActive() return core->active; } +QString EmuApplication::iconPrefix() +{ + const char *whiteicons = ":/icons/whiteicons/"; + const char *blackicons = ":/icons/blackicons/"; + + if (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark) + return whiteicons; + if (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Light) + return blackicons; + + if (QGuiApplication::palette().color(QPalette::WindowText).lightness() > + QGuiApplication::palette().color(QPalette::Window).lightness()) + return whiteicons; + + return blackicons; +} + void EmuThread::runOnThread(std::function func, bool blocking) { if (QThread::currentThread() != this) diff --git a/qt/src/EmuApplication.hpp b/qt/src/EmuApplication.hpp index 4e61c302..90b08bda 100644 --- a/qt/src/EmuApplication.hpp +++ b/qt/src/EmuApplication.hpp @@ -37,7 +37,7 @@ Q_OBJECT }; int status = eDead; - + public slots: void runOnThread(std::function func, bool blocking = false); }; @@ -82,6 +82,7 @@ struct EmuApplication void startThread(); void stopThread(); bool isCoreActive(); + QString iconPrefix(); enum Handler { diff --git a/qt/src/EmuMainWindow.cpp b/qt/src/EmuMainWindow.cpp index a2b8d322..1b45f59e 100644 --- a/qt/src/EmuMainWindow.cpp +++ b/qt/src/EmuMainWindow.cpp @@ -309,10 +309,7 @@ void EmuMainWindow::createWidgets() tr("&Controllers..."), tr("Shortcu&ts..."), tr("&Files...") }; - QString iconset = - QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark - ? ":/icons/whiteicons/" - : ":/icons/blackicons/"; + QString iconset = app->iconPrefix(); const char *setting_icons[] = { "settings.svg", "display.svg", "sound.svg", diff --git a/qt/src/EmuSettingsWindow.cpp b/qt/src/EmuSettingsWindow.cpp index 9b822336..9362ec6c 100644 --- a/qt/src/EmuSettingsWindow.cpp +++ b/qt/src/EmuSettingsWindow.cpp @@ -3,7 +3,6 @@ #include "EmuConfig.hpp" #include -#include #include EmuSettingsWindow::EmuSettingsWindow(QWidget *parent, EmuApplication *app_) @@ -46,9 +45,7 @@ EmuSettingsWindow::EmuSettingsWindow(QWidget *parent, EmuApplication *app_) stackedWidget->setCurrentIndex(panelList->currentRow()); }); - QString iconset = ":/icons/whiteicons/"; - if (QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Light) - iconset = ":/icons/blackicons/"; + auto iconset = app->iconPrefix(); auto icon = [iconset](QString name) -> QIcon { return QIcon(iconset + name); }; panelList->item(0)->setIcon(icon("settings.svg")); diff --git a/qt/src/main.cpp b/qt/src/main.cpp index 4717ee95..d2c4fd34 100644 --- a/qt/src/main.cpp +++ b/qt/src/main.cpp @@ -3,8 +3,6 @@ #include "EmuMainWindow.hpp" #include "SDLInputManager.hpp" -#include -#include #include #include @@ -26,7 +24,6 @@ int main(int argc, char *argv[]) emu.qtapp = std::make_unique(argc, argv); QGuiApplication::setDesktopFileName("snes9x-gtk"); - //emu.qtapp->setStyle("fusion"); #ifndef _WIN32 auto quit_handler = [](int) { QApplication::quit(); };