From c7c013978819d7c22f1ade584b3a3491c16a4936 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Tue, 22 Aug 2017 09:20:18 +0200 Subject: [PATCH] stylesheets: add custom color to gamepad --- rpcs3/rpcs3_app.cpp | 1 + rpcs3/rpcs3qt/gui_settings.cpp | 27 ++++++++++++++++++++------- rpcs3/rpcs3qt/gui_settings.h | 3 ++- rpcs3/rpcs3qt/main_window.cpp | 4 ++-- rpcs3/rpcs3qt/pad_settings_dialog.cpp | 3 ++- rpcs3/rpcs3qt/pad_settings_dialog.h | 3 ++- 6 files changed, 29 insertions(+), 12 deletions(-) diff --git a/rpcs3/rpcs3_app.cpp b/rpcs3/rpcs3_app.cpp index bc43ac5b80..ac200a3758 100644 --- a/rpcs3/rpcs3_app.cpp +++ b/rpcs3/rpcs3_app.cpp @@ -319,6 +319,7 @@ void rpcs3_app::OnChangeStyleSheetRequest(const QString& sheetFilePath) // other objects' stylesheet QString style_rest = QString( "QWidget#header_section { background-color: #ffffff; }" + "QLabel#l_controller { color: #434343; }" "QLabel#gamegrid_font { font-weight: 600; font-size: 8pt; font-family: Lucida Grande; color: rgba(51, 51, 51, 255); }"); setStyleSheet(style_toolbar + style_toolbar_icons + style_gamelist_toolbar + style_gamelist_icons + style_rest); diff --git a/rpcs3/rpcs3qt/gui_settings.cpp b/rpcs3/rpcs3qt/gui_settings.cpp index 05930f9b56..b5ca8e1d5a 100644 --- a/rpcs3/rpcs3qt/gui_settings.cpp +++ b/rpcs3/rpcs3qt/gui_settings.cpp @@ -76,9 +76,23 @@ q_pair_list gui_settings::Var2List(const QVariant& var) return list; } -QIcon gui_settings::colorizedIcon(const QIcon& icon, const QColor& oldColor, const QColor& newColor, bool useSpecialMasks) +QIcon gui_settings::colorizedIcon(const QIcon& icon, const QColor& oldColor, const QColor& newColor, bool useSpecialMasks, bool colorizeAll) { - QPixmap pixmap = icon.pixmap(icon.availableSizes().at(0)); + return QIcon(colorizedPixmap(icon.pixmap(icon.availableSizes().at(0)), oldColor, newColor, useSpecialMasks, colorizeAll)); +} + +QPixmap gui_settings::colorizedPixmap(const QPixmap& old_pixmap, const QColor& oldColor, const QColor& newColor, bool useSpecialMasks, bool colorizeAll) +{ + QPixmap pixmap = old_pixmap; + + if (colorizeAll) + { + QBitmap mask = pixmap.createMaskFromColor(Qt::transparent, Qt::MaskInColor); + pixmap.fill(newColor); + pixmap.setMask(mask); + return pixmap; + } + QBitmap mask = pixmap.createMaskFromColor(oldColor, Qt::MaskOutColor); pixmap.fill(newColor); pixmap.setMask(mask); @@ -96,19 +110,19 @@ QIcon gui_settings::colorizedIcon(const QIcon& icon, const QColor& oldColor, con }; QColor colorS1(Qt::white); - QPixmap pixmapS1 = icon.pixmap(icon.availableSizes().at(0)); + QPixmap pixmapS1 = old_pixmap; QBitmap maskS1 = pixmapS1.createMaskFromColor(colorS1, Qt::MaskOutColor); pixmapS1.fill(colorS1); pixmapS1.setMask(maskS1); QColor colorS2(0, 173, 246, 255); - QPixmap pixmapS2 = icon.pixmap(icon.availableSizes().at(0)); + QPixmap pixmapS2 = old_pixmap; QBitmap maskS2 = pixmapS2.createMaskFromColor(colorS2, Qt::MaskOutColor); pixmapS2.fill(saturatedColor(newColor, 0.6f)); pixmapS2.setMask(maskS2); QColor colorS3(0, 132, 244, 255); - QPixmap pixmapS3 = icon.pixmap(icon.availableSizes().at(0)); + QPixmap pixmapS3 = old_pixmap; QBitmap maskS3 = pixmapS3.createMaskFromColor(colorS3, Qt::MaskOutColor); pixmapS3.fill(saturatedColor(newColor, 0.3f)); pixmapS3.setMask(maskS3); @@ -119,8 +133,7 @@ QIcon gui_settings::colorizedIcon(const QIcon& icon, const QColor& oldColor, con painter.drawPixmap(QPoint(0, 0), pixmapS3); painter.end(); } - - return QIcon(pixmap); + return pixmap; } void gui_settings::SetValue(const GUI_SAVE& entry, const QVariant& value) diff --git a/rpcs3/rpcs3qt/gui_settings.h b/rpcs3/rpcs3qt/gui_settings.h index e779c66e10..f3f6eedeb7 100644 --- a/rpcs3/rpcs3qt/gui_settings.h +++ b/rpcs3/rpcs3qt/gui_settings.h @@ -180,7 +180,8 @@ public: @param newColor the desired color for the new icon @param useSpecialMasks only used for icons with white parts and disc game icon */ - static QIcon colorizedIcon(const QIcon& icon, const QColor& oldColor, const QColor& newColor, bool useSpecialMasks = false); + static QIcon colorizedIcon(const QIcon& icon, const QColor& oldColor, const QColor& newColor, bool useSpecialMasks = false, bool colorizeAll = false); + static QPixmap colorizedPixmap(const QPixmap& old_pixmap, const QColor& oldColor, const QColor& newColor, bool useSpecialMasks = false, bool colorizeAll = false); public Q_SLOTS: void Reset(bool removeMeta = false); diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index a74b5b6474..7c9a0f2ce0 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -1153,7 +1153,7 @@ void main_window::CreateConnects() connect(ui->confSystemAct, &QAction::triggered, [=]() { openSettings(4); }); connect(ui->confPadAct, &QAction::triggered, this, [=](){ - pad_settings_dialog dlg(this); + pad_settings_dialog dlg(guiSettings, this); dlg.exec(); }); connect(ui->confAutopauseManagerAct, &QAction::triggered, [=](){ @@ -1305,7 +1305,7 @@ void main_window::CreateConnects() ui->toolbar_fullscreen->setIcon(icon_fullscreen_off); } }); - connect(ui->toolbar_controls, &QAction::triggered, [=]() { pad_settings_dialog dlg(this); dlg.exec(); }); + connect(ui->toolbar_controls, &QAction::triggered, [=]() { pad_settings_dialog dlg(guiSettings, this); dlg.exec(); }); connect(ui->toolbar_config, &QAction::triggered, [=]() { openSettings(0); }); connect(ui->toolbar_list, &QAction::triggered, [=]() { ui->setlistModeListAct->trigger(); }); connect(ui->toolbar_grid, &QAction::triggered, [=]() { ui->setlistModeGridAct->trigger(); }); diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index 18d8aecba8..ea7849d405 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -18,7 +18,7 @@ static const int PadButtonWidth = 60; extern keyboard_pad_config g_kbpad_config; -pad_settings_dialog::pad_settings_dialog(QWidget *parent) : QDialog(parent), ui(new Ui::pad_settings_dialog) +pad_settings_dialog::pad_settings_dialog(std::shared_ptr gui_settings, QWidget *parent) : QDialog(parent), ui(new Ui::pad_settings_dialog) { ui->setupUi(this); @@ -67,6 +67,7 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent) : QDialog(parent), ui( g_kbpad_config.load(); UpdateLabel(); + ui->l_controller->setPixmap(gui_settings->colorizedPixmap(*ui->l_controller->pixmap(), QColor(), GUI::get_Label_Color("l_controller"), false, true)); ui->l_controller->setMaximumSize(ui->gb_description->sizeHint().width(), ui->l_controller->maximumHeight() * ui->gb_description->sizeHint().width() / ui->l_controller->maximumWidth()); layout()->setSizeConstraint(QLayout::SetFixedSize); } diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.h b/rpcs3/rpcs3qt/pad_settings_dialog.h index a8fcdc631e..8f5527dfc5 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.h +++ b/rpcs3/rpcs3qt/pad_settings_dialog.h @@ -9,6 +9,7 @@ #include "Emu/Io/PadHandler.h" #include "stdafx.h" #include "Emu/System.h" +#include "gui_settings.h" enum button_ids { @@ -69,7 +70,7 @@ private: public: // TODO get Init to work virtual void Init(const u32 max_connect) override; - explicit pad_settings_dialog(QWidget *parent = 0); + explicit pad_settings_dialog(std::shared_ptr gui_settings, QWidget *parent = 0); ~pad_settings_dialog(); void keyPressEvent(QKeyEvent *keyEvent) override; void UpdateLabel();