summaryrefslogtreecommitdiff
path: root/src/location
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-05-02 13:24:53 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-03 02:58:54 +0200
commit9beba94649372be56f7811562d2df03a923e39e2 (patch)
treec9b11b1094431fa15cb02e7dd7cb438ba8bef262 /src/location
parentadba472bbc645898990c802d9fdf621438d6f88d (diff)
downloadqtlocation-9beba94649372be56f7811562d2df03a923e39e2.tar.gz
Port qtlocation to QMetaMethod-based connectNotify() API
The const char *-based API is deprecated and will be removed in Qt5. Also use the new QObject::isSignalConnected(QMetaMethod) function; it's a lot faster than QObject::receivers(const char *). Change-Id: I51253f63025641411b8b1ef984271f16e139fc1f Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
Diffstat (limited to 'src/location')
-rw-r--r--src/location/qgeoareamonitor_polling.cpp30
-rw-r--r--src/location/qgeoareamonitor_polling_p.h4
2 files changed, 24 insertions, 10 deletions
diff --git a/src/location/qgeoareamonitor_polling.cpp b/src/location/qgeoareamonitor_polling.cpp
index cadbbff2..2135948e 100644
--- a/src/location/qgeoareamonitor_polling.cpp
+++ b/src/location/qgeoareamonitor_polling.cpp
@@ -42,6 +42,8 @@
#include "qgeoareamonitor_polling_p.h"
#include "qgeocoordinate.h"
+#include <QtCore/qmetaobject.h>
+
QT_BEGIN_NAMESPACE
#define UPDATE_INTERVAL_5S 5000
@@ -77,17 +79,29 @@ void QGeoAreaMonitorPolling::setRadius(qreal radius)
checkStartStop();
}
-void QGeoAreaMonitorPolling::connectNotify(const char *signal)
+static QMetaMethod areaEnteredSignal()
+{
+ static QMetaMethod signal = QMetaMethod::fromSignal(&QGeoAreaMonitorPolling::areaEntered);
+ return signal;
+}
+
+static QMetaMethod areaExitedSignal()
+{
+ static QMetaMethod signal = QMetaMethod::fromSignal(&QGeoAreaMonitorPolling::areaExited);
+ return signal;
+}
+
+void QGeoAreaMonitorPolling::connectNotify(const QMetaMethod &signal)
{
- if (signal == SIGNAL(areaEntered(QGeoPositionInfo)) ||
- signal == SIGNAL(areaExited(QGeoPositionInfo)))
+ if (signal == areaEnteredSignal() ||
+ signal == areaExitedSignal())
checkStartStop();
}
-void QGeoAreaMonitorPolling::disconnectNotify(const char *signal)
+void QGeoAreaMonitorPolling::disconnectNotify(const QMetaMethod &signal)
{
- if (signal == SIGNAL(areaEntered(QGeoPositionInfo)) ||
- signal == SIGNAL(areaExited(QGeoPositionInfo)))
+ if (signal == areaEnteredSignal() ||
+ signal == areaExitedSignal())
checkStartStop();
}
@@ -95,8 +109,8 @@ void QGeoAreaMonitorPolling::checkStartStop()
{
if (!location) return;
- if ((QObject::receivers(SIGNAL(areaEntered(QGeoPositionInfo))) > 0 ||
- QObject::receivers(SIGNAL(areaExited(QGeoPositionInfo))) > 0) &&
+ if ((isSignalConnected(areaEnteredSignal()) ||
+ isSignalConnected(areaExitedSignal())) &&
QGeoAreaMonitor::center().isValid() &&
QGeoAreaMonitor::radius() > qreal(0.0)) {
location->startUpdates();
diff --git a/src/location/qgeoareamonitor_polling_p.h b/src/location/qgeoareamonitor_polling_p.h
index 5017c118..a913b8ad 100644
--- a/src/location/qgeoareamonitor_polling_p.h
+++ b/src/location/qgeoareamonitor_polling_p.h
@@ -81,8 +81,8 @@ private:
bool insideArea;
QGeoPositionInfoSource *location;
- void connectNotify(const char *signal);
- void disconnectNotify(const char *signal);
+ void connectNotify(const QMetaMethod &signal);
+ void disconnectNotify(const QMetaMethod &signal);
void checkStartStop();
};