diff --git a/src/dbus/dbusmenu/dbusmenu.cpp b/src/dbus/dbusmenu/dbusmenu.cpp index 6e4feeb7..e0150641 100644 --- a/src/dbus/dbusmenu/dbusmenu.cpp +++ b/src/dbus/dbusmenu/dbusmenu.cpp @@ -41,12 +41,7 @@ DBusMenuItem::DBusMenuItem(qint32 id, DBusMenu* menu, DBusMenuItem* parentMenu) QObject::connect(this, &QsMenuEntry::closed, this, &DBusMenuItem::sendClosed); QObject::connect(this, &QsMenuEntry::triggered, this, &DBusMenuItem::sendTriggered); - QObject::connect( - &this->menu->iconThemePath, - &AbstractDBusProperty::changed, - this, - &DBusMenuItem::iconChanged - ); + QObject::connect(this->menu, &DBusMenu::iconThemePathChanged, this, &DBusMenuItem::iconChanged); } void DBusMenuItem::sendOpened() const { this->menu->sendEvent(this->id, "opened"); } @@ -61,7 +56,7 @@ QString DBusMenuItem::icon() const { if (!this->iconName.isEmpty()) { return IconImageProvider::requestString( this->iconName, - this->menu->iconThemePath.get().join(':') + this->menu->iconThemePath.value().join(':') ); } else if (this->image != nullptr) { return this->image->url(); diff --git a/src/dbus/dbusmenu/dbusmenu.hpp b/src/dbus/dbusmenu/dbusmenu.hpp index c01edf95..1424c6d6 100644 --- a/src/dbus/dbusmenu/dbusmenu.hpp +++ b/src/dbus/dbusmenu/dbusmenu.hpp @@ -13,6 +13,7 @@ #include #include +#include "../../core/doc.hpp" #include "../../core/imageprovider.hpp" #include "../../core/qsmenu.hpp" #include "../properties.hpp" @@ -115,11 +116,16 @@ class DBusMenu: public QObject { public: explicit DBusMenu(const QString& service, const QString& path, QObject* parent = nullptr); - dbus::DBusPropertyGroup properties; - dbus::DBusProperty version {this->properties, "Version"}; - dbus::DBusProperty textDirection {this->properties, "TextDirection", "", false}; - dbus::DBusProperty status {this->properties, "Status"}; - dbus::DBusProperty iconThemePath {this->properties, "IconThemePath", {}, false}; + QS_DBUS_BINDABLE_PROPERTY_GROUP(DBusMenu, properties); + +signals: + QSDOC_HIDE void iconThemePathChanged(); + +public: + Q_OBJECT_BINDABLE_PROPERTY(DBusMenu, quint32, version); + Q_OBJECT_BINDABLE_PROPERTY(DBusMenu, QString, textDirection); + Q_OBJECT_BINDABLE_PROPERTY(DBusMenu, QString, status); + Q_OBJECT_BINDABLE_PROPERTY(DBusMenu, QStringList, iconThemePath, &DBusMenu::iconThemePathChanged); void prepareToShow(qint32 item, qint32 depth); void updateLayout(qint32 parent, qint32 depth); @@ -141,6 +147,11 @@ private slots: private: void updateLayoutRecursive(const DBusMenuLayout& layout, DBusMenuItem* parent, qint32 depth); + QS_DBUS_PROPERTY_BINDING(DBusMenu, pVersion, version, properties, "Version"); + QS_DBUS_PROPERTY_BINDING(DBusMenu, pTextDirection, textDirection, properties, "TextDirection"); + QS_DBUS_PROPERTY_BINDING(DBusMenu, pStatus, status, properties, "Status"); + QS_DBUS_PROPERTY_BINDING(DBusMenu, pIconThemePath, iconThemePath, properties, "IconThemePath"); + DBusMenuInterface* interface = nullptr; };