diff options
author | Andreas Buhr <andreas.buhr@qt.io> | 2021-01-04 16:28:45 +0100 |
---|---|---|
committer | Andreas Buhr <andreas.buhr@qt.io> | 2021-04-19 15:18:46 +0200 |
commit | 97a8727f0ed87d1f9cb79d702f7d1da3951c2e2a (patch) | |
tree | 5624ce9e9a75b147178522aabbf9d8fce2c29419 /src/dbus | |
parent | 673d9c34f4523d030282663c54c30bcc1fe3c6fa (diff) |
Port of QDBusServiceWatcher::watchMode to new property system
Port watchMode in QDBusServiceWatcher to the new property
system. This is the easiest part.
Task-number: QTBUG-85520
Change-Id: I588212af205e77765862b8fecdbdcbf871717142
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/dbus')
-rw-r--r-- | src/dbus/qdbusservicewatcher.cpp | 25 | ||||
-rw-r--r-- | src/dbus/qdbusservicewatcher.h | 3 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/dbus/qdbusservicewatcher.cpp b/src/dbus/qdbusservicewatcher.cpp index 58204831e6..bd2c4fdcc8 100644 --- a/src/dbus/qdbusservicewatcher.cpp +++ b/src/dbus/qdbusservicewatcher.cpp @@ -43,6 +43,7 @@ #include <QStringList> +#include <private/qproperty_p.h> #include <private/qobject_p.h> #include <private/qdbusconnection_p.h> @@ -61,7 +62,12 @@ public: QStringList servicesWatched; QDBusConnection connection; - QDBusServiceWatcher::WatchMode watchMode; + void setWatchModeForwardToQ(QDBusServiceWatcher::WatchMode mode) + { + q_func()->setWatchMode(mode); + } + Q_OBJECT_COMPAT_PROPERTY(QDBusServiceWatcherPrivate, QDBusServiceWatcher::WatchMode, watchMode, + &QDBusServiceWatcherPrivate::setWatchModeForwardToQ) void _q_serviceOwnerChanged(const QString &, const QString &, const QString &); void setConnection(const QStringList &services, const QDBusConnection &c, QDBusServiceWatcher::WatchMode watchMode); @@ -80,7 +86,9 @@ void QDBusServiceWatcherPrivate::_q_serviceOwnerChanged(const QString &service, emit q->serviceUnregistered(service); } -void QDBusServiceWatcherPrivate::setConnection(const QStringList &s, const QDBusConnection &c, QDBusServiceWatcher::WatchMode wm) +void QDBusServiceWatcherPrivate::setConnection(const QStringList &services, + const QDBusConnection &c, + QDBusServiceWatcher::WatchMode wm) { if (connection.isConnected()) { // remove older rules @@ -89,8 +97,8 @@ void QDBusServiceWatcherPrivate::setConnection(const QStringList &s, const QDBus } connection = c; - watchMode = wm; - servicesWatched = s; + watchMode.setValueBypassingBindings(wm); // caller has to call notify() + servicesWatched = services; if (connection.isConnected()) { // add new rules @@ -318,12 +326,19 @@ QDBusServiceWatcher::WatchMode QDBusServiceWatcher::watchMode() const return d_func()->watchMode; } +QBindable<QDBusServiceWatcher::WatchMode> QDBusServiceWatcher::bindableWatchMode() +{ + return &d_func()->watchMode; +} + void QDBusServiceWatcher::setWatchMode(WatchMode mode) { Q_D(QDBusServiceWatcher); - if (mode == d->watchMode) + d->watchMode.removeBindingUnlessInWrapper(); + if (mode == d->watchMode.value()) return; d->setConnection(d->servicesWatched, d->connection, mode); + d->watchMode.notify(); } /*! diff --git a/src/dbus/qdbusservicewatcher.h b/src/dbus/qdbusservicewatcher.h index 2c45c85cb9..b9d0679c3a 100644 --- a/src/dbus/qdbusservicewatcher.h +++ b/src/dbus/qdbusservicewatcher.h @@ -54,7 +54,7 @@ class Q_DBUS_EXPORT QDBusServiceWatcher: public QObject { Q_OBJECT Q_PROPERTY(QStringList watchedServices READ watchedServices WRITE setWatchedServices) - Q_PROPERTY(WatchMode watchMode READ watchMode WRITE setWatchMode) + Q_PROPERTY(WatchMode watchMode READ watchMode WRITE setWatchMode BINDABLE bindableWatchMode) public: enum WatchModeFlag { WatchForRegistration = 0x01, @@ -76,6 +76,7 @@ public: WatchMode watchMode() const; void setWatchMode(WatchMode mode); + QBindable<WatchMode> bindableWatchMode(); QDBusConnection connection() const; void setConnection(const QDBusConnection &connection); |