diff --git a/gmic_qt.qrc b/gmic_qt.qrc index 7ce22fb..5f2c64c 100644 --- a/gmic_qt.qrc +++ b/gmic_qt.qrc @@ -2,9 +2,13 @@ icons/bookmark-add.png icons/bookmark-remove.png + icons/cancel.png + icons/close.png icons/dark/bookmark-add.png icons/dark/bookmark-remove.png - icons/dark/document-open.png + icons/dark/cancel.png + icons/dark/close.png + icons/dark/document-open.png icons/dark/draw-arrow-down.png icons/dark/draw-arrow-up.png icons/dark/edit-clear.png @@ -15,7 +19,6 @@ icons/dark/list-add.png icons/dark/list-remove.png icons/dark/package_settings.png - icons/dark/process-stop.png icons/dark/rename.png icons/dark/selection_mode.png icons/dark/system-run.png @@ -36,7 +39,6 @@ icons/list-add.png icons/list-remove.png icons/package_settings.png - icons/process-stop.png icons/rename.png icons/selection_mode.png icons/system-run.png diff --git a/src/DialogSettings.cpp b/src/DialogSettings.cpp index a30c403..bff224a 100644 --- a/src/DialogSettings.cpp +++ b/src/DialogSettings.cpp @@ -46,7 +46,7 @@ DialogSettings::DialogSettings(QWidget * parent) : QDialog(parent), ui(new Ui::D setWindowIcon(parent->windowIcon()); adjustSize(); - ui->pbUpdate->setIcon(LOAD_ICON("view-refresh")); + ui->pbUpdate->setIcon(IconLoader::load("view-refresh")); ui->cbUpdatePeriodicity->addItem(tr("Never"), QVariant(INTERNET_NEVER_UPDATE_PERIODICITY)); ui->cbUpdatePeriodicity->addItem(tr("Daily"), QVariant(ONE_DAY_HOURS)); diff --git a/src/FilterParameters/FileParameter.cpp b/src/FilterParameters/FileParameter.cpp index dea1ce9..c0562ed 100644 --- a/src/FilterParameters/FileParameter.cpp +++ b/src/FilterParameters/FileParameter.cpp @@ -71,7 +71,7 @@ bool FileParameter::addTo(QWidget * widget, int row) buttonText = fm.elidedText(QFileInfo(_value).fileName(), Qt::ElideRight, w); } _button = new QPushButton(buttonText, widget); - _button->setIcon(LOAD_ICON("document-open")); + _button->setIcon(IconLoader::load("document-open")); _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1); setTextSelectable(_label); _grid->addWidget(_button, row, 1, 1, 2); diff --git a/src/FilterParameters/FolderParameter.cpp b/src/FilterParameters/FolderParameter.cpp index 7030721..ad8701a 100644 --- a/src/FilterParameters/FolderParameter.cpp +++ b/src/FilterParameters/FolderParameter.cpp @@ -63,7 +63,7 @@ bool FolderParameter::addTo(QWidget * widget, int row) delete _button; _button = new QPushButton(widget); - _button->setIcon(LOAD_ICON("folder")); + _button->setIcon(IconLoader::load("folder")); _grid->addWidget(_label = new QLabel(_name, widget), row, 0, 1, 1); setTextSelectable(_label); _grid->addWidget(_button, row, 1, 1, 2); diff --git a/src/FilterParameters/TextParameter.cpp b/src/FilterParameters/TextParameter.cpp index 7dc7e83..0b43842 100644 --- a/src/FilterParameters/TextParameter.cpp +++ b/src/FilterParameters/TextParameter.cpp @@ -79,7 +79,7 @@ bool TextParameter::addTo(QWidget * widget, int row) _textEdit = nullptr; _grid->addWidget(_lineEdit, row, 1, 1, 2); #if QT_VERSION_GTE(5, 2, 0) - _updateAction = _lineEdit->addAction(LOAD_ICON("view-refresh"), QLineEdit::TrailingPosition); + _updateAction = _lineEdit->addAction(IconLoader::load("view-refresh"), QLineEdit::TrailingPosition); #endif } connectEditor(); diff --git a/src/IconLoader.cpp b/src/IconLoader.cpp index a25aef9..b43deee 100644 --- a/src/IconLoader.cpp +++ b/src/IconLoader.cpp @@ -29,14 +29,32 @@ namespace GmicQt { -QIcon IconLoader::getForDarkTheme(const QString & name) +QIcon IconLoader::getForDarkTheme(const char * name) { - QPixmap pixmap(QString(":/icons/dark/%1.png").arg(name)); + QPixmap pixmap(darkIconPath(name)); QIcon icon(pixmap); icon.addPixmap(darkerPixmap(pixmap), QIcon::Disabled, QIcon::Off); return icon; } +QIcon IconLoader::load(const char * name) +{ + if (Settings::darkThemeEnabled()) { + return getForDarkTheme(name); + } else { + return QIcon(QString(":/icons/%1.png").arg(name)); + } +} + +QIcon IconLoader::loadNoDarkened(const char * name) +{ + if (Settings::darkThemeEnabled()) { + return QIcon(darkIconPath(name)); + } else { + return QIcon(QString(":/icons/%1.png").arg(name)); + } +} + QPixmap IconLoader::darkerPixmap(const QPixmap & pixmap) { QImage image = pixmap.toImage().convertToFormat(QImage::Format_ARGB32); @@ -56,4 +74,13 @@ QPixmap IconLoader::darkerPixmap(const QPixmap & pixmap) return QPixmap::fromImage(image); } +QString IconLoader::darkIconPath(const char * name) +{ + QString darkPath = QString(":/icons/dark/%1.png").arg(name); + if (QFileInfo(darkPath).exists()) { + return darkPath; + } + return QString(":/icons/%1.png").arg(name); // Fallback +} + } // namespace GmicQt diff --git a/src/IconLoader.h b/src/IconLoader.h index 26ebdee..fea36cf 100644 --- a/src/IconLoader.h +++ b/src/IconLoader.h @@ -30,19 +30,19 @@ #include "Settings.h" class QString; -#define LOAD_ICON(NAME) (Settings::darkThemeEnabled() ? IconLoader::getForDarkTheme(NAME) : QIcon(":/icons/" NAME ".png")) -#define LOAD_ICON_NO_DARKENED(NAME) (Settings::darkThemeEnabled() ? QIcon(":/icons/dark/" NAME ".png") : QIcon(":/icons/" NAME ".png")) - namespace GmicQt { class IconLoader { public: IconLoader() = delete; - static QIcon getForDarkTheme(const QString & name); + static QIcon getForDarkTheme(const char * name); + static QIcon load(const char * name); + static QIcon loadNoDarkened(const char * name); private: static QPixmap darkerPixmap(const QPixmap & pixmap); + static QString darkIconPath(const char * name); }; } // namespace GmicQt diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 96d821a..883efd1 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -252,22 +252,22 @@ MainWindow::~MainWindow() void MainWindow::setIcons() { - ui->tbTags->setIcon(LOAD_ICON("color-wheel")); - ui->tbRenameFave->setIcon(LOAD_ICON("rename")); - ui->pbSettings->setIcon(LOAD_ICON("package_settings")); - ui->pbFullscreen->setIcon(LOAD_ICON("view-fullscreen")); - ui->tbUpdateFilters->setIcon(LOAD_ICON_NO_DARKENED("view-refresh")); - ui->pbApply->setIcon(LOAD_ICON("system-run")); - ui->pbOk->setIcon(LOAD_ICON("insert-image")); - ui->tbResetParameters->setIcon(LOAD_ICON("view-refresh")); - ui->tbCopyCommand->setIcon(LOAD_ICON("edit-copy")); - ui->pbClose->setIcon(LOAD_ICON("close")); - ui->pbCancel->setIcon(LOAD_ICON("cancel")); - ui->tbAddFave->setIcon(LOAD_ICON("bookmark-add")); - ui->tbRemoveFave->setIcon(LOAD_ICON("bookmark-remove")); - ui->tbSelectionMode->setIcon(LOAD_ICON("selection_mode")); - _expandIcon = LOAD_ICON("draw-arrow-down"); - _collapseIcon = LOAD_ICON("draw-arrow-up"); + ui->tbTags->setIcon(IconLoader::load("color-wheel")); + ui->tbRenameFave->setIcon(IconLoader::load("rename")); + ui->pbSettings->setIcon(IconLoader::load("package_settings")); + ui->pbFullscreen->setIcon(IconLoader::load("view-fullscreen")); + ui->tbUpdateFilters->setIcon(IconLoader::loadNoDarkened("view-refresh")); + ui->pbApply->setIcon(IconLoader::load("system-run")); + ui->pbOk->setIcon(IconLoader::load("insert-image")); + ui->tbResetParameters->setIcon(IconLoader::load("view-refresh")); + ui->tbCopyCommand->setIcon(IconLoader::load("edit-copy")); + ui->pbClose->setIcon(IconLoader::load("close")); + ui->pbCancel->setIcon(IconLoader::load("cancel")); + ui->tbAddFave->setIcon(IconLoader::load("bookmark-add")); + ui->tbRemoveFave->setIcon(IconLoader::load("bookmark-remove")); + ui->tbSelectionMode->setIcon(IconLoader::load("selection_mode")); + _expandIcon = IconLoader::load("draw-arrow-down"); + _collapseIcon = IconLoader::load("draw-arrow-up"); _expandCollapseIcon = &_expandIcon; ui->tbExpandCollapse->setIcon(_expandIcon); } diff --git a/src/Settings.cpp b/src/Settings.cpp index 00ec64b..a2a101d 100644 --- a/src/Settings.cpp +++ b/src/Settings.cpp @@ -108,8 +108,8 @@ void Settings::load(UserInterfaceMode userInterfaceMode) } if (userInterfaceMode != UserInterfaceMode::Silent) { - AddIcon = LOAD_ICON("list-add"); - RemoveIcon = LOAD_ICON("list-remove"); + AddIcon = IconLoader::load("list-add"); + RemoveIcon = IconLoader::load("list-remove"); } QLocale locale; GroupSeparator = locale.groupSeparator(); diff --git a/src/SourcesWidget.cpp b/src/SourcesWidget.cpp index b6f6154..b1e4a63 100644 --- a/src/SourcesWidget.cpp +++ b/src/SourcesWidget.cpp @@ -45,15 +45,15 @@ SourcesWidget::SourcesWidget(QWidget * parent) : QWidget(parent), ui(new Ui::Sou { ui->setupUi(this); - ui->tbUp->setIcon(LOAD_ICON("draw-arrow-up")); + ui->tbUp->setIcon(IconLoader::load("draw-arrow-up")); ui->tbUp->setToolTip(tr("Move source up")); - ui->tbDown->setIcon(LOAD_ICON("draw-arrow-down")); + ui->tbDown->setIcon(IconLoader::load("draw-arrow-down")); ui->tbDown->setToolTip(tr("Move source down")); - ui->tbTrash->setIcon(LOAD_ICON("user-trash")); + ui->tbTrash->setIcon(IconLoader::load("user-trash")); ui->tbTrash->setToolTip(tr("Remove source")); - ui->tbOpen->setIcon(LOAD_ICON("folder")); + ui->tbOpen->setIcon(IconLoader::load("folder")); ui->tbOpen->setToolTip(tr("Add local file (dialog)")); - ui->tbReset->setIcon(LOAD_ICON("view-refresh")); + ui->tbReset->setIcon(IconLoader::load("view-refresh")); ui->tbReset->setToolTip(tr("Reset filter sources")); connect(ui->tbOpen, &QPushButton::clicked, this, &SourcesWidget::onOpenFile); connect(ui->tbNew, &QPushButton::clicked, this, &SourcesWidget::onAddNew); diff --git a/src/Widgets/InOutPanel.cpp b/src/Widgets/InOutPanel.cpp index 6d77179..2a30f99 100644 --- a/src/Widgets/InOutPanel.cpp +++ b/src/Widgets/InOutPanel.cpp @@ -57,7 +57,7 @@ InOutPanel::InOutPanel(QWidget * parent) : QWidget(parent), ui(new Ui::InOutPane ui->setupUi(this); ui->topLabel->setStyleSheet("QLabel { font-weight: bold }"); - ui->tbReset->setIcon(LOAD_ICON("view-refresh")); + ui->tbReset->setIcon(IconLoader::load("view-refresh")); ui->inputLayers->setToolTip(tr("Input layers")); @@ -159,7 +159,7 @@ void InOutPanel::onResetButtonClicked() void InOutPanel::setDarkTheme() { - ui->tbReset->setIcon(LOAD_ICON("view-refresh")); + ui->tbReset->setIcon(IconLoader::load("view-refresh")); } void InOutPanel::setDefaultInputMode() diff --git a/src/Widgets/ProgressInfoWidget.cpp b/src/Widgets/ProgressInfoWidget.cpp index 0ce170c..1bc646d 100644 --- a/src/Widgets/ProgressInfoWidget.cpp +++ b/src/Widgets/ProgressInfoWidget.cpp @@ -48,7 +48,7 @@ ProgressInfoWidget::ProgressInfoWidget(QWidget * parent) : QWidget(parent), ui(n _growing = true; setWindowTitle(tr("G'MIC-Qt Plug-in progression")); ui->progressBar->setRange(0, 100); - ui->tbCancel->setIcon(LOAD_ICON("cancel")); + ui->tbCancel->setIcon(IconLoader::load("cancel")); ui->tbCancel->setToolTip(tr("Abort")); connect(&_timer, &QTimer::timeout, this, &ProgressInfoWidget::onTimeOut); connect(ui->tbCancel, &QToolButton::clicked, this, &ProgressInfoWidget::cancel); diff --git a/src/Widgets/SearchFieldWidget.cpp b/src/Widgets/SearchFieldWidget.cpp index 8ffee8b..d49e115 100644 --- a/src/Widgets/SearchFieldWidget.cpp +++ b/src/Widgets/SearchFieldWidget.cpp @@ -43,8 +43,8 @@ namespace GmicQt SearchFieldWidget::SearchFieldWidget(QWidget * parent) : QWidget(parent), ui(new Ui::SearchFieldWidget) { ui->setupUi(this); - _clearIcon = LOAD_ICON("edit-clear"); - _findIcon = LOAD_ICON("edit-find"); + _clearIcon = IconLoader::load("edit-clear"); + _findIcon = IconLoader::load("edit-find"); _empty = true; #if QT_VERSION_GTE(5, 2, 0) @@ -53,7 +53,7 @@ SearchFieldWidget::SearchFieldWidget(QWidget * parent) : QWidget(parent), ui(new hbox->setContentsMargins(0, 0, 0, 0); hbox->setSpacing(0); hbox->addWidget(_lineEdit = new QLineEdit(this)); - _action = _lineEdit->addAction(LOAD_ICON("edit-find"), QLineEdit::TrailingPosition); + _action = _lineEdit->addAction(IconLoader::load("edit-find"), QLineEdit::TrailingPosition); connect(_action, &QAction::triggered, _lineEdit, &QLineEdit::clear); } #else diff --git a/src/Widgets/ZoomLevelSelector.cpp b/src/Widgets/ZoomLevelSelector.cpp index 0dd27c6..b47de26 100644 --- a/src/Widgets/ZoomLevelSelector.cpp +++ b/src/Widgets/ZoomLevelSelector.cpp @@ -55,9 +55,9 @@ ZoomLevelSelector::ZoomLevelSelector(QWidget * parent) : QWidget(parent), ui(new ui->tbZoomOut->setToolTip(tr("Zoom out")); ui->tbZoomReset->setToolTip(tr("Reset zoom")); - ui->tbZoomIn->setIcon(LOAD_ICON("zoom-in")); - ui->tbZoomOut->setIcon(LOAD_ICON("zoom-out")); - ui->tbZoomReset->setIcon(LOAD_ICON("view-refresh")); + ui->tbZoomIn->setIcon(IconLoader::load("zoom-in")); + ui->tbZoomOut->setIcon(IconLoader::load("zoom-out")); + ui->tbZoomReset->setIcon(IconLoader::load("view-refresh")); connect(ui->comboBox->lineEdit(), &QLineEdit::editingFinished, this, &ZoomLevelSelector::onComboBoxEditingFinished); connect(ui->comboBox, QOverload::of(&QComboBox::currentIndexChanged), this, &ZoomLevelSelector::onComboIndexChanged);