From ce3a105d387d405b3cf745ce84c8f2a995764e48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Sko=C5=99epa?= <jakub@skorepa.info> Date: Sun, 23 Aug 2015 04:32:18 +0200 Subject: [PATCH] Emit propertiesChanged signal when portal list changes --- dserial-server/controller.cpp | 20 +++++++++++++++++++- dserial-server/controller.h | 3 +++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/dserial-server/controller.cpp b/dserial-server/controller.cpp index 4630835..cb9cf6a 100644 --- a/dserial-server/controller.cpp +++ b/dserial-server/controller.cpp @@ -10,6 +10,7 @@ Controller::Controller(QObject *parent) : QObject(parent), connection(QDBusConne port->dbusPath.setPath("/fake/test0"); connection.registerObject(port->dbusPath.path(), port); ports.append(port); + notifyPropertyChanged("PortList"); } QStringList Controller::PortList() const @@ -37,9 +38,10 @@ void Controller::CreateFilePort(QString) void Controller::Autodetect() { qDebug() << "Autodetect"; + bool changed = false; // Remove nonexistent for(Port *port : ports) { - port->Exists(); + if(!port->Exists()) changed = true; } // Detect new @@ -54,6 +56,7 @@ void Controller::Autodetect() } if(!isInList) { + changed = true; Port *port = new Port(info.systemLocation()); new PortAdaptor(port); port->dbusPath.setPath("/autodetected"+info.systemLocation()); @@ -63,6 +66,7 @@ void Controller::Autodetect() ports.append(port); } } + if(changed) notifyPropertyChanged("PortList"); qDebug() << "Autodetect done"; } @@ -85,3 +89,17 @@ void Controller::removePort(QDBusObjectPath id) } } } + +void Controller::notifyPropertyChanged( const char *propertyName ) +{ + QDBusMessage signal = QDBusMessage::createSignal( + "/controller", + "org.freedesktop.DBus.Properties", + "PropertiesChanged"); + signal << QString("info.skorepa.DSerial.controller"); + QVariantMap changedProps; + changedProps.insert(propertyName, property(propertyName)); + signal << changedProps; + signal << QStringList(); + QDBusConnection::sessionBus().send(signal); +} diff --git a/dserial-server/controller.h b/dserial-server/controller.h index 9d9bb3a..c6148b8 100644 --- a/dserial-server/controller.h +++ b/dserial-server/controller.h @@ -33,6 +33,9 @@ class Controller : public QObject public: QDBusConnection connection; + + private: + void notifyPropertyChanged( const char *propertyName ); }; #endif // CONTROLLER_H -- GitLab