#ifndef BLACKMISC_GENERICDBUSINTERFACE_H #define BLACKMISC_GENERICDBUSINTERFACE_H #include #include #include namespace BlackMisc { #include /*! * Used for hand written interface based on virtual methods. * Allows to relay a message to DBus in a single code line */ class CGenericDBusInterface : public QDBusAbstractInterface { public: /*! * \brief Generic DBus interface * \param serverName * \param path * \param interfaceName * \param connection * \param parent */ CGenericDBusInterface(const QString &serverName, const QString &path, const QString &interfaceName, const QDBusConnection &connection, QObject *parent = 0) : QDBusAbstractInterface(serverName, path, interfaceName.toUtf8().constData(), connection, parent) { // void } /*! * \brief Call DBus * \param method */ void callDBus(const QLatin1String &method) { QList argumentList; this->asyncCallWithArgumentList(method, argumentList); } /*! * \brief Call DBus, no return value * \param method * \param p1 * \return */ template void callDBus(const QLatin1String &method, P1 p1) { QList argumentList; argumentList << QVariant::fromValue(p1); this->asyncCallWithArgumentList(method, argumentList); } /*! * \brief Call DBus, no return value * \param method * \param p1 * \param p2 * \return */ template void callDBus(const QLatin1String &method, P1 p1, P2 p2) { QList argumentList; argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2); this->asyncCallWithArgumentList(method, argumentList); } /*! * \brief Call DBus, no return value * \param method * \param p1 * \param p2 * \param p3 * \return */ template void callDBus(const QLatin1String &method, P1 p1, P2 p2, P3 p3) { QList argumentList; argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3); this->asyncCallWithArgumentList(method, argumentList); } /*! * \brief Call DBus, no return value * \param method * \param p1 * \param p2 * \param p3 * \param p4 * \return */ template void callDBus(const QLatin1String &method, P1 p1, P2 p2, P3 p3, P4 p4) { QList argumentList; argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3) << QVariant::fromValue(p4); this->asyncCallWithArgumentList(method, argumentList); } /*! * \brief Call DBus with return value * \param method * \return */ template Ret callDBusRet(const QLatin1String &method) { QList argumentList; QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); return pr; } /*! * \brief Call DBus with return value * \param method * \param p1 * \return */ template Ret callDBusRet(const QLatin1String &method, P1 p1) { QList argumentList; argumentList << QVariant::fromValue(p1); QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); return pr; } /*! * \brief Call DBus with return value * \param method * \param p1 * \param p2 * \return */ template Ret callDBusRet(const QLatin1String &method, P1 p1, P2 p2) { QList argumentList; argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2); QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); return pr; } /*! * \brief Call DBus with return value * \param method * \param p1 * \param p2 * \param p3 * \return */ template Ret callDBusRet(const QLatin1String &method, P1 p1, P2 p2, P3 p3) { QList argumentList; argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3); QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); return pr; } /*! * \brief Call DBus with return value * \param method * \param p1 * \param p2 * \param p3 * \param p4 * \return */ template Ret callDBusRet(const QLatin1String &method, P1 p1, P2 p2, P3 p3, P4 p4) { QList argumentList; argumentList << QVariant::fromValue(p1) << QVariant::fromValue(p2) << QVariant::fromValue(p3) << QVariant::fromValue(p4); QDBusPendingReply pr = this->asyncCallWithArgumentList(method, argumentList); return pr; } }; } #endif // guard