diff --git a/data/res/images/DarkAdvanced.svg b/data/res/images/DarkAdvanced.svg new file mode 100644 index 00000000..4e20a9a1 --- /dev/null +++ b/data/res/images/DarkAdvanced.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/res/images/DarkGroup.svg b/data/res/images/DarkGroup.svg new file mode 100644 index 00000000..43c48b74 --- /dev/null +++ b/data/res/images/DarkGroup.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/res/time.svg b/data/res/images/DarkTime.svg similarity index 80% rename from data/res/time.svg rename to data/res/images/DarkTime.svg index cafc173a..9ab764fe 100644 --- a/data/res/time.svg +++ b/data/res/images/DarkTime.svg @@ -1,3 +1,2 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/data/res/images/LightAdvanced.svg b/data/res/images/LightAdvanced.svg new file mode 100644 index 00000000..8e2d843d --- /dev/null +++ b/data/res/images/LightAdvanced.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/res/images/LightGroup.svg b/data/res/images/LightGroup.svg new file mode 100644 index 00000000..99af8d34 --- /dev/null +++ b/data/res/images/LightGroup.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/res/images/LightTime.svg b/data/res/images/LightTime.svg new file mode 100644 index 00000000..48b2cbbf --- /dev/null +++ b/data/res/images/LightTime.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/macro-core/macro-condition-edit.cpp b/src/macro-core/macro-condition-edit.cpp index 72e87c93..c565fa80 100644 --- a/src/macro-core/macro-condition-edit.cpp +++ b/src/macro-core/macro-condition-edit.cpp @@ -121,8 +121,9 @@ DurationModifierEdit::DurationModifierEdit(QWidget *parent) _duration = new DurationSelection(parent); _toggle = new QPushButton(parent); _toggle->setMaximumWidth(22); - _toggle->setIcon( - QIcon(QString::fromStdString(getDataFilePath("res/time.svg")))); + const auto path = QString::fromStdString(getDataFilePath( + "res/images/" + GetThemeTypeName() + "time.svg")); + _toggle->setIcon(QIcon(path)); populateDurationModifierTypes(_condition); QWidget::connect(_condition, SIGNAL(currentIndexChanged(int)), this, SLOT(_ModifierChanged(int))); diff --git a/src/macro-core/macro-tree.cpp b/src/macro-core/macro-tree.cpp index c28c8e7c..a72fb7fb 100644 --- a/src/macro-core/macro-tree.cpp +++ b/src/macro-core/macro-tree.cpp @@ -27,10 +27,9 @@ MacroTreeItem::MacroTreeItem(MacroTree *tree, std::shared_ptr macroItem, bool isGroup = _macro->IsGroup(); if (isGroup) { - QIcon icon; - icon.addFile( - QString::fromUtf8(":/res/images/sources/group.svg"), - QSize(), QIcon::Normal, QIcon::Off); + const auto path = QString::fromStdString(getDataFilePath( + "res/images/" + GetThemeTypeName() + "group.svg")); + QIcon icon(path); QPixmap pixmap = icon.pixmap(QSize(16, 16)); _iconLabel = new QLabel(); _iconLabel->setPixmap(pixmap); diff --git a/src/status-control.cpp b/src/status-control.cpp index c3dd39c5..47767fc8 100644 --- a/src/status-control.cpp +++ b/src/status-control.cpp @@ -120,10 +120,9 @@ StatusDock::StatusDock(QWidget *parent) : OBSDock(parent) QAction *action = new QAction; action->setProperty("themeID", QVariant(QString::fromUtf8("cogsIcon"))); action->connect(action, &QAction::triggered, OpenSettingsWindow); - QIcon icon; - icon.addFile( - QString::fromUtf8(":/settings/images/settings/advanced.svg"), - QSize(), QIcon::Normal, QIcon::Off); + const auto path = QString::fromStdString(getDataFilePath( + "res/images/" + GetThemeTypeName() + "advanced.svg")); + QIcon icon(path); action->setIcon(icon); auto toolbar = new QToolBar; diff --git a/src/utils/utility.cpp b/src/utils/utility.cpp index 98225de4..486b4e9c 100644 --- a/src/utils/utility.cpp +++ b/src/utils/utility.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -867,6 +868,22 @@ bool windowPosValid(QPoint pos) return !!QGuiApplication::screenAt(pos); } +std::string GetThemeTypeName() +{ +#if LIBOBS_API_VER >= MAKE_SEMANTIC_VERSION(29, 0, 0) + return obs_frontend_is_theme_dark() ? "Dark" : "Light"; +#else + auto mainWindow = + static_cast(obs_frontend_get_main_window()); + if (!mainWindow) { + return "Dark"; + } + QColor color = mainWindow->palette().text().color(); + const bool themeDarkMode = !(color.redF() < 0.5); + return themeDarkMode ? "Dark" : "Light"; +#endif +} + QMetaObject::Connection PulseWidget(QWidget *widget, QColor startColor, QColor endColor, bool once) { diff --git a/src/utils/utility.hpp b/src/utils/utility.hpp index 1706ae12..6540731e 100644 --- a/src/utils/utility.hpp +++ b/src/utils/utility.hpp @@ -105,6 +105,7 @@ int findIdxInRagne(QComboBox *list, int start, int stop, bool DisplayMessage(const QString &msg, bool question = false); void DisplayTrayMessage(const QString &title, const QString &msg); bool windowPosValid(QPoint pos); +std::string GetThemeTypeName(); /* Generic helpers */