diff --git a/src/calcwidget.cpp b/src/calcwidget.cpp index dbfbdfc..93bd7b9 100644 --- a/src/calcwidget.cpp +++ b/src/calcwidget.cpp @@ -6,6 +6,8 @@ #include "calcwidget.h" #include "ui_calcwidget.h" #include "mainwindow.h" +#include "components.h" +#include "utils/ColorScheme.h" CalcWidget::CalcWidget(QWidget *parent) : QWidget(parent), @@ -15,8 +17,7 @@ CalcWidget::CalcWidget(QWidget *parent) : m_ctx = MainWindow::getContext(); ui->imageExchange->setBackgroundRole(QPalette::Base); - QPixmap pm(":/assets/images/exchange.png"); - ui->imageExchange->setPixmap(pm); + ui->imageExchange->setAssets(":/assets/images/exchange.png", ":/assets/images/exchange_white.png"); ui->imageExchange->setScaledContents(true); ui->imageExchange->setFixedSize(26, 26); @@ -134,6 +135,10 @@ void CalcWidget::initComboBox() { this->m_comboBoxInit = true; } +void CalcWidget::skinChanged() { + ui->imageExchange->setMode(ColorScheme::hasDarkBackground(this)); +} + CalcWidget::~CalcWidget() { delete ui; } diff --git a/src/calcwidget.h b/src/calcwidget.h index 04d6e8b..42f94bf 100644 --- a/src/calcwidget.h +++ b/src/calcwidget.h @@ -28,6 +28,7 @@ public slots: void toComboChanged(const QString& data); void initFiat(); void initCrypto(); + void skinChanged(); private: Ui::CalcWidget *ui; diff --git a/src/calcwidget.ui b/src/calcwidget.ui index 674516b..dbd49bb 100644 --- a/src/calcwidget.ui +++ b/src/calcwidget.ui @@ -84,7 +84,7 @@ - + exchange image @@ -159,6 +159,13 @@ + + + DoublePixmapLabel + QLabel +
components.h
+
+
diff --git a/src/components.cpp b/src/components.cpp index 9e3ae51..4e02c65 100644 --- a/src/components.cpp +++ b/src/components.cpp @@ -5,6 +5,24 @@ #include +DoublePixmapLabel::DoublePixmapLabel(QWidget *parent) + : QLabel(parent) +{} + +void DoublePixmapLabel::setAssets(const QString &firstAsset, const QString &secondAsset) +{ + m_first.load(firstAsset); + m_second.load(secondAsset); + this->setPixmap(m_first); +} + +void DoublePixmapLabel::setMode(bool mode) { + if (mode != m_mode) { + this->setPixmap(mode ? m_second : m_first); + } + m_mode = mode; +} + StatusBarButton::StatusBarButton(const QIcon &icon, const QString &tooltip, QWidget *parent) : QPushButton(parent) { setIcon(icon); setToolTip(tooltip); diff --git a/src/components.h b/src/components.h index 996fdbc..546c27b 100644 --- a/src/components.h +++ b/src/components.h @@ -11,6 +11,23 @@ #include #include +class DoublePixmapLabel : public QLabel +{ +Q_OBJECT + +public: + explicit DoublePixmapLabel(QWidget *parent = nullptr); + +public slots: + void setAssets(const QString &firstAsset, const QString &secondAsset); + void setMode(bool mode); + +private: + bool m_mode = false; + QPixmap m_first; + QPixmap m_second; +}; + class StatusBarButton : public QPushButton { Q_OBJECT diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4191ef6..0f3c6fc 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1019,6 +1019,8 @@ void MainWindow::skinChanged(const QString &skinName) { qApp->setStyleSheet(m_skins[skinName]); qDebug() << QString("Skin changed to %1").arg(skinName); ColorScheme::updateFromWidget(this); + + ui->conversionWidget->skinChanged(); } void MainWindow::closeEvent(QCloseEvent *event) { diff --git a/src/utils/ColorScheme.cpp b/src/utils/ColorScheme.cpp index be4555a..4862c11 100644 --- a/src/utils/ColorScheme.cpp +++ b/src/utils/ColorScheme.cpp @@ -20,7 +20,7 @@ bool ColorScheme::hasDarkBackground(QWidget *widget) { } void ColorScheme::updateFromWidget(QWidget *widget, bool forceDark) { - darkScheme = forceDark or ColorScheme::hasDarkBackground(widget); + darkScheme = forceDark || ColorScheme::hasDarkBackground(widget); } QString ColorSchemeItem::asStylesheet(bool background) {