diff --git a/src/dbus/applicationservice.cpp b/src/dbus/applicationservice.cpp index 9a004c8..22dce2c 100644 --- a/src/dbus/applicationservice.cpp +++ b/src/dbus/applicationservice.cpp @@ -513,7 +513,7 @@ void ApplicationService::detachAllInstance() noexcept { for (auto &instance : m_Instances.values()) { orphanedInstances->append(instance); - instance->m_orphaned = true; + instance->setProperty("Orphaned", true); } m_Instances.clear(); diff --git a/src/dbus/instanceservice.cpp b/src/dbus/instanceservice.cpp index 11d14ae..21231de 100644 --- a/src/dbus/instanceservice.cpp +++ b/src/dbus/instanceservice.cpp @@ -3,6 +3,7 @@ // SPDX-License-Identifier: LGPL-3.0-or-later #include "dbus/instanceservice.h" +#include "propertiesForwarder.h" #include InstanceService::InstanceService(QString instanceId, QString application, QString systemdUnitPath, QString launcher) @@ -11,6 +12,7 @@ InstanceService::InstanceService(QString instanceId, QString application, QStrin , m_Application(std::move(application)) , m_SystemdUnitPath(std::move(systemdUnitPath)) { + new PropertiesForwarder{application + "/" + instanceId, this}; } InstanceService::~InstanceService() = default; diff --git a/src/dbus/instanceservice.h b/src/dbus/instanceservice.h index 0f18ae0..95c7c2c 100644 --- a/src/dbus/instanceservice.h +++ b/src/dbus/instanceservice.h @@ -18,13 +18,16 @@ public: InstanceService &operator=(const InstanceService &) = delete; InstanceService &operator=(InstanceService &&) = delete; - Q_PROPERTY(QDBusObjectPath Application MEMBER m_Application) - Q_PROPERTY(QDBusObjectPath SystemdUnitPath MEMBER m_SystemdUnitPath) - Q_PROPERTY(QString Launcher MEMBER m_Launcher) - Q_PROPERTY(bool Orphaned MEMBER m_orphaned) + Q_PROPERTY(QDBusObjectPath Application MEMBER m_Application CONSTANT) + Q_PROPERTY(QDBusObjectPath SystemdUnitPath MEMBER m_SystemdUnitPath CONSTANT) + Q_PROPERTY(QString Launcher MEMBER m_Launcher CONSTANT) + Q_PROPERTY(bool Orphaned MEMBER m_orphaned NOTIFY orphanedChanged) [[nodiscard]] const QString &instanceId() const noexcept { return m_instanceId; } +Q_SIGNALS: + void orphanedChanged(); + private: friend class ApplicationService; InstanceService(QString instanceId, QString application, QString systemdUnitPath, QString launcher);