diff options
Diffstat (limited to 'src/dbus/qdbusabstractinterface.h')
-rw-r--r-- | src/dbus/qdbusabstractinterface.h | 94 |
1 files changed, 70 insertions, 24 deletions
diff --git a/src/dbus/qdbusabstractinterface.h b/src/dbus/qdbusabstractinterface.h index d6b0870787..4f4c7430a5 100644 --- a/src/dbus/qdbusabstractinterface.h +++ b/src/dbus/qdbusabstractinterface.h @@ -49,6 +49,7 @@ #include <QtDBus/qdbusmessage.h> #include <QtDBus/qdbusextratypes.h> #include <QtDBus/qdbusconnection.h> +#include <QtDBus/qdbuspendingcall.h> #ifdef interface #undef interface @@ -98,26 +99,52 @@ public: void setTimeout(int timeout); int timeout() const; + QDBusMessage call(const QString &method) + { + return doCall(QDBus::AutoDetect, method, nullptr, 0); + } + + template <typename...Args> + QDBusMessage call(const QString &method, Args &&...args) + { + const QVariant variants[] = { QVariant(std::forward<Args>(args))... }; + return doCall(QDBus::AutoDetect, method, variants, sizeof...(args)); + } + + QDBusMessage call(QDBus::CallMode mode, const QString &method) + { + return doCall(mode, method, nullptr, 0); + } + + template <typename...Args> + QDBusMessage call(QDBus::CallMode mode, const QString &method, Args &&...args) + { + const QVariant variants[] = { QVariant(std::forward<Args>(args))... }; + return doCall(mode, method, variants, sizeof...(args)); + } + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QDBusMessage call(const QString &method, - const QVariant &arg1 = QVariant(), - const QVariant &arg2 = QVariant(), - const QVariant &arg3 = QVariant(), - const QVariant &arg4 = QVariant(), - const QVariant &arg5 = QVariant(), - const QVariant &arg6 = QVariant(), - const QVariant &arg7 = QVariant(), - const QVariant &arg8 = QVariant()); + const QVariant &arg1, + const QVariant &arg2, + const QVariant &arg3, + const QVariant &arg4, + const QVariant &arg5, + const QVariant &arg6, + const QVariant &arg7, + const QVariant &arg8); QDBusMessage call(QDBus::CallMode mode, const QString &method, - const QVariant &arg1 = QVariant(), - const QVariant &arg2 = QVariant(), - const QVariant &arg3 = QVariant(), - const QVariant &arg4 = QVariant(), - const QVariant &arg5 = QVariant(), - const QVariant &arg6 = QVariant(), - const QVariant &arg7 = QVariant(), - const QVariant &arg8 = QVariant()); + const QVariant &arg1, + const QVariant &arg2, + const QVariant &arg3, + const QVariant &arg4, + const QVariant &arg5, + const QVariant &arg6, + const QVariant &arg7, + const QVariant &arg8); +#endif // Qt 5 QDBusMessage callWithArgumentList(QDBus::CallMode mode, const QString &method, @@ -130,15 +157,30 @@ public: const QList<QVariant> &args, QObject *receiver, const char *member); + QDBusPendingCall asyncCall(const QString &method) + { + return doAsyncCall(method, nullptr, 0); + } + + template <typename...Args> + QDBusPendingCall asyncCall(const QString &method, Args&&...args) + { + const QVariant variants[] = { QVariant(std::forward<Args>(args))... }; + return doAsyncCall(method, variants, sizeof...(args)); + } + +#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) QDBusPendingCall asyncCall(const QString &method, - const QVariant &arg1 = QVariant(), - const QVariant &arg2 = QVariant(), - const QVariant &arg3 = QVariant(), - const QVariant &arg4 = QVariant(), - const QVariant &arg5 = QVariant(), - const QVariant &arg6 = QVariant(), - const QVariant &arg7 = QVariant(), - const QVariant &arg8 = QVariant()); + const QVariant &arg1, + const QVariant &arg2, + const QVariant &arg3, + const QVariant &arg4, + const QVariant &arg5, + const QVariant &arg6, + const QVariant &arg7, + const QVariant &arg8); +#endif // Qt 5 + QDBusPendingCall asyncCallWithArgumentList(const QString &method, const QList<QVariant> &args); @@ -156,6 +198,10 @@ protected: const QList<QVariant> &args = QList<QVariant>()) const; private: + QDBusMessage doCall(QDBus::CallMode mode, const QString &method, const QVariant *args, size_t numArgs); + QDBusPendingCall doAsyncCall(const QString &method, const QVariant *args, size_t numArgs); + +private: Q_DECLARE_PRIVATE(QDBusAbstractInterface) Q_PRIVATE_SLOT(d_func(), void _q_serviceOwnerChanged(QString,QString,QString)) }; |