diff --git a/src/dbus/NhekoDBusApi.cpp b/src/dbus/NhekoDBusApi.cpp index c2c62eb7..1da550cf 100644 --- a/src/dbus/NhekoDBusApi.cpp +++ b/src/dbus/NhekoDBusApi.cpp @@ -170,6 +170,14 @@ setStatusMessage(const QString &message) interface.call(QDBus::NoBlock, QStringLiteral("setStatusMessage"), message); } +void +setTheme(const QString &theme) +{ + if (QDBusInterface interface{QStringLiteral(NHEKO_DBUS_SERVICE_NAME), QStringLiteral("/")}; + interface.isValid()) + interface.call(QDBus::NoBlock, QStringLiteral("setTheme"), theme); +} + } // nheko::dbus /** diff --git a/src/dbus/NhekoDBusApi.h b/src/dbus/NhekoDBusApi.h index 6acb2b65..74e6aeee 100644 --- a/src/dbus/NhekoDBusApi.h +++ b/src/dbus/NhekoDBusApi.h @@ -85,6 +85,9 @@ statusMessage(); //! Sets the user's status message (if supported by the homeserver). void setStatusMessage(const QString &message); +//! Sets the current theme (supported values: "light", "dark" or "system") +void +setTheme(const QString &theme); QDBusArgument & operator<<(QDBusArgument &arg, const RoomInfoItem &item); diff --git a/src/dbus/NhekoDBusBackend.cpp b/src/dbus/NhekoDBusBackend.cpp index 898286f8..9831d5e6 100644 --- a/src/dbus/NhekoDBusBackend.cpp +++ b/src/dbus/NhekoDBusBackend.cpp @@ -11,6 +11,7 @@ #include "Logging.h" #include "MainWindow.h" #include "MxcImageProvider.h" +#include "UserSettingsPage.h" #include "timeline/RoomlistModel.h" #include "timeline/TimelineModel.h" @@ -112,6 +113,12 @@ NhekoDBusBackend::setStatusMessage(const QString &message) ChatPage::instance()->setStatus(message); } +void +NhekoDBusBackend::setTheme(const QString &theme) +{ + UserSettings::instance()->setTheme(theme); +} + void NhekoDBusBackend::bringWindowToTop() const { diff --git a/src/dbus/NhekoDBusBackend.h b/src/dbus/NhekoDBusBackend.h index 79d396f8..66b239aa 100644 --- a/src/dbus/NhekoDBusBackend.h +++ b/src/dbus/NhekoDBusBackend.h @@ -40,6 +40,8 @@ public slots: Q_SCRIPTABLE QString statusMessage() const; //! Sets the user's status message. Q_SCRIPTABLE void setStatusMessage(const QString &message); + //! Sets the current theme (supported values: "light", "dark" or "system") + Q_SCRIPTABLE void setTheme(const QString &theme); private: void bringWindowToTop() const;