From a08e0fca276341396d92c63dd4a417cb482de82d Mon Sep 17 00:00:00 2001 From: Kent Hansen Date: Sun, 22 Apr 2012 15:05:56 +0200 Subject: Port QtDBus to QMetaMethod-based connectNotify() The const char *-based API is deprecated and will be removed in Qt5. Change-Id: I1c7f0e46149964367f42faccfff4b89acbf16511 Reviewed-by: Thiago Macieira --- src/dbus/qdbusconnectioninterface.cpp | 49 ++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 18 deletions(-) (limited to 'src/dbus/qdbusconnectioninterface.cpp') diff --git a/src/dbus/qdbusconnectioninterface.cpp b/src/dbus/qdbusconnectioninterface.cpp index 0f85f9090e..1b7b69933e 100644 --- a/src/dbus/qdbusconnectioninterface.cpp +++ b/src/dbus/qdbusconnectioninterface.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -328,41 +329,53 @@ QDBusConnectionInterface::unregisterService(const QString &serviceName) /*! \internal */ -void QDBusConnectionInterface::connectNotify(const char *signalName) +void QDBusConnectionInterface::connectNotify(const QMetaMethod &signal) { // translate the signal names to what we really want // this avoids setting hooks for signals that don't exist on the bus - if (qstrcmp(signalName, SIGNAL(serviceRegistered(QString))) == 0) - QDBusAbstractInterface::connectNotify(SIGNAL(NameAcquired(QString))); - - else if (qstrcmp(signalName, SIGNAL(serviceUnregistered(QString))) == 0) - QDBusAbstractInterface::connectNotify(SIGNAL(NameLost(QString))); - - else if (qstrcmp(signalName, SIGNAL(serviceOwnerChanged(QString,QString,QString))) == 0) { + static const QMetaMethod serviceRegisteredSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::serviceRegistered); + static const QMetaMethod serviceUnregisteredSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::serviceUnregistered); + static const QMetaMethod serviceOwnerChangedSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::serviceOwnerChanged); + static const QMetaMethod NameAcquiredSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::NameAcquired); + static const QMetaMethod NameLostSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::NameLost); + static const QMetaMethod NameOwnerChangedSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::NameOwnerChanged); + if (signal == serviceRegisteredSignal) + QDBusAbstractInterface::connectNotify(NameAcquiredSignal); + + else if (signal == serviceUnregisteredSignal) + QDBusAbstractInterface::connectNotify(NameLostSignal); + + else if (signal == serviceOwnerChangedSignal) { static bool warningPrinted = false; if (!warningPrinted) { qWarning("Connecting to deprecated signal QDBusConnectionInterface::serviceOwnerChanged(QString,QString,QString)"); warningPrinted = true; } - QDBusAbstractInterface::connectNotify(SIGNAL(NameOwnerChanged(QString,QString,QString))); + QDBusAbstractInterface::connectNotify(NameOwnerChangedSignal); } } /*! \internal */ -void QDBusConnectionInterface::disconnectNotify(const char *signalName) +void QDBusConnectionInterface::disconnectNotify(const QMetaMethod &signal) { // translate the signal names to what we really want // this avoids setting hooks for signals that don't exist on the bus - if (qstrcmp(signalName, SIGNAL(serviceRegistered(QString))) == 0) - QDBusAbstractInterface::disconnectNotify(SIGNAL(NameAcquired(QString))); - - else if (qstrcmp(signalName, SIGNAL(serviceUnregistered(QString))) == 0) - QDBusAbstractInterface::disconnectNotify(SIGNAL(NameLost(QString))); - - else if (qstrcmp(signalName, SIGNAL(serviceOwnerChanged(QString,QString,QString))) == 0) - QDBusAbstractInterface::disconnectNotify(SIGNAL(NameOwnerChanged(QString,QString,QString))); + static const QMetaMethod serviceRegisteredSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::serviceRegistered); + static const QMetaMethod serviceUnregisteredSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::serviceUnregistered); + static const QMetaMethod serviceOwnerChangedSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::serviceOwnerChanged); + static const QMetaMethod NameAcquiredSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::NameAcquired); + static const QMetaMethod NameLostSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::NameLost); + static const QMetaMethod NameOwnerChangedSignal = QMetaMethod::fromSignal(&QDBusConnectionInterface::NameOwnerChanged); + if (signal == serviceRegisteredSignal) + QDBusAbstractInterface::disconnectNotify(NameAcquiredSignal); + + else if (signal == serviceUnregisteredSignal) + QDBusAbstractInterface::disconnectNotify(NameLostSignal); + + else if (signal == serviceOwnerChangedSignal) + QDBusAbstractInterface::disconnectNotify(NameOwnerChangedSignal); } // signals -- cgit v1.2.3