summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-04-25 15:10:05 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-07 09:54:08 +0200
commit5705ed99390064c57ce7edeeb9f6bb44ecae0a45 (patch)
treea2d0beb0d68c9dd15032084f1d17857ba50226ec
parent1a4d498e8dd47775d3c5f0b77a7ee5288639f1b5 (diff)
Port qtsystems to QMetaMethod-based connectNotify() API
The const char *-based API is deprecated and will be removed in Qt5. Change-Id: Ia5f89aae65a031575094de5865fbafff34648fe7 Reviewed-by: Johann Specht <johann.specht@nokia.com> Reviewed-by: Cristiano di Flora <cristiano.di-flora@nokia.com>
-rw-r--r--src/publishsubscribe/qvaluespacepublisher.cpp7
-rw-r--r--src/publishsubscribe/qvaluespacepublisher.h2
-rw-r--r--src/publishsubscribe/qvaluespacesubscriber.cpp11
-rw-r--r--src/publishsubscribe/qvaluespacesubscriber.h4
-rw-r--r--src/serviceframework/ipc/proxyobject.cpp9
-rw-r--r--src/serviceframework/ipc/proxyobject_p.h2
-rw-r--r--src/serviceframework/qservicemanager.cpp21
-rw-r--r--src/serviceframework/qservicemanager.h4
-rw-r--r--src/systeminfo/qbatteryinfo.cpp32
-rw-r--r--src/systeminfo/qbatteryinfo.h4
-rw-r--r--src/systeminfo/qbatteryinfo_linux.cpp58
-rw-r--r--src/systeminfo/qbatteryinfo_linux_p.h4
-rw-r--r--src/systeminfo/qbatteryinfo_win.cpp54
-rw-r--r--src/systeminfo/qbatteryinfo_win_p.h4
-rw-r--r--src/systeminfo/qdeviceinfo.cpp16
-rw-r--r--src/systeminfo/qdeviceinfo.h4
-rw-r--r--src/systeminfo/qdeviceinfo_linux.cpp31
-rw-r--r--src/systeminfo/qdeviceinfo_linux_p.h4
-rw-r--r--src/systeminfo/qdeviceprofile.cpp16
-rw-r--r--src/systeminfo/qdeviceprofile.h4
-rw-r--r--src/systeminfo/qdeviceprofile_linux.cpp46
-rw-r--r--src/systeminfo/qdeviceprofile_linux_p.h4
-rw-r--r--src/systeminfo/qdisplayinfo.cpp15
-rw-r--r--src/systeminfo/qdisplayinfo.h4
-rw-r--r--src/systeminfo/qdisplayinfo_linux.cpp11
-rw-r--r--src/systeminfo/qdisplayinfo_linux_p.h4
-rw-r--r--src/systeminfo/qjsondbwrapper.cpp33
-rw-r--r--src/systeminfo/qjsondbwrapper_p.h4
-rw-r--r--src/systeminfo/qnetworkinfo.cpp16
-rw-r--r--src/systeminfo/qnetworkinfo.h4
-rw-r--r--src/systeminfo/qnetworkinfo_linux.cpp68
-rw-r--r--src/systeminfo/qnetworkinfo_linux_p.h4
-rw-r--r--src/systeminfo/qnetworkinfo_win.cpp6
-rw-r--r--src/systeminfo/qnetworkinfo_win_p.h4
-rw-r--r--src/systeminfo/qnetworkservicewrapper.cpp64
-rw-r--r--src/systeminfo/qnetworkservicewrapper_p.h4
-rw-r--r--src/systeminfo/qofonowrapper.cpp63
-rw-r--r--src/systeminfo/qofonowrapper_p.h4
-rw-r--r--src/systeminfo/qstorageinfo.cpp16
-rw-r--r--src/systeminfo/qstorageinfo.h4
-rw-r--r--src/systeminfo/qstorageinfo_linux.cpp11
-rw-r--r--src/systeminfo/qstorageinfo_linux_p.h4
-rw-r--r--src/systeminfo/qstorageinfo_win.cpp11
-rw-r--r--src/systeminfo/qstorageinfo_win_p.h4
-rw-r--r--src/systeminfo/qsysteminfo_simulator.cpp212
-rw-r--r--src/systeminfo/qsysteminfo_simulator_p.h12
-rw-r--r--src/systeminfo/qudevwrapper.cpp25
-rw-r--r--src/systeminfo/qudevwrapper_p.h4
48 files changed, 619 insertions, 333 deletions
diff --git a/src/publishsubscribe/qvaluespacepublisher.cpp b/src/publishsubscribe/qvaluespacepublisher.cpp
index 2b2e32a2..ee41fe97 100644
--- a/src/publishsubscribe/qvaluespacepublisher.cpp
+++ b/src/publishsubscribe/qvaluespacepublisher.cpp
@@ -44,6 +44,8 @@
#include "qvaluespace_p.h"
#include "qvaluespacemanager_p.h"
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -328,9 +330,10 @@ void QValueSpacePublisher::resetValue(const QString &name)
/*!
\reimp
*/
-void QValueSpacePublisher::connectNotify(const char *signal)
+void QValueSpacePublisher::connectNotify(const QMetaMethod &signal)
{
- if (!d_ptr->hasWatch && isConnected() && qstrcmp(signal, SIGNAL(interestChanged(QString,bool))) == 0) {
+ static const QMetaMethod interestChangedSignal = QMetaMethod::fromSignal(&QValueSpacePublisher::interestChanged);
+ if (!d_ptr->hasWatch && isConnected() && signal == interestChangedSignal) {
d_ptr->layer->addWatch(this, d_ptr->handle);
d_ptr->hasWatch = true;
}
diff --git a/src/publishsubscribe/qvaluespacepublisher.h b/src/publishsubscribe/qvaluespacepublisher.h
index 023b3d1f..00b1d3c3 100644
--- a/src/publishsubscribe/qvaluespacepublisher.h
+++ b/src/publishsubscribe/qvaluespacepublisher.h
@@ -74,7 +74,7 @@ public Q_SLOTS:
void setValue(const QString &name, const QVariant &data);
protected:
- virtual void connectNotify(const char *);
+ virtual void connectNotify(const QMetaMethod &);
private:
Q_DISABLE_COPY(QValueSpacePublisher)
diff --git a/src/publishsubscribe/qvaluespacesubscriber.cpp b/src/publishsubscribe/qvaluespacesubscriber.cpp
index ab8a8d6b..a179dc87 100644
--- a/src/publishsubscribe/qvaluespacesubscriber.cpp
+++ b/src/publishsubscribe/qvaluespacesubscriber.cpp
@@ -44,6 +44,7 @@
#include "qvaluespacemanager_p.h"
#include "qvaluespacesubscriber_p.h"
+#include <QtCore/qmetaobject.h>
#include <QtCore/qset.h>
#include <QtCore/qstringlist.h>
@@ -461,18 +462,20 @@ QVariant QValueSpaceSubscriber::valuex(const QVariant &def) const
/*!
\reimp
*/
-void QValueSpaceSubscriber::connectNotify(const char *signal)
+void QValueSpaceSubscriber::connectNotify(const QMetaMethod &signal)
{
- if (isConnected() && qstrcmp(signal, SIGNAL(contentsChanged())) == 0)
+ static const QMetaMethod contentsChangedSignal = QMetaMethod::fromSignal(&QValueSpaceSubscriber::contentsChanged);
+ if (isConnected() && signal == contentsChangedSignal)
d->connect(this);
}
/*!
\reimp
*/
-void QValueSpaceSubscriber::disconnectNotify(const char *signal)
+void QValueSpaceSubscriber::disconnectNotify(const QMetaMethod &signal)
{
- if (isConnected() && qstrcmp(signal, SIGNAL(contentsChanged())) == 0)
+ static const QMetaMethod contentsChangedSignal = QMetaMethod::fromSignal(&QValueSpaceSubscriber::contentsChanged);
+ if (isConnected() && signal == contentsChangedSignal)
d->disconnect(this);
}
diff --git a/src/publishsubscribe/qvaluespacesubscriber.h b/src/publishsubscribe/qvaluespacesubscriber.h
index 9962015c..7c2d2d4a 100644
--- a/src/publishsubscribe/qvaluespacesubscriber.h
+++ b/src/publishsubscribe/qvaluespacesubscriber.h
@@ -79,8 +79,8 @@ Q_SIGNALS:
void contentsChanged();
protected:
- virtual void connectNotify(const char *signal);
- virtual void disconnectNotify(const char *signal);
+ virtual void connectNotify(const QMetaMethod &signal);
+ virtual void disconnectNotify(const QMetaMethod &signal);
private:
QVariant valuex(const QVariant &def = QVariant()) const;
diff --git a/src/serviceframework/ipc/proxyobject.cpp b/src/serviceframework/ipc/proxyobject.cpp
index 0b2db76a..7801edbd 100644
--- a/src/serviceframework/ipc/proxyobject.cpp
+++ b/src/serviceframework/ipc/proxyobject.cpp
@@ -44,6 +44,7 @@
#include "qremoteserviceregisterentry_p.h"
#include "qservicedebuglog_p.h"
+#include <qmetaobject.h>
#include <qtimer.h>
#include <qcoreevent.h>
@@ -281,6 +282,7 @@ public:
QMetaObject* meta;
ObjectEndPoint* endPoint;
int ipcfailure;
+ QMetaMethod ipcFailureSignal;
int timerId;
};
@@ -299,7 +301,8 @@ QServiceProxyBase::QServiceProxyBase(ObjectEndPoint *endpoint, QObject *parent)
QMetaMethodBuilder b = sup.addSignal("errorUnrecoverableIPCFault(QService::UnrecoverableIPCError)");
d->ipcfailure = b.index();
d->meta = sup.toMetaObject();
-
+ d->ipcFailureSignal = d->meta->method(d->meta->methodOffset());
+ Q_ASSERT(d->ipcFailureSignal.methodSignature() == "errorUnrecoverableIPCFault(QService::UnrecoverableIPCError)");
}
QServiceProxyBase::~QServiceProxyBase()
@@ -309,9 +312,9 @@ QServiceProxyBase::~QServiceProxyBase()
delete d;
}
-void QServiceProxyBase::connectNotify(const char *signal)
+void QServiceProxyBase::connectNotify(const QMetaMethod &signal)
{
- if (d->timerId > 0 && strcmp(SIGNAL(errorUnrecoverableIPCFault(QService::UnrecoverableIPCError)), signal) == 0) {
+ if (d->timerId > 0 && signal == d->ipcFailureSignal) {
killTimer(d->timerId);
d->timerId = -1;
}
diff --git a/src/serviceframework/ipc/proxyobject_p.h b/src/serviceframework/ipc/proxyobject_p.h
index 70d32480..a01de90c 100644
--- a/src/serviceframework/ipc/proxyobject_p.h
+++ b/src/serviceframework/ipc/proxyobject_p.h
@@ -68,7 +68,7 @@ public:
void *qt_metacast(const char* className);
protected:
- void connectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
void timerEvent(QTimerEvent *);
private:
diff --git a/src/serviceframework/qservicemanager.cpp b/src/serviceframework/qservicemanager.cpp
index ce1b213c..d64f01ab 100644
--- a/src/serviceframework/qservicemanager.cpp
+++ b/src/serviceframework/qservicemanager.cpp
@@ -52,6 +52,7 @@
#endif
#include <QObject>
+#include <QMetaMethod>
#include <QPluginLoader>
#include <QFile>
#include <QCoreApplication>
@@ -776,10 +777,12 @@ QServiceManager::Error QServiceManager::error() const
/*!
\internal
*/
-void QServiceManager::connectNotify(const char *signal)
+void QServiceManager::connectNotify(const QMetaMethod &signal)
{
- if (QLatin1String(signal) == QLatin1String(SIGNAL(serviceAdded(QString,QService::Scope)))
- || QLatin1String(signal) == QLatin1String(SIGNAL(serviceRemoved(QString,QService::Scope)))) {
+ static const QMetaMethod serviceAddedSignal = QMetaMethod::fromSignal(&QServiceManager::serviceAdded);
+ static const QMetaMethod serviceRemovedSignal = QMetaMethod::fromSignal(&QServiceManager::serviceRemoved);
+ if (signal == serviceAddedSignal
+ || signal == serviceRemovedSignal) {
if (d->scope != QService::SystemScope)
d->dbManager->setChangeNotificationsEnabled(DatabaseManager::UserScope, true);
d->dbManager->setChangeNotificationsEnabled(DatabaseManager::SystemScope, true);
@@ -789,12 +792,14 @@ void QServiceManager::connectNotify(const char *signal)
/*!
\internal
*/
-void QServiceManager::disconnectNotify(const char *signal)
+void QServiceManager::disconnectNotify(const QMetaMethod &signal)
{
- if (QLatin1String(signal) == QLatin1String(SIGNAL(serviceAdded(QString,QService::Scope)))
- || QLatin1String(signal) == QLatin1String(SIGNAL(serviceRemoved(QString,QService::Scope)))) {
- if (receivers(SIGNAL(serviceAdded(QString,QService::Scope))) == 0
- && receivers(SIGNAL(serviceRemoved(QString,QService::Scope))) == 0) {
+ static const QMetaMethod serviceAddedSignal = QMetaMethod::fromSignal(&QServiceManager::serviceAdded);
+ static const QMetaMethod serviceRemovedSignal = QMetaMethod::fromSignal(&QServiceManager::serviceRemoved);
+ if (signal == serviceAddedSignal
+ || signal == serviceRemovedSignal) {
+ if (!isSignalConnected(serviceAddedSignal)
+ && !isSignalConnected(serviceRemovedSignal)) {
if (d->scope != QService::SystemScope)
d->dbManager->setChangeNotificationsEnabled(DatabaseManager::UserScope, false);
d->dbManager->setChangeNotificationsEnabled(DatabaseManager::SystemScope, false);
diff --git a/src/serviceframework/qservicemanager.h b/src/serviceframework/qservicemanager.h
index 318e2280..13c7ddd9 100644
--- a/src/serviceframework/qservicemanager.h
+++ b/src/serviceframework/qservicemanager.h
@@ -142,8 +142,8 @@ public:
bool event(QEvent *);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
Q_SIGNALS:
void serviceAdded(const QString& serviceName, QService::Scope scope);
diff --git a/src/systeminfo/qbatteryinfo.cpp b/src/systeminfo/qbatteryinfo.cpp
index ef13e49d..55018212 100644
--- a/src/systeminfo/qbatteryinfo.cpp
+++ b/src/systeminfo/qbatteryinfo.cpp
@@ -68,6 +68,8 @@ public:
QT_END_NAMESPACE
#endif
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -291,11 +293,30 @@ QBatteryInfo::BatteryStatus QBatteryInfo::batteryStatus(int battery) const
/*!
\internal
+
+ Returns the signal that corresponds to \a proxySignal in the
+ meta-object of the \a sourceObject.
+*/
+QMetaMethod proxyToSourceSignal(const QMetaMethod &proxySignal, QObject *sourceObject)
+{
+ if (!proxySignal.isValid())
+ return proxySignal;
+ Q_ASSERT(proxySignal.methodType() == QMetaMethod::Signal);
+ Q_ASSERT(sourceObject != 0);
+ const QMetaObject *sourceMeta = sourceObject->metaObject();
+ int sourceIndex = sourceMeta->indexOfSignal(proxySignal.methodSignature());
+ Q_ASSERT(sourceIndex != -1);
+ return sourceMeta->method(sourceIndex);
+}
+
+/*!
+ \internal
*/
-void QBatteryInfo::connectNotify(const char *signal)
+void QBatteryInfo::connectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(QT_SIMULATOR)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
#else
Q_UNUSED(signal)
#endif
@@ -304,14 +325,15 @@ void QBatteryInfo::connectNotify(const char *signal)
/*!
\internal
*/
-void QBatteryInfo::disconnectNotify(const char *signal)
+void QBatteryInfo::disconnectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(QT_SIMULATOR)
// We can only disconnect with the private implementation, when there is no receivers for the signal.
- if (receivers(signal) > 0)
+ if (isSignalConnected(signal))
return;
- disconnect(d_ptr, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
#else
Q_UNUSED(signal)
#endif
diff --git a/src/systeminfo/qbatteryinfo.h b/src/systeminfo/qbatteryinfo.h
index ebb129da..973ef99e 100644
--- a/src/systeminfo/qbatteryinfo.h
+++ b/src/systeminfo/qbatteryinfo.h
@@ -122,8 +122,8 @@ Q_SIGNALS:
void batteryStatusChanged(int battery, QBatteryInfo::BatteryStatus);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QBatteryInfo)
diff --git a/src/systeminfo/qbatteryinfo_linux.cpp b/src/systeminfo/qbatteryinfo_linux.cpp
index e4f309ba..809f42f8 100644
--- a/src/systeminfo/qbatteryinfo_linux.cpp
+++ b/src/systeminfo/qbatteryinfo_linux.cpp
@@ -43,6 +43,7 @@
#include <QtCore/qdir.h>
#include <QtCore/qfile.h>
+#include <QtCore/qmetaobject.h>
#include <QtCore/qtimer.h>
#if !defined(QT_NO_UDEV)
@@ -175,12 +176,21 @@ QBatteryInfo::BatteryStatus QBatteryInfoPrivate::batteryStatus(int battery)
return batteryStatuses.value(battery);
}
-void QBatteryInfoPrivate::connectNotify(const char *signal)
+void QBatteryInfoPrivate::connectNotify(const QMetaMethod &signal)
{
+ static const QMetaMethod batteryCountChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryCountChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargerTypeChanged);
+ static const QMetaMethod chargingStateChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargingStateChanged);
+ static const QMetaMethod currentFlowChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::currentFlowChanged);
+ static const QMetaMethod remainingCapacityChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingCapacityChanged);
+ static const QMetaMethod remainingChargingTimeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingChargingTimeChanged);
+ static const QMetaMethod voltageChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::voltageChanged);
+ static const QMetaMethod batteryStatusChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryStatusChanged);
+
#if !defined(QT_NO_UDEV)
if (!uDevWrapper)
uDevWrapper = new QUDevWrapper(this);
- if (!watchChargerType && strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0) {
+ if (!watchChargerType && signal == chargerTypeChangedSignal) {
connect(uDevWrapper, SIGNAL(chargerTypeChanged(QByteArray,bool)), this, SLOT(onChargerTypeChanged(QByteArray,bool)));
} else if (!watchCurrentFlow && !watchVoltage && !watchChargingState && !watchRemainingCapacity
&& !watchRemainingChargingTime && !watchBatteryCount && !watchBatteryStatus) {
@@ -197,38 +207,38 @@ void QBatteryInfoPrivate::connectNotify(const char *signal)
timer->start();
#endif // QT_NO_UDEV
- if (strcmp(signal, SIGNAL(batteryCountChanged(int))) == 0) {
+ if (signal == batteryCountChangedSignal) {
watchBatteryCount = true;
batteryCounts = getBatteryCount();
- } else if (strcmp(signal, SIGNAL(currentFlowChanged(int,int))) == 0) {
+ } else if (signal == currentFlowChangedSignal) {
watchCurrentFlow = true;
int count = batteryCount();
for (int i = 0; i < count; ++i)
currentFlows[i] = getCurrentFlow(i);
- } else if (strcmp(signal, SIGNAL(voltageChanged(int,int))) == 0) {
+ } else if (signal == voltageChangedSignal) {
watchVoltage = true;
int count = batteryCount();
for (int i = 0; i < count; ++i)
voltages[i] = getVoltage(i);
- } else if (strcmp(signal, SIGNAL(remainingCapacityChanged(int,int))) == 0) {
+ } else if (signal == remainingCapacityChangedSignal) {
watchRemainingCapacity = true;
int count = batteryCount();
for (int i = 0; i < count; ++i)
remainingCapacities[i] = getRemainingCapacity(i);
- } else if (strcmp(signal, SIGNAL(remainingChargingTimeChanged(int,int))) == 0) {
+ } else if (signal == remainingChargingTimeChangedSignal) {
watchRemainingChargingTime = true;
int count = batteryCount();
for (int i = 0; i < count; ++i)
remainingChargingTimes[i] = getRemainingChargingTime(i);
- } else if (strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0) {
+ } else if (signal == chargerTypeChangedSignal) {
watchChargerType = true;
currentChargerType = getChargerType();
- } else if (strcmp(signal, SIGNAL(chargingStateChanged(int,QBatteryInfo::ChargingState))) == 0) {
+ } else if (signal == chargingStateChangedSignal) {
watchChargingState = true;
int count = batteryCount();
for (int i = 0; i < count; ++i)
chargingStates[i] = getChargingState(i);
- } else if (strcmp(signal, SIGNAL(batteryStatusChanged(int,QBatteryInfo::BatteryStatus))) == 0) {
+ } else if (signal == batteryStatusChangedSignal) {
watchBatteryStatus = true;
int count = batteryCount();
for (int i = 0; i < count; i++)
@@ -236,36 +246,44 @@ void QBatteryInfoPrivate::connectNotify(const char *signal)
}
}
-void QBatteryInfoPrivate::disconnectNotify(const char *signal)
+void QBatteryInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(batteryCountChanged(int))) == 0) {
+ static const QMetaMethod batteryCountChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryCountChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargerTypeChanged);
+ static const QMetaMethod chargingStateChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargingStateChanged);
+ static const QMetaMethod currentFlowChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::currentFlowChanged);
+ static const QMetaMethod remainingCapacityChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingCapacityChanged);
+ static const QMetaMethod remainingChargingTimeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingChargingTimeChanged);
+ static const QMetaMethod voltageChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::voltageChanged);
+ static const QMetaMethod batteryStatusChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryStatusChanged);
+ if (signal == batteryCountChangedSignal) {
watchBatteryCount = false;
batteryCounts = -1;
- } else if (strcmp(signal, SIGNAL(currentFlowChanged(int,int))) == 0) {
+ } else if (signal == currentFlowChangedSignal) {
watchCurrentFlow = false;
currentFlows.clear();
- } else if (strcmp(signal, SIGNAL(voltageChanged(int,int))) == 0) {
+ } else if (signal == voltageChangedSignal) {
watchVoltage = false;
voltages.clear();
- } else if (strcmp(signal, SIGNAL(remainingCapacityChanged(int,int))) == 0) {
+ } else if (signal == remainingCapacityChangedSignal) {
watchRemainingCapacity = false;
remainingCapacities.clear();
- } else if (strcmp(signal, SIGNAL(remainingChargingTimeChanged(int,int))) == 0) {
+ } else if (signal == remainingChargingTimeChangedSignal) {
watchRemainingChargingTime = false;
remainingChargingTimes.clear();
- } else if (strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0) {
+ } else if (signal == chargerTypeChangedSignal) {
watchChargerType = false;
currentChargerType = QBatteryInfo::UnknownCharger;
- } else if (strcmp(signal, SIGNAL(chargingStateChanged(int,QBatteryInfo::ChargingState))) == 0) {
+ } else if (signal == chargingStateChangedSignal) {
watchChargingState = false;
chargingStates.clear();
- } else if (strcmp(signal, SIGNAL(batteryStatusChanged(int,QBatteryInfo::BatteryStatus))) == 0) {
+ } else if (signal == batteryStatusChangedSignal) {
watchBatteryStatus = false;
batteryStatuses.clear();
}
#if !defined(QT_NO_UDEV)
- if (uDevWrapper && !watchChargerType && strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0) {
+ if (uDevWrapper && !watchChargerType && signal == chargerTypeChangedSignal) {
disconnect(uDevWrapper, SIGNAL(chargerTypeChanged(QByteArray,bool)),
this, SLOT(onChargerTypeChanged(QByteArray,bool)));
} else if (uDevWrapper && !watchCurrentFlow && !watchVoltage && !watchChargingState && !watchRemainingCapacity
diff --git a/src/systeminfo/qbatteryinfo_linux_p.h b/src/systeminfo/qbatteryinfo_linux_p.h
index f385b891..b1bf4a09 100644
--- a/src/systeminfo/qbatteryinfo_linux_p.h
+++ b/src/systeminfo/qbatteryinfo_linux_p.h
@@ -95,8 +95,8 @@ Q_SIGNALS:
void batteryStatusChanged(int battery, QBatteryInfo::BatteryStatus);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private Q_SLOTS:
#if !defined(QT_NO_UDEV)
diff --git a/src/systeminfo/qbatteryinfo_win.cpp b/src/systeminfo/qbatteryinfo_win.cpp
index 9b34b64c..3a393a30 100644
--- a/src/systeminfo/qbatteryinfo_win.cpp
+++ b/src/systeminfo/qbatteryinfo_win.cpp
@@ -44,6 +44,8 @@
#include <windows.h>
#include <PowrProf.h>
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
QBatteryInfoPrivate::QBatteryInfoPrivate(QBatteryInfo *parent)
@@ -151,29 +153,45 @@ QBatteryInfo::BatteryStatus QBatteryInfoPrivate::batteryStatus(int battery)
return QBatteryInfo::BatteryStatusUnknown;
}
-void QBatteryInfoPrivate::connectNotify(const char *signal)
+void QBatteryInfoPrivate::connectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(batteryCountChanged(int))) == 0) {
- } else if (strcmp(signal, SIGNAL(currentFlowChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(voltageChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(remainingCapacityChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(remainingChargingTimeChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0) {
- } else if (strcmp(signal, SIGNAL(chargingStateChanged(int,QBatteryInfo::ChargingState))) == 0) {
- } else if (strcmp(signal, SIGNAL(batteryStatusChanged(int,QBatteryInfo::BatteryStatus))) == 0) {
+ static const QMetaMethod batteryCountChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryCountChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargerTypeChanged);
+ static const QMetaMethod chargingStateChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargingStateChanged);
+ static const QMetaMethod currentFlowChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::currentFlowChanged);
+ static const QMetaMethod remainingCapacityChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingCapacityChanged);
+ static const QMetaMethod remainingChargingTimeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingChargingTimeChanged);
+ static const QMetaMethod voltageChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::voltageChanged);
+ static const QMetaMethod batteryStatusChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryStatusChanged);
+ if (signal == batteryCountChangedSignal) {
+ } else if (signal == currentFlowChangedSignal) {
+ } else if (signal == voltageChangedSignal) {
+ } else if (signal == remainingCapacityChangedSignal) {
+ } else if (signal == remainingChargingTimeChangedSignal) {
+ } else if (signal == chargerTypeChangedSignal) {
+ } else if (signal == chargingStateChangedSignal) {
+ } else if (signal == batteryStatusChangedSignal) {
}
}
-void QBatteryInfoPrivate::disconnectNotify(const char *signal)
+void QBatteryInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(batteryCountChanged(int))) == 0) {
- } else if (strcmp(signal, SIGNAL(currentFlowChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(voltageChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(remainingCapacityChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(remainingChargingTimeChanged(int,int))) == 0) {
- } else if (strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0) {
- } else if (strcmp(signal, SIGNAL(chargingStateChanged(int,QBatteryInfo::ChargingState))) == 0) {
- } else if (strcmp(signal, SIGNAL(batteryStatusChanged(int,QBatteryInfo::BatteryStatus))) == 0) {
+ static const QMetaMethod batteryCountChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryCountChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargerTypeChanged);
+ static const QMetaMethod chargingStateChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::chargingStateChanged);
+ static const QMetaMethod currentFlowChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::currentFlowChanged);
+ static const QMetaMethod remainingCapacityChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingCapacityChanged);
+ static const QMetaMethod remainingChargingTimeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::remainingChargingTimeChanged);
+ static const QMetaMethod voltageChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::voltageChanged);
+ static const QMetaMethod batteryStatusChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoPrivate::batteryStatusChanged);
+ if (signal == batteryCountChangedSignal) {
+ } else if (signal == currentFlowChangedSignal) {
+ } else if (signal == voltageChangedSignal) {
+ } else if (signal == remainingCapacityChangedSignal) {
+ } else if (signal == remainingChargingTimeChangedSignal) {
+ } else if (signal == chargerTypeChangedSignal) {
+ } else if (signal == chargingStateChangedSignal) {
+ } else if (signal == batteryStatusChangedSignal) {
}
}
diff --git a/src/systeminfo/qbatteryinfo_win_p.h b/src/systeminfo/qbatteryinfo_win_p.h
index 9bc5b650..51e5c8cf 100644
--- a/src/systeminfo/qbatteryinfo_win_p.h
+++ b/src/systeminfo/qbatteryinfo_win_p.h
@@ -89,8 +89,8 @@ Q_SIGNALS:
void batteryStatusChanged(int battery, QBatteryInfo::BatteryStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QBatteryInfo * const q_ptr;
diff --git a/src/systeminfo/qdeviceinfo.cpp b/src/systeminfo/qdeviceinfo.cpp
index 669991c2..70d24009 100644
--- a/src/systeminfo/qdeviceinfo.cpp
+++ b/src/systeminfo/qdeviceinfo.cpp
@@ -69,6 +69,8 @@ public:
QT_END_NAMESPACE
#endif
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -279,13 +281,16 @@ QString QDeviceInfo::version(QDeviceInfo::Version type) const
return d_ptr->version(type);
}
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
/*!
\internal
*/
-void QDeviceInfo::connectNotify(const char *signal)
+void QDeviceInfo::connectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(QT_SIMULATOR)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
#else
Q_UNUSED(signal)
#endif
@@ -294,14 +299,15 @@ void QDeviceInfo::connectNotify(const char *signal)
/*!
\internal
*/
-void QDeviceInfo::disconnectNotify(const char *signal)
+void QDeviceInfo::disconnectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(QT_SIMULATOR)
// We can only disconnect with the private implementation, when there is no receivers for the signal.
- if (receivers(signal) > 0)
+ if (isSignalConnected(signal))
return;
- disconnect(d_ptr, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
#else
Q_UNUSED(signal)
#endif
diff --git a/src/systeminfo/qdeviceinfo.h b/src/systeminfo/qdeviceinfo.h
index c0dc68ef..b7a09bd3 100644
--- a/src/systeminfo/qdeviceinfo.h
+++ b/src/systeminfo/qdeviceinfo.h
@@ -131,8 +131,8 @@ Q_SIGNALS:
void thermalStateChanged(QDeviceInfo::ThermalState state);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QDeviceInfo)
diff --git a/src/systeminfo/qdeviceinfo_linux.cpp b/src/systeminfo/qdeviceinfo_linux.cpp
index 1f603aed..00b63f3c 100644
--- a/src/systeminfo/qdeviceinfo_linux.cpp
+++ b/src/systeminfo/qdeviceinfo_linux.cpp
@@ -52,6 +52,7 @@
#include "qscreensaver_linux_p.h"
#include <QtCore/qdir.h>
+#include <QtCore/qmetaobject.h>
#include <QtCore/qprocess.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qtimer.h>
@@ -396,14 +397,19 @@ QString QDeviceInfoPrivate::version(QDeviceInfo::Version type)
return QString();
}
-void QDeviceInfoPrivate::connectNotify(const char *signal)
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
+void QDeviceInfoPrivate::connectNotify(const QMetaMethod &signal)
{
#if !defined(QT_NO_JSONDB)
- if (strcmp(signal, SIGNAL(activatedLocksChanged(QDeviceInfo::LockTypeFlags))) == 0
- || strcmp(signal, SIGNAL(enabledLocksChanged(QDeviceInfo::LockTypeFlags))) == 0) {
+ static const QMetaMethod activatedLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoPrivate::activatedLocksChanged);
+ static const QMetaMethod enabledLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoPrivate::enabledLocksChanged);
+ if (signal == activatedLocksChangedSignal
+ || signal == enabledLocksChangedSignal) {
if (!jsondbWrapper)
jsondbWrapper = new QJsonDbWrapper(this);
- connect(jsondbWrapper, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, jsondbWrapper);
+ connect(jsondbWrapper, sourceSignal, this, signal, Qt::UniqueConnection);
return;
}
#endif // // QT_NO_JSONDB
@@ -417,24 +423,29 @@ void QDeviceInfoPrivate::connectNotify(const char *signal)
if (!timer->isActive())
timer->start();
- if (strcmp(signal, SIGNAL(thermalStateChanged(QDeviceInfo::ThermalState))) == 0) {
+ static const QMetaMethod thermalStateChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoPrivate::thermalStateChanged);
+ if (signal == thermalStateChangedSignal) {
watchThermalState = true;
currentThermalState = getThermalState();
}
}
-void QDeviceInfoPrivate::disconnectNotify(const char *signal)
+void QDeviceInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
#if !defined(QT_NO_JSONDB)
- if ((strcmp(signal, SIGNAL(activatedLocksChanged(QDeviceInfo::LockTypeFlags))) == 0
- || strcmp(signal, SIGNAL(enabledLocksChanged(QDeviceInfo::LockTypeFlags))) == 0)
+ static const QMetaMethod activatedLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoPrivate::activatedLocksChanged);
+ static const QMetaMethod enabledLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoPrivate::enabledLocksChanged);
+ if ((signal == activatedLocksChangedSignal
+ || signal == enabledLocksChangedSignal)
&& jsondbWrapper) {
- disconnect(jsondbWrapper, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, jsondbWrapper);
+ disconnect(jsondbWrapper, sourceSignal, this, signal);
return;
}
#endif // QT_NO_JSONDB
- if (strcmp(signal, SIGNAL(thermalStateChanged(QDeviceInfo::ThermalState))) == 0) {
+ static const QMetaMethod thermalStateChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoPrivate::thermalStateChanged);
+ if (signal == thermalStateChangedSignal) {
watchThermalState = false;
currentThermalState = QDeviceInfo::UnknownThermal;
}
diff --git a/src/systeminfo/qdeviceinfo_linux_p.h b/src/systeminfo/qdeviceinfo_linux_p.h
index 97a776e5..c4f6c463 100644
--- a/src/systeminfo/qdeviceinfo_linux_p.h
+++ b/src/systeminfo/qdeviceinfo_linux_p.h
@@ -100,8 +100,8 @@ Q_SIGNALS:
void thermalStateChanged(QDeviceInfo::ThermalState state);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private Q_SLOTS:
void onTimeout();
diff --git a/src/systeminfo/qdeviceprofile.cpp b/src/systeminfo/qdeviceprofile.cpp
index f2e82830..1b867c0e 100644
--- a/src/systeminfo/qdeviceprofile.cpp
+++ b/src/systeminfo/qdeviceprofile.cpp
@@ -58,6 +58,8 @@ public:
QT_END_NAMESPACE
#endif
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -165,13 +167,16 @@ QDeviceProfile::ProfileType QDeviceProfile::currentProfileType() const
return d_ptr->currentProfileType();
}
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
/*!
\internal
*/
-void QDeviceProfile::connectNotify(const char *signal)
+void QDeviceProfile::connectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(QT_SIMULATOR)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
#else
Q_UNUSED(signal)
#endif
@@ -180,14 +185,15 @@ void QDeviceProfile::connectNotify(const char *signal)
/*!
\internal
*/
-void QDeviceProfile::disconnectNotify(const char *signal)
+void QDeviceProfile::disconnectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(QT_SIMULATOR)
// We can only disconnect with the private implementation, when there is no receivers for the signal.
- if (receivers(signal) > 0)
+ if (isSignalConnected(signal))
return;
- disconnect(d_ptr, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
#else
Q_UNUSED(signal)
#endif
diff --git a/src/systeminfo/qdeviceprofile.h b/src/systeminfo/qdeviceprofile.h
index 4c9ad312..a0640d3b 100644
--- a/src/systeminfo/qdeviceprofile.h
+++ b/src/systeminfo/qdeviceprofile.h
@@ -84,8 +84,8 @@ Q_SIGNALS:
void currentProfileTypeChanged(QDeviceProfile::ProfileType profile);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QDeviceProfile)
diff --git a/src/systeminfo/qdeviceprofile_linux.cpp b/src/systeminfo/qdeviceprofile_linux.cpp
index 79b6af77..5dbcaa12 100644
--- a/src/systeminfo/qdeviceprofile_linux.cpp
+++ b/src/systeminfo/qdeviceprofile_linux.cpp
@@ -41,6 +41,8 @@
#include "qdeviceprofile_linux_p.h"
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
QDeviceProfilePrivate::QDeviceProfilePrivate(QDeviceProfile *parent)
@@ -93,30 +95,42 @@ QDeviceProfile::ProfileType QDeviceProfilePrivate::currentProfileType()
return QDeviceProfile::UnknownProfile;
}
-void QDeviceProfilePrivate::connectNotify(const char *signal)
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
+void QDeviceProfilePrivate::connectNotify(const QMetaMethod &signal)
{
#if !defined(QT_NO_JSONDB)
- if (strcmp(signal, SIGNAL(vibrationActivatedChanged(bool))) == 0
- || strcmp(signal, SIGNAL(currentProfileTypeChanged(QDeviceProfile::ProfileType))) == 0) {
- connect(&jsondbWrapper, signal, this, signal, Qt::UniqueConnection);
- } else if (strcmp(signal, SIGNAL(messageRingtoneVolumeChanged(int))) == 0) {
- connect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, signal, Qt::UniqueConnection);
- } else if (strcmp(signal, SIGNAL(voiceRingtoneVolumeChanged(int))) == 0) {
- connect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, signal, Qt::UniqueConnection);
+ static const QMetaMethod vibrationActivatedChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::vibrationActivatedChanged);
+ static const QMetaMethod messageRingtoneVolumeChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::messageRingtoneVolumeChanged);
+ static const QMetaMethod voiceRingtoneVolumeChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::voiceRingtoneVolumeChanged);
+ static const QMetaMethod currentProfileTypeChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::currentProfileTypeChanged);
+ if (signal == vibrationActivatedChangedSignal
+ || signal == currentProfileTypeChangedSignal) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, &jsondbWrapper);
+ connect(&jsondbWrapper, sourceSignal, this, signal, Qt::UniqueConnection);
+ } else if (signal == messageRingtoneVolumeChangedSignal) {
+ connect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, SIGNAL(messageRingtoneVolumeChangedSignal(int)), Qt::UniqueConnection);
+ } else if (signal == voiceRingtoneVolumeChangedSignal) {
+ connect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, SIGNAL(voiceRingtoneVolumeChangedSignal(int)), Qt::UniqueConnection);
}
#endif // // QT_NO_JSONDB
}
-void QDeviceProfilePrivate::disconnectNotify(const char *signal)
+void QDeviceProfilePrivate::disconnectNotify(const QMetaMethod &signal)
{
#if !defined(QT_NO_JSONDB)
- if (strcmp(signal, SIGNAL(vibrationActivatedChanged(bool))) == 0
- || strcmp(signal, SIGNAL(currentProfileTypeChanged(QDeviceProfile::ProfileType))) == 0) {
- disconnect(&jsondbWrapper, signal, this, signal);
- } else if (strcmp(signal, SIGNAL(messageRingtoneVolumeChanged(int))) == 0) {
- disconnect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, signal);
- } else if (strcmp(signal, SIGNAL(voiceRingtoneVolumeChanged(int))) == 0) {
- disconnect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, signal);
+ static const QMetaMethod vibrationActivatedChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::vibrationActivatedChanged);
+ static const QMetaMethod messageRingtoneVolumeChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::messageRingtoneVolumeChanged);
+ static const QMetaMethod voiceRingtoneVolumeChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::voiceRingtoneVolumeChanged);
+ static const QMetaMethod currentProfileTypeChangedSignal = QMetaMethod::fromSignal(&QDeviceProfilePrivate::currentProfileTypeChanged);
+ if (signal == vibrationActivatedChangedSignal
+ || signal == currentProfileTypeChangedSignal) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, &jsondbWrapper);
+ disconnect(&jsondbWrapper, sourceSignal, this, signal);
+ } else if (signal == messageRingtoneVolumeChangedSignal) {
+ disconnect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, SIGNAL(messageRingtoneVolumeChangedSignal(int)));
+ } else if (signal == voiceRingtoneVolumeChangedSignal) {
+ disconnect(&jsondbWrapper, SIGNAL(ringtoneVolumeChanged(int)), this, SIGNAL(voiceRingtoneVolumeChangedSignal(int)));
}
#endif // QT_NO_JSONDB
}
diff --git a/src/systeminfo/qdeviceprofile_linux_p.h b/src/systeminfo/qdeviceprofile_linux_p.h
index 8cbd0911..ab16ff4e 100644
--- a/src/systeminfo/qdeviceprofile_linux_p.h
+++ b/src/systeminfo/qdeviceprofile_linux_p.h
@@ -81,8 +81,8 @@ Q_SIGNALS:
void currentProfileTypeChanged(QDeviceProfile::ProfileType profile);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QDeviceProfile * const q_ptr;
diff --git a/src/systeminfo/qdisplayinfo.cpp b/src/systeminfo/qdisplayinfo.cpp
index 56f8fcff..ce162d6d 100644
--- a/src/systeminfo/qdisplayinfo.cpp
+++ b/src/systeminfo/qdisplayinfo.cpp
@@ -41,6 +41,7 @@
#include <qdisplayinfo.h>
+#include <QtCore/qmetaobject.h>
#include <QtGui/qguiapplication.h>
#include <QtGui/qscreen.h>
#include <QtGui/qplatformscreen_qpa.h>
@@ -210,13 +211,16 @@ int QDisplayInfo::physicalWidth(int screen) const
return -1;
}
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
/*!
\internal
*/
-void QDisplayInfo::connectNotify(const char *signal)
+void QDisplayInfo::connectNotify(const QMetaMethod &signal)
{
#if (defined(Q_OS_LINUX) || defined(QT_SIMULATOR)) && !defined(QT_NO_JSONDB)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
#else
Q_UNUSED(signal)
#endif
@@ -225,14 +229,15 @@ void QDisplayInfo::connectNotify(const char *signal)
/*!
\internal
*/
-void QDisplayInfo::disconnectNotify(const char *signal)
+void QDisplayInfo::disconnectNotify(const QMetaMethod &signal)
{
#if (defined(Q_OS_LINUX) || defined(QT_SIMULATOR)) && !defined(QT_NO_JSONDB)
// We can only disconnect with the private implementation, when there is no receivers for the signal.
- if (receivers(signal) > 0)
+ if (isSignalConnected(signal))
return;
- disconnect(d_ptr, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
#else
Q_UNUSED(signal)
#endif
diff --git a/src/systeminfo/qdisplayinfo.h b/src/systeminfo/qdisplayinfo.h
index 0e806bb7..169e3924 100644
--- a/src/systeminfo/qdisplayinfo.h
+++ b/src/systeminfo/qdisplayinfo.h
@@ -81,8 +81,8 @@ Q_SIGNALS:
void backlightStateChanged(int screen, QDisplayInfo::BacklightState state);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QDisplayInfo)
diff --git a/src/systeminfo/qdisplayinfo_linux.cpp b/src/systeminfo/qdisplayinfo_linux.cpp
index f4f9cccb..092cfef2 100644
--- a/src/systeminfo/qdisplayinfo_linux.cpp
+++ b/src/systeminfo/qdisplayinfo_linux.cpp
@@ -47,6 +47,7 @@
#include <QtCore/qdir.h>
#include <QtCore/qmap.h>
+#include <QtCore/qmetaobject.h>
QT_BEGIN_NAMESPACE
@@ -151,18 +152,20 @@ void QDisplayInfoPrivate::onBacklightStateChanged(int screen, QDisplayInfo::Back
}
}
-void QDisplayInfoPrivate::connectNotify(const char *signal)
+void QDisplayInfoPrivate::connectNotify(const QMetaMethod &signal)
{
- if (!backlightStateWatcher && strcmp(signal, SIGNAL(backlightStateChanged(int,QDisplayInfo::BacklightState))) == 0) {
+ static const QMetaMethod backlightStateChangedSignal = QMetaMethod::fromSignal(&QDisplayInfoPrivate::backlightStateChanged);
+ if (!backlightStateWatcher && signal == backlightStateChangedSignal) {
backlightStateWatcher = true;
if (backlightStates.size() == 0)
backlightState(0);
}
}
-void QDisplayInfoPrivate::disconnectNotify(const char *signal)
+void QDisplayInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(backlightStateChanged(int, QDisplayInfo::BacklightState))) == 0 && jsondbWrapper) {
+ static const QMetaMethod backlightStateChangedSignal = QMetaMethod::fromSignal(&QDisplayInfoPrivate::backlightStateChanged);
+ if (signal == backlightStateChangedSignal && jsondbWrapper) {
backlightStateWatcher = false;
}
}
diff --git a/src/systeminfo/qdisplayinfo_linux_p.h b/src/systeminfo/qdisplayinfo_linux_p.h
index 2a44fe5d..e89e3fdf 100644
--- a/src/systeminfo/qdisplayinfo_linux_p.h
+++ b/src/systeminfo/qdisplayinfo_linux_p.h
@@ -84,8 +84,8 @@ private Q_SLOTS:
void onBacklightStateChanged(int screen, QDisplayInfo::BacklightState state);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
#endif
private:
diff --git a/src/systeminfo/qjsondbwrapper.cpp b/src/systeminfo/qjsondbwrapper.cpp
index 37c13bf9..9f299d73 100644
--- a/src/systeminfo/qjsondbwrapper.cpp
+++ b/src/systeminfo/qjsondbwrapper.cpp
@@ -42,6 +42,7 @@
#include "qjsondbwrapper_p.h"
#include <QtCore/qeventloop.h>
+#include <QtCore/qmetaobject.h>
#include <QtCore/qtimer.h>
#include <QtJsonDb/qjsondbreadrequest.h>
#include <QtJsonDb/qjsondbwatcher.h>
@@ -185,19 +186,26 @@ QJsonValue QJsonDbWrapper::getSystemSettingValue(const QString &settingId, const
return QJsonValue();
}
-void QJsonDbWrapper::connectNotify(const char *signal)
+void QJsonDbWrapper::connectNotify(const QMetaMethod &signal)
{
+ static const QMetaMethod activatedLocksChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::activatedLocksChanged);
+ static const QMetaMethod enabledLocksChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::enabledLocksChanged);
+ static const QMetaMethod vibrationActivatedChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::vibrationActivatedChanged);
+ static const QMetaMethod ringtoneVolumeChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::ringtoneVolumeChanged);
+ static const QMetaMethod currentProfileTypeChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::currentProfileTypeChanged);
+ static const QMetaMethod backlightStateChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::backlightStateChanged);
+
if (watchActivatedLocks && watchEnabledLocks && watchProfile && watchBacklightState)
return;
- bool needWatchActivatedLocks = (strcmp(signal, SIGNAL(activatedLocksChanged(QDeviceInfo::LockTypeFlags))) == 0);
+ bool needWatchActivatedLocks = (signal == activatedLocksChangedSignal);
if (needWatchActivatedLocks) {
if (watchActivatedLocks)
return;
activatedLocks = activatedLockTypes();
}
- bool needWatchEnabledLocks = (strcmp(signal, SIGNAL(enabledLocksChanged(QDeviceInfo::LockTypeFlags))) == 0);
+ bool needWatchEnabledLocks = (signal == enabledLocksChangedSignal);
if (needWatchEnabledLocks) {
if (watchEnabledLocks)
return;
@@ -210,9 +218,9 @@ void QJsonDbWrapper::connectNotify(const char *signal)
if (needWatchEnabledLocks)
watchEnabledLocks = true;
- bool needWatchProfiles = (strcmp(signal, SIGNAL(vibrationActivatedChanged(bool))) == 0
- || strcmp(signal, SIGNAL(ringtoneVolumeChanged(int))) == 0
- || strcmp(signal, SIGNAL(currentProfileTypeChanged(QDeviceProfile::ProfileType))) == 0);
+ bool needWatchProfiles = (signal == vibrationActivatedChangedSignal
+ || signal == ringtoneVolumeChangedSignal
+ || signal == currentProfileTypeChangedSignal);
if (needWatchProfiles) {
if (watchProfile)
return;
@@ -220,7 +228,7 @@ void QJsonDbWrapper::connectNotify(const char *signal)
watchProfile = true;
}
- if (strcmp(signal, SIGNAL(backlightStateChanged(int,QDisplayInfo::BacklightState))) == 0) {
+ if (signal == backlightStateChangedSignal) {
if (!backlightWatcher) {
backlightWatcher = new QtJsonDb::QJsonDbWatcher(this);
backlightWatcher->setPartition(QString(QStringLiteral("Ephemeral")));
@@ -233,16 +241,19 @@ void QJsonDbWrapper::connectNotify(const char *signal)
}
}
-void QJsonDbWrapper::disconnectNotify(const char *signal)
+void QJsonDbWrapper::disconnectNotify(const QMetaMethod &signal)
{
if (!watchActivatedLocks && !watchEnabledLocks && !watchBacklightState)
return;
- if (strcmp(signal, SIGNAL(activatedLocksChanged(QDeviceInfo::LockTypeFlags))) == 0)
+ static const QMetaMethod activatedLocksChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::activatedLocksChanged);
+ static const QMetaMethod enabledLocksChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::enabledLocksChanged);
+ static const QMetaMethod backlightStateChangedSignal = QMetaMethod::fromSignal(&QJsonDbWrapper::backlightStateChanged);
+ if (signal == activatedLocksChangedSignal)
watchActivatedLocks = false;
- else if (strcmp(signal, SIGNAL(enabledLocksChanged(QDeviceInfo::LockTypeFlags))) == 0)
+ else if (signal == enabledLocksChangedSignal)
watchEnabledLocks = false;
- else if (strcmp(signal, SIGNAL(backlightStateChanged(int, QDisplayInfo::BacklightState))) == 0)
+ else if (signal == backlightStateChangedSignal)
watchBacklightState = false;
if (!watchBacklightState)
diff --git a/src/systeminfo/qjsondbwrapper_p.h b/src/systeminfo/qjsondbwrapper_p.h
index 7eb2a89a..402f9d4f 100644
--- a/src/systeminfo/qjsondbwrapper_p.h
+++ b/src/systeminfo/qjsondbwrapper_p.h
@@ -91,8 +91,8 @@ Q_SIGNALS:
void backlightStateChanged(int screen, QDisplayInfo::BacklightState state);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private Q_SLOTS:
void onJsonDbConnectionError(QtJsonDb::QJsonDbConnection::ErrorCode error, const QString &message);
diff --git a/src/systeminfo/qnetworkinfo.cpp b/src/systeminfo/qnetworkinfo.cpp
index 13e3ccd6..2be0c693 100644
--- a/src/systeminfo/qnetworkinfo.cpp
+++ b/src/systeminfo/qnetworkinfo.cpp
@@ -75,6 +75,8 @@ public:
QT_END_NAMESPACE
#endif
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -351,13 +353,16 @@ QString QNetworkInfo::networkName(QNetworkInfo::NetworkMode mode, int interface)
return d_ptr->networkName(mode, interface);
}
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
/*!
\internal
*/
-void QNetworkInfo::connectNotify(const char *signal)
+void QNetworkInfo::connectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(QT_SIMULATOR)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
#else
Q_UNUSED(signal)
#endif
@@ -366,14 +371,15 @@ void QNetworkInfo::connectNotify(const char *signal)
/*!
\internal
*/
-void QNetworkInfo::disconnectNotify(const char *signal)
+void QNetworkInfo::disconnectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN) || defined(QT_SIMULATOR)
// We can only disconnect with the private implementation, when there is no receivers for the signal.
- if (receivers(signal) > 0)
+ if (isSignalConnected(signal))
return;
- disconnect(d_ptr, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
#else
Q_UNUSED(signal)
#endif
diff --git a/src/systeminfo/qnetworkinfo.h b/src/systeminfo/qnetworkinfo.h
index e25bcb76..dd70667b 100644
--- a/src/systeminfo/qnetworkinfo.h
+++ b/src/systeminfo/qnetworkinfo.h
@@ -126,8 +126,8 @@ Q_SIGNALS:
void networkStatusChanged(QNetworkInfo::NetworkMode mode, int interface, QNetworkInfo::NetworkStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QNetworkInfo)
diff --git a/src/systeminfo/qnetworkinfo_linux.cpp b/src/systeminfo/qnetworkinfo_linux.cpp
index 47073829..d88343c6 100644
--- a/src/systeminfo/qnetworkinfo_linux.cpp
+++ b/src/systeminfo/qnetworkinfo_linux.cpp
@@ -49,6 +49,7 @@
#include <QtCore/qdir.h>
#include <QtCore/qfile.h>
+#include <QtCore/qmetaobject.h>
#include <QtCore/qtextstream.h>
#include <QtCore/qtimer.h>
#if !defined(QT_NO_BLUEZ)
@@ -451,23 +452,35 @@ QString QNetworkInfoPrivate::networkName(QNetworkInfo::NetworkMode mode, int int
return getNetworkName(mode, interface);
}
-void QNetworkInfoPrivate::connectNotify(const char *signal)
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
+void QNetworkInfoPrivate::connectNotify(const QMetaMethod &signal)
{
#if !defined(QT_NO_SFW_NETREG)
if (!networkServiceWrapper)
networkServiceWrapper = new QNetworkServiceWrapper(this);
- connect(networkServiceWrapper, signal, this, signal, Qt::UniqueConnection);
+ {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, networkServiceWrapper);
+ connect(networkServiceWrapper, sourceSignal, this, signal, Qt::UniqueConnection);
+ }
#elif !defined(QT_NO_OFONO)
if (QOfonoWrapper::isOfonoAvailable()) {
if (!ofonoWrapper)
ofonoWrapper = new QOfonoWrapper(this);
- connect(ofonoWrapper, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, ofonoWrapper);
+ connect(ofonoWrapper, sourceSignal, this, signal, Qt::UniqueConnection);
}
#endif
-// we always monitor "networkInterfaceCount" , as long as users connect any signals,
-// with update to date network interface counts, we can compute network mode, strength,
-// status, name properties in an efficient way
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::currentNetworkModeChanged);
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkInterfaceCountChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkStatusChanged);
+
+ // we always monitor "networkInterfaceCount" , as long as users connect any signals,
+ // with update to date network interface counts, we can compute network mode, strength,
+ // status, name properties in an efficient way
if (!watchNetworkInterfaceCount) {
QList<QNetworkInfo::NetworkMode> modes;
modes << QNetworkInfo::WlanMode << QNetworkInfo::EthernetMode << QNetworkInfo::BluetoothMode;
@@ -489,7 +502,7 @@ void QNetworkInfoPrivate::connectNotify(const char *signal)
watchNetworkInterfaceCount = true;
}
- if (strcmp(signal, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode))) == 0) {
+ if (signal == currentNetworkModeChangedSignal) {
// we monitor "networkStatus" by default, as long as currentNetworkModeChanged signal
// is connected, with always up to date network status, current network mode can
// be fast computed.
@@ -506,9 +519,7 @@ void QNetworkInfoPrivate::connectNotify(const char *signal)
}
currentMode = getCurrentNetworkMode();
watchCurrentNetworkMode = true;
- }
-
- if (strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int))) == 0) {
+ } else if (signal == networkSignalStrengthChangedSignal) {
QList<QNetworkInfo::NetworkMode> modes;
modes << QNetworkInfo::WlanMode << QNetworkInfo::EthernetMode << QNetworkInfo::BluetoothMode;
networkSignalStrengths.clear();
@@ -519,7 +530,7 @@ void QNetworkInfoPrivate::connectNotify(const char *signal)
}
watchNetworkSignalStrength = true;
- } else if (strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus))) == 0) {
+ } else if (signal == networkStatusChangedSignal) {
QList<QNetworkInfo::NetworkMode> modes;
modes << QNetworkInfo::WlanMode << QNetworkInfo::EthernetMode << QNetworkInfo::BluetoothMode;
networkStatuses.clear();
@@ -530,7 +541,7 @@ void QNetworkInfoPrivate::connectNotify(const char *signal)
}
watchNetworkStatus = true;
- } else if (strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString))) == 0) {
+ } else if (signal == networkNameChangedSignal) {
QList<QNetworkInfo::NetworkMode> modes;
modes << QNetworkInfo::WlanMode << QNetworkInfo::EthernetMode << QNetworkInfo::BluetoothMode;
networkNames.clear();
@@ -541,7 +552,7 @@ void QNetworkInfoPrivate::connectNotify(const char *signal)
}
watchNetworkName = true;
- } else if (strcmp(signal, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode))) == 0) {
+ } else if (signal == currentNetworkModeChangedSignal) {
currentMode = getCurrentNetworkMode();
watchCurrentNetworkMode = true;
} else {
@@ -558,33 +569,44 @@ void QNetworkInfoPrivate::connectNotify(const char *signal)
timer->start();
}
-void QNetworkInfoPrivate::disconnectNotify(const char *signal)
+void QNetworkInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
#if !defined(QT_NO_SFW_NETREG)
- if (networkServiceWrapper)
- disconnect(networkServiceWrapper, signal, this, signal);
+ if (networkServiceWrapper) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, networkServiceWrapper);
+ disconnect(networkServiceWrapper, sourceSignal, this, signal);
+ }
#elif !defined(QT_NO_OFONO)
if (!QOfonoWrapper::isOfonoAvailable() || !ofonoWrapper)
return;
- disconnect(ofonoWrapper, signal, this, signal);
+ {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, ofonoWrapper);
+ disconnect(ofonoWrapper, sourceSignal, this, signal);
+ }
#endif
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0
- && !watchNetworkStatus && !watchNetworkName && !watchNetworkSignalStrength ) {
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::currentNetworkModeChanged);
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkInterfaceCountChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoPrivate::networkStatusChanged);
+
+ if (signal == networkInterfaceCountChangedSignal
+ && !watchNetworkStatus && !watchNetworkName && !watchNetworkSignalStrength ) {
#if !defined(QT_NO_UDEV)
udevNotifier->setEnabled(false);
watchNetworkInterfaceCount = false;
return;
#endif // QT_NO_UDEV
watchNetworkInterfaceCount = false;
- } else if (strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int))) == 0) {
+ } else if (signal == networkSignalStrengthChangedSignal) {
watchNetworkSignalStrength = false;
- } else if (!watchCurrentNetworkMode && strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus))) == 0) {
+ } else if ((!watchCurrentNetworkMode) && (signal == networkStatusChangedSignal)) {
watchNetworkStatus = false;
- } else if (strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString))) == 0) {
+ } else if (signal == networkNameChangedSignal) {
watchNetworkName = false;
- } else if (strcmp(signal, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode))) == 0) {
+ } else if (signal == currentNetworkModeChangedSignal) {
watchCurrentNetworkMode = false;
} else {
return;
diff --git a/src/systeminfo/qnetworkinfo_linux_p.h b/src/systeminfo/qnetworkinfo_linux_p.h
index f36dbf3b..da207fb7 100644
--- a/src/systeminfo/qnetworkinfo_linux_p.h
+++ b/src/systeminfo/qnetworkinfo_linux_p.h
@@ -112,8 +112,8 @@ Q_SIGNALS:
void networkStatusChanged(QNetworkInfo::NetworkMode mode, int interface, QNetworkInfo::NetworkStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private Q_SLOTS:
#if !defined(QT_NO_UDEV)
diff --git a/src/systeminfo/qnetworkinfo_win.cpp b/src/systeminfo/qnetworkinfo_win.cpp
index 74d1e59d..5e032c0f 100644
--- a/src/systeminfo/qnetworkinfo_win.cpp
+++ b/src/systeminfo/qnetworkinfo_win.cpp
@@ -41,6 +41,8 @@
#include "qnetworkinfo_win_p.h"
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
QNetworkInfoPrivate::QNetworkInfoPrivate(QNetworkInfo *parent)
@@ -268,12 +270,12 @@ QString QNetworkInfoPrivate::networkName(QNetworkInfo::NetworkMode mode, int int
return QString();
}
-void QNetworkInfoPrivate::connectNotify(const char *signal)
+void QNetworkInfoPrivate::connectNotify(const QMetaMethod &signal)
{
Q_UNUSED(signal)
}
-void QNetworkInfoPrivate::disconnectNotify(const char *signal)
+void QNetworkInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
Q_UNUSED(signal)
}
diff --git a/src/systeminfo/qnetworkinfo_win_p.h b/src/systeminfo/qnetworkinfo_win_p.h
index 62e9a9bb..47adb695 100644
--- a/src/systeminfo/qnetworkinfo_win_p.h
+++ b/src/systeminfo/qnetworkinfo_win_p.h
@@ -95,8 +95,8 @@ Q_SIGNALS:
void networkStatusChanged(QNetworkInfo::NetworkMode mode, int interface, QNetworkInfo::NetworkStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QNetworkInfo * const q_ptr;
diff --git a/src/systeminfo/qnetworkservicewrapper.cpp b/src/systeminfo/qnetworkservicewrapper.cpp
index 1a8a1e66..a1405e5a 100644
--- a/src/systeminfo/qnetworkservicewrapper.cpp
+++ b/src/systeminfo/qnetworkservicewrapper.cpp
@@ -44,6 +44,8 @@
#include <QServiceManager>
#include <QServiceFilter>
+#include <QMetaMethod>
+
#if !defined(QT_NO_SFW_NETREG)
QT_BEGIN_NAMESPACE
@@ -318,15 +320,26 @@ QNetworkInfo::NetworkMode QNetworkServiceWrapper::getCurrentNetworkMode(QNetwork
return mode;
}
-void QNetworkServiceWrapper::connectNotify(const char *signal)
+void QNetworkServiceWrapper::connectNotify(const QMetaMethod &signal)
{
QList<int> interfaceIndexes;
interfaceIndexes = allNetworkManagerInterfaces.keys();
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0
+ static const QMetaMethod cellIdChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::cellIdChanged);
+ static const QMetaMethod currentCellDataTechnologyChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentCellDataTechnologyChanged);
+ static const QMetaMethod currentMobileCountryCodeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentMobileCountryCodeChanged);
+ static const QMetaMethod currentMobileNetworkCodeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentMobileNetworkCodeChanged);
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentNetworkModeChanged);
+ static const QMetaMethod locationAreaCodeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::locationAreaCodeChanged);
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkInterfaceCountChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkStatusChanged);
+
+ if (signal == networkInterfaceCountChangedSignal
&& !watchInterfaceCount) {
watchInterfaceCount = true;
- } else if (strcmp(signal, SIGNAL(currentCellDataTechnologyChanged(int,QNetworkInfo::CellDataTechnology))) == 0
+ } else if (signal == currentCellDataTechnologyChangedSignal
&& !watchTechnologies) {
currentCellDataTechnologies.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -334,7 +347,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
connect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(technologyChanged(const QString&)), this, SLOT(onTechnologyChanged(const QString&)));
}
watchTechnologies = true;
- } else if (strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int))) == 0
+ } else if (signal == networkSignalStrengthChangedSignal
&& !watchSignalStrengths) {
signalStrengths.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -348,7 +361,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
}
watchNetworkModes = true;
watchSignalStrengths = true;
- } else if (strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus))) == 0
+ } else if (signal == networkStatusChangedSignal
&& !watchStatuses) {
networkStatuses.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -362,7 +375,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
}
watchNetworkModes = true;
watchStatuses = true;
- } else if (strcmp(signal, SIGNAL(currentMobileCountryCodeChanged(int,QString))) == 0
+ } else if (signal == currentMobileCountryCodeChangedSignal
&& !watchCurrentMccs) {
currentMccs.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -370,7 +383,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
connect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(mobileCountryCodeChanged(const QString&)), this, SLOT(onCurrentMccChanged(const QString&)));
}
watchCurrentMccs = true;
- } else if (strcmp(signal, SIGNAL(currentMobileNetworkCodeChanged(int,QString))) == 0
+ } else if (signal == currentMobileNetworkCodeChangedSignal
&& !watchCurrentMncs) {
currentMncs.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -378,7 +391,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
connect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(mobileNetworkCodeChanged(const QString&)), this, SLOT(onCurrentMncChanged(const QString&)));
}
watchCurrentMncs = true;
- } else if (strcmp(signal, SIGNAL(cellIdChanged(int,QString))) == 0
+ } else if (signal == cellIdChangedSignal
&& !watchCellIds) {
cellIds.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -386,7 +399,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
connect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(cellIdChanged(uint)), this, SLOT(onCellIdChanged(uint)));
}
watchCellIds = true;
- } else if (strcmp(signal, SIGNAL(locationAreaCodeChanged(int,QString))) == 0
+ } else if (signal == locationAreaCodeChangedSignal
&& !watchLacs) {
lacs.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -394,7 +407,7 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
connect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(locationAreaCodeChanged(uint)), this, SLOT(onLocationAreaCodeChanged(uint)));
}
watchLacs = true;
- } else if (strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString))) == 0
+ } else if (signal == networkNameChangedSignal
&& !watchOperatorNames) {
operatorNames.clear();
foreach (const int interfaceIndex, interfaceIndexes) {
@@ -412,50 +425,61 @@ void QNetworkServiceWrapper::connectNotify(const char *signal)
}
-void QNetworkServiceWrapper::disconnectNotify(const char *signal)
+void QNetworkServiceWrapper::disconnectNotify(const QMetaMethod &signal)
{
QList<int> interfaceIndexes;
interfaceIndexes = allNetworkManagerInterfaces.keys();
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0
+ static const QMetaMethod cellIdChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::cellIdChanged);
+ static const QMetaMethod currentCellDataTechnologyChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentCellDataTechnologyChanged);
+ static const QMetaMethod currentMobileCountryCodeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentMobileCountryCodeChanged);
+ static const QMetaMethod currentMobileNetworkCodeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentMobileNetworkCodeChanged);
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::currentNetworkModeChanged);
+ static const QMetaMethod locationAreaCodeChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::locationAreaCodeChanged);
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkInterfaceCountChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkServiceWrapper::networkStatusChanged);
+
+ if (signal == networkInterfaceCountChangedSignal
&& watchInterfaceCount) {
watchInterfaceCount = false;
- } else if (strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int))) == 0
+ } else if (signal == networkSignalStrengthChangedSignal
&& watchSignalStrengths) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(signalBarsChanged(int)), this, SLOT(onSignalStrengthChanged(int)));
watchSignalStrengths = false;
- } else if (strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus))) == 0
+ } else if (signal == networkStatusChangedSignal
&& watchStatuses) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(registrationStatusChanged(const QString&)), this, SLOT(onNetworkStatusChanged(const QString&)));
watchStatuses = false;
- } else if (strcmp(signal, SIGNAL(currentMobileCountryCodeChanged(int,QString))) == 0
+ } else if (signal == currentMobileCountryCodeChangedSignal
&& watchCurrentMccs) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(mobileCountryCodeChanged(const QString&)), this, SLOT(onCurrentMccChanged(const QString&)));
watchCurrentMccs = false;
- } else if (strcmp(signal, SIGNAL(currentMobileNetworkCodeChanged(int,QString))) == 0
+ } else if (signal == currentMobileNetworkCodeChangedSignal
&& watchCurrentMncs) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(mobileNetworkCodeChanged(const QString&)), this, SLOT(onCurrentMncChanged(const QString&)));
watchCurrentMncs = false;
- } else if (strcmp(signal, SIGNAL(cellIdChanged(int,QString))) == 0
+ } else if (signal == cellIdChangedSignal
&& watchCellIds) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(cellIdChanged(uint)), this, SLOT(onCellIdChanged(uint)));
watchCellIds = false;
- } else if (strcmp(signal, SIGNAL(locationAreaCodeChanged(int,QString))) == 0
+ } else if (signal == locationAreaCodeChangedSignal
&& watchLacs) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(locationAreaCodeChanged(uint)), this, SLOT(onLocationAreaCodeChanged(uint)));
watchLacs = false;
- } else if (strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString))) == 0
+ } else if (signal == networkNameChangedSignal
&& watchOperatorNames) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(providerNameChanged(const QString&)), this, SLOT(onOperatorNameChanged(const QString&)));
watchOperatorNames = false;
- } else if (strcmp(signal, SIGNAL(currentCellDataTechnologyChanged(int,QNetworkInfo::CellDataTechnology))) == 0
+ } else if (signal == currentCellDataTechnologyChangedSignal
&& watchTechnologies) {
foreach (const int interfaceIndex, interfaceIndexes)
disconnect(loadedNetworkManagerInterfaces.value(interfaceIndex), SIGNAL(technologyChanged(const QString&)), this, SLOT(onTechnologyChanged(const QString&)));
diff --git a/src/systeminfo/qnetworkservicewrapper_p.h b/src/systeminfo/qnetworkservicewrapper_p.h
index da88d045..dee178f9 100644
--- a/src/systeminfo/qnetworkservicewrapper_p.h
+++ b/src/systeminfo/qnetworkservicewrapper_p.h
@@ -101,8 +101,8 @@ Q_SIGNALS:
void networkStatusChanged(QNetworkInfo::NetworkMode mode, int interface, QNetworkInfo::NetworkStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private Q_SLOTS:
void onServiceAdded(const QString &serviceName, QService::Scope scope);
diff --git a/src/systeminfo/qofonowrapper.cpp b/src/systeminfo/qofonowrapper.cpp
index 48786a8c..51616530 100644
--- a/src/systeminfo/qofonowrapper.cpp
+++ b/src/systeminfo/qofonowrapper.cpp
@@ -41,6 +41,7 @@
#include "qofonowrapper_p.h"
+#include <QtCore/qmetaobject.h>
#include <QtDBus/qdbusconnection.h>
#include <QtDBus/qdbusconnectioninterface.h>
#include <QtDBus/qdbusmetatype.h>
@@ -239,9 +240,20 @@ QString QOfonoWrapper::imei(const QString &modemPath)
return reply.value().value(QString(QStringLiteral("Serial"))).toString();
}
-void QOfonoWrapper::connectNotify(const char *signal)
+void QOfonoWrapper::connectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0) {
+ static const QMetaMethod cellIdChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::cellIdChanged);
+ static const QMetaMethod currentCellDataTechnologyChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentCellDataTechnologyChanged);
+ static const QMetaMethod currentMobileCountryCodeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentMobileCountryCodeChanged);
+ static const QMetaMethod currentMobileNetworkCodeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentMobileNetworkCodeChanged);
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentNetworkModeChanged);
+ static const QMetaMethod locationAreaCodeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::locationAreaCodeChanged);
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkInterfaceCountChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkStatusChanged);
+
+ if (signal == networkInterfaceCountChangedSignal) {
allModemPaths = getAllModems();
QDBusConnection::systemBus().connect(*OFONO_SERVICE(), *OFONO_MANAGER_PATH(), *OFONO_MANAGER_INTERFACE(),
QString(QStringLiteral("ModemAdded")),
@@ -250,14 +262,14 @@ void QOfonoWrapper::connectNotify(const char *signal)
QString(QStringLiteral("ModemRemoved")),
this, SLOT(onOfonoModemRemoved(QDBusObjectPath)));
watchAllModems = true;
- } else if (strcmp(signal, SIGNAL(currentMobileCountryCodeChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(currentMobileNetworkCodeChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(cellIdChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(currentCellDataTechnologyChanged(int,QNetworkInfo::CellDataTechnology))) == 0
- || strcmp(signal, SIGNAL(locationAreaCodeChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,QString))) == 0
- || strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int))) == 0
- || strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,QNetworkInfo::NetworkStatus))) == 0) {
+ } else if (signal == currentMobileCountryCodeChangedSignal
+ || signal == currentMobileNetworkCodeChangedSignal
+ || signal == cellIdChangedSignal
+ || signal == currentCellDataTechnologyChangedSignal
+ || signal == locationAreaCodeChangedSignal
+ || signal == networkNameChangedSignal
+ || signal == networkSignalStrengthChangedSignal
+ || signal == networkStatusChangedSignal) {
signalStrengths.clear();
currentCellDataTechnologies.clear();
networkStatuses.clear();
@@ -286,9 +298,20 @@ void QOfonoWrapper::connectNotify(const char *signal)
}
}
-void QOfonoWrapper::disconnectNotify(const char *signal)
+void QOfonoWrapper::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0) {
+ static const QMetaMethod cellIdChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::cellIdChanged);
+ static const QMetaMethod currentCellDataTechnologyChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentCellDataTechnologyChanged);
+ static const QMetaMethod currentMobileCountryCodeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentMobileCountryCodeChanged);
+ static const QMetaMethod currentMobileNetworkCodeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentMobileNetworkCodeChanged);
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::currentNetworkModeChanged);
+ static const QMetaMethod locationAreaCodeChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::locationAreaCodeChanged);
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkInterfaceCountChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QOfonoWrapper::networkStatusChanged);
+
+ if (signal == networkInterfaceCountChangedSignal) {
QDBusConnection::systemBus().disconnect(*OFONO_SERVICE(), *OFONO_MANAGER_PATH(), *OFONO_MANAGER_INTERFACE(),
QString(QStringLiteral("ModemAdded")),
this, SLOT(onOfonoModemAdded(QDBusObjectPath)));
@@ -296,14 +319,14 @@ void QOfonoWrapper::disconnectNotify(const char *signal)
QString(QStringLiteral("ModemRemoved")),
this, SLOT(onOfonoModemRemoved(QDBusObjectPath)));
watchAllModems = false;
- } else if (strcmp(signal, SIGNAL(currentMobileCountryCodeChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(currentMobileNetworkCodeChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(cellIdChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(currentCellDataTechnologyChanged(int,QNetworkInfo::CellDataTechnology))) == 0
- || strcmp(signal, SIGNAL(locationAreaCodeChanged(int,QString))) == 0
- || strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,QString))) == 0
- || strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int))) == 0
- || strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,QNetworkInfo::NetworkStatus))) == 0) {
+ } else if (signal == currentMobileCountryCodeChanged
+ || signal == currentMobileNetworkCodeChangedSignal
+ || signal == cellIdChangedSignal
+ || signal == currentCellDataTechnologyChangedSignal
+ || signal == locationAreaCodeChangedSignal
+ || signal == networkNameChangedSignal
+ || signal == networkSignalStrengthChangedSignal
+ || signal == networkStatusChangedSignal) {
QStringList modems = allModems();
foreach (const QString &modem, modems) {
QDBusConnection::systemBus().disconnect(*OFONO_SERVICE(),
diff --git a/src/systeminfo/qofonowrapper_p.h b/src/systeminfo/qofonowrapper_p.h
index 5d7acb7b..1445209c 100644
--- a/src/systeminfo/qofonowrapper_p.h
+++ b/src/systeminfo/qofonowrapper_p.h
@@ -110,8 +110,8 @@ Q_SIGNALS:
void networkStatusChanged(QNetworkInfo::NetworkMode mode, int interface, QNetworkInfo::NetworkStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private Q_SLOTS:
void onOfonoModemAdded(const QDBusObjectPath &path);
diff --git a/src/systeminfo/qstorageinfo.cpp b/src/systeminfo/qstorageinfo.cpp
index b63205fc..ca3f3af5 100644
--- a/src/systeminfo/qstorageinfo.cpp
+++ b/src/systeminfo/qstorageinfo.cpp
@@ -63,6 +63,8 @@ public:
QT_END_NAMESPACE
#endif
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -153,13 +155,16 @@ QStorageInfo::DriveType QStorageInfo::driveType(const QString &drive) const
return d_ptr->driveType(drive);
}
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
/*!
\internal
*/
-void QStorageInfo::connectNotify(const char *signal)
+void QStorageInfo::connectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
#else
Q_UNUSED(signal)
#endif
@@ -168,14 +173,15 @@ void QStorageInfo::connectNotify(const char *signal)
/*!
\internal
*/
-void QStorageInfo::disconnectNotify(const char *signal)
+void QStorageInfo::disconnectNotify(const QMetaMethod &signal)
{
#if defined(Q_OS_LINUX) || defined(Q_OS_WIN)
// We can only disconnect with the private implementation, when there is no receivers for the signal.
- if (receivers(signal) > 0)
+ if (isSignalConnected(signal))
return;
- disconnect(d_ptr, signal, this, signal);
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
#else
Q_UNUSED(signal)
#endif
diff --git a/src/systeminfo/qstorageinfo.h b/src/systeminfo/qstorageinfo.h
index 2243a22a..41e47772 100644
--- a/src/systeminfo/qstorageinfo.h
+++ b/src/systeminfo/qstorageinfo.h
@@ -83,8 +83,8 @@ Q_SIGNALS:
void logicalDriveChanged(const QString &drive, bool added);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QStorageInfo)
diff --git a/src/systeminfo/qstorageinfo_linux.cpp b/src/systeminfo/qstorageinfo_linux.cpp
index d9af1dd0..b771d6e6 100644
--- a/src/systeminfo/qstorageinfo_linux.cpp
+++ b/src/systeminfo/qstorageinfo_linux.cpp
@@ -43,6 +43,7 @@
#include <QtCore/qfile.h>
#include <QtCore/qdir.h>
+#include <QtCore/qmetaobject.h>
#include <QtCore/qsocketnotifier.h>
#include <errno.h>
@@ -277,15 +278,17 @@ QStorageInfo::DriveType QStorageInfoPrivate::driveType(const QString &drive)
return type;
}
-void QStorageInfoPrivate::connectNotify(const char *signal)
+void QStorageInfoPrivate::connectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(logicalDriveChanged(QString,bool))) == 0)
+ static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
+ if (signal == logicalDriveChangedSignal)
setupWatcher();
}
-void QStorageInfoPrivate::disconnectNotify(const char *signal)
+void QStorageInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(logicalDriveChanged(QString,bool))) == 0)
+ static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
+ if (signal == logicalDriveChangedSignal)
cleanupWatcher();
}
diff --git a/src/systeminfo/qstorageinfo_linux_p.h b/src/systeminfo/qstorageinfo_linux_p.h
index 8b3c2134..3124482a 100644
--- a/src/systeminfo/qstorageinfo_linux_p.h
+++ b/src/systeminfo/qstorageinfo_linux_p.h
@@ -81,8 +81,8 @@ Q_SIGNALS:
void logicalDriveChanged(const QString &drive, bool added);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QStorageInfo * const q_ptr;
diff --git a/src/systeminfo/qstorageinfo_win.cpp b/src/systeminfo/qstorageinfo_win.cpp
index 58cde52f..9cfd3326 100644
--- a/src/systeminfo/qstorageinfo_win.cpp
+++ b/src/systeminfo/qstorageinfo_win.cpp
@@ -42,6 +42,7 @@
#include "qstorageinfo_win_p.h"
#include <QtCore/qdir.h>
+#include <QtCore/qmetaobject.h>
#include <windows.h>
@@ -111,15 +112,17 @@ QStorageInfo::DriveType QStorageInfoPrivate::driveType(const QString &drive)
};
}
-void QStorageInfoPrivate::connectNotify(const char *signal)
+void QStorageInfoPrivate::connectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(logicalDriveChanged(QString,bool))) == 0) {
+ static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
+ if (signal == logicalDriveChangedSignal) {
}
}
-void QStorageInfoPrivate::disconnectNotify(const char *signal)
+void QStorageInfoPrivate::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(logicalDriveChanged(QString,bool))) == 0) {
+ static const QMetaMethod logicalDriveChangedSignal = QMetaMethod::fromSignal(&QStorageInfoPrivate::logicalDriveChanged);
+ if (signal == logicalDriveChangedSignal) {
}
}
diff --git a/src/systeminfo/qstorageinfo_win_p.h b/src/systeminfo/qstorageinfo_win_p.h
index 13eda974..757b3ad8 100644
--- a/src/systeminfo/qstorageinfo_win_p.h
+++ b/src/systeminfo/qstorageinfo_win_p.h
@@ -77,8 +77,8 @@ Q_SIGNALS:
void logicalDriveChanged(const QString &drive, bool added);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QStorageInfo * const q_ptr;
diff --git a/src/systeminfo/qsysteminfo_simulator.cpp b/src/systeminfo/qsysteminfo_simulator.cpp
index 165193d6..96746a26 100644
--- a/src/systeminfo/qsysteminfo_simulator.cpp
+++ b/src/systeminfo/qsysteminfo_simulator.cpp
@@ -51,6 +51,8 @@
# include "qnetworkinfo_linux_p.h"
#endif
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
// QBatteryInfoSimulator
@@ -147,31 +149,53 @@ QBatteryInfo::BatteryStatus QBatteryInfoSimulator::batteryStatus(int battery)
return QBatteryInfo::BatteryStatusUnknown;
}
-void QBatteryInfoSimulator::connectNotify(const char *signal)
-{
- if (batteryInfoSimulatorBackend && (strcmp(signal, SIGNAL(batteryCountChanged(int))) == 0
- || strcmp(signal, SIGNAL(currentFlowChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(voltageChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(remainingCapacityChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(remainingChargingTimeChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0
- || strcmp(signal, SIGNAL(chargingStateChanged(int,QBatteryInfo::ChargingState))) == 0
- || strcmp(signal, SIGNAL(batteryStatusChanged(int,QBatteryInfo::BatteryStatus))) == 0)) {
- connect(batteryInfoSimulatorBackend, signal, this, signal);
+extern QMetaMethod proxyToSourceSignal(const QMetaMethod &, QObject *);
+
+void QBatteryInfoSimulator::connectNotify(const QMetaMethod &signal)
+{
+ static const QMetaMethod batteryCountChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::batteryCountChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::chargerTypeChanged);
+ static const QMetaMethod chargingStateChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::chargingStateChanged);
+ static const QMetaMethod currentFlowChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::currentFlowChanged);
+ static const QMetaMethod remainingCapacityChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::remainingCapacityChanged);
+ static const QMetaMethod remainingChargingTimeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::remainingChargingTimeChanged);
+ static const QMetaMethod voltageChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::voltageChanged);
+ static const QMetaMethod batteryStatusChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::batteryStatusChanged);
+
+ if (batteryInfoSimulatorBackend && (signal == batteryCountChangedSignal
+ || signal == currentFlowChangedSignal
+ || signal == voltageChangedSignal
+ || signal == remainingCapacityChangedSignal
+ || signal == remainingChargingTimeChangedSignal
+ || signal == chargerTypeChangedSignal
+ || signal == chargingStateChangedSignal
+ || signal == batteryStatusChangedSignal)) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, batteryInfoSimulatorBackend);
+ connect(batteryInfoSimulatorBackend, sourceSignal, this, signal);
}
}
-void QBatteryInfoSimulator::disconnectNotify(const char *signal)
-{
- if (batteryInfoSimulatorBackend && (strcmp(signal, SIGNAL(batteryCountChanged(int))) == 0
- || strcmp(signal, SIGNAL(currentFlowChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(voltageChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(remainingCapacityChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(remainingChargingTimeChanged(int,int))) == 0
- || strcmp(signal, SIGNAL(chargerTypeChanged(QBatteryInfo::ChargerType))) == 0
- || strcmp(signal, SIGNAL(chargingStateChanged(int,QBatteryInfo::ChargingState))) == 0
- || strcmp(signal, SIGNAL(batteryStatusChanged(int,QBatteryInfo::BatteryStatus))) == 0)) {
- disconnect(batteryInfoSimulatorBackend, signal, this, signal);
+void QBatteryInfoSimulator::disconnectNotify(const QMetaMethod &signal)
+{
+ static const QMetaMethod batteryCountChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::batteryCountChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::chargerTypeChanged);
+ static const QMetaMethod chargingStateChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::chargingStateChanged);
+ static const QMetaMethod currentFlowChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::currentFlowChanged);
+ static const QMetaMethod remainingCapacityChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::remainingCapacityChanged);
+ static const QMetaMethod remainingChargingTimeChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::remainingChargingTimeChanged);
+ static const QMetaMethod voltageChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::voltageChanged);
+ static const QMetaMethod batteryStatusChangedSignal = QMetaMethod::fromSignal(&QBatteryInfoSimulator::batteryStatusChanged);
+
+ if (batteryInfoSimulatorBackend && (signal == batteryCountChangedSignal
+ || signal == currentFlowChangedSignal
+ || signal == voltageChangedSignal
+ || signal == remainingCapacityChangedSignal
+ || signal == remainingChargingTimeChangedSignal
+ || signal == chargerTypeChangedSignal
+ || signal == chargingStateChangedSignal
+ || signal == batteryStatusChangedSignal)) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, batteryInfoSimulatorBackend);
+ disconnect(batteryInfoSimulatorBackend, sourceSignal, this, signal);
}
}
@@ -302,42 +326,62 @@ QString QDeviceInfoSimulator::version(QDeviceInfo::Version type)
return QString();
}
-void QDeviceInfoSimulator::connectNotify(const char *signal)
+void QDeviceInfoSimulator::connectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(activatedLocksChanged(QDeviceInfo::LockTypeFlags))) == 0
- || strcmp(signal, SIGNAL(enabledLocksChanged(QDeviceInfo::LockTypeFlags))) == 0) {
+ static const QMetaMethod activatedLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoSimulator::activatedLocksChanged);
+ static const QMetaMethod enabledLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoSimulator::enabledLocksChanged);
+ static const QMetaMethod thermalStateChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoSimulator::thermalStateChanged);
+
+ if (signal == activatedLocksChangedSignal
+ || signal == enabledLocksChangedSignal) {
#if defined(Q_OS_LINUX) && !defined(QT_NO_JSONDB)
- if (d_ptr)
- connect(d_ptr, signal, this, signal, Qt::UniqueConnection);
+ if (d_ptr) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ connect(d_ptr, sourceSignal, this, signal, Qt::UniqueConnection);
+ }
return;
#else
- if (deviceInfoSimulatorBackend)
- connect(deviceInfoSimulatorBackend, signal, this, signal);
+ if (deviceInfoSimulatorBackend) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, deviceInfoSimulatorBackend);
+ connect(deviceInfoSimulatorBackend, sourceSignal, this, signal);
+ }
return;
#endif
}
- if (deviceInfoSimulatorBackend && strcmp(signal, SIGNAL(thermalStateChanged(QDeviceInfo::ThermalState state))) == 0)
- connect(deviceInfoSimulatorBackend, signal, this, signal);
+ if (deviceInfoSimulatorBackend && signal == thermalStateChangedSignal) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, deviceInfoSimulatorBackend);
+ connect(deviceInfoSimulatorBackend, sourceSignal, this, signal);
+ }
}
-void QDeviceInfoSimulator::disconnectNotify(const char *signal)
+void QDeviceInfoSimulator::disconnectNotify(const QMetaMethod &signal)
{
- if (strcmp(signal, SIGNAL(activatedLocksChanged(QDeviceInfo::LockTypeFlags))) == 0
- || strcmp(signal, SIGNAL(enabledLocksChanged(QDeviceInfo::LockTypeFlags))) == 0) {
+ static const QMetaMethod activatedLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoSimulator::activatedLocksChanged);
+ static const QMetaMethod enabledLocksChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoSimulator::enabledLocksChanged);
+ static const QMetaMethod thermalStateChangedSignal = QMetaMethod::fromSignal(&QDeviceInfoSimulator::thermalStateChanged);
+
+ if (signal == activatedLocksChangedSignal
+ || signal == enabledLocksChangedSignal) {
#if defined(Q_OS_LINUX) && !defined(QT_NO_JSONDB)
- if (d_ptr)
- disconnect(d_ptr, signal, this, signal);
+ if (d_ptr) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, d_ptr);
+ disconnect(d_ptr, sourceSignal, this, signal);
+ }
return;
#else
- if (deviceInfoSimulatorBackend)
- disconnect(deviceInfoSimulatorBackend, signal, this, signal);
+ if (deviceInfoSimulatorBackend) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, deviceInfoSimulatorBackend);
+ disconnect(deviceInfoSimulatorBackend, sourceSignal, this, signal);
+ }
return;
#endif
}
- if (deviceInfoSimulatorBackend && strcmp(signal, SIGNAL(thermalStateChanged(QDeviceInfo::ThermalState state))) == 0)
- disconnect(deviceInfoSimulatorBackend, signal, this, signal);
+ if (deviceInfoSimulatorBackend && signal == thermalStateChangedSignal) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, deviceInfoSimulatorBackend);
+ disconnect(deviceInfoSimulatorBackend, sourceSignal, this, signal);
+ }
}
// QNetworkInfoSimulator
@@ -579,82 +623,98 @@ QString QNetworkInfoSimulator::networkName(QNetworkInfo::NetworkMode mode, int i
return QString();
}
-void QNetworkInfoSimulator::connectNotify(const char *signal)
+void QNetworkInfoSimulator::connectNotify(const QMetaMethod &signal)
{
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkInterfaceCountChanged);
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::currentNetworkModeChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkStatusChanged);
+
#if !defined(QT_NO_SFW_NETREG) || !defined(QT_NO_OFONO)
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0) {
+ if (signal == networkInterfaceCountChangedSignal) {
if (networkInfoSimulatorBackend)
- connect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), Qt::UniqueConnection);
+ connect(networkInfoSimulatorBackend, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), Qt::UniqueConnection);
if (d_ptr)
- connect(d_ptr, signal, this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), Qt::UniqueConnection);
+ connect(d_ptr, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), Qt::UniqueConnection);
return;
- } else if (strcmp(signal, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode))) == 0) {
+ } else if (signal == currentNetworkModeChangedSignal) {
if (networkInfoSimulatorBackend)
- connect(networkInfoSimulatorBackend, signal, this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)), Qt::UniqueConnection);
+ connect(networkInfoSimulatorBackend, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode)), this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)), Qt::UniqueConnection);
if (d_ptr)
- connect(d_ptr, signal, this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)), Qt::UniqueConnection);
+ connect(d_ptr, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode)), this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)), Qt::UniqueConnection);
return;
- } else if (strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString))) == 0) {
+ } else if (signal == networkNameChangedSignal) {
if (networkInfoSimulatorBackend)
- connect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)), Qt::UniqueConnection);
+ connect(networkInfoSimulatorBackend, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString)), this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)), Qt::UniqueConnection);
if (d_ptr)
- connect(d_ptr, signal, this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)), Qt::UniqueConnection);
+ connect(d_ptr, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString)), this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)), Qt::UniqueConnection);
return;
- } else if (strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int))) == 0) {
+ } else if (signal == networkSignalStrengthChangedSignal) {
if (networkInfoSimulatorBackend)
- connect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), Qt::UniqueConnection);
+ connect(networkInfoSimulatorBackend, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), Qt::UniqueConnection);
if (d_ptr)
- connect(d_ptr, signal, this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), Qt::UniqueConnection);
+ connect(d_ptr, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), Qt::UniqueConnection);
return;
- } else if (strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus))) == 0) {
+ } else if (signal == networkStatusChangedSignal) {
if (networkInfoSimulatorBackend)
- connect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), Qt::UniqueConnection);
+ connect(networkInfoSimulatorBackend, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), Qt::UniqueConnection);
if (d_ptr)
- connect(d_ptr, signal, this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), Qt::UniqueConnection);
+ connect(d_ptr, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), Qt::UniqueConnection);
return;
}
#endif
- if (networkInfoSimulatorBackend)
- connect(networkInfoSimulatorBackend, signal, this, signal, Qt::UniqueConnection);
+ if (networkInfoSimulatorBackend) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, networkInfoSimulatorBackend);
+ connect(networkInfoSimulatorBackend, sourceSignal, this, signal, Qt::UniqueConnection);
+ }
}
-void QNetworkInfoSimulator::disconnectNotify(const char *signal)
+void QNetworkInfoSimulator::disconnectNotify(const QMetaMethod &signal)
{
+ static const QMetaMethod networkInterfaceCountChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkInterfaceCountChanged);
+ static const QMetaMethod currentNetworkModeChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::currentNetworkModeChanged);
+ static const QMetaMethod networkNameChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkNameChanged);
+ static const QMetaMethod networkSignalStrengthChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkSignalStrengthChanged);
+ static const QMetaMethod networkStatusChangedSignal = QMetaMethod::fromSignal(&QNetworkInfoSimulator::networkStatusChanged);
+
#if !defined(QT_NO_SFW_NETREG) || !defined(QT_NO_OFONO)
- if (strcmp(signal, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int))) == 0) {
+ if (signal == networkInterfaceCountChangedSignal) {
if (networkInfoSimulatorBackend)
- disconnect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)));
+ disconnect(networkInfoSimulatorBackend, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)));
if (d_ptr)
- disconnect(d_ptr, signal, this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)));
+ disconnect(d_ptr, SIGNAL(networkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)), this, SLOT(onNetworkInterfaceCountChanged(QNetworkInfo::NetworkMode,int)));
return;
- } else if (strcmp(signal, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode))) == 0) {
+ } else if (signal == currentNetworkModeChangedSignal) {
if (networkInfoSimulatorBackend)
- disconnect(networkInfoSimulatorBackend, signal, this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)));
+ disconnect(networkInfoSimulatorBackend, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode)), this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)));
if (d_ptr)
- disconnect(d_ptr, signal, this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)));
+ disconnect(d_ptr, SIGNAL(currentNetworkModeChanged(QNetworkInfo::NetworkMode)), this, SLOT(onCurrentNetworkModeChanged(QNetworkInfo::NetworkMode)));
return;
- } else if (strcmp(signal, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString))) == 0) {
+ } else if (signal == networkNameChangedSignal) {
if (networkInfoSimulatorBackend)
- disconnect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)));
+ disconnect(networkInfoSimulatorBackend, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString)), this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)));
if (d_ptr)
- disconnect(d_ptr, signal, this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)));
+ disconnect(d_ptr, SIGNAL(networkNameChanged(QNetworkInfo::NetworkMode,int,QString)), this, SLOT(onNetworkNameChanged(QNetworkInfo::NetworkMode,int,QString)));
return;
- } else if (strcmp(signal, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int))) == 0) {
+ } else if (signal == networkSignalStrengthChangedSignal) {
if (networkInfoSimulatorBackend)
- disconnect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)));
+ disconnect(networkInfoSimulatorBackend, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)));
if (d_ptr)
- disconnect(d_ptr, signal, this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)));
+ disconnect(d_ptr, SIGNAL(networkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)), this, SLOT(onNetworkSignalStrengthChanged(QNetworkInfo::NetworkMode,int,int)));
return;
- } else if (strcmp(signal, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus))) == 0) {
+ } else if (signal == networkStatusChangedSignal) {
if (networkInfoSimulatorBackend)
- disconnect(networkInfoSimulatorBackend, signal, this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)));
+ disconnect(networkInfoSimulatorBackend, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)));
if (d_ptr)
- disconnect(d_ptr, signal, this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)));
+ disconnect(d_ptr, SIGNAL(networkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)), this, SLOT(onNetworkStatusChanged(QNetworkInfo::NetworkMode,int,QNetworkInfo::NetworkStatus)));
return;
}
#endif
- if (networkInfoSimulatorBackend)
- disconnect(networkInfoSimulatorBackend, signal, this, signal);
+ if (networkInfoSimulatorBackend) {
+ QMetaMethod sourceSignal = proxyToSourceSignal(signal, networkInfoSimulatorBackend);
+ disconnect(networkInfoSimulatorBackend, sourceSignal, this, signal);
+ }
}
#if !defined(QT_NO_SFW_NETREG) || !defined(QT_NO_OFONO)
diff --git a/src/systeminfo/qsysteminfo_simulator_p.h b/src/systeminfo/qsysteminfo_simulator_p.h
index 11ee1b4b..305c2723 100644
--- a/src/systeminfo/qsysteminfo_simulator_p.h
+++ b/src/systeminfo/qsysteminfo_simulator_p.h
@@ -102,8 +102,8 @@ Q_SIGNALS:
void batteryStatusChanged(int battery, QBatteryInfo::BatteryStatus);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QBatteryInfo * const q_ptr;
@@ -138,8 +138,8 @@ Q_SIGNALS:
void thermalStateChanged(QDeviceInfo::ThermalState state);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QDeviceInfo * const q_ptr;
@@ -192,8 +192,8 @@ Q_SIGNALS:
void networkStatusChanged(QNetworkInfo::NetworkMode mode, int interface, QNetworkInfo::NetworkStatus status);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
QNetworkInfo * const q_ptr;
diff --git a/src/systeminfo/qudevwrapper.cpp b/src/systeminfo/qudevwrapper.cpp
index 977e6ad2..28b15162 100644
--- a/src/systeminfo/qudevwrapper.cpp
+++ b/src/systeminfo/qudevwrapper.cpp
@@ -41,6 +41,7 @@
#include "qudevwrapper_p.h"
+#include <QMetaMethod>
#include <QSocketNotifier>
#include <poll.h>
@@ -103,20 +104,28 @@ bool QUDevWrapper::removeAllUDevWatcher()
return false;
}
-void QUDevWrapper::connectNotify(const char *signal)
+void QUDevWrapper::connectNotify(const QMetaMethod &signal)
{
- if (!watchDrives && strcmp(signal, SIGNAL(driveChanged())) == 0) {
+ static const QMetaMethod driveChangedSignal = QMetaMethod::fromSignal(&QUDevWrapper::driveChanged);
+ static const QMetaMethod batteryDataChangedSignal = QMetaMethod::fromSignal(&QUDevWrapper::batteryDataChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QUDevWrapper::chargerTypeChanged);
+
+ if (!watchDrives && signal == driveChangedSignal) {
if (addUDevWatcher("block"))
watchDrives = true;
- } else if (!watchPowerSupply && (strcmp(signal, SIGNAL(batteryDataChanged(int,QByteArray,QByteArray))) == 0
- || strcmp(signal, SIGNAL(chargerTypeChanged(QByteArray,bool))) == 0)) {
+ } else if (!watchPowerSupply && (signal == batteryDataChangedSignal
+ || signal == chargerTypeChangedSignal)) {
if (addUDevWatcher("power_supply"))
watchPowerSupply = true;
}
}
-void QUDevWrapper::disconnectNotify(const char *signal)
+void QUDevWrapper::disconnectNotify(const QMetaMethod &signal)
{
- if (watchDrives && strcmp(signal, SIGNAL(driveChanged())) == 0) {
+ static const QMetaMethod driveChangedSignal = QMetaMethod::fromSignal(&QUDevWrapper::driveChanged);
+ static const QMetaMethod batteryDataChangedSignal = QMetaMethod::fromSignal(&QUDevWrapper::batteryDataChanged);
+ static const QMetaMethod chargerTypeChangedSignal = QMetaMethod::fromSignal(&QUDevWrapper::chargerTypeChanged);
+
+ if (watchDrives && signal == driveChangedSignal) {
if (removeAllUDevWatcher()) {
watchDrives = false;
if (watchPowerSupply) {
@@ -124,8 +133,8 @@ void QUDevWrapper::disconnectNotify(const char *signal)
watchPowerSupply = false;
}
}
- } else if (watchPowerSupply && (strcmp(signal, SIGNAL(batteryDataChanged(int,QByteArray,QByteArray))) == 0
- || strcmp(signal, SIGNAL(chargerTypeChanged(QByteArray,bool))) == 0)) {
+ } else if (watchPowerSupply && (signal == batteryDataChangedSignal
+ || signal == chargerTypeChangedSignal)) {
if (removeAllUDevWatcher()) {
watchPowerSupply = false;
if (watchDrives) {
diff --git a/src/systeminfo/qudevwrapper_p.h b/src/systeminfo/qudevwrapper_p.h
index 5484cdb9..51c71fad 100644
--- a/src/systeminfo/qudevwrapper_p.h
+++ b/src/systeminfo/qudevwrapper_p.h
@@ -76,8 +76,8 @@ Q_SIGNALS:
void chargerTypeChanged(const QByteArray &value, bool enabled);
protected:
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
private:
Q_DISABLE_COPY(QUDevWrapper)