Ejemplo n.º 1
0
void GPSWidget::initAreaMonitor()
{
    // Create the area monitor
    monitor_ =
            QGeoAreaMonitor::createDefaultMonitor(this);//this

    // Connect the area monitoring signals to the corresponding slots
    QObject::connect(monitor_, SIGNAL(areaEntered(QGeoPositionInfo)),
            this, SLOT(areaEntered(QGeoPositionInfo)));
    QObject::connect(monitor_, SIGNAL(areaExited(QGeoPositionInfo)),
            this, SLOT(areaExited(QGeoPositionInfo)));

    QGeoCoordinate location(66.49154, 25.772982);
    monitor_->setCenter(location);
    monitor_->setRadius(100);

}
Ejemplo n.º 2
0
void LocationQuest::initAreaMonitor()
{
    // Create the area monitor
    monitor_ =
            QGeoAreaMonitor::createDefaultMonitor(this);//this

    // Connect the area monitoring signals to the corresponding slots
    QObject::connect(monitor_, SIGNAL(areaEntered(QGeoPositionInfo)),
            this, SLOT(areaEntered(QGeoPositionInfo)));
    QObject::connect(monitor_, SIGNAL(areaExited(QGeoPositionInfo)),
            this, SLOT(areaExited(QGeoPositionInfo)));


    monitor_->setCenter(questLocation_);
    monitor_->setRadius(range_);

}
void QGeoAreaMonitorSimulator::positionUpdated(const QGeoPositionInfo &info)
{
    qreal distance = info.coordinate().distanceTo(center());

    if (distance <= QGeoAreaMonitor::radius()) {
        if(!insideArea)
            emit areaEntered(info);
        insideArea = true;
    } else if (insideArea) {
        emit areaExited(info);
        insideArea = false;
    }
}
void QGeoAreaMonitorPolling::checkStartStop()
{
    if (!location) return;

    if ((QObject::receivers(SIGNAL(areaEntered(QGeoPositionInfo))) > 0 ||
            QObject::receivers(SIGNAL(areaExited(QGeoPositionInfo))) > 0) &&
            QGeoAreaMonitor::center().isValid() &&
            QGeoAreaMonitor::radius() > qreal(0.0)) {
        location->startUpdates();
    } else {
        location->stopUpdates();
    }
}
Ejemplo n.º 5
0
int GPSWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QObject::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: gpsData((*reinterpret_cast< QGeoCoordinate(*)>(_a[1]))); break;
        case 1: positionUpdated((*reinterpret_cast< QGeoPositionInfo(*)>(_a[1]))); break;
        case 2: areaEntered((*reinterpret_cast< const QGeoPositionInfo(*)>(_a[1]))); break;
        case 3: areaExited((*reinterpret_cast< const QGeoPositionInfo(*)>(_a[1]))); break;
        default: ;
        }
        _id -= 4;
    }
    return _id;
}
void QGeoAreaMonitorPolling::disconnectNotify(const char *signal)
{
    if (signal == SIGNAL(areaEntered(QGeoPositionInfo)) ||
            signal == SIGNAL(areaExited(QGeoPositionInfo)))
        checkStartStop();
}