diff --git a/src/Makefile.qt.include b/src/Makefile.qt.include index 7d2f9055ba3e..a4eacd3f0359 100644 --- a/src/Makefile.qt.include +++ b/src/Makefile.qt.include @@ -305,18 +305,14 @@ BITCOIN_QT_CPP += $(BITCOIN_QT_WALLET_CPP) endif RES_IMAGES = \ - qt/res/images/arrow_down_normal.png \ - qt/res/images/arrow_down_hover.png \ - qt/res/images/arrow_down_pressed.png \ - qt/res/images/arrow_left_normal.png \ - qt/res/images/arrow_left_hover.png \ - qt/res/images/arrow_left_pressed.png \ - qt/res/images/arrow_right_normal.png \ - qt/res/images/arrow_right_hover.png \ - qt/res/images/arrow_right_pressed.png \ - qt/res/images/arrow_up_normal.png \ - qt/res/images/arrow_up_hover.png \ - qt/res/images/arrow_up_pressed.png \ + qt/res/images/arrow_down_dark.png \ + qt/res/images/arrow_down_light.png \ + qt/res/images/arrow_left_dark.png \ + qt/res/images/arrow_left_light.png \ + qt/res/images/arrow_right_dark.png \ + qt/res/images/arrow_right_light.png \ + qt/res/images/arrow_up_dark.png \ + qt/res/images/arrow_up_light.png \ qt/res/images/arrow_light_down_normal.png \ qt/res/images/arrow_light_down_hover.png \ qt/res/images/arrow_light_left_normal.png \ @@ -325,29 +321,39 @@ RES_IMAGES = \ qt/res/images/arrow_light_right_hover.png \ qt/res/images/arrow_light_up_normal.png \ qt/res/images/arrow_light_up_hover.png \ - qt/res/images/checkbox_normal.png \ - qt/res/images/checkbox_normal_hover.png \ - qt/res/images/checkbox_normal_pressed.png \ - qt/res/images/checkbox_normal_disabled.png \ - qt/res/images/checkbox_checked.png \ - qt/res/images/checkbox_checked_hover.png \ - qt/res/images/checkbox_checked_pressed.png \ - qt/res/images/checkbox_checked_disabled.png \ - qt/res/images/checkbox_partly_checked.png \ - qt/res/images/checkbox_partly_checked_hover.png \ - qt/res/images/checkbox_partly_checked_pressed.png \ - qt/res/images/checkbox_partly_checked_disabled.png \ + qt/res/images/checkbox_normal_dark.png \ + qt/res/images/checkbox_normal_hover_dark.png \ + qt/res/images/checkbox_normal_disabled_dark.png \ + qt/res/images/checkbox_checked_dark.png \ + qt/res/images/checkbox_checked_hover_dark.png \ + qt/res/images/checkbox_checked_disabled_dark.png \ + qt/res/images/checkbox_partly_checked_dark.png \ + qt/res/images/checkbox_partly_checked_hover_dark.png \ + qt/res/images/checkbox_partly_checked_disabled_dark.png \ + qt/res/images/checkbox_normal_light.png \ + qt/res/images/checkbox_normal_hover_light.png \ + qt/res/images/checkbox_normal_disabled_light.png \ + qt/res/images/checkbox_checked_light.png \ + qt/res/images/checkbox_checked_hover_light.png \ + qt/res/images/checkbox_checked_disabled_light.png \ + qt/res/images/checkbox_partly_checked_light.png \ + qt/res/images/checkbox_partly_checked_hover_light.png \ + qt/res/images/checkbox_partly_checked_disabled_light.png \ qt/res/images/dash_logo_horizontal.png \ qt/res/images/dash_logo_toolbar.png \ qt/res/images/dash_logo_toolbar_blue.png \ - qt/res/images/radio_normal.png \ - qt/res/images/radio_normal_hover.png \ - qt/res/images/radio_normal_pressed.png \ - qt/res/images/radio_checked.png \ - qt/res/images/radio_checked_hover.png \ - qt/res/images/radio_checked_pressed.png \ - qt/res/images/radio_normal_disabled.png \ - qt/res/images/radio_checked_disabled.png \ + qt/res/images/radio_normal_dark.png \ + qt/res/images/radio_normal_hover_dark.png \ + qt/res/images/radio_checked_dark.png \ + qt/res/images/radio_checked_hover_dark.png \ + qt/res/images/radio_normal_disabled_dark.png \ + qt/res/images/radio_checked_disabled_dark.png \ + qt/res/images/radio_normal_light.png \ + qt/res/images/radio_normal_hover_light.png \ + qt/res/images/radio_checked_light.png \ + qt/res/images/radio_checked_hover_light.png \ + qt/res/images/radio_normal_disabled_light.png \ + qt/res/images/radio_checked_disabled_light.png \ qt/res/images/splash.png RES_CSS = \ diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 994b84543eab..776ef2b0592f 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -1006,21 +1006,21 @@ void BitcoinGUI::updateNetworkState() QString icon; switch(count) { - case 0: icon = ":/icons/connect_0"; break; - case 1: case 2: case 3: icon = ":/icons/connect_1"; break; - case 4: case 5: case 6: icon = ":/icons/connect_2"; break; - case 7: case 8: case 9: icon = ":/icons/connect_3"; break; - default: icon = ":/icons/connect_4"; break; + case 0: icon = "connect_0"; break; + case 1: case 2: case 3: icon = "connect_1"; break; + case 4: case 5: case 6: icon = "connect_2"; break; + case 7: case 8: case 9: icon = "connect_3"; break; + default: icon = "connect_4"; break; } if (clientModel->getNetworkActive()) { labelConnectionsIcon->setToolTip(tr("%n active connection(s) to Dash network", "", count)); } else { labelConnectionsIcon->setToolTip(tr("Network activity disabled")); - icon = ":/icons/network_disabled"; + icon = "network_disabled"; } - labelConnectionsIcon->setPixmap(QIcon(icon).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + labelConnectionsIcon->setPixmap(GUIUtil::getIcon(icon).pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); } void BitcoinGUI::setNumConnections(int count) @@ -1138,8 +1138,8 @@ void BitcoinGUI::setNumBlocks(int count, const QDateTime& blockDate, double nVer tooltip = tr("Catching up...") + QString("
") + tooltip; if(count != prevBlocks) { - labelBlocksIcon->setPixmap(QIcon(QString( - ":/movies/spinner-%1").arg(spinnerFrame, 3, 10, QChar('0'))) + labelBlocksIcon->setPixmap(GUIUtil::getIcon(QString( + "spinner-%1").arg(spinnerFrame, 3, 10, QChar('0')), GUIUtil::ThemedColor::BLUE, MOVIES_PATH) .pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES; } @@ -1194,11 +1194,11 @@ void BitcoinGUI::setAdditionalDataSyncProgress(double nSyncProgress) if(masternodeSync.IsSynced()) { progressBarLabel->setVisible(false); progressBar->setVisible(false); - labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + labelBlocksIcon->setPixmap(GUIUtil::getIcon("synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); } else { - labelBlocksIcon->setPixmap(QIcon(QString( - ":/movies/spinner-%1").arg(spinnerFrame, 3, 10, QChar('0'))) + labelBlocksIcon->setPixmap(GUIUtil::getIcon(QString( + "spinner-%1").arg(spinnerFrame, 3, 10, QChar('0')), GUIUtil::ThemedColor::BLUE, MOVIES_PATH) .pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); spinnerFrame = (spinnerFrame + 1) % SPINNER_FRAMES; @@ -1301,6 +1301,19 @@ void BitcoinGUI::changeEvent(QEvent *e) } } #endif + if (e->type() == QEvent::StyleChange) { + updateNetworkState(); +#ifdef ENABLE_WALLET + updateWalletStatus(); +#endif + if (masternodeSync.IsSynced()) { + labelBlocksIcon->setPixmap(GUIUtil::getIcon("synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + } else { + labelBlocksIcon->setPixmap(GUIUtil::getIcon(QString( + "spinner-%1").arg(spinnerFrame, 3, 10, QChar('0')), GUIUtil::ThemedColor::BLUE, MOVIES_PATH) + .pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + } + } } void BitcoinGUI::closeEvent(QCloseEvent *event) @@ -1470,7 +1483,7 @@ bool BitcoinGUI::handlePaymentRequest(const SendCoinsRecipient& recipient) void BitcoinGUI::setHDStatus(int hdEnabled) { - labelWalletHDStatusIcon->setPixmap(QIcon(hdEnabled ? ":/icons/hd_enabled" : ":/icons/hd_disabled").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); + labelWalletHDStatusIcon->setPixmap(GUIUtil::getIcon(hdEnabled ? "hd_enabled" : "hd_disabled").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletHDStatusIcon->setToolTip(hdEnabled ? tr("HD key generation is enabled") : tr("HD key generation is disabled")); // eventually disable the QLabel to set its opacity to 50% @@ -1491,7 +1504,7 @@ void BitcoinGUI::setEncryptionStatus(int status) break; case WalletModel::Unlocked: labelWalletEncryptionIcon->show(); - labelWalletEncryptionIcon->setPixmap(QIcon(":/icons/lock_open").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); + labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_open").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently unlocked")); encryptWalletAction->setChecked(true); changePassphraseAction->setEnabled(true); @@ -1501,7 +1514,7 @@ void BitcoinGUI::setEncryptionStatus(int status) break; case WalletModel::UnlockedForMixingOnly: labelWalletEncryptionIcon->show(); - labelWalletEncryptionIcon->setPixmap(QIcon(":/icons/lock_open").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); + labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_open").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently unlocked for mixing only")); encryptWalletAction->setChecked(true); changePassphraseAction->setEnabled(true); @@ -1511,7 +1524,7 @@ void BitcoinGUI::setEncryptionStatus(int status) break; case WalletModel::Locked: labelWalletEncryptionIcon->show(); - labelWalletEncryptionIcon->setPixmap(QIcon(":/icons/lock_closed").pixmap(STATUSBAR_ICONSIZE,STATUSBAR_ICONSIZE)); + labelWalletEncryptionIcon->setPixmap(GUIUtil::getIcon("lock_closed").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE)); labelWalletEncryptionIcon->setToolTip(tr("Wallet is encrypted and currently locked")); encryptWalletAction->setChecked(true); changePassphraseAction->setEnabled(true); diff --git a/src/qt/coincontroldialog.cpp b/src/qt/coincontroldialog.cpp index b4bb19efe97e..572963e24a99 100644 --- a/src/qt/coincontroldialog.cpp +++ b/src/qt/coincontroldialog.cpp @@ -225,7 +225,7 @@ void CoinControlDialog::buttonToggleLockClicked() else{ model->lockCoin(outpt); item->setDisabled(true); - item->setIcon(COLUMN_CHECKBOX, QIcon(":/icons/lock_closed")); + item->setIcon(COLUMN_CHECKBOX, GUIUtil::getIcon("lock_closed", GUIUtil::ThemedColor::RED)); } updateLabelLocked(); } @@ -314,7 +314,7 @@ void CoinControlDialog::lockCoin() COutPoint outpt(uint256S(contextMenuItem->text(COLUMN_TXHASH).toStdString()), contextMenuItem->text(COLUMN_VOUT_INDEX).toUInt()); model->lockCoin(outpt); contextMenuItem->setDisabled(true); - contextMenuItem->setIcon(COLUMN_CHECKBOX, QIcon(":/icons/lock_closed")); + contextMenuItem->setIcon(COLUMN_CHECKBOX, GUIUtil::getIcon("lock_closed", GUIUtil::ThemedColor::RED)); updateLabelLocked(); } @@ -782,7 +782,7 @@ void CoinControlDialog::updateView() COutPoint outpt(txhash, out.i); coinControl()->UnSelect(outpt); // just to be sure itemOutput->setDisabled(true); - itemOutput->setIcon(COLUMN_CHECKBOX, QIcon(":/icons/lock_closed")); + itemOutput->setIcon(COLUMN_CHECKBOX, GUIUtil::getIcon("lock_closed", GUIUtil::ThemedColor::RED)); } // set checkbox diff --git a/src/qt/dash.qrc b/src/qt/dash.qrc index 4877def6f61a..d8e1f02fee90 100644 --- a/src/qt/dash.qrc +++ b/src/qt/dash.qrc @@ -81,18 +81,14 @@ res/fonts/Montserrat/Montserrat-ThinItalic.otf - res/images/arrow_down_normal.png - res/images/arrow_down_hover.png - res/images/arrow_down_pressed.png - res/images/arrow_left_normal.png - res/images/arrow_left_hover.png - res/images/arrow_left_pressed.png - res/images/arrow_right_normal.png - res/images/arrow_right_hover.png - res/images/arrow_right_pressed.png - res/images/arrow_up_normal.png - res/images/arrow_up_hover.png - res/images/arrow_up_pressed.png + res/images/arrow_down_dark.png + res/images/arrow_down_light.png + res/images/arrow_left_dark.png + res/images/arrow_left_light.png + res/images/arrow_right_dark.png + res/images/arrow_right_light.png + res/images/arrow_up_dark.png + res/images/arrow_up_light.png res/images/arrow_light_down_normal.png res/images/arrow_light_down_hover.png res/images/arrow_light_left_normal.png @@ -101,29 +97,39 @@ res/images/arrow_light_right_hover.png res/images/arrow_light_up_normal.png res/images/arrow_light_up_hover.png - res/images/checkbox_normal.png - res/images/checkbox_normal_hover.png - res/images/checkbox_normal_pressed.png - res/images/checkbox_normal_disabled.png - res/images/checkbox_checked.png - res/images/checkbox_checked_hover.png - res/images/checkbox_checked_pressed.png - res/images/checkbox_checked_disabled.png - res/images/checkbox_partly_checked.png - res/images/checkbox_partly_checked_hover.png - res/images/checkbox_partly_checked_pressed.png - res/images/checkbox_partly_checked_disabled.png + res/images/checkbox_normal_dark.png + res/images/checkbox_normal_hover_dark.png + res/images/checkbox_normal_disabled_dark.png + res/images/checkbox_checked_dark.png + res/images/checkbox_checked_hover_dark.png + res/images/checkbox_checked_disabled_dark.png + res/images/checkbox_partly_checked_dark.png + res/images/checkbox_partly_checked_hover_dark.png + res/images/checkbox_partly_checked_disabled_dark.png + res/images/checkbox_normal_light.png + res/images/checkbox_normal_hover_light.png + res/images/checkbox_normal_disabled_light.png + res/images/checkbox_checked_light.png + res/images/checkbox_checked_hover_light.png + res/images/checkbox_checked_disabled_light.png + res/images/checkbox_partly_checked_light.png + res/images/checkbox_partly_checked_hover_light.png + res/images/checkbox_partly_checked_disabled_dark.png res/images/dash_logo_horizontal.png res/images/dash_logo_toolbar.png res/images/dash_logo_toolbar_blue.png - res/images/radio_normal.png - res/images/radio_normal_hover.png - res/images/radio_normal_pressed.png - res/images/radio_checked.png - res/images/radio_checked_hover.png - res/images/radio_checked_pressed.png - res/images/radio_normal_disabled.png - res/images/radio_checked_disabled.png + res/images/radio_normal_dark.png + res/images/radio_normal_hover_dark.png + res/images/radio_checked_dark.png + res/images/radio_checked_hover_dark.png + res/images/radio_normal_disabled_dark.png + res/images/radio_checked_disabled_dark.png + res/images/radio_normal_light.png + res/images/radio_normal_hover_light.png + res/images/radio_checked_light.png + res/images/radio_checked_hover_light.png + res/images/radio_normal_disabled_light.png + res/images/radio_checked_disabled_light.png res/images/splash.png diff --git a/src/qt/forms/debugwindow.ui b/src/qt/forms/debugwindow.ui index 80d8c0bd2921..efb0c93f9af0 100644 --- a/src/qt/forms/debugwindow.ui +++ b/src/qt/forms/debugwindow.ui @@ -547,99 +547,27 @@ - - - - 24 - 24 - - + Decrease font size - - - - - - :/icons/fontsmaller:/icons/fontsmaller - - - - 24 - 16 - - - - false - - - true - - - - - 24 - 24 - - + Increase font size - - - - - - :/icons/fontbigger:/icons/fontbigger - - - - 24 - 16 - - - - false - - - true - - - - - 24 - 24 - - + Clear console - - Qt::LeftToRight - - - - - - - :/icons/console_remove:/icons/console_remove - Ctrl+L - - false - - - true - diff --git a/src/qt/forms/modaloverlay.ui b/src/qt/forms/modaloverlay.ui index b39222017986..629daa34f218 100644 --- a/src/qt/forms/modaloverlay.ui +++ b/src/qt/forms/modaloverlay.ui @@ -86,20 +86,6 @@ - - - :/icons/warning - :/icons/warning:/icons/warning - - - - 48 - 48 - - - - true - diff --git a/src/qt/forms/signverifymessagedialog.ui b/src/qt/forms/signverifymessagedialog.ui index 278c9c7733c0..01054ef4ab5d 100644 --- a/src/qt/forms/signverifymessagedialog.ui +++ b/src/qt/forms/signverifymessagedialog.ui @@ -86,7 +86,7 @@ - + Choose previously used address @@ -96,13 +96,10 @@ Alt+A - - false - - + Paste address from clipboard @@ -112,9 +109,6 @@ Alt+P - - false - @@ -149,16 +143,13 @@ - + Copy the current signature to the system clipboard - - false - @@ -262,7 +253,7 @@ - + Choose previously used address @@ -272,9 +263,6 @@ Alt+A - - false - diff --git a/src/qt/guiconstants.h b/src/qt/guiconstants.h index cdbec1e1542f..12378d70cf1c 100644 --- a/src/qt/guiconstants.h +++ b/src/qt/guiconstants.h @@ -15,8 +15,18 @@ static const int MAX_PASSPHRASE_SIZE = 1024; /* DashGUI -- Size of icons in status bar */ static const int STATUSBAR_ICONSIZE = 16; +/* DashGUI -- Size of button icons e.g. in SendCoinEntry or SignVerifyMessageDialog */ +static const int BUTTON_ICONSIZE = 23; + static const bool DEFAULT_SPLASHSCREEN = true; +/** Defines the half in RGB space, basically a grey in the middle between black and white */ +#define RGB_HALF 0x7f7f7f +/** Path to the icon ressource folder */ +#define ICONS_PATH ":icons/" +/** Path to the movies ressource folder */ +#define MOVIES_PATH ":movies/" + /* Tooltips longer than this (in characters) are converted into rich text, so that they can be word-wrapped. */ diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 5768d8df668b..a5afa253c9d9 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -42,6 +42,7 @@ #include +#include #include #include #include @@ -149,6 +150,7 @@ static const std::map themedColors = { { ThemedColor::DEFAULT, QColor(85, 85, 85) }, { ThemedColor::UNCONFIRMED, QColor(128, 128, 128) }, { ThemedColor::BLUE, QColor(0, 141, 228) }, + { ThemedColor::ORANGE, QColor(199, 147, 4) }, { ThemedColor::RED, QColor(168, 72, 50) }, { ThemedColor::GREEN, QColor(8, 110, 3) }, { ThemedColor::BAREADDRESS, QColor(140, 140, 140) }, @@ -159,12 +161,14 @@ static const std::map themedColors = { { ThemedColor::BACKGROUND_WIDGET, QColor(234, 234, 236) }, { ThemedColor::BORDER_WIDGET, QColor(220, 220, 220) }, { ThemedColor::QR_PIXEL, QColor(85, 85, 85) }, + { ThemedColor::ICON_ALTERNATIVE_COLOR, QColor(167, 167, 167) }, }; static const std::map themedDarkColors = { { ThemedColor::DEFAULT, QColor(199, 199, 199) }, { ThemedColor::UNCONFIRMED, QColor(170, 170, 170) }, { ThemedColor::BLUE, QColor(0, 89, 154) }, + { ThemedColor::ORANGE, QColor(199, 147, 4) }, { ThemedColor::RED, QColor(168, 72, 50) }, { ThemedColor::GREEN, QColor(8, 110, 3) }, { ThemedColor::BAREADDRESS, QColor(140, 140, 140) }, @@ -175,6 +179,7 @@ static const std::map themedDarkColors = { { ThemedColor::BACKGROUND_WIDGET, QColor(45, 45, 46) }, { ThemedColor::BORDER_WIDGET, QColor(74, 74, 75) }, { ThemedColor::QR_PIXEL, QColor(199, 199, 199) }, + { ThemedColor::ICON_ALTERNATIVE_COLOR, QColor(74, 74, 75) }, }; static const std::map themedStyles = { @@ -207,6 +212,48 @@ QString getThemedStyleQString(ThemedStyle style) return theme.startsWith(darkThemePrefix) ? themedDarkStyles.at(style) : themedStyles.at(style); } +QIcon getIcon(const QString& strIcon, const ThemedColor color, const ThemedColor colorAlternative, const QString& strIconPath) +{ + QColor qcolor = getThemedQColor(color); + QColor qcolorAlternative = getThemedQColor(colorAlternative); + QIcon icon(strIconPath + strIcon); + QIcon themedIcon; + for (const QSize& size : icon.availableSizes()) { + QImage image(icon.pixmap(size).toImage()); + image = image.convertToFormat(QImage::Format_ARGB32); + for (int x = 0; x < image.width(); ++x) { + for (int y = 0; y < image.height(); ++y) { + const QRgb rgb = image.pixel(x, y); + QColor* pColor; + if ((rgb & RGB_MASK) < RGB_HALF) { + pColor = &qcolor; + } else { + pColor = &qcolorAlternative; + } + image.setPixel(x, y, qRgba(pColor->red(), pColor->green(), pColor->blue(), qAlpha(rgb))); + } + } + themedIcon.addPixmap(QPixmap::fromImage(image)); + } + return themedIcon; +} + +QIcon getIcon(const QString& strIcon, const ThemedColor color, const QString& strIconPath) +{ + return getIcon(strIcon, color, ThemedColor::ICON_ALTERNATIVE_COLOR, strIconPath); +} + +void setIcon(QAbstractButton* button, const QString& strIcon, const ThemedColor color, const ThemedColor colorAlternative, const QSize& size) +{ + button->setIcon(getIcon(strIcon, color, colorAlternative)); + button->setIconSize(size); +} + +void setIcon(QAbstractButton* button, const QString& strIcon, const ThemedColor color, const QSize& size) +{ + setIcon(button, strIcon, color, ThemedColor::ICON_ALTERNATIVE_COLOR, size); +} + QString dateTimeStr(const QDateTime &date) { return date.date().toString(Qt::SystemLocaleShortDate) + QString(" ") + date.toString("hh:mm"); diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h index 89f5c2792b8c..b5a5f9c49fe9 100644 --- a/src/qt/guiutil.h +++ b/src/qt/guiutil.h @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -23,6 +24,7 @@ class OptionsModel; class SendCoinsRecipient; QT_BEGIN_NAMESPACE +class QAbstractButton; class QAbstractItemView; class QDateTime; class QFont; @@ -43,6 +45,8 @@ namespace GUIUtil UNCONFIRMED, /* Theme related blue color */ BLUE, + /* Eye-friendly orange color */ + ORANGE, /* Eye-friendly red color, e.g. Transaction list -- negative amount */ RED, /* Eye-friendly green color */ @@ -63,6 +67,8 @@ namespace GUIUtil BORDER_WIDGET, /* Pixel color of generated QR codes. */ QR_PIXEL, + /* Alternative color for black/white icons. White part will be filled with this color by default. */ + ICON_ALTERNATIVE_COLOR, }; /* Enumeration of possible "styles" */ @@ -86,6 +92,14 @@ namespace GUIUtil /** Helper to get css style strings which are injected into rich text through qt */ QString getThemedStyleQString(ThemedStyle style); + /** Helper to get an icon colorized with the given color (replaces black) and colorAlternative (replaces white) */ + QIcon getIcon(const QString& strIcon, ThemedColor color, ThemedColor colorAlternative, const QString& strIconPath = ICONS_PATH); + QIcon getIcon(const QString& strIcon, ThemedColor color = ThemedColor::BLUE, const QString& strIconPath = ICONS_PATH); + + /** Helper to set an icon for a button with the given color (replaces black) and colorAlternative (replaces white). */ + void setIcon(QAbstractButton* button, const QString& strIcon, ThemedColor color, ThemedColor colorAlternative, const QSize& size); + void setIcon(QAbstractButton* button, const QString& strIcon, ThemedColor color = ThemedColor::BLUE, const QSize& size = QSize(BUTTON_ICONSIZE, BUTTON_ICONSIZE)); + // Create human-readable string from date QString dateTimeStr(const QDateTime &datetime); QString dateTimeStr(qint64 nTime); diff --git a/src/qt/modaloverlay.cpp b/src/qt/modaloverlay.cpp index e5b31491ee4a..cdd2c4afd99b 100644 --- a/src/qt/modaloverlay.cpp +++ b/src/qt/modaloverlay.cpp @@ -31,6 +31,8 @@ foreverHidden(false) ui->labelEstimatedTimeLeft, }, GUIUtil::FontWeight::Bold); + GUIUtil::setIcon(ui->warningIcon, "warning", GUIUtil::ThemedColor::ORANGE, QSize(48, 48)); + connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(closeClicked())); if (parent) { parent->installEventFilter(this); diff --git a/src/qt/res/css/dark.css b/src/qt/res/css/dark.css index 6f392bed706c..13fcae1fefda 100644 --- a/src/qt/res/css/dark.css +++ b/src/qt/res/css/dark.css @@ -118,7 +118,30 @@ QLineEdit:disabled { QAbstractSpinBox ******************************************************/ -/***** No dark.css specific coloring here yet *****/ +QAbstractSpinBox::up-arrow { + border-image: url(':/images/arrow_up_dark'); +} +QAbstractSpinBox::up-arrow:hover { + border-image: url(':/images/arrow_up_light'); +} +QAbstractSpinBox::up-arrow:pressed { + border-image: url(':/images/arrow_up_dark'); +} +QAbstractSpinBox::up-arrow:disabled { + border-image: url(':/images/arrow_light_up_hover'); +} +QAbstractSpinBox::down-arrow { + border-image: url(':/images/arrow_down_dark'); +} +QAbstractSpinBox::down-arrow:hover { + border-image: url(':/images/arrow_down_light'); +} +QAbstractSpinBox::down-arrow:pressed { + border-image: url(':/images/arrow_down_dark'); +} +QAbstractSpinBox::down-arrow:disabled { + border-image: url(':/images/arrow_light_down_hover'); +} /****************************************************** QCalendarWidget @@ -150,6 +173,13 @@ QCalendarWidget, background-color: #39393b; } +#qt_calendar_prevmonth { + qproperty-icon: url(':/images/arrow_left_dark'); +} +#qt_calendar_nextmonth { + qproperty-icon: url(':/images/arrow_right_dark'); +} + QCalendarWidget QToolButton { color: #c7c7c7; } @@ -168,6 +198,41 @@ QCalendarWidget QAbstractItemView:disabled { color: #818181; } +/****************************************************** +QCheckBox +******************************************************/ + +QCheckBox::indicator:unchecked, +QCheckBox::indicator:unchecked:pressed { + border-image: url(':/images/checkbox_normal_dark'); +} +QCheckBox::indicator:checked, +QCheckBox::indicator:checked:pressed { + border-image: url(':/images/checkbox_checked_dark'); +} +QCheckBox::indicator:indeterminate, +QCheckBox::indicator:indeterminate:pressed { + border-image: url(':/images/checkbox_partly_checked_dark'); +} +QCheckBox::indicator:hover:!pressed:unchecked { + border-image: url(':/images/checkbox_normal_hover_dark'); +} +QCheckBox::indicator:unchecked:disabled { + border-image: url(':/images/checkbox_normal_disabled_dark'); +} +QCheckBox::indicator:checked:!pressed:hover { + border-image: url(':/images/checkbox_checked_hover_dark'); +} +QCheckBox::indicator:checked:disabled { + border-image: url(':/images/checkbox_checked_disabled_dark'); +} +QCheckBox::indicator:indeterminate:hover { + border-image: url(':/images/checkbox_partly_checked_hover_dark'); +} +QCheckBox::indicator:indeterminate:disabled { + border-image: url(':/images/checkbox_partly_checked_disabled_dark'); +} + /****************************************************** QComboBox ******************************************************/ @@ -189,6 +254,19 @@ QComboBox::item:selected { color: #c7c7c7; } +QComboBox::down-arrow { + border-image: url(':/images/arrow_down_dark') 0 0 0 0 stretch stretch; +} +QComboBox::down-arrow:hover { + border-image: url(':/images/arrow_down_light') 0 0 0 0 stretch stretch; +} +QComboBox::down-arrow:pressed { + border-image: url(':/images/arrow_down_dark') 0 0 0 0 stretch stretch; +} +QComboBox::down-arrow:disabled { + border-image: url(':/images/arrow_light_down_hover') 0 0 0 0 stretch stretch; +} + /****************************************************** QGroupBox ******************************************************/ @@ -474,7 +552,26 @@ QPushButton - Special case, tabbar replacement buttons QRadioButton ******************************************************/ -/***** No dark.css specific coloring here yet *****/ +QRadioButton::indicator:unchecked, +QRadioButton::indicator:unchecked:pressed { + border-image: url(':/images/radio_normal_dark'); +} +QRadioButton::indicator:checked, +QRadioButton::indicator:checked:pressed { + border-image: url(':/images/radio_checked_dark'); +} +QRadioButton::indicator:hover:!pressed:unchecked { + border-image: url(':/images/radio_normal_hover_dark'); +} +QRadioButton::indicator:checked:hover:!pressed { + border-image: url(':/images/radio_checked_hover_dark'); +} +QRadioButton::indicator:checked:disabled { + border-image: url(':/images/radio_checked_disabled_dark'); +} +QRadioButton::indicator:unchecked:disabled { + border-image: url(':/images/radio_normal_disabled_dark'); +} /****************************************************** QScrollArea @@ -604,6 +701,48 @@ QTreeWidget { background-color: #2d2d2e; border-color: #4a4a4b; } +QTreeWidget::branch::closed:has-children { + border-image: url(':/images/arrow_right_dark'); +} +QTreeWidget::branch::closed:has-children:hover { + border-image: url(':/images/arrow_right_light'); +} +QTreeWidget::branch::open { + border-image: url(':/images/arrow_down_dark'); +} +QTreeWidget::branch::open:hover { + border-image: url(':/images/arrow_down_light'); +} +QTreeWidget::indicator:unchecked, +QTreeWidget::indicator:unchecked:pressed { + border-image: url(':/images/checkbox_normal_dark'); +} +QTreeWidget::indicator:checked, +QTreeWidget::indicator:checked:pressed { + border-image: url(':/images/checkbox_checked_dark'); +} +QTreeWidget::indicator:indeterminate, +QTreeWidget::indicator:indeterminate:pressed { + border-image: url(':/images/checkbox_partly_checked_dark'); +} +QTreeWidget::indicator:hover:!pressed:unchecked { + border-image: url(':/images/checkbox_normal_hover_dark'); +} +QTreeWidget::indicator:unchecked:disabled { + border-image: url(':/images/checkbox_normal_disabled_dark'); +} +QTreeWidget::indicator:checked:!pressed:hover { + border-image: url(':/images/checkbox_checked_hover_dark'); +} +QTreeWidget::indicator:checked:disabled { + border-image: url(':/images/checkbox_checked_disabled_dark'); +} +QTreeWidget::indicator:indeterminate:!pressed:hover { + border-image: url(':/images/checkbox_partly_checked_hover_dark'); +} +QTreeWidget::indicator:indeterminate:disabled { + border-image: url(':/images/checkbox_partly_checked_disabled_dark'); +} /****************************************************** QWidget @@ -871,4 +1010,56 @@ QScrollBar::sub-line:horizontal:pressed { background-color: #39393b; } +QScrollBar:up-arrow { + border-image: url(':/images/arrow_up_dark'); +} +QScrollBar:up-arrow:hover { + border-image: url(':/images/arrow_up_light'); +} +QScrollBar:up-arrow:pressed { + border-image: url(':/images/arrow_up_dark'); +} +QScrollBar:up-arrow:disabled { + border-image: url(':/images/arrow_light_up_hover'); +} + +QScrollBar:down-arrow { + border-image: url(':/images/arrow_down_dark'); +} +QScrollBar:down-arrow:hover { + border-image: url(':/images/arrow_down_light'); +} +QScrollBar:down-arrow:pressed { + border-image: url(':/images/arrow_down_dark'); +} +QScrollBar:down-arrow:disabled { + border-image: url(':/images/arrow_light_down_hover'); +} + +QScrollBar:left-arrow { + border-image: url(':/images/arrow_left_dark'); +} +QScrollBar:left-arrow:hover { + border-image: url(':/images/arrow_left_light'); +} +QScrollBar:left-arrow:pressed { + border-image: url(':/images/arrow_left_dark'); +} +QScrollBar:left-arrow:disabled { + border-image: url(':/images/arrow_light_left_hover'); +} + +QScrollBar:right-arrow { + border-image: url(':/images/arrow_right_dark'); +} +QScrollBar:right-arrow:hover { + border-image: url(':/images/arrow_right_light'); +} +QScrollBar:right-arrow:pressed { + border-image: url(':/images/arrow_right_dark'); +} +QScrollBar:right-arrow:disabled { + border-image: url(':/images/arrow_light_right_hover'); +} + diff --git a/src/qt/res/css/general.css b/src/qt/res/css/general.css index 63457c51c22c..647b292cf3c2 100644 --- a/src/qt/res/css/general.css +++ b/src/qt/res/css/general.css @@ -144,43 +144,35 @@ QAbstractSpinBox::down-button { QAbstractSpinBox::up-arrow { width: 20px; height: 20px; - border-image: url(':/images/arrow_up_normal'); } QAbstractSpinBox::up-arrow:hover { width: 20px; height: 20px; - border-image: url(':/images/arrow_up_hover'); } QAbstractSpinBox::up-arrow:pressed { width: 20px; height: 20px; - border-image: url(':/images/arrow_up_pressed'); } QAbstractSpinBox::up-arrow:disabled { width: 20px; height: 20px; - border-image: url(':/images/arrow_light_up_hover'); } QAbstractSpinBox::down-arrow { width: 20px; height: 20px; - border-image: url(':/images/arrow_down_normal'); } QAbstractSpinBox::down-arrow:hover { width: 20px; height: 20px; - border-image: url(':/images/arrow_down_hover'); } QAbstractSpinBox::down-arrow:pressed { width: 20px; height: 20px; - border-image: url(':/images/arrow_down_pressed'); } QAbstractSpinBox::down-arrow:disabled { width: 20px; height: 20px; - border-image: url(':/images/arrow_light_down_hover'); } /****************************************************** @@ -285,42 +277,29 @@ QCheckBox::indicator { height: 15px; margin-right: 5px; } - QCheckBox::indicator:unchecked { - border-image: url(':/images/checkbox_normal'); } QCheckBox::indicator:hover:unchecked { - border-image: url(':/images/checkbox_normal_hover'); } QCheckBox::indicator:unchecked:pressed { - border-image: url(':/images/checkbox_normal_pressed'); } QCheckBox::indicator:unchecked:disabled { - border-image: url(':/images/checkbox_normal_disabled'); } QCheckBox::indicator:checked { - border-image: url(':/images/checkbox_checked'); } QCheckBox::indicator:checked:hover { - border-image: url(':/images/checkbox_checked_hover'); } QCheckBox::indicator:checked:pressed { - border-image: url(':/images/checkbox_checked_pressed'); } QCheckBox::indicator:checked:disabled { - border-image: url(':/images/checkbox_checked_disabled'); } QCheckBox::indicator:indeterminate { - border-image: url(':/images/checkbox_partly_checked'); } QCheckBox::indicator:indeterminate:hover { - border-image: url(':/images/checkbox_partly_checked_hover'); } QCheckBox::indicator:indeterminate:pressed { - border-image: url(':/images/checkbox_partly_checked_pressed'); } QCheckBox::indicator:indeterminate:disabled { - border-image: url(':/images/checkbox_partly_checked_disabled'); } /****************************************************** @@ -370,22 +349,18 @@ QComboBox::indicator { QComboBox::down-arrow { width: 20px; height: 20px; - border-image: url(':/images/arrow_down_normal') 0 0 0 0 stretch stretch; } QComboBox::down-arrow:hover { width: 20px; height: 20px; - border-image: url(':/images/arrow_down_hover') 0 0 0 0 stretch stretch; } QComboBox::down-arrow:pressed { width: 20px; height: 20px; - border-image: url(':/images/arrow_down_pressed') 0 0 0 0 stretch stretch; } QComboBox::down-arrow:disabled { width: 20px; height: 20px; - border-image: url(':/images/arrow_light_down_hover') 0 0 0 0 stretch stretch; } /****************************************************** @@ -762,28 +737,20 @@ QRadioButton::indicator { margin-right: 5px; } QRadioButton::indicator:unchecked { - border-image: url(':/images/radio_normal'); } QRadioButton::indicator:hover:unchecked { - border-image: url(':/images/radio_normal_hover'); } QRadioButton::indicator:unchecked:pressed { - border-image: url(':/images/radio_normal_pressed'); } QRadioButton::indicator:checked { - border-image: url(':/images/radio_checked'); } QRadioButton::indicator:checked:hover { - border-image: url(':/images/radio_checked_hover'); } QRadioButton::indicator:checked:pressed { - border-image: url(':/images/radio_checked_pressed'); } QRadioButton::indicator:checked:disabled { - border-image: url(':/images/radio_checked_disabled'); } QRadioButton::indicator:unchecked:disabled { - border-image: url(':/images/radio_normal_disabled'); } /****************************************************** @@ -955,19 +922,15 @@ QTreeWidget { } QTreeWidget::branch::closed:has-children { padding: 0 -2px 0 2px; - border-image: url(':/images/arrow_right_normal'); } QTreeWidget::branch::closed:has-children:hover { padding: 0 -2px 0 2px; - border-image: url(':/images/arrow_right_hover'); } QTreeWidget::branch::open { padding: 0 -2px 0 2px; - border-image: url(':/images/arrow_down_normal'); } QTreeWidget::branch::open:hover { padding: 0 -2px 0 2px; - border-image: url(':/images/arrow_down_hover'); } QTreeWidget::indicator { width: 15px; @@ -975,40 +938,28 @@ QTreeWidget::indicator { margin-right: 5px; } QTreeWidget::indicator:unchecked { - border-image: url(':/images/checkbox_normal'); } QTreeWidget::indicator:hover:unchecked { - border-image: url(':/images/checkbox_normal_hover'); } QTreeWidget::indicator:unchecked:pressed { - border-image: url(':/images/checkbox_normal_pressed'); } QTreeWidget::indicator:unchecked:disabled { - border-image: url(':/images/checkbox_normal_disabled'); } QTreeWidget::indicator:checked { - border-image: url(':/images/checkbox_checked'); } QTreeWidget::indicator:checked:hover { - border-image: url(':/images/checkbox_checked_hover'); } QTreeWidget::indicator:checked:pressed { - border-image: url(':/images/checkbox_checked_pressed'); } QTreeWidget::indicator:checked:disabled { - border-image: url(':/images/checkbox_checked_disabled'); } QTreeWidget::indicator:indeterminate { - border-image: url(':/images/checkbox_partly_checked'); } QTreeWidget::indicator:indeterminate:hover { - border-image: url(':/images/checkbox_partly_checked_hover'); } QTreeWidget::indicator:indeterminate:pressed { - border-image: url(':/images/checkbox_partly_checked_pressed'); } QTreeWidget::indicator:indeterminate:disabled { - border-image: url(':/images/checkbox_partly_checked_disabled'); } /****************************************************** @@ -1665,12 +1616,11 @@ QWidget#RPCConsole QLineEdit#lineEdit { /* Console Input */ margin-top: 10px; } -QWidget#RPCConsole QPushButton#clearButton, -QWidget#RPCConsole QPushButton#fontSmallerButton, -QWidget#RPCConsole QPushButton#fontBiggerButton { /* Console Font and Clear Buttons */ +QWidget#RPCConsole .QToolButton { /* Console buttons fontbigger/fontsmaller/clear */ background-color: #00000000; - padding-left: 10px; - padding-right: 10px; + margin-left: 3px; + margin-bottom:5px; + border: 0; } QWidget#RPCConsole QPushButton#promptIcon { /* Prompt Icon */ @@ -1793,7 +1743,6 @@ QStackedWidget#SendCoinsEntry .QToolButton#addressBookButton, QStackedWidget#SendCoinsEntry .QToolButton#pasteButton, QStackedWidget#SendCoinsEntry .QToolButton#deleteButton, QStackedWidget#SendCoinsEntry .QToolButton#deleteButton_is { - qproperty-iconSize: 28px 28px; } QStackedWidget#SendCoinsEntry .QLineEdit#addAsLabel { /* Pay To Input Field */ @@ -1845,19 +1794,11 @@ QDialog#SignVerifyMessageDialog QPushButton#addressBookButton_VM { /* Verify Mes border: 0px solid red; } -QDialog#SignVerifyMessageDialog QPushButton#addressBookButton_VM, -QDialog#SignVerifyMessageDialog QPushButton#addressBookButton_SM, -QDialog#SignVerifyMessageDialog QPushButton#copySignatureButton_SM, -QDialog#SignVerifyMessageDialog QPushButton#pasteButton_SM { - qproperty-iconSize: 28px 28px; - padding-left: -1px; - padding-right: -1px; -} - -QDialog#SignVerifyMessageDialog QPushButton#addressBookButton_VM, -QDialog#SignVerifyMessageDialog QPushButton#addressBookButton_SM, -QDialog#SignVerifyMessageDialog QPushButton#copySignatureButton_SM { - margin-left: 8px; +QDialog#SignVerifyMessageDialog .QToolButton { /* General Settings for Pay To Icons */ + background-color: #00000000; + margin-left: 5px; + margin-right: 5px; + border: 0; } /****************************************************** @@ -2030,58 +1971,6 @@ QScrollBar:right-arrow { /* Arrows Icon */ height: 18px; } -QScrollBar:up-arrow { - border-image: url(':/images/arrow_up_normal'); -} -QScrollBar:up-arrow:hover { - border-image: url(':/images/arrow_up_hover'); -} -QScrollBar:up-arrow:pressed { - border-image: url(':/images/arrow_up_pressed'); -} -QScrollBar:up-arrow:disabled { - border-image: url(':/images/arrow_light_up_hover'); -} - -QScrollBar:down-arrow { - border-image: url(':/images/arrow_down_normal'); -} -QScrollBar:down-arrow:hover { - border-image: url(':/images/arrow_down_hover'); -} -QScrollBar:down-arrow:pressed { - border-image: url(':/images/arrow_down_pressed'); -} -QScrollBar:down-arrow:disabled { - border-image: url(':/images/arrow_light_down_hover'); -} - -QScrollBar:left-arrow { - border-image: url(':/images/arrow_left_normal'); -} -QScrollBar:left-arrow:hover { - border-image: url(':/images/arrow_left_hover'); -} -QScrollBar:left-arrow:pressed { - border-image: url(':/images/arrow_left_pressed'); -} -QScrollBar:left-arrow:disabled { - border-image: url(':/images/arrow_light_left_hover'); -} - -QScrollBar:right-arrow { - border-image: url(':/images/arrow_right_normal'); -} -QScrollBar:right-arrow:hover { - border-image: url(':/images/arrow_right_hover'); -} -QScrollBar:right-arrow:pressed { - border-image: url(':/images/arrow_right_pressed'); -} -QScrollBar:right-arrow:disabled { - border-image: url(':/images/arrow_light_right_hover'); -} - QDialog#HelpMessageDialog QScrollBar:vertical, QDialog#HelpMessageDialog QScrollBar:horizontal { border: 0; diff --git a/src/qt/res/css/light.css b/src/qt/res/css/light.css index c86a88cea99f..a401b66aacb4 100644 --- a/src/qt/res/css/light.css +++ b/src/qt/res/css/light.css @@ -116,7 +116,30 @@ QLineEdit:disabled { QAbstractSpinBox ******************************************************/ -/***** No light.css specific coloring here yet *****/ +QAbstractSpinBox::up-arrow { + border-image: url(':/images/arrow_up_light'); +} +QAbstractSpinBox::up-arrow:hover { + border-image: url(':/images/arrow_down_dark'); +} +QAbstractSpinBox::up-arrow:pressed { + border-image: url(':/images/arrow_up_light'); +} +QAbstractSpinBox::up-arrow:disabled { + border-image: url(':/images/arrow_light_up_normal'); +} +QAbstractSpinBox::down-arrow { + border-image: url(':/images/arrow_up_light'); +} +QAbstractSpinBox::down-arrow:hover { + border-image: url(':/images/arrow_down_dark'); +} +QAbstractSpinBox::down-arrow:pressed { + border-image: url(':/images/arrow_up_light'); +} +QAbstractSpinBox::down-arrow:disabled { + border-image: url(':/images/arrow_light_down_normal'); +} /****************************************************** QCalendarWidget @@ -148,6 +171,13 @@ QCalendarWidget, background-color: #d2d2d2; } +#qt_calendar_prevmonth { + qproperty-icon: url(':/images/arrow_left_light'); +} +#qt_calendar_nextmonth { + qproperty-icon: url(':/images/arrow_right_light'); +} + QCalendarWidget QToolButton { color: #555; } @@ -166,6 +196,41 @@ QCalendarWidget QAbstractItemView:disabled { color: #a7a7a7; } +/****************************************************** +QCheckBox +******************************************************/ + +QCheckBox::indicator:unchecked, +QCheckBox::indicator:unchecked:pressed { + border-image: url(':/images/checkbox_normal_light'); +} +QCheckBox::indicator:checked, +QCheckBox::indicator:checked:pressed { + border-image: url(':/images/checkbox_checked_light'); +} +QCheckBox::indicator:indeterminate, +QCheckBox::indicator:indeterminate:pressed { + border-image: url(':/images/checkbox_partly_checked_light'); +} +QCheckBox::indicator:hover:!pressed:unchecked { + border-image: url(':/images/checkbox_normal_hover_light'); +} +QCheckBox::indicator:unchecked:disabled { + border-image: url(':/images/checkbox_normal_disabled_light'); +} +QCheckBox::indicator:checked:!pressed:hover { + border-image: url(':/images/checkbox_checked_hover_light'); +} +QCheckBox::indicator:checked:disabled { + border-image: url(':/images/checkbox_checked_disabled_light'); +} +QCheckBox::indicator:indeterminate:hover { + border-image: url(':/images/checkbox_partly_checked_hover_light'); +} +QCheckBox::indicator:indeterminate:disabled { + border-image: url(':/images/checkbox_partly_checked_disabled_light'); +} + /****************************************************** QComboBox ******************************************************/ @@ -187,6 +252,19 @@ QComboBox::item:selected { background-color: #d2d2d2; } +QComboBox::down-arrow { + border-image: url(':/images/arrow_down_light') 0 0 0 0 stretch stretch; +} +QComboBox::down-arrow:hover { + border-image: url(':/images/arrow_down_dark') 0 0 0 0 stretch stretch; +} +QComboBox::down-arrow:pressed { + border-image: url(':/images/arrow_down_light') 0 0 0 0 stretch stretch; +} +QComboBox::down-arrow:disabled { + border-image: url(':/images/arrow_light_down_normal') 0 0 0 0 stretch stretch; +} + /****************************************************** QGroupBox ******************************************************/ @@ -456,7 +534,27 @@ QPushButton - Special case, tabbar replacement buttons QRadioButton ******************************************************/ -/***** No light.css specific coloring here yet *****/ +QRadioButton::indicator:unchecked, +QRadioButton::indicator:unchecked:pressed { + border-image: url(':/images/radio_normal_light'); +} +QRadioButton::indicator:checked, +QRadioButton::indicator:checked:pressed { + border-image: url(':/images/radio_checked_light'); +} +QRadioButton::indicator:hover:unchecked:!pressed { + border-image: url(':/images/radio_normal_hover_light'); +} +QRadioButton::indicator:checked:hover:!pressed { + border-image: url(':/images/radio_checked_hover_light'); +} +QRadioButton::indicator:checked:disabled { + border-image: url(':/images/radio_checked_disabled_light'); +} +QRadioButton::indicator:unchecked:disabled { + border-image: url(':/images/radio_normal_disabled_light'); +} + /****************************************************** QScrollArea @@ -588,6 +686,48 @@ QTreeWidget { background-color: #eaeaec; border-color: #dcdcdc; } +QTreeWidget::branch::closed:has-children { + border-image: url(':/images/arrow_right_light'); +} +QTreeWidget::branch::closed:has-children:hover { + border-image: url(':/images/arrow_right_dark'); +} +QTreeWidget::branch::open { + border-image: url(':/images/arrow_down_light'); +} +QTreeWidget::branch::open:hover { + border-image: url(':/images/arrow_down_dark'); +} +QTreeWidget::indicator:unchecked, +QTreeWidget::indicator:unchecked:pressed { + border-image: url(':/images/checkbox_normal_light'); +} +QTreeWidget::indicator:checked, +QTreeWidget::indicator:checked:pressed { + border-image: url(':/images/checkbox_checked_light'); +} +QTreeWidget::indicator:indeterminate, +QTreeWidget::indicator:indeterminate:pressed { + border-image: url(':/images/checkbox_partly_checked_light'); +} +QTreeWidget::indicator:hover:unchecked { + border-image: url(':/images/checkbox_normal_hover_light'); +} +QTreeWidget::indicator:unchecked:disabled { + border-image: url(':/images/checkbox_normal_disabled_light'); +} +QTreeWidget::indicator:checked:hover { + border-image: url(':/images/checkbox_checked_hover_light'); +} +QTreeWidget::indicator:checked:disabled { + border-image: url(':/images/checkbox_checked_disabled_light'); +} +QTreeWidget::indicator:indeterminate:!pressed:hover { + border-image: url(':/images/checkbox_partly_checked_hover_light'); +} +QTreeWidget::indicator:indeterminate:disabled { + border-image: url(':/images/checkbox_partly_checked_disabled_light'); +} /****************************************************** QWidget @@ -854,5 +994,56 @@ QScrollBar::sub-line:horizontal:pressed { background-color: #e0e0e0; } - +QScrollBar:up-arrow { + border-image: url(':/images/arrow_up_light'); +} +QScrollBar:up-arrow:hover { + border-image: url(':/images/arrow_up_dark'); +} +QScrollBar:up-arrow:pressed { + border-image: url(':/images/arrow_up_light'); +} +QScrollBar:up-arrow:disabled { + border-image: url(':/images/arrow_light_up_normal'); +} + +QScrollBar:down-arrow { + border-image: url(':/images/arrow_down_light'); +} +QScrollBar:down-arrow:hover { + border-image: url(':/images/arrow_down_dark'); +} +QScrollBar:down-arrow:pressed { + border-image: url(':/images/arrow_down_light'); +} +QScrollBar:down-arrow:disabled { + border-image: url(':/images/arrow_light_down_normal'); +} + +QScrollBar:left-arrow { + border-image: url(':/images/arrow_left_light'); +} +QScrollBar:left-arrow:hover { + border-image: url(':/images/arrow_left_dark'); +} +QScrollBar:left-arrow:pressed { + border-image: url(':/images/arrow_left_light'); +} +QScrollBar:left-arrow:disabled { + border-image: url(':/images/arrow_light_left_normal'); +} +QScrollBar:right-arrow { + border-image: url(':/images/arrow_right_light'); +} +QScrollBar:right-arrow:hover { + border-image: url(':/images/arrow_right_dark'); +} +QScrollBar:right-arrow:pressed { + border-image: url(':/images/arrow_right_light'); +} +QScrollBar:right-arrow:disabled { + border-image: url(':/images/arrow_light_right_normal'); +} + + diff --git a/src/qt/res/icons/address-book.png b/src/qt/res/icons/address-book.png index 6c92d81ce118..5125d651b162 100644 Binary files a/src/qt/res/icons/address-book.png and b/src/qt/res/icons/address-book.png differ diff --git a/src/qt/res/icons/clock1.png b/src/qt/res/icons/clock1.png index a1a3ffc618a3..83a3643a5cb2 100644 Binary files a/src/qt/res/icons/clock1.png and b/src/qt/res/icons/clock1.png differ diff --git a/src/qt/res/icons/clock2.png b/src/qt/res/icons/clock2.png index 30ceec987dff..05fdd5547984 100644 Binary files a/src/qt/res/icons/clock2.png and b/src/qt/res/icons/clock2.png differ diff --git a/src/qt/res/icons/clock3.png b/src/qt/res/icons/clock3.png index 3b275fc4c8e2..e8061c5e2ca8 100644 Binary files a/src/qt/res/icons/clock3.png and b/src/qt/res/icons/clock3.png differ diff --git a/src/qt/res/icons/clock4.png b/src/qt/res/icons/clock4.png index 2593089a0ec9..f31b56507d1f 100644 Binary files a/src/qt/res/icons/clock4.png and b/src/qt/res/icons/clock4.png differ diff --git a/src/qt/res/icons/clock5.png b/src/qt/res/icons/clock5.png index d5c898615843..527b443158ba 100644 Binary files a/src/qt/res/icons/clock5.png and b/src/qt/res/icons/clock5.png differ diff --git a/src/qt/res/icons/connect1_16.png b/src/qt/res/icons/connect1_16.png index bf59b1696bfc..48f409346db1 100644 Binary files a/src/qt/res/icons/connect1_16.png and b/src/qt/res/icons/connect1_16.png differ diff --git a/src/qt/res/icons/connect2_16.png b/src/qt/res/icons/connect2_16.png index 12a5a89e05ab..c2176de87944 100644 Binary files a/src/qt/res/icons/connect2_16.png and b/src/qt/res/icons/connect2_16.png differ diff --git a/src/qt/res/icons/connect3_16.png b/src/qt/res/icons/connect3_16.png index a5af91d4d88c..5c16b8d46537 100644 Binary files a/src/qt/res/icons/connect3_16.png and b/src/qt/res/icons/connect3_16.png differ diff --git a/src/qt/res/icons/connect4_16.png b/src/qt/res/icons/connect4_16.png index ab303e230477..f35dbc5c58d3 100644 Binary files a/src/qt/res/icons/connect4_16.png and b/src/qt/res/icons/connect4_16.png differ diff --git a/src/qt/res/icons/editcopy.png b/src/qt/res/icons/editcopy.png index 6fd1ddf09d95..71d4345a151d 100644 Binary files a/src/qt/res/icons/editcopy.png and b/src/qt/res/icons/editcopy.png differ diff --git a/src/qt/res/icons/editpaste.png b/src/qt/res/icons/editpaste.png index 5bd12588e51e..2e9e8935254d 100644 Binary files a/src/qt/res/icons/editpaste.png and b/src/qt/res/icons/editpaste.png differ diff --git a/src/qt/res/icons/eye.png b/src/qt/res/icons/eye.png index 4ffaaee8b9c1..e073125d76e5 100644 Binary files a/src/qt/res/icons/eye.png and b/src/qt/res/icons/eye.png differ diff --git a/src/qt/res/icons/eye_minus.png b/src/qt/res/icons/eye_minus.png index 96ebe8470f49..c4c6808b4eff 100644 Binary files a/src/qt/res/icons/eye_minus.png and b/src/qt/res/icons/eye_minus.png differ diff --git a/src/qt/res/icons/eye_plus.png b/src/qt/res/icons/eye_plus.png index 5d81923483d9..ea7816628a4d 100644 Binary files a/src/qt/res/icons/eye_plus.png and b/src/qt/res/icons/eye_plus.png differ diff --git a/src/qt/res/icons/fontbigger.png b/src/qt/res/icons/fontbigger.png index 642938261b7d..22cf9293adf9 100644 Binary files a/src/qt/res/icons/fontbigger.png and b/src/qt/res/icons/fontbigger.png differ diff --git a/src/qt/res/icons/fontsmaller.png b/src/qt/res/icons/fontsmaller.png index 0f74b7f08c1f..31eab7917c3a 100644 Binary files a/src/qt/res/icons/fontsmaller.png and b/src/qt/res/icons/fontsmaller.png differ diff --git a/src/qt/res/icons/lock_closed.png b/src/qt/res/icons/lock_closed.png index f251bd70d033..1b96ecdbfd53 100644 Binary files a/src/qt/res/icons/lock_closed.png and b/src/qt/res/icons/lock_closed.png differ diff --git a/src/qt/res/icons/lock_open.png b/src/qt/res/icons/lock_open.png index 2301db15da80..9a6861cf6744 100644 Binary files a/src/qt/res/icons/lock_open.png and b/src/qt/res/icons/lock_open.png differ diff --git a/src/qt/res/icons/remove.png b/src/qt/res/icons/remove.png index 0184d571580d..3440298190bc 100644 Binary files a/src/qt/res/icons/remove.png and b/src/qt/res/icons/remove.png differ diff --git a/src/qt/res/icons/synced.png b/src/qt/res/icons/synced.png index 1fb4102b1e7b..5fafeb911b42 100644 Binary files a/src/qt/res/icons/synced.png and b/src/qt/res/icons/synced.png differ diff --git a/src/qt/res/icons/transaction0.png b/src/qt/res/icons/transaction0.png index ef676c2c8787..d8607ed87e23 100644 Binary files a/src/qt/res/icons/transaction0.png and b/src/qt/res/icons/transaction0.png differ diff --git a/src/qt/res/icons/transaction_abandoned.png b/src/qt/res/icons/transaction_abandoned.png index 0a44de47c52d..8d68c2ff9f89 100644 Binary files a/src/qt/res/icons/transaction_abandoned.png and b/src/qt/res/icons/transaction_abandoned.png differ diff --git a/src/qt/res/icons/warning.png b/src/qt/res/icons/warning.png index a4f95d56cdf8..2085731ac43f 100644 Binary files a/src/qt/res/icons/warning.png and b/src/qt/res/icons/warning.png differ diff --git a/src/qt/res/images/arrow_down_pressed.png b/src/qt/res/images/arrow_down_dark.png similarity index 100% rename from src/qt/res/images/arrow_down_pressed.png rename to src/qt/res/images/arrow_down_dark.png diff --git a/src/qt/res/images/arrow_down_hover.png b/src/qt/res/images/arrow_down_hover.png deleted file mode 100644 index e574108a31ad..000000000000 Binary files a/src/qt/res/images/arrow_down_hover.png and /dev/null differ diff --git a/src/qt/res/images/arrow_down_normal.png b/src/qt/res/images/arrow_down_light.png similarity index 100% rename from src/qt/res/images/arrow_down_normal.png rename to src/qt/res/images/arrow_down_light.png diff --git a/src/qt/res/images/arrow_left_pressed.png b/src/qt/res/images/arrow_left_dark.png similarity index 100% rename from src/qt/res/images/arrow_left_pressed.png rename to src/qt/res/images/arrow_left_dark.png diff --git a/src/qt/res/images/arrow_left_hover.png b/src/qt/res/images/arrow_left_hover.png deleted file mode 100644 index a3d45c3e605b..000000000000 Binary files a/src/qt/res/images/arrow_left_hover.png and /dev/null differ diff --git a/src/qt/res/images/arrow_left_normal.png b/src/qt/res/images/arrow_left_light.png similarity index 100% rename from src/qt/res/images/arrow_left_normal.png rename to src/qt/res/images/arrow_left_light.png diff --git a/src/qt/res/images/arrow_right_pressed.png b/src/qt/res/images/arrow_right_dark.png similarity index 100% rename from src/qt/res/images/arrow_right_pressed.png rename to src/qt/res/images/arrow_right_dark.png diff --git a/src/qt/res/images/arrow_right_hover.png b/src/qt/res/images/arrow_right_hover.png deleted file mode 100644 index 7f430f9d11d1..000000000000 Binary files a/src/qt/res/images/arrow_right_hover.png and /dev/null differ diff --git a/src/qt/res/images/arrow_right_normal.png b/src/qt/res/images/arrow_right_light.png similarity index 100% rename from src/qt/res/images/arrow_right_normal.png rename to src/qt/res/images/arrow_right_light.png diff --git a/src/qt/res/images/arrow_up_pressed.png b/src/qt/res/images/arrow_up_dark.png similarity index 100% rename from src/qt/res/images/arrow_up_pressed.png rename to src/qt/res/images/arrow_up_dark.png diff --git a/src/qt/res/images/arrow_up_hover.png b/src/qt/res/images/arrow_up_hover.png deleted file mode 100644 index caa043629d68..000000000000 Binary files a/src/qt/res/images/arrow_up_hover.png and /dev/null differ diff --git a/src/qt/res/images/arrow_up_normal.png b/src/qt/res/images/arrow_up_light.png similarity index 100% rename from src/qt/res/images/arrow_up_normal.png rename to src/qt/res/images/arrow_up_light.png diff --git a/src/qt/res/images/checkbox_checked.png b/src/qt/res/images/checkbox_checked.png deleted file mode 100644 index 9558d3877ed8..000000000000 Binary files a/src/qt/res/images/checkbox_checked.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_checked_dark.png b/src/qt/res/images/checkbox_checked_dark.png new file mode 100644 index 000000000000..e3f39b279dd1 Binary files /dev/null and b/src/qt/res/images/checkbox_checked_dark.png differ diff --git a/src/qt/res/images/checkbox_checked_disabled.png b/src/qt/res/images/checkbox_checked_disabled.png deleted file mode 100644 index 4fe3e5dca6a4..000000000000 Binary files a/src/qt/res/images/checkbox_checked_disabled.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_checked_disabled_dark.png b/src/qt/res/images/checkbox_checked_disabled_dark.png new file mode 100644 index 000000000000..849ec9fa6c96 Binary files /dev/null and b/src/qt/res/images/checkbox_checked_disabled_dark.png differ diff --git a/src/qt/res/images/checkbox_checked_disabled_light.png b/src/qt/res/images/checkbox_checked_disabled_light.png new file mode 100644 index 000000000000..019c06000ba3 Binary files /dev/null and b/src/qt/res/images/checkbox_checked_disabled_light.png differ diff --git a/src/qt/res/images/checkbox_checked_hover.png b/src/qt/res/images/checkbox_checked_hover.png deleted file mode 100644 index 04ddcbc039c5..000000000000 Binary files a/src/qt/res/images/checkbox_checked_hover.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_checked_hover_dark.png b/src/qt/res/images/checkbox_checked_hover_dark.png new file mode 100644 index 000000000000..d1314daa2648 Binary files /dev/null and b/src/qt/res/images/checkbox_checked_hover_dark.png differ diff --git a/src/qt/res/images/checkbox_checked_hover_light.png b/src/qt/res/images/checkbox_checked_hover_light.png new file mode 100644 index 000000000000..a17f2006e822 Binary files /dev/null and b/src/qt/res/images/checkbox_checked_hover_light.png differ diff --git a/src/qt/res/images/checkbox_checked_light.png b/src/qt/res/images/checkbox_checked_light.png new file mode 100644 index 000000000000..5b3a4960cc13 Binary files /dev/null and b/src/qt/res/images/checkbox_checked_light.png differ diff --git a/src/qt/res/images/checkbox_checked_pressed.png b/src/qt/res/images/checkbox_checked_pressed.png deleted file mode 100644 index 181b7a633eaa..000000000000 Binary files a/src/qt/res/images/checkbox_checked_pressed.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_normal.png b/src/qt/res/images/checkbox_normal.png deleted file mode 100644 index fd944e05555e..000000000000 Binary files a/src/qt/res/images/checkbox_normal.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_normal_dark.png b/src/qt/res/images/checkbox_normal_dark.png new file mode 100644 index 000000000000..eae6b852e9e9 Binary files /dev/null and b/src/qt/res/images/checkbox_normal_dark.png differ diff --git a/src/qt/res/images/checkbox_normal_disabled.png b/src/qt/res/images/checkbox_normal_disabled.png deleted file mode 100644 index e4aa67038356..000000000000 Binary files a/src/qt/res/images/checkbox_normal_disabled.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_normal_disabled_dark.png b/src/qt/res/images/checkbox_normal_disabled_dark.png new file mode 100644 index 000000000000..733a9f0440d8 Binary files /dev/null and b/src/qt/res/images/checkbox_normal_disabled_dark.png differ diff --git a/src/qt/res/images/checkbox_normal_disabled_light.png b/src/qt/res/images/checkbox_normal_disabled_light.png new file mode 100644 index 000000000000..048843c993f6 Binary files /dev/null and b/src/qt/res/images/checkbox_normal_disabled_light.png differ diff --git a/src/qt/res/images/checkbox_normal_hover.png b/src/qt/res/images/checkbox_normal_hover.png deleted file mode 100644 index d62207f94141..000000000000 Binary files a/src/qt/res/images/checkbox_normal_hover.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_normal_hover_dark.png b/src/qt/res/images/checkbox_normal_hover_dark.png new file mode 100644 index 000000000000..8fe414f1f1b1 Binary files /dev/null and b/src/qt/res/images/checkbox_normal_hover_dark.png differ diff --git a/src/qt/res/images/checkbox_normal_hover_light.png b/src/qt/res/images/checkbox_normal_hover_light.png new file mode 100644 index 000000000000..883122957b90 Binary files /dev/null and b/src/qt/res/images/checkbox_normal_hover_light.png differ diff --git a/src/qt/res/images/checkbox_normal_light.png b/src/qt/res/images/checkbox_normal_light.png new file mode 100644 index 000000000000..1ca394f6019e Binary files /dev/null and b/src/qt/res/images/checkbox_normal_light.png differ diff --git a/src/qt/res/images/checkbox_normal_pressed.png b/src/qt/res/images/checkbox_normal_pressed.png deleted file mode 100644 index 289e9f26f145..000000000000 Binary files a/src/qt/res/images/checkbox_normal_pressed.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_partly_checked.png b/src/qt/res/images/checkbox_partly_checked.png deleted file mode 100644 index beb54be76b64..000000000000 Binary files a/src/qt/res/images/checkbox_partly_checked.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_partly_checked_dark.png b/src/qt/res/images/checkbox_partly_checked_dark.png new file mode 100644 index 000000000000..2c249a713320 Binary files /dev/null and b/src/qt/res/images/checkbox_partly_checked_dark.png differ diff --git a/src/qt/res/images/checkbox_partly_checked_disabled.png b/src/qt/res/images/checkbox_partly_checked_disabled.png deleted file mode 100644 index 7d1ef94643d0..000000000000 Binary files a/src/qt/res/images/checkbox_partly_checked_disabled.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_partly_checked_disabled_dark.png b/src/qt/res/images/checkbox_partly_checked_disabled_dark.png new file mode 100644 index 000000000000..5a856a6b635a Binary files /dev/null and b/src/qt/res/images/checkbox_partly_checked_disabled_dark.png differ diff --git a/src/qt/res/images/checkbox_partly_checked_disabled_light.png b/src/qt/res/images/checkbox_partly_checked_disabled_light.png new file mode 100644 index 000000000000..80e99173e3b5 Binary files /dev/null and b/src/qt/res/images/checkbox_partly_checked_disabled_light.png differ diff --git a/src/qt/res/images/checkbox_partly_checked_hover.png b/src/qt/res/images/checkbox_partly_checked_hover.png deleted file mode 100644 index 171b82728036..000000000000 Binary files a/src/qt/res/images/checkbox_partly_checked_hover.png and /dev/null differ diff --git a/src/qt/res/images/checkbox_partly_checked_hover_dark.png b/src/qt/res/images/checkbox_partly_checked_hover_dark.png new file mode 100644 index 000000000000..c881ecdc86d0 Binary files /dev/null and b/src/qt/res/images/checkbox_partly_checked_hover_dark.png differ diff --git a/src/qt/res/images/checkbox_partly_checked_hover_light.png b/src/qt/res/images/checkbox_partly_checked_hover_light.png new file mode 100644 index 000000000000..de982da242b8 Binary files /dev/null and b/src/qt/res/images/checkbox_partly_checked_hover_light.png differ diff --git a/src/qt/res/images/checkbox_partly_checked_light.png b/src/qt/res/images/checkbox_partly_checked_light.png new file mode 100644 index 000000000000..0fe66fdc10d2 Binary files /dev/null and b/src/qt/res/images/checkbox_partly_checked_light.png differ diff --git a/src/qt/res/images/checkbox_partly_checked_pressed.png b/src/qt/res/images/checkbox_partly_checked_pressed.png deleted file mode 100644 index 545db542a67b..000000000000 Binary files a/src/qt/res/images/checkbox_partly_checked_pressed.png and /dev/null differ diff --git a/src/qt/res/images/radio_checked.png b/src/qt/res/images/radio_checked.png deleted file mode 100644 index c0d7a33fcf68..000000000000 Binary files a/src/qt/res/images/radio_checked.png and /dev/null differ diff --git a/src/qt/res/images/radio_checked_dark.png b/src/qt/res/images/radio_checked_dark.png new file mode 100644 index 000000000000..b8f7402c6f0d Binary files /dev/null and b/src/qt/res/images/radio_checked_dark.png differ diff --git a/src/qt/res/images/radio_checked_disabled.png b/src/qt/res/images/radio_checked_disabled.png deleted file mode 100644 index bc54a7c91828..000000000000 Binary files a/src/qt/res/images/radio_checked_disabled.png and /dev/null differ diff --git a/src/qt/res/images/radio_checked_disabled_dark.png b/src/qt/res/images/radio_checked_disabled_dark.png new file mode 100644 index 000000000000..42db08f44796 Binary files /dev/null and b/src/qt/res/images/radio_checked_disabled_dark.png differ diff --git a/src/qt/res/images/radio_checked_disabled_light.png b/src/qt/res/images/radio_checked_disabled_light.png new file mode 100644 index 000000000000..8f172d27225c Binary files /dev/null and b/src/qt/res/images/radio_checked_disabled_light.png differ diff --git a/src/qt/res/images/radio_checked_hover.png b/src/qt/res/images/radio_checked_hover.png deleted file mode 100644 index e1d21a866206..000000000000 Binary files a/src/qt/res/images/radio_checked_hover.png and /dev/null differ diff --git a/src/qt/res/images/radio_checked_hover_dark.png b/src/qt/res/images/radio_checked_hover_dark.png new file mode 100644 index 000000000000..6f08d78b3181 Binary files /dev/null and b/src/qt/res/images/radio_checked_hover_dark.png differ diff --git a/src/qt/res/images/radio_checked_hover_light.png b/src/qt/res/images/radio_checked_hover_light.png new file mode 100644 index 000000000000..65e98dca6d61 Binary files /dev/null and b/src/qt/res/images/radio_checked_hover_light.png differ diff --git a/src/qt/res/images/radio_checked_light.png b/src/qt/res/images/radio_checked_light.png new file mode 100644 index 000000000000..2cab49361dfd Binary files /dev/null and b/src/qt/res/images/radio_checked_light.png differ diff --git a/src/qt/res/images/radio_checked_pressed.png b/src/qt/res/images/radio_checked_pressed.png deleted file mode 100644 index ed34a2d7a47e..000000000000 Binary files a/src/qt/res/images/radio_checked_pressed.png and /dev/null differ diff --git a/src/qt/res/images/radio_normal.png b/src/qt/res/images/radio_normal.png deleted file mode 100644 index 886a2f87c582..000000000000 Binary files a/src/qt/res/images/radio_normal.png and /dev/null differ diff --git a/src/qt/res/images/radio_normal_dark.png b/src/qt/res/images/radio_normal_dark.png new file mode 100644 index 000000000000..8fa04c7e4185 Binary files /dev/null and b/src/qt/res/images/radio_normal_dark.png differ diff --git a/src/qt/res/images/radio_normal_disabled.png b/src/qt/res/images/radio_normal_disabled.png deleted file mode 100644 index 9ab75e7d512b..000000000000 Binary files a/src/qt/res/images/radio_normal_disabled.png and /dev/null differ diff --git a/src/qt/res/images/radio_normal_disabled_dark.png b/src/qt/res/images/radio_normal_disabled_dark.png new file mode 100644 index 000000000000..b519d46f68f4 Binary files /dev/null and b/src/qt/res/images/radio_normal_disabled_dark.png differ diff --git a/src/qt/res/images/radio_normal_disabled_light.png b/src/qt/res/images/radio_normal_disabled_light.png new file mode 100644 index 000000000000..ffd5d662e259 Binary files /dev/null and b/src/qt/res/images/radio_normal_disabled_light.png differ diff --git a/src/qt/res/images/radio_normal_hover.png b/src/qt/res/images/radio_normal_hover.png deleted file mode 100644 index 4cb7a5c94e10..000000000000 Binary files a/src/qt/res/images/radio_normal_hover.png and /dev/null differ diff --git a/src/qt/res/images/radio_normal_hover_dark.png b/src/qt/res/images/radio_normal_hover_dark.png new file mode 100644 index 000000000000..16f479fc6fd6 Binary files /dev/null and b/src/qt/res/images/radio_normal_hover_dark.png differ diff --git a/src/qt/res/images/radio_normal_hover_light.png b/src/qt/res/images/radio_normal_hover_light.png new file mode 100644 index 000000000000..7ef4407d1cc3 Binary files /dev/null and b/src/qt/res/images/radio_normal_hover_light.png differ diff --git a/src/qt/res/images/radio_normal_light.png b/src/qt/res/images/radio_normal_light.png new file mode 100644 index 000000000000..af05bc32ae99 Binary files /dev/null and b/src/qt/res/images/radio_normal_light.png differ diff --git a/src/qt/res/images/radio_normal_pressed.png b/src/qt/res/images/radio_normal_pressed.png deleted file mode 100644 index 444124c6d4c6..000000000000 Binary files a/src/qt/res/images/radio_normal_pressed.png and /dev/null differ diff --git a/src/qt/res/movies/spinner-000.png b/src/qt/res/movies/spinner-000.png index 0dc48d0d8c56..f5db4fca4ce2 100644 Binary files a/src/qt/res/movies/spinner-000.png and b/src/qt/res/movies/spinner-000.png differ diff --git a/src/qt/res/movies/spinner-001.png b/src/qt/res/movies/spinner-001.png index d167f20541f8..f77f7952c020 100644 Binary files a/src/qt/res/movies/spinner-001.png and b/src/qt/res/movies/spinner-001.png differ diff --git a/src/qt/res/movies/spinner-002.png b/src/qt/res/movies/spinner-002.png index 4a1f1f8e5660..75311a2f2bf2 100644 Binary files a/src/qt/res/movies/spinner-002.png and b/src/qt/res/movies/spinner-002.png differ diff --git a/src/qt/res/movies/spinner-003.png b/src/qt/res/movies/spinner-003.png index fb1c2cd4adc8..91eeff1b5909 100644 Binary files a/src/qt/res/movies/spinner-003.png and b/src/qt/res/movies/spinner-003.png differ diff --git a/src/qt/res/movies/spinner-004.png b/src/qt/res/movies/spinner-004.png index 4df2132344fb..b8451c79881b 100644 Binary files a/src/qt/res/movies/spinner-004.png and b/src/qt/res/movies/spinner-004.png differ diff --git a/src/qt/res/movies/spinner-005.png b/src/qt/res/movies/spinner-005.png index 5d6f41e0dc04..dd0007ae1d3f 100644 Binary files a/src/qt/res/movies/spinner-005.png and b/src/qt/res/movies/spinner-005.png differ diff --git a/src/qt/res/movies/spinner-006.png b/src/qt/res/movies/spinner-006.png index c1f7d18899b4..1c2bb6991996 100644 Binary files a/src/qt/res/movies/spinner-006.png and b/src/qt/res/movies/spinner-006.png differ diff --git a/src/qt/res/movies/spinner-007.png b/src/qt/res/movies/spinner-007.png index 1e794b262622..6d4e74544042 100644 Binary files a/src/qt/res/movies/spinner-007.png and b/src/qt/res/movies/spinner-007.png differ diff --git a/src/qt/res/movies/spinner-008.png b/src/qt/res/movies/spinner-008.png index df12ea87197b..1bf547ec9037 100644 Binary files a/src/qt/res/movies/spinner-008.png and b/src/qt/res/movies/spinner-008.png differ diff --git a/src/qt/res/movies/spinner-009.png b/src/qt/res/movies/spinner-009.png index 18fc3a7d16d2..8f605399a631 100644 Binary files a/src/qt/res/movies/spinner-009.png and b/src/qt/res/movies/spinner-009.png differ diff --git a/src/qt/res/movies/spinner-010.png b/src/qt/res/movies/spinner-010.png index a79c845fe828..2e37e3e46d61 100644 Binary files a/src/qt/res/movies/spinner-010.png and b/src/qt/res/movies/spinner-010.png differ diff --git a/src/qt/res/movies/spinner-011.png b/src/qt/res/movies/spinner-011.png index 57baf66895fd..c93d3e23e790 100644 Binary files a/src/qt/res/movies/spinner-011.png and b/src/qt/res/movies/spinner-011.png differ diff --git a/src/qt/res/movies/spinner-012.png b/src/qt/res/movies/spinner-012.png index 9deae7853a77..cac4d54d140e 100644 Binary files a/src/qt/res/movies/spinner-012.png and b/src/qt/res/movies/spinner-012.png differ diff --git a/src/qt/res/movies/spinner-013.png b/src/qt/res/movies/spinner-013.png index 0659d48decf3..58814b4cca23 100644 Binary files a/src/qt/res/movies/spinner-013.png and b/src/qt/res/movies/spinner-013.png differ diff --git a/src/qt/res/movies/spinner-014.png b/src/qt/res/movies/spinner-014.png index bc1ef51bdedb..bfc457ad24d4 100644 Binary files a/src/qt/res/movies/spinner-014.png and b/src/qt/res/movies/spinner-014.png differ diff --git a/src/qt/res/movies/spinner-015.png b/src/qt/res/movies/spinner-015.png index 24b57b62c2cd..932e666c7d70 100644 Binary files a/src/qt/res/movies/spinner-015.png and b/src/qt/res/movies/spinner-015.png differ diff --git a/src/qt/res/movies/spinner-016.png b/src/qt/res/movies/spinner-016.png index d622872651aa..d3f98653ce2c 100644 Binary files a/src/qt/res/movies/spinner-016.png and b/src/qt/res/movies/spinner-016.png differ diff --git a/src/qt/res/movies/spinner-017.png b/src/qt/res/movies/spinner-017.png index f48f688db204..c374fd8056b8 100644 Binary files a/src/qt/res/movies/spinner-017.png and b/src/qt/res/movies/spinner-017.png differ diff --git a/src/qt/res/movies/spinner-018.png b/src/qt/res/movies/spinner-018.png index a2c8f38b1d82..345219ec137c 100644 Binary files a/src/qt/res/movies/spinner-018.png and b/src/qt/res/movies/spinner-018.png differ diff --git a/src/qt/res/movies/spinner-019.png b/src/qt/res/movies/spinner-019.png index 9d7cc35d8283..6b54474d7e3a 100644 Binary files a/src/qt/res/movies/spinner-019.png and b/src/qt/res/movies/spinner-019.png differ diff --git a/src/qt/res/movies/spinner-020.png b/src/qt/res/movies/spinner-020.png index 1a07acc45402..918b7156d533 100644 Binary files a/src/qt/res/movies/spinner-020.png and b/src/qt/res/movies/spinner-020.png differ diff --git a/src/qt/res/movies/spinner-021.png b/src/qt/res/movies/spinner-021.png index 9cea8f25433a..66576802cee7 100644 Binary files a/src/qt/res/movies/spinner-021.png and b/src/qt/res/movies/spinner-021.png differ diff --git a/src/qt/res/movies/spinner-022.png b/src/qt/res/movies/spinner-022.png index 60250f6dea8d..db06bb2136f0 100644 Binary files a/src/qt/res/movies/spinner-022.png and b/src/qt/res/movies/spinner-022.png differ diff --git a/src/qt/res/movies/spinner-023.png b/src/qt/res/movies/spinner-023.png index fc290a0cf245..2ad03e82d008 100644 Binary files a/src/qt/res/movies/spinner-023.png and b/src/qt/res/movies/spinner-023.png differ diff --git a/src/qt/res/movies/spinner-024.png b/src/qt/res/movies/spinner-024.png index c5dcf1eae90f..a18d05fd5c46 100644 Binary files a/src/qt/res/movies/spinner-024.png and b/src/qt/res/movies/spinner-024.png differ diff --git a/src/qt/res/movies/spinner-025.png b/src/qt/res/movies/spinner-025.png index 7f3577a4de2c..9a1d99c596d2 100644 Binary files a/src/qt/res/movies/spinner-025.png and b/src/qt/res/movies/spinner-025.png differ diff --git a/src/qt/res/movies/spinner-026.png b/src/qt/res/movies/spinner-026.png index 1663ddf44c07..d62a6c2846ec 100644 Binary files a/src/qt/res/movies/spinner-026.png and b/src/qt/res/movies/spinner-026.png differ diff --git a/src/qt/res/movies/spinner-027.png b/src/qt/res/movies/spinner-027.png index d0e6da450384..2be3a9e95354 100644 Binary files a/src/qt/res/movies/spinner-027.png and b/src/qt/res/movies/spinner-027.png differ diff --git a/src/qt/res/movies/spinner-028.png b/src/qt/res/movies/spinner-028.png index 2a7aba50e2cf..20c97344113e 100644 Binary files a/src/qt/res/movies/spinner-028.png and b/src/qt/res/movies/spinner-028.png differ diff --git a/src/qt/res/movies/spinner-029.png b/src/qt/res/movies/spinner-029.png index c8ca15c1e1c2..cbbcd9aaf596 100644 Binary files a/src/qt/res/movies/spinner-029.png and b/src/qt/res/movies/spinner-029.png differ diff --git a/src/qt/res/movies/spinner-030.png b/src/qt/res/movies/spinner-030.png index c847c99a93e5..4339b5ac72c8 100644 Binary files a/src/qt/res/movies/spinner-030.png and b/src/qt/res/movies/spinner-030.png differ diff --git a/src/qt/res/movies/spinner-031.png b/src/qt/res/movies/spinner-031.png index 403443144ebe..ce7d73b08060 100644 Binary files a/src/qt/res/movies/spinner-031.png and b/src/qt/res/movies/spinner-031.png differ diff --git a/src/qt/res/movies/spinner-032.png b/src/qt/res/movies/spinner-032.png index f9db080567c3..f694bf82f737 100644 Binary files a/src/qt/res/movies/spinner-032.png and b/src/qt/res/movies/spinner-032.png differ diff --git a/src/qt/res/movies/spinner-033.png b/src/qt/res/movies/spinner-033.png index 43f57719e7fc..e52e138a0203 100644 Binary files a/src/qt/res/movies/spinner-033.png and b/src/qt/res/movies/spinner-033.png differ diff --git a/src/qt/res/movies/spinner-034.png b/src/qt/res/movies/spinner-034.png index c26656ff17a5..167df4a3ca8e 100644 Binary files a/src/qt/res/movies/spinner-034.png and b/src/qt/res/movies/spinner-034.png differ diff --git a/src/qt/res/movies/spinner-035.png b/src/qt/res/movies/spinner-035.png index e471f950a3e7..b825c4bd312c 100644 Binary files a/src/qt/res/movies/spinner-035.png and b/src/qt/res/movies/spinner-035.png differ diff --git a/src/qt/res/src/spinner.png b/src/qt/res/src/spinner.png index 2d2be07709f5..bfecd526e262 100644 Binary files a/src/qt/res/src/spinner.png and b/src/qt/res/src/spinner.png differ diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index 832bec12946c..a5addb117980 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -479,10 +479,7 @@ RPCConsole::RPCConsole(QWidget* parent) : ui->openDebugLogfileButton->setToolTip(ui->openDebugLogfileButton->toolTip().arg(tr(PACKAGE_NAME))); - // Needed on Mac also - ui->clearButton->setIcon(QIcon(":/icons/console_remove")); - ui->fontBiggerButton->setIcon(QIcon(":/icons/fontbigger")); - ui->fontSmallerButton->setIcon(QIcon(":/icons/fontsmaller")); + setButtonIcons(); // Install event filter for up and down arrow ui->lineEdit->installEventFilter(this); @@ -867,17 +864,12 @@ void RPCConsole::clear(bool clearHistory) ui->lineEdit->setFocus(); // Add smoothly scaled icon images. - // (when using width/height on an img, Qt uses nearest instead of linear interpolation) - QString iconPath = ":/icons/"; - QString iconName = ""; - for(int i=0; ICON_MAPPING[i].url; ++i) { - iconName = ICON_MAPPING[i].source; ui->messagesWidget->document()->addResource( QTextDocument::ImageResource, QUrl(ICON_MAPPING[i].url), - QImage(iconPath + iconName).scaled(QSize(consoleFontSize*2, consoleFontSize*2), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + GUIUtil::getIcon(ICON_MAPPING[i].source).pixmap(QSize(consoleFontSize, consoleFontSize))); } // Set default style sheet @@ -1274,6 +1266,14 @@ void RPCConsole::updateNodeDetail(const CNodeCombinedStats *stats) ui->detailWidget->show(); } +void RPCConsole::setButtonIcons() +{ + const QSize consoleButtonsSize(BUTTON_ICONSIZE * 0.8, BUTTON_ICONSIZE * 0.8); + GUIUtil::setIcon(ui->clearButton, "remove", GUIUtil::ThemedColor::RED, consoleButtonsSize); + GUIUtil::setIcon(ui->fontBiggerButton, "fontbigger", GUIUtil::ThemedColor::BLUE, consoleButtonsSize); + GUIUtil::setIcon(ui->fontSmallerButton, "fontsmaller", GUIUtil::ThemedColor::BLUE, consoleButtonsSize); +} + void RPCConsole::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); @@ -1306,6 +1306,8 @@ void RPCConsole::changeEvent(QEvent* e) if (e->type() == QEvent::StyleChange) { clear(); ui->promptIcon->setHidden(GUIUtil::dashThemeActive()); + // Adjust button icon colors on theme changes + setButtonIcons(); } QWidget::changeEvent(e); diff --git a/src/qt/rpcconsole.h b/src/qt/rpcconsole.h index 419147d9cdac..6c7059650fd6 100644 --- a/src/qt/rpcconsole.h +++ b/src/qt/rpcconsole.h @@ -151,6 +151,8 @@ public Q_SLOTS: void buildParameterlist(QString arg); /** show detailed information on ui about selected node */ void updateNodeDetail(const CNodeCombinedStats *stats); + /** Set required icons for buttons inside the dialog */ + void setButtonIcons(); enum ColumnWidths { diff --git a/src/qt/sendcoinsentry.cpp b/src/qt/sendcoinsentry.cpp index 27596601c707..55684671e076 100644 --- a/src/qt/sendcoinsentry.cpp +++ b/src/qt/sendcoinsentry.cpp @@ -27,11 +27,7 @@ SendCoinsEntry::SendCoinsEntry(QWidget* parent) : ui->addAsLabel->setPlaceholderText(tr("Enter a label for this address to add it to your address book")); - ui->addressBookButton->setIcon(QIcon(":/icons/address-book")); - ui->pasteButton->setIcon(QIcon(":/icons/editpaste")); - ui->deleteButton->setIcon(QIcon(":/icons/remove")); - ui->deleteButton_is->setIcon(QIcon(":/icons/remove")); - ui->deleteButton_s->setIcon(QIcon(":/icons/remove")); + setButtonIcons(); // normal dash address field GUIUtil::setupAddressWidget(ui->payTo, this, true); @@ -275,6 +271,24 @@ void SendCoinsEntry::updateDisplayUnit() } } +void SendCoinsEntry::changeEvent(QEvent* e) +{ + QStackedWidget::changeEvent(e); + if (e->type() == QEvent::StyleChange) { + // Adjust button icon colors on theme changes + setButtonIcons(); + } +} + +void SendCoinsEntry::setButtonIcons() +{ + GUIUtil::setIcon(ui->addressBookButton, "address-book"); + GUIUtil::setIcon(ui->pasteButton, "editpaste"); + GUIUtil::setIcon(ui->deleteButton, "remove", GUIUtil::ThemedColor::RED); + GUIUtil::setIcon(ui->deleteButton_is, "remove", GUIUtil::ThemedColor::RED); + GUIUtil::setIcon(ui->deleteButton_s, "remove", GUIUtil::ThemedColor::RED); +} + bool SendCoinsEntry::updateLabel(const QString &address) { if(!model) diff --git a/src/qt/sendcoinsentry.h b/src/qt/sendcoinsentry.h index 2aea38de3aff..8b62f3095032 100644 --- a/src/qt/sendcoinsentry.h +++ b/src/qt/sendcoinsentry.h @@ -64,11 +64,16 @@ private Q_SLOTS: void on_pasteButton_clicked(); void updateDisplayUnit(); +protected: + void changeEvent(QEvent* e); + private: SendCoinsRecipient recipient; Ui::SendCoinsEntry *ui; WalletModel *model; + /** Set required icons for buttons inside the dialog */ + void setButtonIcons(); bool updateLabel(const QString &address); }; diff --git a/src/qt/signverifymessagedialog.cpp b/src/qt/signverifymessagedialog.cpp index f94c91e89575..136e210344e2 100644 --- a/src/qt/signverifymessagedialog.cpp +++ b/src/qt/signverifymessagedialog.cpp @@ -38,11 +38,10 @@ SignVerifyMessageDialog::SignVerifyMessageDialog(QWidget* parent) : ui->signatureIn_VM->setPlaceholderText(tr("Enter a signature for the message to be verified")); // These icons are needed on Mac also - ui->addressBookButton_SM->setIcon(QIcon(":/icons/address-book")); - ui->pasteButton_SM->setIcon(QIcon(":/icons/editpaste")); - ui->copySignatureButton_SM->setIcon(QIcon(":/icons/editcopy")); - ui->addressBookButton_VM->setIcon(QIcon(":/icons/address-book")); - + GUIUtil::setIcon(ui->addressBookButton_SM, "address-book"); + GUIUtil::setIcon(ui->pasteButton_SM, "editpaste"); + GUIUtil::setIcon(ui->copySignatureButton_SM, "editcopy"); + GUIUtil::setIcon(ui->addressBookButton_VM, "address-book"); GUIUtil::setupAddressWidget(ui->addressIn_SM, this); GUIUtil::setupAddressWidget(ui->addressIn_VM, this); diff --git a/src/qt/transactiontablemodel.cpp b/src/qt/transactiontablemodel.cpp index b92e36c9e970..2c54a37678cf 100644 --- a/src/qt/transactiontablemodel.cpp +++ b/src/qt/transactiontablemodel.cpp @@ -433,17 +433,17 @@ QVariant TransactionTableModel::txAddressDecoration(const TransactionRecord *wtx switch(wtx->type) { case TransactionRecord::Generated: - return QIcon(":/icons/tx_mined"); + return GUIUtil::getIcon("tx_mined"); case TransactionRecord::RecvWithPrivateSend: case TransactionRecord::RecvWithAddress: case TransactionRecord::RecvFromOther: - return QIcon(":/icons/tx_input"); + return GUIUtil::getIcon("tx_input"); case TransactionRecord::PrivateSend: case TransactionRecord::SendToAddress: case TransactionRecord::SendToOther: - return QIcon(":/icons/tx_output"); + return GUIUtil::getIcon("tx_output"); default: - return QIcon(":/icons/tx_inout"); + return GUIUtil::getIcon("tx_inout"); } } @@ -523,30 +523,30 @@ QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx) case TransactionStatus::Offline: return GUIUtil::getThemedQColor(GUIUtil::ThemedColor::TX_STATUS_OFFLINE); case TransactionStatus::Unconfirmed: - return QIcon(":/icons/transaction_0"); + return GUIUtil::getIcon("transaction_0"); case TransactionStatus::Abandoned: - return QIcon(":/icons/transaction_abandoned"); + return GUIUtil::getIcon("transaction_abandoned"); case TransactionStatus::Confirming: switch(wtx->status.depth) { - case 1: return QIcon(":/icons/transaction_1"); - case 2: return QIcon(":/icons/transaction_2"); - case 3: return QIcon(":/icons/transaction_3"); - case 4: return QIcon(":/icons/transaction_4"); - default: return QIcon(":/icons/transaction_5"); + case 1: return GUIUtil::getIcon("transaction_1"); + case 2: return GUIUtil::getIcon("transaction_2"); + case 3: return GUIUtil::getIcon("transaction_3"); + case 4: return GUIUtil::getIcon("transaction_4"); + default: return GUIUtil::getIcon("transaction_5"); }; case TransactionStatus::Confirmed: - return QIcon(":/icons/transaction_confirmed"); + return GUIUtil::getIcon("transaction_confirmed"); case TransactionStatus::Conflicted: - return QIcon(":/icons/transaction_conflicted"); + return GUIUtil::getIcon("transaction_conflicted"); case TransactionStatus::Immature: { int total = wtx->status.depth + wtx->status.matures_in; int part = (wtx->status.depth * 5 / total) + 1; - return QIcon(QString(":/icons/transaction_%1").arg(part)); + return GUIUtil::getIcon(QString("transaction_%1").arg(part)); } case TransactionStatus::MaturesWarning: case TransactionStatus::NotAccepted: - return QIcon(":/icons/transaction_0"); + return GUIUtil::getIcon("transaction_0"); default: return GUIUtil::getThemedQColor(GUIUtil::ThemedColor::DEFAULT); } @@ -555,7 +555,7 @@ QVariant TransactionTableModel::txStatusDecoration(const TransactionRecord *wtx) QVariant TransactionTableModel::txWatchonlyDecoration(const TransactionRecord *wtx) const { if (wtx->involvesWatchAddress) - return QIcon(":/icons/eye"); + return GUIUtil::getIcon("eye"); else return QVariant(); } @@ -563,7 +563,7 @@ QVariant TransactionTableModel::txWatchonlyDecoration(const TransactionRecord *w QVariant TransactionTableModel::txInstantSendDecoration(const TransactionRecord *wtx) const { if (wtx->status.lockedByInstantSend) { - return QIcon(":/icons/verify"); + return GUIUtil::getIcon("verify"); } return QVariant(); } diff --git a/src/qt/transactionview.cpp b/src/qt/transactionview.cpp index f77ccdd0e2ba..88b21b8b7d94 100644 --- a/src/qt/transactionview.cpp +++ b/src/qt/transactionview.cpp @@ -57,8 +57,8 @@ TransactionView::TransactionView(QWidget* parent) : watchOnlyWidget = new QComboBox(this); watchOnlyWidget->setFixedWidth(24); watchOnlyWidget->addItem("", TransactionFilterProxy::WatchOnlyFilter_All); - watchOnlyWidget->addItem(QIcon(":/icons/eye_plus"), "", TransactionFilterProxy::WatchOnlyFilter_Yes); - watchOnlyWidget->addItem(QIcon(":/icons/eye_minus"), "", TransactionFilterProxy::WatchOnlyFilter_No); + watchOnlyWidget->addItem(GUIUtil::getIcon("eye_plus"), "", TransactionFilterProxy::WatchOnlyFilter_Yes); + watchOnlyWidget->addItem(GUIUtil::getIcon("eye_minus"), "", TransactionFilterProxy::WatchOnlyFilter_No); hlayout->addWidget(watchOnlyWidget); instantsendWidget = new QComboBox(this);