Commit 1b146272 authored by dogmaphobic's avatar dogmaphobic

Adding Qt Location headers for Qt 5.5.1

This only affects the build when using Qt 5.5.1. Other versions are unchanged.
So far only tested with Mac OS.
parent ddfdfa44
...@@ -8,7 +8,20 @@ PLUGIN_TYPE = geoservices ...@@ -8,7 +8,20 @@ PLUGIN_TYPE = geoservices
DESTDIR = $${LOCATION_PLUGIN_DESTDIR} DESTDIR = $${LOCATION_PLUGIN_DESTDIR}
INCLUDEPATH += $$QT.location.includes contains(QT_VERSION, 5.5.1) {
message(Using Local QtLocation headers for Qt 5.5.1)
INCLUDEPATH += \
libs/qtlocation/include \
} else {
message(Using Default QtLocation headers)
INCLUDEPATH += $$QT.location.includes
}
HEADERS += \ HEADERS += \
src/QtLocationPlugin/qgeoserviceproviderpluginqgc.h \ src/QtLocationPlugin/qgeoserviceproviderpluginqgc.h \
......
# QGroundControl
## Qt Location Headers for Qt 5.5.1
Qt version 5.5.1 did not include the headers for QtLocation. It's included here so we can build our location plugin. This is only needed for Qt 5.5.1. The qmake file handles it automatically. Once we move past 5.5.1 we can delete this directory.
The bug has been reported here:
https://bugreports.qt.io/browse/QTBUG-48812
#include "../../../../../src/location/maps/qcache3q_p.h"
#include "../../../../../src/location/maps/qgeocameracapabilities_p.h"
#include "../../../../../src/location/maps/qgeocameradata_p.h"
#include "../../../../../src/location/maps/qgeocameratiles_p.h"
#include "../../../../../src/location/maps/qgeocodereply_p.h"
#include "../../../../../src/location/maps/qgeocodingmanager_p.h"
#include "../../../../../src/location/maps/qgeocodingmanagerengine_p.h"
#include "../../../../../src/location/maps/qgeomaneuver_p.h"
#include "../../../../../src/location/maps/qgeomap_p.h"
#include "../../../../../src/location/maps/qgeomap_p_p.h"
#include "../../../../../src/location/maps/qgeomapcontroller_p.h"
#include "../../../../../src/location/maps/qgeomappingmanager_p.h"
#include "../../../../../src/location/maps/qgeomappingmanager_p_p.h"
#include "../../../../../src/location/maps/qgeomappingmanagerengine_p.h"
#include "../../../../../src/location/maps/qgeomappingmanagerengine_p_p.h"
#include "../../../../../src/location/maps/qgeomapscene_p.h"
#include "../../../../../src/location/maps/qgeomaptype_p.h"
#include "../../../../../src/location/maps/qgeomaptype_p_p.h"
#include "../../../../../src/location/maps/qgeoroute_p.h"
#include "../../../../../src/location/maps/qgeoroutereply_p.h"
#include "../../../../../src/location/maps/qgeorouterequest_p.h"
#include "../../../../../src/location/maps/qgeoroutesegment_p.h"
#include "../../../../../src/location/maps/qgeoroutingmanager_p.h"
#include "../../../../../src/location/maps/qgeoroutingmanagerengine_p.h"
#include "../../../../../src/location/maps/qgeoserviceprovider_p.h"
#include "../../../../../src/location/maps/qgeotilecache_p.h"
#include "../../../../../src/location/maps/qgeotiledmap_p.h"
#include "../../../../../src/location/maps/qgeotiledmap_p_p.h"
#include "../../../../../src/location/maps/qgeotiledmappingmanagerengine_p.h"
#include "../../../../../src/location/maps/qgeotiledmappingmanagerengine_p_p.h"
#include "../../../../../src/location/maps/qgeotiledmapreply_p.h"
#include "../../../../../src/location/maps/qgeotiledmapreply_p_p.h"
#include "../../../../../src/location/maps/qgeotilefetcher_p.h"
#include "../../../../../src/location/maps/qgeotilefetcher_p_p.h"
#include "../../../../../src/location/maps/qgeotilerequestmanager_p.h"
#include "../../../../../src/location/maps/qgeotilespec_p.h"
#include "../../../../../src/location/maps/qgeotilespec_p_p.h"
#include "../../../../../src/location/places/qplace_p.h"
#include "../../../../../src/location/places/qplaceattribute_p.h"
#include "../../../../../src/location/places/qplacecategory_p.h"
#include "../../../../../src/location/places/qplacecontactdetail_p.h"
#include "../../../../../src/location/places/qplacecontent_p.h"
#include "../../../../../src/location/places/qplacecontentrequest_p.h"
#include "../../../../../src/location/places/qplaceeditorial_p.h"
#include "../../../../../src/location/places/qplaceicon_p.h"
#include "../../../../../src/location/places/qplaceimage_p.h"
#include "../../../../../src/location/places/qplacemanagerengine_p.h"
#include "../../../../../src/location/places/qplaceproposedsearchresult_p.h"
#include "../../../../../src/location/places/qplaceratings_p.h"
#include "../../../../../src/location/places/qplacereply_p.h"
#include "../../../../../src/location/places/qplaceresult_p.h"
#include "../../../../../src/location/places/qplacereview_p.h"
#include "../../../../../src/location/places/qplacesearchresult_p.h"
#include "../../../../../src/location/places/qplacesupplier_p.h"
#include "../../../../../src/location/places/qplaceuser_p.h"
#include "../../../../../src/location/places/unsupportedreplies_p.h"
#ifndef QT_QTLOCATION_MODULE_H
#define QT_QTLOCATION_MODULE_H
#include <QtLocation/QtLocationDepends>
#include "qlocation.h"
#include "qlocationglobal.h"
#include "qgeocodereply.h"
#include "qgeocodingmanager.h"
#include "qgeocodingmanagerengine.h"
#include "qgeomaneuver.h"
#include "qgeoroute.h"
#include "qgeoroutereply.h"
#include "qgeorouterequest.h"
#include "qgeoroutesegment.h"
#include "qgeoroutingmanager.h"
#include "qgeoroutingmanagerengine.h"
#include "qgeoserviceprovider.h"
#include "qgeoserviceproviderfactory.h"
#include "placemacro.h"
#include "qplace.h"
#include "qplaceattribute.h"
#include "qplacecategory.h"
#include "qplacecontactdetail.h"
#include "qplacecontent.h"
#include "qplacecontentreply.h"
#include "qplacecontentrequest.h"
#include "qplacedetailsreply.h"
#include "qplaceeditorial.h"
#include "qplaceicon.h"
#include "qplaceidreply.h"
#include "qplaceimage.h"
#include "qplacemanager.h"
#include "qplacemanagerengine.h"
#include "qplacematchreply.h"
#include "qplacematchrequest.h"
#include "qplaceproposedsearchresult.h"
#include "qplaceratings.h"
#include "qplacereply.h"
#include "qplaceresult.h"
#include "qplacereview.h"
#include "qplacesearchreply.h"
#include "qplacesearchrequest.h"
#include "qplacesearchresult.h"
#include "qplacesearchsuggestionreply.h"
#include "qplacesupplier.h"
#include "qplaceuser.h"
#include "qtlocationversion.h"
#endif
#include "../../src/location/places/placemacro.h"
#include "../../src/location/maps/qgeocodereply.h"
#include "../../src/location/maps/qgeocodingmanager.h"
#include "../../src/location/maps/qgeocodingmanagerengine.h"
#include "../../src/location/maps/qgeomaneuver.h"
#include "../../src/location/maps/qgeoroute.h"
#include "../../src/location/maps/qgeoroutereply.h"
#include "../../src/location/maps/qgeorouterequest.h"
#include "../../src/location/maps/qgeoroutesegment.h"
#include "../../src/location/maps/qgeoroutingmanager.h"
#include "../../src/location/maps/qgeoroutingmanagerengine.h"
#include "../../src/location/maps/qgeoserviceprovider.h"
#include "../../src/location/maps/qgeoserviceproviderfactory.h"
#include "../../src/location/qlocation.h"
#include "../../src/location/qlocationglobal.h"
#include "../../src/location/places/qplace.h"
#include "../../src/location/places/qplaceattribute.h"
#include "../../src/location/places/qplacecategory.h"
#include "../../src/location/places/qplacecontactdetail.h"
#include "../../src/location/places/qplacecontent.h"
#include "../../src/location/places/qplacecontentreply.h"
#include "../../src/location/places/qplacecontentrequest.h"
#include "../../src/location/places/qplacedetailsreply.h"
#include "../../src/location/places/qplaceeditorial.h"
#include "../../src/location/places/qplaceicon.h"
#include "../../src/location/places/qplaceidreply.h"
#include "../../src/location/places/qplaceimage.h"
#include "../../src/location/places/qplacemanager.h"
#include "../../src/location/places/qplacemanagerengine.h"
#include "../../src/location/places/qplacematchreply.h"
#include "../../src/location/places/qplacematchrequest.h"
#include "../../src/location/places/qplaceproposedsearchresult.h"
#include "../../src/location/places/qplaceratings.h"
#include "../../src/location/places/qplacereply.h"
#include "../../src/location/places/qplaceresult.h"
#include "../../src/location/places/qplacereview.h"
#include "../../src/location/places/qplacesearchreply.h"
#include "../../src/location/places/qplacesearchrequest.h"
#include "../../src/location/places/qplacesearchresult.h"
#include "../../src/location/places/qplacesearchsuggestionreply.h"
#include "../../src/location/places/qplacesupplier.h"
#include "../../src/location/places/qplaceuser.h"
/* This file was generated by syncqt. */
#ifndef QT_QTLOCATION_VERSION_H
#define QT_QTLOCATION_VERSION_H
#define QTLOCATION_VERSION_STR "5.5.1"
#define QTLOCATION_VERSION 0x050501
#endif // QT_QTLOCATION_VERSION_H
#include "../../../../../src/positioning/qdeclarativegeoaddress_p.h"
#include "../../../../../src/positioning/qdeclarativegeolocation_p.h"
#include "../../../../../src/positioning/qdoublevector2d_p.h"
#include "../../../../../src/positioning/qdoublevector3d_p.h"
#include "../../../../../src/positioning/qgeoaddress_p.h"
#include "../../../../../src/positioning/qgeocircle_p.h"
#include "../../../../../src/positioning/qgeocoordinate_p.h"
#include "../../../../../src/positioning/qgeolocation_p.h"
#include "../../../../../src/positioning/qgeopositioninfosource_p.h"
#include "../../../../../src/positioning/qgeoprojection_p.h"
#include "../../../../../src/positioning/qgeorectangle_p.h"
#include "../../../../../src/positioning/qgeoshape_p.h"
#include "../../../../../src/positioning/qlocationutils_p.h"
#include "../../../../../src/positioning/qnmeapositioninfosource_p.h"
#ifndef QT_QTPOSITIONING_MODULE_H
#define QT_QTPOSITIONING_MODULE_H
#include <QtPositioning/QtPositioningDepends>
#include "qgeoaddress.h"
#include "qgeoareamonitorinfo.h"
#include "qgeoareamonitorsource.h"
#include "qgeocircle.h"
#include "qgeocoordinate.h"
#include "qgeolocation.h"
#include "qgeopositioninfo.h"
#include "qgeopositioninfosource.h"
#include "qgeopositioninfosourcefactory.h"
#include "qgeorectangle.h"
#include "qgeosatelliteinfo.h"
#include "qgeosatelliteinfosource.h"
#include "qgeoshape.h"
#include "qnmeapositioninfosource.h"
#include "qpositioningglobal.h"
#include "qtpositioningversion.h"
#endif
#include "../../src/positioning/qgeoaddress.h"
#include "../../src/positioning/qgeoareamonitorinfo.h"
#include "../../src/positioning/qgeoareamonitorsource.h"
#include "../../src/positioning/qgeocircle.h"
#include "../../src/positioning/qgeocoordinate.h"
#include "../../src/positioning/qgeolocation.h"
#include "../../src/positioning/qgeopositioninfo.h"
#include "../../src/positioning/qgeopositioninfosource.h"
#include "../../src/positioning/qgeopositioninfosourcefactory.h"
#include "../../src/positioning/qgeorectangle.h"
#include "../../src/positioning/qgeosatelliteinfo.h"
#include "../../src/positioning/qgeosatelliteinfosource.h"
#include "../../src/positioning/qgeoshape.h"
#include "../../src/positioning/qnmeapositioninfosource.h"
#include "../../src/positioning/qpositioningglobal.h"
/* This file was generated by syncqt. */
#ifndef QT_QTPOSITIONING_VERSION_H
#define QT_QTPOSITIONING_VERSION_H
#define QTPOSITIONING_VERSION_STR "5.5.1"
#define QTPOSITIONING_VERSION 0x050501
#endif // QT_QTPOSITIONING_VERSION_H
INCLUDEPATH += maps
QT += gui quick
PUBLIC_HEADERS += \
maps/qgeocodereply.h \
maps/qgeocodingmanagerengine.h \
maps/qgeocodingmanager.h \
maps/qgeomaneuver.h \
maps/qgeoroute.h \
maps/qgeoroutereply.h \
maps/qgeorouterequest.h \
maps/qgeoroutesegment.h \
maps/qgeoroutingmanagerengine.h \
maps/qgeoroutingmanager.h \
maps/qgeoserviceproviderfactory.h \
maps/qgeoserviceprovider.h
PRIVATE_HEADERS += \
maps/qgeocameracapabilities_p.h \
maps/qgeocameradata_p.h \
maps/qgeocameratiles_p.h \
maps/qgeocodereply_p.h \
maps/qgeocodingmanagerengine_p.h \
maps/qgeocodingmanager_p.h \
maps/qgeomaneuver_p.h \
maps/qgeomapcontroller_p.h \
maps/qgeomapscene_p.h \
maps/qgeotilerequestmanager_p.h \
maps/qgeomap_p.h \
maps/qgeomap_p_p.h \
maps/qgeotiledmap_p.h \
maps/qgeotiledmap_p_p.h \
maps/qgeotilefetcher_p.h \
maps/qgeotilefetcher_p_p.h \
maps/qgeomappingmanager_p.h \
maps/qgeomappingmanager_p_p.h \
maps/qgeomappingmanagerengine_p.h \
maps/qgeomappingmanagerengine_p_p.h \
maps/qgeotiledmappingmanagerengine_p.h \
maps/qgeotiledmappingmanagerengine_p_p.h \
maps/qgeomaptype_p.h \
maps/qgeomaptype_p_p.h \
maps/qgeoroute_p.h \
maps/qgeoroutereply_p.h \
maps/qgeorouterequest_p.h \
maps/qgeoroutesegment_p.h \
maps/qgeoroutingmanagerengine_p.h \
maps/qgeoroutingmanager_p.h \
maps/qgeoserviceprovider_p.h \
maps/qgeotilecache_p.h \
maps/qgeotiledmapreply_p.h \
maps/qgeotiledmapreply_p_p.h \
maps/qgeotilespec_p.h \
maps/qgeotilespec_p_p.h \
maps/qcache3q_p.h
SOURCES += \
maps/qgeocameracapabilities.cpp \
maps/qgeocameradata.cpp \
maps/qgeocameratiles.cpp \
maps/qgeocodereply.cpp \
maps/qgeocodingmanager.cpp \
maps/qgeocodingmanagerengine.cpp \
maps/qgeomaneuver.cpp \
maps/qgeomapcontroller.cpp \
maps/qgeomapscene.cpp \
maps/qgeotilerequestmanager.cpp \
maps/qgeomap.cpp \
maps/qgeomappingmanager.cpp \
maps/qgeomappingmanagerengine.cpp \
maps/qgeotiledmappingmanagerengine.cpp \
maps/qgeotilefetcher.cpp \
maps/qgeomaptype.cpp \
maps/qgeoroute.cpp \
maps/qgeoroutereply.cpp \
maps/qgeorouterequest.cpp \
maps/qgeoroutesegment.cpp \
maps/qgeoroutingmanager.cpp \
maps/qgeoroutingmanagerengine.cpp \
maps/qgeoserviceprovider.cpp \
maps/qgeoserviceproviderfactory.cpp \
maps/qgeotilecache.cpp \
maps/qgeotiledmapreply.cpp \
maps/qgeotilespec.cpp \
maps/qgeotiledmap.cpp
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QCACHE3Q_H
#define QCACHE3Q_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
#include <QtCore/qlinkedlist.h>
#include <QtCore/qhash.h>
#include <QtCore/qcache.h>
#include <QtCore/qsharedpointer.h>
#include <QDebug>
QT_BEGIN_NAMESPACE
template <class Key, class T>
class QCache3QDefaultEvictionPolicy
{
protected:
/* called just before a key/value pair is about to be _evicted_ */
void aboutToBeEvicted(const Key &key, QSharedPointer<T> obj);
/* called just before a key/value pair is about to be removed, by
* clear(), remove() or by the destructor (which calls clear) */
void aboutToBeRemoved(const Key &key, QSharedPointer<T> obj);
};
template <class Key, class T>
void QCache3QDefaultEvictionPolicy<Key,T>::aboutToBeEvicted(const Key &key, QSharedPointer<T> obj)
{
Q_UNUSED(key);
Q_UNUSED(obj);
}
template <class Key, class T>
void QCache3QDefaultEvictionPolicy<Key,T>::aboutToBeRemoved(const Key &key, QSharedPointer<T> obj)
{
Q_UNUSED(key);
Q_UNUSED(obj);
}
/*
* QCache3Q
*
* A cache template class for managing QSharedPointers to objects with an
* associated key. It's a lot like QCache, but uses an alternative algorithm
* '3Q' -- which is the '2Q' algorithm plus an extra queue for previously popular
* but evicted nodes, and a 'ghost' list of recent evictions to make a better
* placement choice if they are requested again.
*
* New nodes enter the cache on the "newbies" queue, which is evicted LRA
* (least-recently-added). If a newbie is popular enough (it has been requested
* more than promoteAt times), it will be promoted to a "regular". Regulars
* are evicted LRU (least-recently-used). If a regular is under consideration
* for eviction, its popularity is compared to the mean popularity of the whole
* regulars queue. If it is greater, it is instead moved to the "hobos" queue.
* The "hobos" queue is also evicted LRU, but has a maximum size constraint
* so eviction from it is less likely than from the regulars.
*
* Tweakables:
* * maxCost = maximum total cost for the whole cache
* * minRecent = minimum size that q1 ("newbies") has to be before eviction
* from it takes place
* * maxOldPopular = maximum size that q3 ("hobos") can reach before eviction
* from it takes place
* * promoteAt = minimum popularity necessary to promote a node from
* "newbie" to "regular"
*/
template <class Key, class T, class EvPolicy = QCache3QDefaultEvictionPolicy<Key,T> >
class QCache3Q : public EvPolicy
{
private:
class Queue;
class Node
{
public:
inline explicit Node() : q(0), n(0), p(0), pop(0), cost(0) {}
Queue *q;
Node *n;
Node *p;
Key k;
QSharedPointer<T> v;
quint64 pop; // popularity, incremented each ping
int cost;
};
class Queue
{
public:
inline explicit Queue() : f(0), l(0), cost(0), pop(0), size(0) {}
Node *f;
Node *l;
int cost; // total cost of nodes on the queue
quint64 pop; // sum of popularity values on the queue
int size; // size of the queue
};
Queue *q1_; // "newbies": seen only once, evicted LRA (least-recently-added)
Queue *q2_; // regular nodes, promoted from newbies, evicted LRU
Queue *q3_; // "hobos": evicted from q2 but were very popular (above mean)
Queue *q1_evicted_; // ghosts of recently evicted newbies and regulars
QHash<Key, Node *> lookup_;
public:
explicit QCache3Q(int maxCost = 100, int minRecent = -1, int maxOldPopular = -1);
inline ~QCache3Q() { clear(); delete q1_; delete q2_; delete q3_; delete q1_evicted_; }
inline int maxCost() const { return maxCost_; }
void setMaxCost(int maxCost, int minRecent = -1, int maxOldPopular = -1);
inline int promoteAt() const { return promote_; }
inline void setPromoteAt(int p) { promote_ = p; }
inline int totalCost() const { return q1_->cost + q2_->cost + q3_->cost; }
void clear();
bool insert(const Key &key, QSharedPointer<T> object, int cost = 1);
QSharedPointer<T> object(const Key &key) const;
QSharedPointer<T> operator[](const Key &key) const;
void remove(const Key &key);
void printStats();
// Copy data directly into a queue. Designed for single use after construction
void deserializeQueue(int queueNumber, const QList<Key> &keys,
const QList<QSharedPointer<T> > &values, const QList<int> &costs);
// Copy data from specific queue into list
void serializeQueue(int queueNumber, QList<QSharedPointer<T> > &buffer);
private:
int maxCost_, minRecent_, maxOldPopular_;
int hitCount_, missCount_, promote_;
void rebalance();
void unlink(Node *n);
void link_front(Node *n, Queue *q);
private:
// make these private so they can't be used
inline QCache3Q(const QCache3Q<Key,T,EvPolicy> &) {}
inline QCache3Q<Key,T,EvPolicy> &operator=(const QCache3Q<Key,T,EvPolicy> &) {}
};
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::printStats()
{
qDebug("\n=== cache %p ===", this);
qDebug("hits: %d (%.2f%%)\tmisses: %d\tfill: %.2f%%", hitCount_,
100.0 * float(hitCount_) / (float(hitCount_ + missCount_)),
missCount_,
100.0 * float(totalCost()) / float(maxCost()));
qDebug("q1g: size=%d, pop=%llu", q1_evicted_->size, q1_evicted_->pop);
qDebug("q1: cost=%d, size=%d, pop=%llu", q1_->cost, q1_->size, q1_->pop);
qDebug("q2: cost=%d, size=%d, pop=%llu", q2_->cost, q2_->size, q2_->pop);
qDebug("q3: cost=%d, size=%d, pop=%llu", q3_->cost, q3_->size, q3_->pop);
}
template <class Key, class T, class EvPolicy>
QCache3Q<Key,T,EvPolicy>::QCache3Q(int maxCost, int minRecent, int maxOldPopular)
: q1_(new Queue), q2_(new Queue), q3_(new Queue), q1_evicted_(new Queue),
maxCost_(maxCost), minRecent_(minRecent), maxOldPopular_(maxOldPopular),
hitCount_(0), missCount_(0), promote_(0)
{
if (minRecent_ < 0)
minRecent_ = maxCost_ / 3;
if (maxOldPopular_ < 0)
maxOldPopular_ = maxCost_ / 5;
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::serializeQueue(int queueNumber, QList<QSharedPointer<T> > &buffer)
{
Q_ASSERT(queueNumber >= 1 && queueNumber <= 4);
Queue *queue = queueNumber == 1 ? q1_ :
queueNumber == 2 ? q2_ :
queueNumber == 3 ? q3_ :
q1_evicted_;
for (Node *node = queue->f; node; node = node->n)
buffer.append(node->v);
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::deserializeQueue(int queueNumber, const QList<Key> &keys,
const QList<QSharedPointer<T> > &values, const QList<int> &costs)
{
Q_ASSERT(queueNumber >= 1 && queueNumber <= 4);
int bufferSize = keys.size();
if (bufferSize == 0)
return;
clear();
Queue *queue = queueNumber == 1 ? q1_ :
queueNumber == 2 ? q2_ :
queueNumber == 3 ? q3_ :
q1_evicted_;
for (int i = 0; i<bufferSize; ++i) {
Node *node = new Node;
node->v = values[i];
node->k = keys[i];
node->cost = costs[i];
link_front(node, queue);
lookup_[keys[i]] = node;
}
}
template <class Key, class T, class EvPolicy>
inline void QCache3Q<Key,T,EvPolicy>::setMaxCost(int maxCost, int minRecent, int maxOldPopular)
{
maxCost_ = maxCost;
minRecent_ = minRecent;
maxOldPopular_ = maxOldPopular;
if (minRecent_ < 0)
minRecent_ = maxCost_ / 3;
if (maxOldPopular_ < 0)
maxOldPopular_ = maxCost_ / 5;
rebalance();
}
template <class Key, class T, class EvPolicy>
bool QCache3Q<Key,T,EvPolicy>::insert(const Key &key, QSharedPointer<T> object, int cost)
{
if (cost > maxCost_) {
return false;
}
if (lookup_.contains(key)) {
Node *n = lookup_[key];
n->v = object;
n->q->cost -= n->cost;
n->cost = cost;
n->q->cost += cost;
if (n->q == q1_evicted_) {
if (n->pop > (uint)promote_) {
unlink(n);
link_front(n, q2_);
rebalance();
}
} else if (n->q != q1_) {
Queue *q = n->q;
unlink(n);
link_front(n, q);
rebalance();
}
return true;
}
Node *n = new Node;
n->v = object;
n->k = key;
n->cost = cost;
link_front(n, q1_);
lookup_[key] = n;
rebalance();
return true;
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::clear()
{
while (q1_evicted_->f) {
Node *n = q1_evicted_->f;
unlink(n);
delete n;
}
while (q1_->f) {
Node *n = q1_->f;
unlink(n);
EvPolicy::aboutToBeRemoved(n->k, n->v);
delete n;
}
while (q2_->f) {
Node *n = q2_->f;
unlink(n);
EvPolicy::aboutToBeRemoved(n->k, n->v);
delete n;
}
while (q3_->f) {
Node *n = q3_->f;
unlink(n);
EvPolicy::aboutToBeRemoved(n->k, n->v);
delete n;
}
lookup_.clear();
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::unlink(Node *n)
{
if (n->n)
n->n->p = n->p;
if (n->p)
n->p->n = n->n;
if (n->q->f == n)
n->q->f = n->n;
if (n->q->l == n)
n->q->l = n->p;
n->n = 0;
n->p = 0;
n->q->pop -= n->pop;
n->q->cost -= n->cost;
n->q->size--;
n->q = 0;
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::link_front(Node *n, Queue *q)
{
n->n = q->f;
n->p = 0;
n->q = q;
if (q->f)
q->f->p = n;
q->f = n;
if (!q->l)
q->l = n;
q->pop += n->pop;
q->cost += n->cost;
q->size++;
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::rebalance()
{
while (q1_evicted_->size > (q1_->size + q2_->size + q3_->size) * 4) {
Node *n = q1_evicted_->l;
unlink(n);
lookup_.remove(n->k);
delete n;
}
while ((q1_->cost + q2_->cost + q3_->cost) > maxCost_) {
if (q3_->cost > maxOldPopular_) {
Node *n = q3_->l;
unlink(n);
EvPolicy::aboutToBeEvicted(n->k, n->v);
lookup_.remove(n->k);
delete n;
} else if (q1_->cost > minRecent_) {
Node *n = q1_->l;
unlink(n);
EvPolicy::aboutToBeEvicted(n->k, n->v);
n->v.clear();
n->cost = 0;
link_front(n, q1_evicted_);
} else {
Node *n = q2_->l;
unlink(n);
if (n->pop > (q2_->pop / q2_->size)) {
link_front(n, q3_);
} else {
EvPolicy::aboutToBeEvicted(n->k, n->v);
n->v.clear();
n->cost = 0;
link_front(n, q1_evicted_);
}
}
}
}
template <class Key, class T, class EvPolicy>
void QCache3Q<Key,T,EvPolicy>::remove(const Key &key)
{
if (!lookup_.contains(key)) {
return;
}
Node *n = lookup_[key];
unlink(n);
if (n->q != q1_evicted_)
EvPolicy::aboutToBeRemoved(n->k, n->v);
lookup_.remove(key);
delete n;
}
template <class Key, class T, class EvPolicy>
QSharedPointer<T> QCache3Q<Key,T,EvPolicy>::object(const Key &key) const
{
if (!lookup_.contains(key)) {
const_cast<QCache3Q<Key,T,EvPolicy> *>(this)->missCount_++;
return QSharedPointer<T>(0);
}
QCache3Q<Key,T,EvPolicy> *me = const_cast<QCache3Q<Key,T,EvPolicy> *>(this);
Node *n = me->lookup_[key];
n->pop++;
n->q->pop++;
if (n->q == q1_) {
me->hitCount_++;
if (n->pop > (quint64)promote_) {
me->unlink(n);
me->link_front(n, q2_);
me->rebalance();
}
} else if (n->q != q1_evicted_) {
me->hitCount_++;
Queue *q = n->q;
me->unlink(n);
me->link_front(n, q);
me->rebalance();
} else {
me->missCount_++;
}
return n->v;
}
template <class Key, class T, class EvPolicy>
inline QSharedPointer<T> QCache3Q<Key,T,EvPolicy>::operator[](const Key &key) const
{
return object(key);
}
QT_END_NAMESPACE
#endif // QCACHE3Q_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCAMERACAPABILITIES_P_H
#define QGEOCAMERACAPABILITIES_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QSharedDataPointer>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QGeoCameraCapabilitiesPrivate;
class Q_LOCATION_EXPORT QGeoCameraCapabilities
{
public:
QGeoCameraCapabilities();
QGeoCameraCapabilities(const QGeoCameraCapabilities &other);
~QGeoCameraCapabilities();
QGeoCameraCapabilities &operator = (const QGeoCameraCapabilities &other);
void setMinimumZoomLevel(double minimumZoomLevel);
double minimumZoomLevel() const;
void setMaximumZoomLevel(double maximumZoomLevel);
double maximumZoomLevel() const;
void setSupportsBearing(bool supportsBearing);
bool supportsBearing() const;
void setSupportsRolling(bool supportsRolling);
bool supportsRolling() const;
void setSupportsTilting(bool supportsTilting);
bool supportsTilting() const;
void setMinimumTilt(double minimumTilt);
double minimumTilt() const;
void setMaximumTilt(double maximumTilt);
double maximumTilt() const;
bool isValid() const;
private:
QSharedDataPointer<QGeoCameraCapabilitiesPrivate> d;
};
QT_END_NAMESPACE
#endif // QGEOCAMERACAPABILITIES_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCAMERADATA_P_H
#define QGEOCAMERADATA_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qlocationglobal.h"
#include "qgeocoordinate.h"
#include <QtPositioning/private/qgeoprojection_p.h>
#include <QMetaType>
#include <QSharedDataPointer>
QT_BEGIN_NAMESPACE
class QGeoCameraDataPrivate;
class Q_LOCATION_EXPORT QGeoCameraData
{
public:
QGeoCameraData();
QGeoCameraData(const QGeoCameraData &other);
~QGeoCameraData();
QGeoCameraData &operator = (const QGeoCameraData &other);
bool operator == (const QGeoCameraData &other) const;
bool operator != (const QGeoCameraData &other) const;
void setCenter(const QGeoCoordinate &coordinate);
QGeoCoordinate center() const;
void setBearing(double bearing);
double bearing() const;
void setTilt(double tilt);
double tilt() const;
void setRoll(double roll);
double roll() const;
void setZoomLevel(double zoomLevel);
double zoomLevel() const;
private:
QSharedDataPointer<QGeoCameraDataPrivate> d;
};
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoCameraData)
#endif // QGEOCAMERADATA_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCAMERATILES_P_H
#define QGEOCAMERATILES_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtLocation/qlocationglobal.h>
#include <QtCore/QScopedPointer>
QT_BEGIN_NAMESPACE
class QGeoCameraData;
class QGeoTileSpec;
class QGeoMapType;
class QGeoCameraTilesPrivate;
class QSize;
class Q_LOCATION_EXPORT QGeoCameraTiles {
public:
QGeoCameraTiles();
~QGeoCameraTiles();
enum PrefetchStle { PrefetchNeighbourLayer, PrefetchTwoNeighbourLayers};
void setCamera(const QGeoCameraData &camera);
void setScreenSize(const QSize &size);
void setTileSize(int tileSize);
void setMaximumZoomLevel(int maxZoom);
int tileSize() const;
void setPluginString(const QString &pluginString);
void setMapType(const QGeoMapType &mapType);
void setMapVersion(int mapVersion);
QSet<QGeoTileSpec> visibleTiles();
QSet<QGeoTileSpec> prefetchTiles(PrefetchStle style);
protected:
QScopedPointer<QGeoCameraTilesPrivate> d_ptr;
Q_DISABLE_COPY(QGeoCameraTiles)
};
QT_END_NAMESPACE
#endif // QGEOCAMERATILES_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCODEREPLY_H
#define QGEOCODEREPLY_H
#include <QtCore/QObject>
#include <QtCore/QList>
#include <QtPositioning/QGeoLocation>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QGeoShape;
class QGeoCodeReplyPrivate;
class Q_LOCATION_EXPORT QGeoCodeReply : public QObject
{
Q_OBJECT
public:
enum Error {
NoError,
EngineNotSetError,
CommunicationError,
ParseError,
UnsupportedOptionError,
CombinationError,
UnknownError
};
QGeoCodeReply(Error error, const QString &errorString, QObject *parent = 0);
virtual ~QGeoCodeReply();
bool isFinished() const;
Error error() const;
QString errorString() const;
QGeoShape viewport() const;
QList<QGeoLocation> locations() const;
int limit() const;
int offset() const;
virtual void abort();
Q_SIGNALS:
void finished();
void error(QGeoCodeReply::Error error, const QString &errorString = QString());
protected:
QGeoCodeReply(QObject *parent = 0);
void setError(Error error, const QString &errorString);
void setFinished(bool finished);
void setViewport(const QGeoShape &viewport);
void addLocation(const QGeoLocation &location);
void setLocations(const QList<QGeoLocation> &locations);
void setLimit(int limit);
void setOffset(int offset);
private:
QGeoCodeReplyPrivate *d_ptr;
Q_DISABLE_COPY(QGeoCodeReply)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCODEREPLY_P_H
#define QGEOCODEREPLY_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeocodereply.h"
#include "qgeoshape.h"
#include <QList>
QT_BEGIN_NAMESPACE
class QGeoLocation;
class QGeoCodeReplyPrivate
{
public:
QGeoCodeReplyPrivate();
QGeoCodeReplyPrivate(QGeoCodeReply::Error error, const QString &errorString);
~QGeoCodeReplyPrivate();
QGeoCodeReply::Error error;
QString errorString;
bool isFinished;
QGeoShape viewport;
QList<QGeoLocation> locations;
int limit;
int offset;
private:
Q_DISABLE_COPY(QGeoCodeReplyPrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCODINGMANAGER_H
#define QGEOCODINGMANAGER_H
#include <QtLocation/QGeoCodeReply>
#include <QtPositioning/QGeoRectangle>
#include <QtCore/QObject>
#include <QtCore/QList>
#include <QtCore/QMap>
QT_BEGIN_NAMESPACE
class QLocale;
class QGeoCodingManagerEngine;
class QGeoCodingManagerPrivate;
class Q_LOCATION_EXPORT QGeoCodingManager : public QObject
{
Q_OBJECT
public:
~QGeoCodingManager();
QString managerName() const;
int managerVersion() const;
QGeoCodeReply *geocode(const QGeoAddress &address,
const QGeoShape &bounds = QGeoShape());
QGeoCodeReply *geocode(const QString &searchString,
int limit = -1,
int offset = 0,
const QGeoShape &bounds = QGeoShape());
QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate,
const QGeoShape &bounds = QGeoShape());
void setLocale(const QLocale &locale);
QLocale locale() const;
Q_SIGNALS:
void finished(QGeoCodeReply *reply);
void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString());
private:
QGeoCodingManager(QGeoCodingManagerEngine *engine, QObject *parent = 0);
QGeoCodingManagerPrivate *d_ptr;
Q_DISABLE_COPY(QGeoCodingManager)
friend class QGeoServiceProvider;
friend class QGeoServiceProviderPrivate;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCODINGMANAGER_P_H
#define QGEOCODINGMANAGER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeocodingmanager.h"
#include "qgeocodereply.h"
#include <QList>
QT_BEGIN_NAMESPACE
class QGeoCodingManagerEngine;
class QGeoCodingManagerPrivate
{
public:
QGeoCodingManagerPrivate();
~QGeoCodingManagerPrivate();
QGeoCodingManagerEngine *engine;
private:
Q_DISABLE_COPY(QGeoCodingManagerPrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCODINGMANAGERENGINE_H
#define QGEOCODINGMANAGERENGINE_H
#include <QtCore/QObject>
#include <QtLocation/qlocationglobal.h>
#include <QtLocation/QGeoCodeReply>
QT_BEGIN_NAMESPACE
class QGeoAddress;
class QGeoShape;
class QGeoCodingManagerEnginePrivate;
class Q_LOCATION_EXPORT QGeoCodingManagerEngine : public QObject
{
Q_OBJECT
public:
QGeoCodingManagerEngine(const QVariantMap &parameters, QObject *parent = 0);
virtual ~QGeoCodingManagerEngine();
QString managerName() const;
int managerVersion() const;
virtual QGeoCodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds);
virtual QGeoCodeReply *geocode(const QString &address,
int limit,
int offset,
const QGeoShape &bounds);
virtual QGeoCodeReply *reverseGeocode(const QGeoCoordinate &coordinate,
const QGeoShape &bounds);
void setLocale(const QLocale &locale);
QLocale locale() const;
Q_SIGNALS:
void finished(QGeoCodeReply *reply);
void error(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString());
private:
void setManagerName(const QString &managerName);
void setManagerVersion(int managerVersion);
QGeoCodingManagerEnginePrivate *d_ptr;
Q_DISABLE_COPY(QGeoCodingManagerEngine)
friend class QGeoServiceProvider;
friend class QGeoServiceProviderPrivate;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCODINGMANAGERENGINE_P_H
#define QGEOCODINGMANAGERENGINE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeocodingmanagerengine.h"
#include <QList>
#include <QLocale>
QT_BEGIN_NAMESPACE
class QGeoCodingManagerEnginePrivate
{
public:
QGeoCodingManagerEnginePrivate();
~QGeoCodingManagerEnginePrivate();
QString managerName;
int managerVersion;
QLocale locale;
private:
Q_DISABLE_COPY(QGeoCodingManagerEnginePrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMANEUVER_H
#define QGEOMANEUVER_H
#include <QtCore/qshareddata.h>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QString;
class QGeoCoordinate;
class QGeoManeuverPrivate;
class Q_LOCATION_EXPORT QGeoManeuver
{
public:
enum InstructionDirection {
NoDirection,
DirectionForward,
DirectionBearRight,
DirectionLightRight,
DirectionRight,
DirectionHardRight,
DirectionUTurnRight,
DirectionUTurnLeft,
DirectionHardLeft,
DirectionLeft,
DirectionLightLeft,
DirectionBearLeft
};
QGeoManeuver();
QGeoManeuver(const QGeoManeuver &other);
~QGeoManeuver();
QGeoManeuver &operator= (const QGeoManeuver &other);
bool operator== (const QGeoManeuver &other) const;
bool operator!= (const QGeoManeuver &other) const;
bool isValid() const;
void setPosition(const QGeoCoordinate &position);
QGeoCoordinate position() const;
void setInstructionText(const QString &instructionText);
QString instructionText() const;
void setDirection(InstructionDirection direction);
InstructionDirection direction() const;
void setTimeToNextInstruction(int secs);
int timeToNextInstruction() const;
void setDistanceToNextInstruction(qreal distance);
qreal distanceToNextInstruction() const;
void setWaypoint(const QGeoCoordinate &coordinate);
QGeoCoordinate waypoint() const;
private:
QSharedDataPointer<QGeoManeuverPrivate> d_ptr;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMANEUVER_P_H
#define QGEOMANEUVER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeomaneuver.h"
#include "qgeocoordinate.h"
#include <QSharedData>
#include <QString>
QT_BEGIN_NAMESPACE
class QGeoManeuverPrivate : public QSharedData
{
public:
QGeoManeuverPrivate();
QGeoManeuverPrivate(const QGeoManeuverPrivate &other);
~QGeoManeuverPrivate();
bool operator== (const QGeoManeuverPrivate &other) const;
bool valid;
QString id;
QGeoCoordinate position;
QString text;
QGeoManeuver::InstructionDirection direction;
int timeToNextInstruction;
qreal distanceToNextInstruction;
QGeoCoordinate waypoint;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAP_P_H
#define QGEOMAP_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeocameradata_p.h"
#include "qgeomaptype_p.h"
#include <QtCore/QObject>
#include <QtPositioning/private/qdoublevector2d_p.h>
QT_BEGIN_NAMESPACE
class QGeoMappingManagerEngine;
class QGeoMapPrivate;
class QGeoMapController;
class QGeoCameraCapabilities;
class QGeoCoordinate;
class QSGNode;
class QQuickWindow;
class Q_LOCATION_EXPORT QGeoMap : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QGeoMap)
public:
virtual ~QGeoMap();
QGeoMapController *mapController();
void resize(int width, int height);
int width() const;
int height() const;
QGeoCameraData cameraData() const;
void setActiveMapType(const QGeoMapType mapType);
const QGeoMapType activeMapType() const;
virtual QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos, bool clipToViewport = true) const = 0;
virtual QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate, bool clipToViewport = true) const = 0;
virtual int mapVersion();
virtual void prefetchData();
QString pluginString();
QGeoCameraCapabilities cameraCapabilities();
protected:
QGeoMap(QGeoMapPrivate &dd, QObject *parent = 0);
void setCameraData(const QGeoCameraData &cameraData);
virtual QSGNode *updateSceneGraph(QSGNode *node, QQuickWindow *window) = 0;
public Q_SLOTS:
void update();
Q_SIGNALS:
void cameraDataChanged(const QGeoCameraData &cameraData);
void updateRequired();
void activeMapTypeChanged();
void copyrightsChanged(const QImage &copyrightsImage);
void copyrightsChanged(const QString &copyrightsHtml);
private:
Q_DISABLE_COPY(QGeoMap)
friend class QGeoMapController; //setCameraData
friend class QDeclarativeGeoMap; //updateSceneGraph
};
QT_END_NAMESPACE
#endif // QGEOMAP_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAP_P_P_H
#define QGEOMAP_P_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeocameradata_p.h"
#include "qgeomaptype_p.h"
#include <QtCore/private/qobject_p.h>
QT_BEGIN_NAMESPACE
class QGeoMappingManagerEngine;
class QGeoMap;
class QGeoMapController;
class QGeoMapPrivate : public QObjectPrivate
{
Q_DECLARE_PUBLIC(QGeoMap)
public:
QGeoMapPrivate(QGeoMappingManagerEngine *engine);
virtual ~QGeoMapPrivate();
void setCameraData(const QGeoCameraData &cameraData);
void resize(int width, int height);
protected:
virtual void mapResized(int width, int height) = 0;
virtual void changeCameraData(const QGeoCameraData &oldCameraData) = 0;
virtual void changeActiveMapType(const QGeoMapType mapType) = 0;
protected:
int m_width;
int m_height;
double m_aspectRatio;
QPointer<QGeoMappingManagerEngine> m_engine;
QString m_pluginString;
QGeoMapController *m_controller;
QGeoCameraData m_cameraData;
QGeoMapType m_activeMapType;
};
QT_END_NAMESPACE
#endif // QGEOMAP_P_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPCONTROLLER_P_H
#define QGEOMAPCONTROLLER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QObject>
#include "qgeocoordinate.h"
#include "qgeocameradata_p.h"
QT_BEGIN_NAMESPACE
class QGeoMap;
class Q_LOCATION_EXPORT QGeoMapController : public QObject
{
Q_OBJECT
Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter NOTIFY centerChanged)
Q_PROPERTY(qreal bearing READ bearing WRITE setBearing NOTIFY bearingChanged)
Q_PROPERTY(qreal tilt READ tilt WRITE setTilt NOTIFY tiltChanged)
Q_PROPERTY(qreal roll READ roll WRITE setRoll NOTIFY rollChanged)
Q_PROPERTY(qreal zoom READ zoom WRITE setZoom NOTIFY zoomChanged)
public:
QGeoMapController(QGeoMap *map);
~QGeoMapController();
QGeoCoordinate center() const;
void setCenter(const QGeoCoordinate &center);
void setLatitude(qreal latitude);
void setLongitude(qreal longitude);
void setAltitude(qreal altitude);
qreal bearing() const;
void setBearing(qreal bearing);
qreal tilt() const;
void setTilt(qreal tilt);
qreal roll() const;
void setRoll(qreal roll);
qreal zoom() const;
void setZoom(qreal zoom);
void pan(qreal dx, qreal dy);
private Q_SLOTS:
void cameraDataChanged(const QGeoCameraData &cameraData);
Q_SIGNALS:
void centerChanged(const QGeoCoordinate &center);
void bearingChanged(qreal bearing);
void tiltChanged(qreal tilt);
void rollChanged(qreal roll);
void zoomChanged(qreal zoom);
private:
QGeoMap *map_;
QGeoCameraData oldCameraData_;
};
QT_END_NAMESPACE
#endif // QGEOMAPCONTROLLER_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPPINGMANAGER_H
#define QGEOMAPPINGMANAGER_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QObject>
#include <QSize>
#include <QPair>
#include <QtLocation/qlocationglobal.h>
#include "qgeomaptype_p.h"
QT_BEGIN_NAMESPACE
class QGeoMap;
class QLocale;
class QGeoRectangle;
class QGeoCoordinate;
class QGeoMappingManagerPrivate;
class QGeoMapRequestOptions;
class QGeoMappingManagerEngine;
class QGeoCameraCapabilities;
class Q_LOCATION_EXPORT QGeoMappingManager : public QObject
{
Q_OBJECT
public:
~QGeoMappingManager();
QString managerName() const;
int managerVersion() const;
QGeoMap *createMap(QObject *parent);
QList<QGeoMapType> supportedMapTypes() const;
bool isInitialized() const;
QGeoCameraCapabilities cameraCapabilities() const;
void setLocale(const QLocale &locale);
QLocale locale() const;
Q_SIGNALS:
void initialized();
protected:
QGeoMappingManager(QGeoMappingManagerEngine *engine, QObject *parent = 0);
private:
QGeoMappingManagerPrivate *d_ptr;
Q_DISABLE_COPY(QGeoMappingManager)
friend class QGeoServiceProvider;
friend class QGeoServiceProviderPrivate;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPPINGMANAGER_P_H
#define QGEOMAPPINGMANAGER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QSize>
#include <QList>
#include <QHash>
#include <QSet>
#include <QThread>
QT_BEGIN_NAMESPACE
class QGeoMappingManagerPrivate
{
public:
QGeoMappingManagerPrivate();
~QGeoMappingManagerPrivate();
QGeoMappingManagerEngine *engine;
private:
Q_DISABLE_COPY(QGeoMappingManagerPrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPPINGMANAGERENGINE_H
#define QGEOMAPPINGMANAGERENGINE_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QObject>
#include <QSize>
#include <QPair>
#include <QSet>
#include <QList>
#include <QMap>
#include <QString>
#include <QVariant>
#include <QtLocation/qlocationglobal.h>
#include "qgeomaptype_p.h"
#include "qgeomappingmanager_p.h"
QT_BEGIN_NAMESPACE
class QLocale;
class QGeoRectangle;
class QGeoCoordinate;
class QGeoMappingManagerPrivate;
class QGeoMapRequestOptions;
class QGeoMappingManagerEnginePrivate;
class QGeoMap;
class Q_LOCATION_EXPORT QGeoMappingManagerEngine : public QObject
{
Q_OBJECT
public:
explicit QGeoMappingManagerEngine(QObject *parent = 0);
virtual ~QGeoMappingManagerEngine();
virtual QGeoMap *createMap() = 0;
virtual void registerMap(QGeoMap *map) = 0;
virtual void deregisterMap(QGeoMap *map) = 0;
QVariantMap parameters() const;
QString managerName() const;
int managerVersion() const;
QList<QGeoMapType> supportedMapTypes() const;
QGeoCameraCapabilities cameraCapabilities();
void setLocale(const QLocale &locale);
QLocale locale() const;
bool isInitialized() const;
Q_SIGNALS:
void initialized();
protected:
void setSupportedMapTypes(const QList<QGeoMapType> &supportedMapTypes);
void setCameraCapabilities(const QGeoCameraCapabilities &capabilities);
void engineInitialized();
private:
QGeoMappingManagerEnginePrivate *d_ptr;
void setManagerName(const QString &managerName);
void setManagerVersion(int managerVersion);
Q_DECLARE_PRIVATE(QGeoMappingManagerEngine)
Q_DISABLE_COPY(QGeoMappingManagerEngine)
friend class QGeoServiceProvider;
friend class QGeoServiceProviderPrivate;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPPINGMANAGERENGINE_P_H
#define QGEOMAPPINGMANAGERENGINE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QSize>
#include <QList>
#include <QMap>
#include <QLocale>
#include <QTimer>
#include <QHash>
#include "qgeomaptype_p.h"
#include "qgeomappingmanager_p.h"
#include "qgeocameracapabilities_p.h"
QT_BEGIN_NAMESPACE
class QGeoTileSpec;
class QGeoTiledMapReply;
class QGeoMappingManagerEnginePrivate
{
public:
QGeoMappingManagerEnginePrivate();
~QGeoMappingManagerEnginePrivate();
QString managerName;
int managerVersion;
QList<QGeoMapType> supportedMapTypes;
QGeoCameraCapabilities capabilities_;
QLocale locale;
bool initialized;
private:
Q_DISABLE_COPY(QGeoMappingManagerEnginePrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPSCENE_P_H
#define QGEOMAPSCENE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QObject>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QGeoCameraData;
class QGeoTileSpec;
class QDoubleVector2D;
class QGeoTileTexture;
class QSGNode;
class QQuickWindow;
class QGeoMapScenePrivate;
class Q_LOCATION_EXPORT QGeoMapScene : public QObject
{
Q_OBJECT
Q_DECLARE_PRIVATE(QGeoMapScene)
public:
explicit QGeoMapScene(QObject *parent = 0);
virtual ~QGeoMapScene();
void setScreenSize(const QSize &size);
void setTileSize(int tileSize);
void setCameraData(const QGeoCameraData &cameraData);
void setVisibleTiles(const QSet<QGeoTileSpec> &tiles);
void setUseVerticalLock(bool lock);
void addTile(const QGeoTileSpec &spec, QSharedPointer<QGeoTileTexture> texture);
QDoubleVector2D itemPositionToMercator(const QDoubleVector2D &pos) const;
QDoubleVector2D mercatorToItemPosition(const QDoubleVector2D &mercator) const;
QSGNode *updateSceneGraph(QSGNode *oldNode, QQuickWindow *window);
bool verticalLock() const;
QSet<QGeoTileSpec> texturedTiles();
Q_SIGNALS:
void newTilesVisible(const QSet<QGeoTileSpec> &newTiles);
private:
Q_DISABLE_COPY(QGeoMapScene)
};
QT_END_NAMESPACE
#endif // QGEOMAPSCENE_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPTYPE_H
#define QGEOMAPTYPE_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtCore/QString>
#include <QtCore/QSharedDataPointer>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QGeoMapTypePrivate;
class Q_LOCATION_EXPORT QGeoMapType
{
public:
enum MapStyle {
NoMap = 0,
StreetMap,
SatelliteMapDay,
SatelliteMapNight,
TerrainMap,
HybridMap,
TransitMap,
GrayStreetMap,
PedestrianMap,
CarNavigationMap,
CycleMap,
CustomMap = 100
};
QGeoMapType();
QGeoMapType(const QGeoMapType &other);
QGeoMapType(MapStyle style, const QString &name, const QString &description, bool mobile,
bool night, int mapId);
~QGeoMapType();
QGeoMapType &operator = (const QGeoMapType &other);
bool operator == (const QGeoMapType &other) const;
bool operator != (const QGeoMapType &other) const;
MapStyle style() const;
QString name() const;
QString description() const;
bool mobile() const;
bool night() const;
int mapId() const;
private:
QSharedDataPointer<QGeoMapTypePrivate> d_ptr;
};
QT_END_NAMESPACE
#endif // QGEOMAPTYPE_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOMAPTYPE_P_H
#define QGEOMAPTYPE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QMetaType>
#include <QString>
#include <QSharedData>
#include "qgeomaptype_p.h"
QT_BEGIN_NAMESPACE
class QGeoMapTypePrivate : public QSharedData
{
public:
QGeoMapTypePrivate();
QGeoMapTypePrivate(QGeoMapType::MapStyle style, const QString &name, const QString &description, bool mobile, bool night, int mapId);
QGeoMapTypePrivate(const QGeoMapTypePrivate &other);
~QGeoMapTypePrivate();
QGeoMapTypePrivate &operator = (const QGeoMapTypePrivate &other);
bool operator == (const QGeoMapTypePrivate &other) const;
QGeoMapType::MapStyle style_;
QString name_;
QString description_;
bool mobile_;
bool night_;
int mapId_;
};
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoMapTypePrivate)
#endif // QGEOMAPTYPE_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTE_H
#define QGEOROUTE_H
#include <QtPositioning/QGeoCoordinate>
#include <QtLocation/QGeoRouteRequest>
#include <QtCore/QExplicitlySharedDataPointer>
#include <QtCore/QList>
#include <QtCore/QHash>
QT_BEGIN_NAMESPACE
class QGeoRectangle;
class QGeoRouteSegment;
class QGeoRoutePrivate;
class Q_LOCATION_EXPORT QGeoRoute
{
public:
QGeoRoute();
QGeoRoute(const QGeoRoute &other);
~QGeoRoute();
QGeoRoute &operator = (const QGeoRoute &other);
bool operator == (const QGeoRoute &other) const;
bool operator != (const QGeoRoute &other) const;
void setRouteId(const QString &id);
QString routeId() const;
void setRequest(const QGeoRouteRequest &request);
QGeoRouteRequest request() const;
void setBounds(const QGeoRectangle &bounds);
QGeoRectangle bounds() const;
void setFirstRouteSegment(const QGeoRouteSegment &routeSegment);
QGeoRouteSegment firstRouteSegment() const;
void setTravelTime(int secs);
int travelTime() const;
void setDistance(qreal distance);
qreal distance() const;
void setTravelMode(QGeoRouteRequest::TravelMode mode);
QGeoRouteRequest::TravelMode travelMode() const;
void setPath(const QList<QGeoCoordinate> &path);
QList<QGeoCoordinate> path() const;
private:
QExplicitlySharedDataPointer<QGeoRoutePrivate> d_ptr;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTE_P_H
#define QGEOROUTE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeoroute.h"
#include "qgeorouterequest.h"
#include "qgeorectangle.h"
#include "qgeoroutesegment.h"
#include <QSharedData>
QT_BEGIN_NAMESPACE
class QGeoCoordinate;
class QGeoRoutePrivate : public QSharedData
{
public:
QGeoRoutePrivate();
QGeoRoutePrivate(const QGeoRoutePrivate &other);
~QGeoRoutePrivate();
bool operator == (const QGeoRoutePrivate &other) const;
QString id;
QGeoRouteRequest request;
QGeoRectangle bounds;
// QList<QGeoRouteSegment> routeSegments;
int travelTime;
qreal distance;
QGeoRouteRequest::TravelMode travelMode;
QList<QGeoCoordinate> path;
QGeoRouteSegment firstSegment;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTEREPLY_H
#define QGEOROUTEREPLY_H
#include <QtLocation/QGeoRoute>
#include <QtCore/QList>
#include <QtCore/QObject>
QT_BEGIN_NAMESPACE
class QGeoRouteRequest;
class QGeoRouteReplyPrivate;
class Q_LOCATION_EXPORT QGeoRouteReply : public QObject
{
Q_OBJECT
public:
enum Error {
NoError,
EngineNotSetError,
CommunicationError,
ParseError,
UnsupportedOptionError,
UnknownError
};
QGeoRouteReply(Error error, const QString &errorString, QObject *parent = 0);
virtual ~QGeoRouteReply();
bool isFinished() const;
Error error() const;
QString errorString() const;
QGeoRouteRequest request() const;
QList<QGeoRoute> routes() const;
virtual void abort();
Q_SIGNALS:
void finished();
void error(QGeoRouteReply::Error error, const QString &errorString = QString());
protected:
QGeoRouteReply(const QGeoRouteRequest &request, QObject *parent = 0);
void setError(Error error, const QString &errorString);
void setFinished(bool finished);
void setRoutes(const QList<QGeoRoute> &routes);
void addRoutes(const QList<QGeoRoute> &routes);
private:
QGeoRouteReplyPrivate *d_ptr;
Q_DISABLE_COPY(QGeoRouteReply)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTEREPLY_P_H
#define QGEOROUTEREPLY_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeorouterequest.h"
#include "qgeoroutereply.h"
#include <QList>
QT_BEGIN_NAMESPACE
class QGeoRoute;
class QGeoRouteReplyPrivate
{
public:
explicit QGeoRouteReplyPrivate(const QGeoRouteRequest &request);
QGeoRouteReplyPrivate(QGeoRouteReply::Error error, QString errorString);
~QGeoRouteReplyPrivate();
QGeoRouteReply::Error error;
QString errorString;
bool isFinished;
QGeoRouteRequest request;
QList<QGeoRoute> routes;
private:
Q_DISABLE_COPY(QGeoRouteReplyPrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTEREQUEST_H
#define QGEOROUTEREQUEST_H
#include <QtCore/QList>
#include <QtCore/QExplicitlySharedDataPointer>
#include <QtCore/QDateTime>
#include <QtLocation/qlocationglobal.h>
#include <QtPositioning/qgeocoordinate.h>
QT_BEGIN_NAMESPACE
class QGeoRectangle;
class QGeoRouteRequestPrivate;
class Q_LOCATION_EXPORT QGeoRouteRequest
{
public:
enum TravelMode {
CarTravel = 0x0001,
PedestrianTravel = 0x0002,
BicycleTravel = 0x0004,
PublicTransitTravel = 0x0008,
TruckTravel = 0x0010
};
Q_DECLARE_FLAGS(TravelModes, TravelMode)
enum FeatureType {
NoFeature = 0x00000000,
TollFeature = 0x00000001,
HighwayFeature = 0x00000002,
PublicTransitFeature = 0x00000004,
FerryFeature = 0x00000008,
TunnelFeature = 0x00000010,
DirtRoadFeature = 0x00000020,
ParksFeature = 0x00000040,
MotorPoolLaneFeature = 0x00000080
};
Q_DECLARE_FLAGS(FeatureTypes, FeatureType)
enum FeatureWeight {
NeutralFeatureWeight = 0x00000000,
PreferFeatureWeight = 0x00000001,
RequireFeatureWeight = 0x00000002,
AvoidFeatureWeight = 0x00000004,
DisallowFeatureWeight = 0x00000008
};
Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight)
enum RouteOptimization {
ShortestRoute = 0x0001,
FastestRoute = 0x0002,
MostEconomicRoute = 0x0004,
MostScenicRoute = 0x0008
};
Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization)
enum SegmentDetail {
NoSegmentData = 0x0000,
BasicSegmentData = 0x0001
};
Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail)
enum ManeuverDetail {
NoManeuvers = 0x0000,
BasicManeuvers = 0x0001
};
Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail)
explicit QGeoRouteRequest(const QList<QGeoCoordinate> &waypoints = QList<QGeoCoordinate>());
QGeoRouteRequest(const QGeoCoordinate &origin,
const QGeoCoordinate &destination);
QGeoRouteRequest(const QGeoRouteRequest &other);
~QGeoRouteRequest();
QGeoRouteRequest &operator= (const QGeoRouteRequest &other);
bool operator == (const QGeoRouteRequest &other) const;
bool operator != (const QGeoRouteRequest &other) const;
void setWaypoints(const QList<QGeoCoordinate> &waypoints);
QList<QGeoCoordinate> waypoints() const;
void setExcludeAreas(const QList<QGeoRectangle> &areas);
QList<QGeoRectangle> excludeAreas() const;
// defaults to 0
void setNumberAlternativeRoutes(int alternatives);
int numberAlternativeRoutes() const;
// defaults to TravelByCar
void setTravelModes(TravelModes travelModes);
TravelModes travelModes() const;
void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight);
FeatureWeight featureWeight(FeatureType featureType) const;
QList<FeatureType> featureTypes() const;
// defaults to OptimizeFastest
void setRouteOptimization(RouteOptimizations optimization);
RouteOptimizations routeOptimization() const;
// defaults to BasicSegmentData
void setSegmentDetail(SegmentDetail segmentDetail);
SegmentDetail segmentDetail() const;
// defaults to BasicManeuvers
void setManeuverDetail(ManeuverDetail maneuverDetail);
ManeuverDetail maneuverDetail() const;
private:
QExplicitlySharedDataPointer<QGeoRouteRequestPrivate> d_ptr;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::TravelModes)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureTypes)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureWeights)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::RouteOptimizations)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::SegmentDetails)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::ManeuverDetails)
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTEREQUEST_P_H
#define QGEOROUTEREQUEST_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeorouterequest.h"
#include <QList>
#include <QSharedData>
#include <QDateTime>
#include <QMap>
QT_BEGIN_NAMESPACE
class QGeoRouteRequestPrivate : public QSharedData
{
public:
QGeoRouteRequestPrivate();
QGeoRouteRequestPrivate(const QGeoRouteRequestPrivate &other);
~QGeoRouteRequestPrivate();
bool operator ==(const QGeoRouteRequestPrivate &other) const;
QList<QGeoCoordinate> waypoints;
QList<QGeoRectangle> excludeAreas;
int numberAlternativeRoutes;
QGeoRouteRequest::TravelModes travelModes;
QMap < QGeoRouteRequest::FeatureType,
QGeoRouteRequest::FeatureWeight > featureWeights;
QGeoRouteRequest::RouteOptimizations routeOptimization;
QGeoRouteRequest::SegmentDetail segmentDetail;
QGeoRouteRequest::ManeuverDetail maneuverDetail;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTESEGMENT_H
#define QGEOROUTESEGMENT_H
#include <QtCore/QExplicitlySharedDataPointer>
#include <QtCore/QList>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QGeoCoordinate;
class QGeoManeuver;
class QGeoRouteSegmentPrivate;
class Q_LOCATION_EXPORT QGeoRouteSegment
{
public:
QGeoRouteSegment();
QGeoRouteSegment(const QGeoRouteSegment &other);
~QGeoRouteSegment();
QGeoRouteSegment &operator= (const QGeoRouteSegment &other);
bool operator ==(const QGeoRouteSegment &other) const;
bool operator !=(const QGeoRouteSegment &other) const;
bool isValid() const;
void setNextRouteSegment(const QGeoRouteSegment &routeSegment);
QGeoRouteSegment nextRouteSegment() const;
void setTravelTime(int secs);
int travelTime() const;
void setDistance(qreal distance);
qreal distance() const;
void setPath(const QList<QGeoCoordinate> &path);
QList<QGeoCoordinate> path() const;
void setManeuver(const QGeoManeuver &maneuver);
QGeoManeuver maneuver() const;
protected:
QGeoRouteSegment(QExplicitlySharedDataPointer<QGeoRouteSegmentPrivate> &d_ptr);
private:
QExplicitlySharedDataPointer<QGeoRouteSegmentPrivate> d_ptr;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTESEGMENT_P_H
#define QGEOROUTESEGMENT_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeomaneuver.h"
#include <QSharedData>
#include <QList>
#include <QString>
QT_BEGIN_NAMESPACE
class QGeoCoordinate;
class QGeoRouteSegmentPrivate : public QSharedData
{
public:
QGeoRouteSegmentPrivate();
QGeoRouteSegmentPrivate(const QGeoRouteSegmentPrivate &other);
~QGeoRouteSegmentPrivate();
bool operator ==(const QGeoRouteSegmentPrivate &other) const;
bool valid;
int travelTime;
qreal distance;
QList<QGeoCoordinate> path;
QGeoManeuver maneuver;
QExplicitlySharedDataPointer<QGeoRouteSegmentPrivate> nextSegment;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTINGMANAGER_H
#define QGEOROUTINGMANAGER_H
#include <QtCore/QObject>
#include <QtCore/QLocale>
#include <QtLocation/QGeoRouteRequest>
#include <QtLocation/QGeoRouteReply>
QT_BEGIN_NAMESPACE
class QGeoRoutingManagerEngine;
class QGeoRoutingManagerPrivate;
class Q_LOCATION_EXPORT QGeoRoutingManager : public QObject
{
Q_OBJECT
public:
~QGeoRoutingManager();
QString managerName() const;
int managerVersion() const;
QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request);
QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position);
QGeoRouteRequest::TravelModes supportedTravelModes() const;
QGeoRouteRequest::FeatureTypes supportedFeatureTypes() const;
QGeoRouteRequest::FeatureWeights supportedFeatureWeights() const;
QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations() const;
QGeoRouteRequest::SegmentDetails supportedSegmentDetails() const;
QGeoRouteRequest::ManeuverDetails supportedManeuverDetails() const;
void setLocale(const QLocale &locale);
QLocale locale() const;
void setMeasurementSystem(QLocale::MeasurementSystem system);
QLocale::MeasurementSystem measurementSystem() const;
Q_SIGNALS:
void finished(QGeoRouteReply *reply);
void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString());
private:
QGeoRoutingManager(QGeoRoutingManagerEngine *engine, QObject *parent = 0);
QGeoRoutingManagerPrivate *d_ptr;
Q_DISABLE_COPY(QGeoRoutingManager)
friend class QGeoServiceProvider;
friend class QGeoServiceProviderPrivate;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTINGMANAGER_P_H
#define QGEOROUTINGMANAGER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
QT_BEGIN_NAMESPACE
class QGeoRoutingManagerEngine;
class QGeoRoutingManagerPrivate
{
public:
QGeoRoutingManagerPrivate();
~QGeoRoutingManagerPrivate();
QGeoRoutingManagerEngine *engine;
private:
Q_DISABLE_COPY(QGeoRoutingManagerPrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTINGMANAGERENGINE_H
#define QGEOROUTINGMANAGERENGINE_H
#include <QtCore/QObject>
#include <QtCore/QMap>
#include <QtCore/QLocale>
#include <QtLocation/QGeoRouteRequest>
#include <QtLocation/QGeoRouteReply>
QT_BEGIN_NAMESPACE
class QGeoRoutingManagerEnginePrivate;
class Q_LOCATION_EXPORT QGeoRoutingManagerEngine : public QObject
{
Q_OBJECT
public:
QGeoRoutingManagerEngine(const QVariantMap &parameters, QObject *parent = 0);
virtual ~QGeoRoutingManagerEngine();
QString managerName() const;
int managerVersion() const;
virtual QGeoRouteReply *calculateRoute(const QGeoRouteRequest &request) = 0;
virtual QGeoRouteReply *updateRoute(const QGeoRoute &route, const QGeoCoordinate &position);
QGeoRouteRequest::TravelModes supportedTravelModes() const;
QGeoRouteRequest::FeatureTypes supportedFeatureTypes() const;
QGeoRouteRequest::FeatureWeights supportedFeatureWeights() const;
QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations() const;
QGeoRouteRequest::SegmentDetails supportedSegmentDetails() const;
QGeoRouteRequest::ManeuverDetails supportedManeuverDetails() const;
void setLocale(const QLocale &locale);
QLocale locale() const;
void setMeasurementSystem(QLocale::MeasurementSystem system);
QLocale::MeasurementSystem measurementSystem() const;
Q_SIGNALS:
void finished(QGeoRouteReply *reply);
void error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString());
protected:
void setSupportedTravelModes(QGeoRouteRequest::TravelModes travelModes);
void setSupportedFeatureTypes(QGeoRouteRequest::FeatureTypes featureTypes);
void setSupportedFeatureWeights(QGeoRouteRequest::FeatureWeights featureWeights);
void setSupportedRouteOptimizations(QGeoRouteRequest::RouteOptimizations optimizations);
void setSupportedSegmentDetails(QGeoRouteRequest::SegmentDetails segmentDetails);
void setSupportedManeuverDetails(QGeoRouteRequest::ManeuverDetails maneuverDetails);
private:
void setManagerName(const QString &managerName);
void setManagerVersion(int managerVersion);
QGeoRoutingManagerEnginePrivate *d_ptr;
Q_DISABLE_COPY(QGeoRoutingManagerEngine)
friend class QGeoServiceProvider;
friend class QGeoServiceProviderPrivate;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOROUTINGMANAGERENGINE_P_H
#define QGEOROUTINGMANAGERENGINE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeorouterequest.h"
#include <QMap>
#include <QLocale>
QT_BEGIN_NAMESPACE
class QGeoRoutingManagerEnginePrivate
{
public:
QGeoRoutingManagerEnginePrivate();
~QGeoRoutingManagerEnginePrivate();
QString managerName;
int managerVersion;
QGeoRouteRequest::TravelModes supportedTravelModes;
QGeoRouteRequest::FeatureTypes supportedFeatureTypes;
QGeoRouteRequest::FeatureWeights supportedFeatureWeights;
QGeoRouteRequest::RouteOptimizations supportedRouteOptimizations;
QGeoRouteRequest::SegmentDetails supportedSegmentDetails;
QGeoRouteRequest::ManeuverDetails supportedManeuverDetails;
QLocale locale;
QLocale::MeasurementSystem measurementSystem;
private:
Q_DISABLE_COPY(QGeoRoutingManagerEnginePrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSERVICEPROVIDER_H
#define QGEOSERVICEPROVIDER_H
#include <QtCore/QVariant>
#include <QtCore/QString>
#include <QtCore/QObject>
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
class QLocale;
class QStringList;
class QGeoCodingManager;
class QGeoMappingManager;
class QGeoRoutingManager;
class QPlaceManager;
class QGeoCodingManagerEngine;
class QGeoMappingManagerEngine;
class QGeoRoutingManagerEngine;
class QPlaceManagerEngine;
class QGeoServiceProviderPrivate;
class Q_LOCATION_EXPORT QGeoServiceProvider : public QObject
{
Q_OBJECT
Q_ENUMS(Error)
public:
enum Error {
NoError,
NotSupportedError,
UnknownParameterError,
MissingRequiredParameterError,
ConnectionError
};
enum RoutingFeature {
NoRoutingFeatures = 0,
OnlineRoutingFeature = (1<<0),
OfflineRoutingFeature = (1<<1),
LocalizedRoutingFeature = (1<<2),
RouteUpdatesFeature = (1<<3),
AlternativeRoutesFeature = (1<<4),
ExcludeAreasRoutingFeature = (1<<5),
AnyRoutingFeatures = ~(0)
};
enum GeocodingFeature {
NoGeocodingFeatures = 0,
OnlineGeocodingFeature = (1<<0),
OfflineGeocodingFeature = (1<<1),
ReverseGeocodingFeature = (1<<2),
LocalizedGeocodingFeature = (1<<3),
AnyGeocodingFeatures = ~(0)
};
enum MappingFeature {
NoMappingFeatures = 0,
OnlineMappingFeature = (1<<0),
OfflineMappingFeature = (1<<1),
LocalizedMappingFeature = (1<<2),
AnyMappingFeatures = ~(0)
};
enum PlacesFeature {
NoPlacesFeatures = 0,
OnlinePlacesFeature = (1<<0),
OfflinePlacesFeature = (1<<1),
SavePlaceFeature = (1<<2),
RemovePlaceFeature = (1<<3),
SaveCategoryFeature = (1<<4),
RemoveCategoryFeature = (1<<5),
PlaceRecommendationsFeature = (1<<6),
SearchSuggestionsFeature = (1<<7),
LocalizedPlacesFeature = (1<<8),
NotificationsFeature = (1<<9),
PlaceMatchingFeature = (1<<10),
AnyPlacesFeatures = ~(0)
};
Q_DECLARE_FLAGS(RoutingFeatures, RoutingFeature)
Q_FLAGS(RoutingFeatures)
Q_DECLARE_FLAGS(GeocodingFeatures, GeocodingFeature)
Q_FLAGS(GeocodingFeatures)
Q_DECLARE_FLAGS(MappingFeatures, MappingFeature)
Q_FLAGS(MappingFeatures)
Q_DECLARE_FLAGS(PlacesFeatures, PlacesFeature)
Q_FLAGS(PlacesFeatures)
static QStringList availableServiceProviders();
QGeoServiceProvider(const QString &providerName,
const QVariantMap &parameters = QVariantMap(),
bool allowExperimental = false);
~QGeoServiceProvider();
RoutingFeatures routingFeatures() const;
GeocodingFeatures geocodingFeatures() const;
MappingFeatures mappingFeatures() const;
PlacesFeatures placesFeatures() const;
QGeoCodingManager *geocodingManager() const;
QGeoMappingManager *mappingManager() const;
QGeoRoutingManager *routingManager() const;
QPlaceManager *placeManager() const;
Error error() const;
QString errorString() const;
void setParameters(const QVariantMap &parameters);
void setLocale(const QLocale &locale);
void setAllowExperimental(bool allow);
private:
QGeoServiceProviderPrivate *d_ptr;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::RoutingFeatures)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::GeocodingFeatures)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::MappingFeatures)
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoServiceProvider::PlacesFeatures)
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSERVICEPROVIDER_P_H
#define QGEOSERVICEPROVIDER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeoserviceprovider.h"
#include <QHash>
#include <QJsonObject>
#include <QJsonArray>
#include <QLocale>
QT_BEGIN_NAMESPACE
class QGeoCodingManager;
class QGeoRoutingManager;
class QGeoMappingManager;
class QGeoServiceProviderFactory;
class QGeoServiceProviderPrivate
{
public:
QGeoServiceProviderPrivate();
~QGeoServiceProviderPrivate();
void loadMeta();
void loadPlugin(const QVariantMap &parameters);
void unload();
void filterParameterMap();
/* helper templates for generating the feature and manager accessors */
template <class Manager, class Engine>
Manager *manager(QGeoServiceProvider::Error *error,
QString *errorString, Manager **manager);
template <class Flags>
Flags features(const char *enumName);
QGeoServiceProviderFactory *factory;
QJsonObject metaData;
QVariantMap parameterMap;
QVariantMap cleanedParameterMap;
bool experimental;
QGeoCodingManager *geocodingManager;
QGeoRoutingManager *routingManager;
QGeoMappingManager *mappingManager;
QPlaceManager *placeManager;
QGeoServiceProvider::Error geocodeError;
QGeoServiceProvider::Error routingError;
QGeoServiceProvider::Error mappingError;
QGeoServiceProvider::Error placeError;
QString geocodeErrorString;
QString routingErrorString;
QString mappingErrorString;
QString placeErrorString;
QGeoServiceProvider::Error error;
QString errorString;
QString providerName;
QLocale locale;
bool localeSet;
static QHash<QString, QJsonObject> plugins(bool reload = false);
static void loadPluginMetadata(QHash<QString, QJsonObject> &list);
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSERVICEPROVIDERFACTORY_H
#define QGEOSERVICEPROVIDERFACTORY_H
#include <QtLocation/QGeoServiceProvider>
#include <QtCore/QtPlugin>
#include <QtCore/QMap>
#include <QtCore/QString>
QT_BEGIN_NAMESPACE
class Q_LOCATION_EXPORT QGeoServiceProviderFactory
{
public:
virtual ~QGeoServiceProviderFactory() {}
virtual QGeoCodingManagerEngine *createGeocodingManagerEngine(const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
virtual QGeoMappingManagerEngine *createMappingManagerEngine(const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
virtual QGeoRoutingManagerEngine *createRoutingManagerEngine(const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
virtual QPlaceManagerEngine *createPlaceManagerEngine(const QVariantMap &parameters,
QGeoServiceProvider::Error *error,
QString *errorString) const;
};
Q_DECLARE_INTERFACE(QGeoServiceProviderFactory,
"org.qt-project.qt.geoservice.serviceproviderfactory/5.0")
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILECACHE_P_H
#define QGEOTILECACHE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtLocation/qlocationglobal.h>
#include <QObject>
#include <QCache>
#include "qcache3q_p.h"
#include <QSet>
#include <QMutex>
#include <QTimer>
#include "qgeotilespec_p.h"
#include "qgeotiledmappingmanagerengine_p.h"
#include <QImage>
QT_BEGIN_NAMESPACE
class QGeoMappingManager;
class QGeoTile;
class QGeoCachedTileMemory;
class QGeoTileCache;
class QPixmap;
class QThread;
/* This would be internal to qgeotilecache.cpp except that the eviction
* policy can't be defined without it being concrete here */
class QGeoCachedTileDisk
{
public:
~QGeoCachedTileDisk();
QGeoTileSpec spec;
QString filename;
QString format;
QGeoTileCache *cache;
};
/* This is also used in the mapgeometry */
class Q_LOCATION_EXPORT QGeoTileTexture
{
public:
QGeoTileTexture();
~QGeoTileTexture();
QGeoTileSpec spec;
QImage image;
bool textureBound;
};
/* Custom eviction policy for the disk cache, to avoid deleting all the files
* when the application closes */
class QCache3QTileEvictionPolicy : public QCache3QDefaultEvictionPolicy<QGeoTileSpec,QGeoCachedTileDisk>
{
protected:
void aboutToBeRemoved(const QGeoTileSpec &key, QSharedPointer<QGeoCachedTileDisk> obj);
void aboutToBeEvicted(const QGeoTileSpec &key, QSharedPointer<QGeoCachedTileDisk> obj);
};
class Q_LOCATION_EXPORT QGeoTileCache : public QObject
{
Q_OBJECT
public:
QGeoTileCache(const QString &directory = QString(), QObject *parent = 0);
~QGeoTileCache();
void setMaxDiskUsage(int diskUsage);
int maxDiskUsage() const;
int diskUsage() const;
void setMaxMemoryUsage(int memoryUsage);
int maxMemoryUsage() const;
int memoryUsage() const;
void setMinTextureUsage(int textureUsage);
void setExtraTextureUsage(int textureUsage);
int maxTextureUsage() const;
int minTextureUsage() const;
int textureUsage() const;
QSharedPointer<QGeoTileTexture> get(const QGeoTileSpec &spec);
QString directory() const;
// can be called without a specific tileCache pointer
static void evictFromDiskCache(QGeoCachedTileDisk *td);
static void evictFromMemoryCache(QGeoCachedTileMemory *tm);
void insert(const QGeoTileSpec &spec,
const QByteArray &bytes,
const QString &format,
QGeoTiledMappingManagerEngine::CacheAreas areas = QGeoTiledMappingManagerEngine::AllCaches);
void handleError(const QGeoTileSpec &spec, const QString &errorString);
public Q_SLOTS:
void printStats();
private:
void loadTiles();
QSharedPointer<QGeoCachedTileDisk> addToDiskCache(const QGeoTileSpec &spec, const QString &filename);
QSharedPointer<QGeoCachedTileMemory> addToMemoryCache(const QGeoTileSpec &spec, const QByteArray &bytes, const QString &format);
QSharedPointer<QGeoTileTexture> addToTextureCache(const QGeoTileSpec &spec, const QPixmap &pixmap);
static QString tileSpecToFilename(const QGeoTileSpec &spec, const QString &format, const QString &directory);
static QGeoTileSpec filenameToTileSpec(const QString &filename);
QString directory_;
QCache3Q<QGeoTileSpec, QGeoCachedTileDisk, QCache3QTileEvictionPolicy > diskCache_;
QCache3Q<QGeoTileSpec, QGeoCachedTileMemory > memoryCache_;
QCache3Q<QGeoTileSpec, QGeoTileTexture > textureCache_;
int minTextureUsage_;
int extraTextureUsage_;
};
QT_END_NAMESPACE
#endif // QGEOTILECACHE_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEDMAP_P_H
#define QGEOTILEDMAP_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QObject>
#include <QString>
#include "qgeomap_p.h"
#include "qgeocameradata_p.h"
#include "qgeomaptype_p.h"
#include <QtPositioning/private/qdoublevector2d_p.h>
QT_BEGIN_NAMESPACE
class QGeoTileSpec;
class QGeoTileTexture;
class QGeoTileCache;
class QGeoTiledMapPrivate;
class QGeoTiledMappingManagerEngine;
class QGeoTileRequestManager;
class QQuickWindow;
class QSGNode;
class QPointF;
class Q_LOCATION_EXPORT QGeoTiledMap : public QGeoMap
{
Q_OBJECT
Q_DECLARE_PRIVATE(QGeoTiledMap)
public:
QGeoTiledMap(QGeoTiledMappingManagerEngine *engine, QObject *parent);
virtual ~QGeoTiledMap();
QGeoTileCache *tileCache();
QGeoTileRequestManager *requestManager();
void updateTile(const QGeoTileSpec &spec);
QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos, bool clipToViewport = true) const Q_DECL_OVERRIDE;
QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate, bool clipToViewport = true) const Q_DECL_OVERRIDE;
void prefetchData() Q_DECL_OVERRIDE;
protected:
QSGNode *updateSceneGraph(QSGNode *, QQuickWindow *window) Q_DECL_OVERRIDE;
protected Q_SLOTS:
virtual void evaluateCopyrights(const QSet<QGeoTileSpec> &visibleTiles);
void updateMapVersion();
private:
Q_DISABLE_COPY(QGeoTiledMap)
};
QT_END_NAMESPACE
#endif // QGEOMAP_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEDMAP_P_P_H
#define QGEOTILEDMAP_P_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeomap_p_p.h"
#include "qgeocameradata_p.h"
#include "qgeomaptype_p.h"
#include <QtPositioning/private/qdoublevector3d_p.h>
#include <QtPositioning/private/qdoublevector2d_p.h>
#include <QtCore/QPointer>
QT_BEGIN_NAMESPACE
class QGeoCameraTiles;
class QGeoMapScene;
class QGeoTileCache;
class QGeoTiledMappingManagerEngine;
class QGeoTiledMap;
class QGeoTileRequestManager;
class QGeoTileSpec;
class QSGNode;
class QQuickWindow;
class QGeoTiledMapPrivate : public QGeoMapPrivate
{
Q_DECLARE_PUBLIC(QGeoTiledMap)
public:
QGeoTiledMapPrivate(QGeoTiledMappingManagerEngine *engine);
~QGeoTiledMapPrivate();
QSGNode *updateSceneGraph(QSGNode *node, QQuickWindow *window);
void changeMapVersion(int mapVersion);
void resized(int width, int height);
QGeoCoordinate itemPositionToCoordinate(const QDoubleVector2D &pos) const;
QDoubleVector2D coordinateToItemPosition(const QGeoCoordinate &coordinate) const;
void updateTile(const QGeoTileSpec &spec);
void prefetchTiles();
protected:
void mapResized(int width, int height) Q_DECL_OVERRIDE;
void changeCameraData(const QGeoCameraData &oldCameraData) Q_DECL_OVERRIDE;
void changeActiveMapType(const QGeoMapType mapType) Q_DECL_OVERRIDE;
private:
QGeoTileCache *m_cache;
QGeoCameraTiles *m_cameraTiles;
QGeoMapScene *m_mapScene;
QGeoTileRequestManager *m_tileRequests;
Q_DISABLE_COPY(QGeoTiledMapPrivate)
};
QT_END_NAMESPACE
#endif // QGEOTILEDMAP_P_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEDMAPPINGMANAGERENGINE_H
#define QGEOTILEDMAPPINGMANAGERENGINE_H
#include <QObject>
#include <QSize>
#include <QPair>
#include <QtLocation/qlocationglobal.h>
#include "qgeomaptype_p.h"
#include "qgeomappingmanagerengine_p.h"
QT_BEGIN_NAMESPACE
class QGeoTiledMappingManagerEnginePrivate;
class QGeoMapRequestOptions;
class QGeoTileFetcher;
class QGeoTileTexture;
class QGeoTileSpec;
class QGeoTiledMap;
class QGeoTileCache;
class Q_LOCATION_EXPORT QGeoTiledMappingManagerEngine : public QGeoMappingManagerEngine
{
Q_OBJECT
public:
enum CacheArea {
DiskCache = 0x01,
MemoryCache = 0x02,
AllCaches = 0xFF
};
Q_DECLARE_FLAGS(CacheAreas, CacheArea)
explicit QGeoTiledMappingManagerEngine(QObject *parent = 0);
virtual ~QGeoTiledMappingManagerEngine();
QGeoTileFetcher *tileFetcher();
QGeoMap *createMap() Q_DECL_OVERRIDE;
void registerMap(QGeoMap *map) Q_DECL_OVERRIDE;
void deregisterMap(QGeoMap *map) Q_DECL_OVERRIDE;
QSize tileSize() const;
void updateTileRequests(QGeoTiledMap *map,
const QSet<QGeoTileSpec> &tilesAdded,
const QSet<QGeoTileSpec> &tilesRemoved);
QGeoTileCache *tileCache(); // TODO: check this is still used
QSharedPointer<QGeoTileTexture> getTileTexture(const QGeoTileSpec &spec);
QGeoTiledMappingManagerEngine::CacheAreas cacheHint() const;
private Q_SLOTS:
void engineTileFinished(const QGeoTileSpec &spec, const QByteArray &bytes, const QString &format);
void engineTileError(const QGeoTileSpec &spec, const QString &errorString);
Q_SIGNALS:
void tileError(const QGeoTileSpec &spec, const QString &errorString);
void mapVersionChanged();
protected:
void setTileFetcher(QGeoTileFetcher *fetcher);
void setTileSize(const QSize &tileSize);
void setCacheHint(QGeoTiledMappingManagerEngine::CacheAreas cacheHint);
QGeoTileCache *createTileCacheWithDir(const QString &cacheDirectory);
private:
QGeoTiledMappingManagerEnginePrivate *d_ptr;
Q_DECLARE_PRIVATE(QGeoTiledMappingManagerEngine)
Q_DISABLE_COPY(QGeoTiledMappingManagerEngine)
friend class QGeoTileFetcher;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoTiledMappingManagerEngine::CacheAreas)
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEDMAPPINGMANAGER_P_H
#define QGEOTILEDMAPPINGMANAGER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QSize>
#include <QHash>
#include <QSet>
#include "qgeotiledmappingmanagerengine_p.h"
QT_BEGIN_NAMESPACE
class QGeoTiledMap;
class QGeoTileCache;
class QGeoTileSpec;
class QGeoTileFetcher;
class QGeoTiledMappingManagerEnginePrivate
{
public:
QGeoTiledMappingManagerEnginePrivate();
~QGeoTiledMappingManagerEnginePrivate();
QSize tileSize_;
QSet<QGeoTiledMap *> tileMaps_;
QHash<QGeoTiledMap *, QSet<QGeoTileSpec> > mapHash_;
QHash<QGeoTileSpec, QSet<QGeoTiledMap *> > tileHash_;
QGeoTiledMappingManagerEngine::CacheAreas cacheHint_;
QGeoTileCache *tileCache_;
QGeoTileFetcher *fetcher_;
private:
Q_DISABLE_COPY(QGeoTiledMappingManagerEnginePrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEDMAPREPLY_H
#define QGEOTILEDMAPREPLY_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtLocation/qlocationglobal.h>
#include <QObject>
QT_BEGIN_NAMESPACE
class QGeoTileSpec;
class QGeoTiledMapReplyPrivate;
class Q_LOCATION_EXPORT QGeoTiledMapReply : public QObject
{
Q_OBJECT
public:
enum Error {
NoError,
CommunicationError,
ParseError,
UnknownError
};
QGeoTiledMapReply(const QGeoTileSpec &spec, QObject *parent = 0);
QGeoTiledMapReply(Error error, const QString &errorString, QObject *parent = 0);
virtual ~QGeoTiledMapReply();
bool isFinished() const;
Error error() const;
QString errorString() const;
bool isCached() const;
QGeoTileSpec tileSpec() const;
QByteArray mapImageData() const;
QString mapImageFormat() const;
virtual void abort();
Q_SIGNALS:
void finished();
void error(QGeoTiledMapReply::Error error, const QString &errorString = QString());
protected:
void setError(Error error, const QString &errorString);
void setFinished(bool finished);
void setCached(bool cached);
void setMapImageData(const QByteArray &data);
void setMapImageFormat(const QString &format);
private:
QGeoTiledMapReplyPrivate *d_ptr;
Q_DISABLE_COPY(QGeoTiledMapReply)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEDMAPREPLY_P_H
#define QGEOTILEDMAPREPLY_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeotiledmapreply_p.h"
#include "qgeotilespec_p.h"
QT_BEGIN_NAMESPACE
class QGeoTiledMapReplyPrivate
{
public:
QGeoTiledMapReplyPrivate(const QGeoTileSpec &spec);
QGeoTiledMapReplyPrivate(QGeoTiledMapReply::Error error, const QString &errorString);
~QGeoTiledMapReplyPrivate();
QGeoTiledMapReply::Error error;
QString errorString;
bool isFinished;
bool isCached;
QGeoTileSpec spec;
QByteArray mapImageData;
QString mapImageFormat;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEFETCHER_H
#define QGEOTILEFETCHER_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QObject>
#include <qlocationglobal.h>
#include "qgeomaptype_p.h"
#include "qgeotiledmappingmanagerengine_p.h"
QT_BEGIN_NAMESPACE
class QGeoMapRequestOptions;
class QGeoTileFetcherPrivate;
class QGeoTiledMappingManagerEngine;
class QGeoTiledMapReply;
class QGeoTileSpec;
class Q_LOCATION_EXPORT QGeoTileFetcher : public QObject
{
Q_OBJECT
public:
QGeoTileFetcher(QObject *parent = 0);
virtual ~QGeoTileFetcher();
public Q_SLOTS:
void updateTileRequests(const QSet<QGeoTileSpec> &tilesAdded, const QSet<QGeoTileSpec> &tilesRemoved);
private Q_SLOTS:
void cancelTileRequests(const QSet<QGeoTileSpec> &tiles);
void requestNextTile();
void finished();
Q_SIGNALS:
void tileFinished(const QGeoTileSpec &spec, const QByteArray &bytes, const QString &format);
void tileError(const QGeoTileSpec &spec, const QString &errorString);
protected:
void timerEvent(QTimerEvent *event);
QGeoTiledMappingManagerEngine::CacheAreas cacheHint() const;
private:
QGeoTileFetcherPrivate *d_ptr;
virtual QGeoTiledMapReply *getTileImage(const QGeoTileSpec &spec) = 0;
void handleReply(QGeoTiledMapReply *reply, const QGeoTileSpec &spec);
Q_DECLARE_PRIVATE(QGeoTileFetcher)
Q_DISABLE_COPY(QGeoTileFetcher)
friend class QGeoTiledMappingManagerEngine;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEFETCHER_P_H
#define QGEOTILEFETCHER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QSize>
#include <QList>
#include <QMap>
#include <QLocale>
#include <QTimer>
#include <QMutex>
#include <QMutexLocker>
#include <QHash>
#include "qgeomaptype_p.h"
QT_BEGIN_NAMESPACE
class QGeoTileSpec;
class QGeoTiledMapReply;
class QGeoTileCache;
class QGeoTiledMappingManagerEngine;
class QGeoTileFetcherPrivate
{
public:
QGeoTileFetcherPrivate();
virtual ~QGeoTileFetcherPrivate();
bool enabled_;
QBasicTimer timer_;
QMutex queueMutex_;
QList<QGeoTileSpec> queue_;
QHash<QGeoTileSpec, QGeoTiledMapReply *> invmap_;
private:
Q_DISABLE_COPY(QGeoTileFetcherPrivate)
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILEREQUESTMANAGER_P_H
#define QGEOTILEREQUESTMANAGER_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtCore/QSharedPointer>
QT_BEGIN_NAMESPACE
class QGeoTiledMap;
class QGeoTiledMappingManagerEngine;
class QGeoTileSpec;
class QGeoTileCache;
class QGeoTileTexture;
class QGeoTileRequestManagerPrivate;
class QGeoTileRequestManager
{
public:
explicit QGeoTileRequestManager(QGeoTiledMap *map, QGeoTiledMappingManagerEngine *engine);
~QGeoTileRequestManager();
QList<QSharedPointer<QGeoTileTexture> > requestTiles(const QSet<QGeoTileSpec> &tiles);
void tileError(const QGeoTileSpec &tile, const QString &errorString);
void tileFetched(const QGeoTileSpec &spec);
QSharedPointer<QGeoTileTexture> tileTexture(const QGeoTileSpec &spec);
private:
QScopedPointer<QGeoTileRequestManagerPrivate> d_ptr;
Q_DISABLE_COPY(QGeoTileRequestManager)
};
QT_END_NAMESPACE
#endif // QGEOTILEREQUESTMANAGER_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILESPEC_H
#define QGEOTILESPEC_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtLocation/qlocationglobal.h>
#include <QtCore/QMetaType>
#include <QString>
#include <QSharedDataPointer>
QT_BEGIN_NAMESPACE
class QGeoTileSpecPrivate;
class Q_LOCATION_EXPORT QGeoTileSpec
{
public:
QGeoTileSpec();
QGeoTileSpec(const QGeoTileSpec &other);
QGeoTileSpec(const QString &plugin, int mapId, int zoom, int x, int y, int version = -1);
~QGeoTileSpec();
QGeoTileSpec &operator = (const QGeoTileSpec &other);
QString plugin() const;
void setZoom(int zoom);
int zoom() const;
void setX(int x);
int x() const;
void setY(int y);
int y() const;
void setMapId(int mapId);
int mapId() const;
void setVersion(int version);
int version() const;
bool operator == (const QGeoTileSpec &rhs) const;
bool operator < (const QGeoTileSpec &rhs) const;
private:
QSharedDataPointer<QGeoTileSpecPrivate> d;
};
Q_LOCATION_EXPORT unsigned int qHash(const QGeoTileSpec &spec);
Q_LOCATION_EXPORT QDebug operator<<(QDebug, const QGeoTileSpec &);
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoTileSpec)
#endif // QGEOTILESPEC_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOTILESPEC_P_H
#define QGEOTILESPEC_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QString>
#include <QSharedData>
QT_BEGIN_NAMESPACE
class QGeoTileSpecPrivate : public QSharedData
{
public:
QGeoTileSpecPrivate();
QGeoTileSpecPrivate(const QGeoTileSpecPrivate &other);
QGeoTileSpecPrivate(const QString &plugin, int mapId, int zoom, int x, int y, int version);
~QGeoTileSpecPrivate();
QGeoTileSpecPrivate &operator = (const QGeoTileSpecPrivate &other);
bool operator == (const QGeoTileSpecPrivate &rhs) const;
bool operator < (const QGeoTileSpecPrivate &rhs) const;
QString plugin_;
int mapId_;
int zoom_;
int x_;
int y_;
int version_;
};
QT_END_NAMESPACE
#endif // QGEOTILESPEC_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QLOCATION_H
#define QLOCATION_H
#if 0
#pragma qt_class(QLocation)
#endif
#include <QtLocation/qlocationglobal.h>
QT_BEGIN_NAMESPACE
namespace QLocation {
enum Visibility {
UnspecifiedVisibility = 0x00,
DeviceVisibility = 0x01,
PrivateVisibility = 0x02,
PublicVisibility = 0x04
};
Q_DECLARE_FLAGS(VisibilityScope, Visibility)
}
Q_DECLARE_OPERATORS_FOR_FLAGS(QLocation::VisibilityScope)
QT_END_NAMESPACE
#endif // QLOCATION_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QLOCATIONGLOBAL_H
#define QLOCATIONGLOBAL_H
#include <QtCore/qglobal.h>
QT_BEGIN_NAMESPACE
#ifndef QT_STATIC
# if defined(QT_BUILD_LOCATION_LIB)
# define Q_LOCATION_EXPORT Q_DECL_EXPORT
# else
# define Q_LOCATION_EXPORT Q_DECL_IMPORT
# endif
#else
# define Q_LOCATION_EXPORT
#endif
QT_END_NAMESPACE
#endif // QLOCATIONGLOBAL_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
***************************************************************************/
#ifndef QDECLARATIVEGEOADDRESS_P_H
#define QDECLARATIVEGEOADDRESS_P_H
#include <QtCore/QObject>
#include <QtPositioning/QGeoAddress>
QT_BEGIN_NAMESPACE
class Q_POSITIONING_EXPORT QDeclarativeGeoAddress : public QObject
{
Q_OBJECT
Q_PROPERTY(QGeoAddress address READ address WRITE setAddress)
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
Q_PROPERTY(QString country READ country WRITE setCountry NOTIFY countryChanged)
Q_PROPERTY(QString countryCode READ countryCode WRITE setCountryCode NOTIFY countryCodeChanged)
Q_PROPERTY(QString state READ state WRITE setState NOTIFY stateChanged)
Q_PROPERTY(QString county READ county WRITE setCounty NOTIFY countyChanged)
Q_PROPERTY(QString city READ city WRITE setCity NOTIFY cityChanged)
Q_PROPERTY(QString district READ district WRITE setDistrict NOTIFY districtChanged)
Q_PROPERTY(QString street READ street WRITE setStreet NOTIFY streetChanged)
Q_PROPERTY(QString postalCode READ postalCode WRITE setPostalCode NOTIFY postalCodeChanged)
Q_PROPERTY(bool isTextGenerated READ isTextGenerated NOTIFY isTextGeneratedChanged)
public:
explicit QDeclarativeGeoAddress(QObject *parent = 0);
QDeclarativeGeoAddress(const QGeoAddress &address, QObject *parent = 0);
QGeoAddress address() const;
void setAddress(const QGeoAddress &address);
QString text() const;
void setText(const QString &address);
QString country() const;
void setCountry(const QString &country);
QString countryCode() const;
void setCountryCode(const QString &countryCode);
QString state() const;
void setState(const QString &state);
QString county() const;
void setCounty(const QString &county);
QString city() const;
void setCity(const QString &city);
QString district() const;
void setDistrict(const QString &district);
QString street() const;
void setStreet(const QString &street);
QString postalCode() const;
void setPostalCode(const QString &postalCode);
bool isTextGenerated() const;
Q_SIGNALS:
void textChanged();
void countryChanged();
void countryCodeChanged();
void stateChanged();
void countyChanged();
void cityChanged();
void districtChanged();
void streetChanged();
void postalCodeChanged();
void isTextGeneratedChanged();
private:
QGeoAddress m_address;
};
QT_END_NAMESPACE
#endif // QDECLARATIVEGEOADDRESS_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDECLARATIVEGEOLOCATION_P_H
#define QDECLARATIVEGEOLOCATION_P_H
#include <QtCore/QObject>
#include <QtPositioning/QGeoLocation>
#include <QtPositioning/QGeoRectangle>
#include <QtPositioning/private/qdeclarativegeoaddress_p.h>
QT_BEGIN_NAMESPACE
class Q_POSITIONING_EXPORT QDeclarativeGeoLocation : public QObject
{
Q_OBJECT
Q_PROPERTY(QGeoLocation location READ location WRITE setLocation)
Q_PROPERTY(QDeclarativeGeoAddress *address READ address WRITE setAddress NOTIFY addressChanged)
Q_PROPERTY(QGeoCoordinate coordinate READ coordinate WRITE setCoordinate NOTIFY coordinateChanged)
Q_PROPERTY(QGeoRectangle boundingBox READ boundingBox WRITE setBoundingBox NOTIFY boundingBoxChanged)
public:
explicit QDeclarativeGeoLocation(QObject *parent = 0);
explicit QDeclarativeGeoLocation(const QGeoLocation &src, QObject *parent = 0);
~QDeclarativeGeoLocation();
QGeoLocation location() const;
void setLocation(const QGeoLocation &src);
QDeclarativeGeoAddress *address() const;
void setAddress(QDeclarativeGeoAddress *address);
QGeoCoordinate coordinate() const;
void setCoordinate(const QGeoCoordinate coordinate);
QGeoRectangle boundingBox() const;
void setBoundingBox(const QGeoRectangle &boundingBox);
Q_SIGNALS:
void addressChanged();
void coordinateChanged();
void boundingBoxChanged();
private:
QDeclarativeGeoAddress *m_address;
QGeoRectangle m_boundingBox;
QGeoCoordinate m_coordinate;
};
QT_END_NAMESPACE
#endif // QDECLARATIVELOCATION_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDOUBLEVECTOR2D_P_H
#define QDOUBLEVECTOR2D_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#ifdef QT_BUILD_LOCATION_LIB
#include <QVector2D>
#endif
#include "qpositioningglobal.h"
#include <QtCore/qmetatype.h>
#include <QPointF>
QT_BEGIN_NAMESPACE
class QDoubleVector3D;
class Q_POSITIONING_EXPORT QDoubleVector2D
{
public:
Q_DECL_CONSTEXPR inline QDoubleVector2D();
Q_DECL_CONSTEXPR inline QDoubleVector2D(double xpos, double ypos);
Q_DECL_CONSTEXPR explicit inline QDoubleVector2D(const QPointF &p);
explicit QDoubleVector2D(const QDoubleVector3D &vector);
Q_DECL_CONSTEXPR inline double manhattanLength() const;
inline bool isNull() const;
Q_DECL_CONSTEXPR inline double x() const;
Q_DECL_CONSTEXPR inline double y() const;
inline void setX(double x);
inline void setY(double y);
double length() const;
Q_DECL_CONSTEXPR inline double lengthSquared() const;
QDoubleVector2D normalized() const;
void normalize();
inline QDoubleVector2D &operator+=(const QDoubleVector2D &vector);
inline QDoubleVector2D &operator-=(const QDoubleVector2D &vector);
inline QDoubleVector2D &operator*=(double factor);
inline QDoubleVector2D &operator*=(const QDoubleVector2D &vector);
inline QDoubleVector2D &operator/=(double divisor);
Q_DECL_CONSTEXPR static inline double dotProduct(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{ return v1.xp * v2.xp + v1.yp * v2.yp; }
friend Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
friend Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator+(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(double factor, const QDoubleVector2D &vector);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &vector, double factor);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &vector);
friend Q_DECL_CONSTEXPR inline const QDoubleVector2D operator/(const QDoubleVector2D &vector, double divisor);
friend Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector2D &v1, const QDoubleVector2D &v2);
QDoubleVector3D toVector3D() const;
Q_DECL_CONSTEXPR inline QPointF toPointF() const;
private:
double xp, yp;
friend class QDoubleVector3D;
};
Q_DECLARE_TYPEINFO(QDoubleVector2D, Q_MOVABLE_TYPE);
Q_DECL_CONSTEXPR inline QDoubleVector2D::QDoubleVector2D() : xp(0.0), yp(0.0) {}
Q_DECL_CONSTEXPR inline QDoubleVector2D::QDoubleVector2D(double xpos, double ypos) : xp(xpos), yp(ypos) {}
Q_DECL_CONSTEXPR inline QDoubleVector2D::QDoubleVector2D(const QPointF &p) : xp(p.x()), yp(p.y()) { }
Q_DECL_CONSTEXPR inline double QDoubleVector2D::manhattanLength() const
{
return qAbs(x())+qAbs(y());
}
inline bool QDoubleVector2D::isNull() const
{
return qIsNull(xp) && qIsNull(yp);
}
Q_DECL_CONSTEXPR inline double QDoubleVector2D::x() const { return xp; }
Q_DECL_CONSTEXPR inline double QDoubleVector2D::y() const { return yp; }
inline void QDoubleVector2D::setX(double aX) { xp = aX; }
inline void QDoubleVector2D::setY(double aY) { yp = aY; }
Q_DECL_CONSTEXPR inline double QDoubleVector2D::lengthSquared() const
{ return xp * xp + yp * yp; }
inline QDoubleVector2D &QDoubleVector2D::operator+=(const QDoubleVector2D &vector)
{
xp += vector.xp;
yp += vector.yp;
return *this;
}
inline QDoubleVector2D &QDoubleVector2D::operator-=(const QDoubleVector2D &vector)
{
xp -= vector.xp;
yp -= vector.yp;
return *this;
}
inline QDoubleVector2D &QDoubleVector2D::operator*=(double factor)
{
xp *= factor;
yp *= factor;
return *this;
}
inline QDoubleVector2D &QDoubleVector2D::operator*=(const QDoubleVector2D &vector)
{
xp *= vector.xp;
yp *= vector.yp;
return *this;
}
inline QDoubleVector2D &QDoubleVector2D::operator/=(double divisor)
{
xp /= divisor;
yp /= divisor;
return *this;
}
Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{
return v1.xp == v2.xp && v1.yp == v2.yp;
}
Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{
return v1.xp != v2.xp || v1.yp != v2.yp;
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator+(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{
return QDoubleVector2D(v1.xp + v2.xp, v1.yp + v2.yp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{
return QDoubleVector2D(v1.xp - v2.xp, v1.yp - v2.yp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(double factor, const QDoubleVector2D &vector)
{
return QDoubleVector2D(vector.xp * factor, vector.yp * factor);
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &vector, double factor)
{
return QDoubleVector2D(vector.xp * factor, vector.yp * factor);
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator*(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{
return QDoubleVector2D(v1.xp * v2.xp, v1.yp * v2.yp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator-(const QDoubleVector2D &vector)
{
return QDoubleVector2D(-vector.xp, -vector.yp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector2D operator/(const QDoubleVector2D &vector, double divisor)
{
return QDoubleVector2D(vector.xp / divisor, vector.yp / divisor);
}
Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector2D &v1, const QDoubleVector2D &v2)
{
return qFuzzyCompare(v1.xp, v2.xp) && qFuzzyCompare(v1.yp, v2.yp);
}
Q_DECL_CONSTEXPR inline QPointF QDoubleVector2D::toPointF() const
{
return QPointF(qreal(xp), qreal(yp));
}
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleVector2D &vector);
#endif
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleVector2D &);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QDoubleVector2D &);
#endif
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QDOUBLEVECTOR3D_P_H
#define QDOUBLEVECTOR3D_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#ifdef QT_BUILD_LOCATION_LIB
#include <QVector3D>
#endif
#include "qpositioningglobal.h"
#include "qdoublevector2d_p.h"
#include <QtCore/qmetatype.h>
QT_BEGIN_NAMESPACE
class Q_POSITIONING_EXPORT QDoubleVector3D
{
public:
Q_DECL_CONSTEXPR inline QDoubleVector3D();
Q_DECL_CONSTEXPR inline QDoubleVector3D(double xpos, double ypos, double zpos);
Q_DECL_CONSTEXPR inline QDoubleVector3D(const QDoubleVector2D &vector);
Q_DECL_CONSTEXPR inline QDoubleVector3D(const QDoubleVector2D &vector, double zpos);
inline bool isNull() const;
Q_DECL_CONSTEXPR inline double x() const;
Q_DECL_CONSTEXPR inline double y() const;
Q_DECL_CONSTEXPR inline double z() const;
inline void setX(double x);
inline void setY(double y);
inline void setZ(double z);
inline double get(int i) const;
inline void set(int i, double value);
double length() const;
Q_DECL_CONSTEXPR inline double lengthSquared() const;
QDoubleVector3D normalized() const;
void normalize();
inline QDoubleVector3D &operator+=(const QDoubleVector3D &vector);
inline QDoubleVector3D &operator-=(const QDoubleVector3D &vector);
inline QDoubleVector3D &operator*=(double factor);
inline QDoubleVector3D &operator*=(const QDoubleVector3D &vector);
inline QDoubleVector3D &operator/=(double divisor);
Q_DECL_CONSTEXPR static inline double dotProduct(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{ return v1.xp * v2.xp + v1.yp * v2.yp + v1.zp * v2.zp; }
Q_DECL_CONSTEXPR static inline QDoubleVector3D crossProduct(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{ return QDoubleVector3D(v1.yp * v2.zp - v1.zp * v2.yp,
v1.zp * v2.xp - v1.xp * v2.zp,
v1.xp * v2.yp - v1.yp * v2.xp); }
static QDoubleVector3D normal(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
static QDoubleVector3D normal
(const QDoubleVector3D &v1, const QDoubleVector3D &v2, const QDoubleVector3D &v3);
double distanceToPlane(const QDoubleVector3D &plane, const QDoubleVector3D &normal) const;
double distanceToPlane(const QDoubleVector3D &plane1, const QDoubleVector3D &plane2, const QDoubleVector3D &plane3) const;
double distanceToLine(const QDoubleVector3D &point, const QDoubleVector3D &direction) const;
friend Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
friend Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator+(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(double factor, const QDoubleVector3D &vector);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &vector, double factor);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &vector);
friend Q_DECL_CONSTEXPR inline const QDoubleVector3D operator/(const QDoubleVector3D &vector, double divisor);
friend Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector3D &v1, const QDoubleVector3D &v2);
Q_DECL_CONSTEXPR inline QDoubleVector2D toVector2D() const;
private:
double xp, yp, zp;
friend class QDoubleVector2D;
};
Q_DECLARE_TYPEINFO(QDoubleVector3D, Q_MOVABLE_TYPE);
Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D() : xp(0.0), yp(0.0), zp(0.0) {}
Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D(double xpos, double ypos, double zpos) : xp(xpos), yp(ypos), zp(zpos) {}
Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D(const QDoubleVector2D &v)
: xp(v.xp), yp(v.yp), zp(0.0) {}
Q_DECL_CONSTEXPR inline QDoubleVector3D::QDoubleVector3D(const QDoubleVector2D &v, double zpos)
: xp(v.xp), yp(v.yp), zp(zpos) {}
inline bool QDoubleVector3D::isNull() const
{
return qIsNull(xp) && qIsNull(yp) && qIsNull(zp);
}
Q_DECL_CONSTEXPR inline double QDoubleVector3D::x() const { return xp; }
Q_DECL_CONSTEXPR inline double QDoubleVector3D::y() const { return yp; }
Q_DECL_CONSTEXPR inline double QDoubleVector3D::z() const { return zp; }
Q_DECL_CONSTEXPR inline double QDoubleVector3D::lengthSquared() const
{ return xp * xp + yp * yp + zp * zp; }
inline void QDoubleVector3D::setX(double aX) { xp = aX; }
inline void QDoubleVector3D::setY(double aY) { yp = aY; }
inline void QDoubleVector3D::setZ(double aZ) { zp = aZ; }
inline double QDoubleVector3D::get(int i) const
{
switch (i) {
case 0:
return xp;
case 1:
return yp;
case 2:
return zp;
default:
return 0.0;
}
}
inline void QDoubleVector3D::set(int i, double value)
{
switch (i) {
case 0:
xp = value;
break;
case 1:
yp = value;
break;
case 2:
zp = value;
break;
default:
break;
}
}
inline QDoubleVector3D &QDoubleVector3D::operator+=(const QDoubleVector3D &vector)
{
xp += vector.xp;
yp += vector.yp;
zp += vector.zp;
return *this;
}
inline QDoubleVector3D &QDoubleVector3D::operator-=(const QDoubleVector3D &vector)
{
xp -= vector.xp;
yp -= vector.yp;
zp -= vector.zp;
return *this;
}
inline QDoubleVector3D &QDoubleVector3D::operator*=(double factor)
{
xp *= factor;
yp *= factor;
zp *= factor;
return *this;
}
inline QDoubleVector3D &QDoubleVector3D::operator*=(const QDoubleVector3D &vector)
{
xp *= vector.xp;
yp *= vector.yp;
zp *= vector.zp;
return *this;
}
inline QDoubleVector3D &QDoubleVector3D::operator/=(double divisor)
{
xp /= divisor;
yp /= divisor;
zp /= divisor;
return *this;
}
Q_DECL_CONSTEXPR inline bool operator==(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{
return v1.xp == v2.xp && v1.yp == v2.yp && v1.zp == v2.zp;
}
Q_DECL_CONSTEXPR inline bool operator!=(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{
return v1.xp != v2.xp || v1.yp != v2.yp || v1.zp != v2.zp;
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator+(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{
return QDoubleVector3D(v1.xp + v2.xp, v1.yp + v2.yp, v1.zp + v2.zp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{
return QDoubleVector3D(v1.xp - v2.xp, v1.yp - v2.yp, v1.zp - v2.zp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(double factor, const QDoubleVector3D &vector)
{
return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor);
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &vector, double factor)
{
return QDoubleVector3D(vector.xp * factor, vector.yp * factor, vector.zp * factor);
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator*(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{
return QDoubleVector3D(v1.xp * v2.xp, v1.yp * v2.yp, v1.zp * v2.zp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator-(const QDoubleVector3D &vector)
{
return QDoubleVector3D(-vector.xp, -vector.yp, -vector.zp);
}
Q_DECL_CONSTEXPR inline const QDoubleVector3D operator/(const QDoubleVector3D &vector, double divisor)
{
return QDoubleVector3D(vector.xp / divisor, vector.yp / divisor, vector.zp / divisor);
}
Q_DECL_CONSTEXPR inline bool qFuzzyCompare(const QDoubleVector3D &v1, const QDoubleVector3D &v2)
{
return qFuzzyCompare(v1.xp, v2.xp) &&
qFuzzyCompare(v1.yp, v2.yp) &&
qFuzzyCompare(v1.zp, v2.zp);
}
Q_DECL_CONSTEXPR inline QDoubleVector2D QDoubleVector3D::toVector2D() const
{
return QDoubleVector2D(xp, yp);
}
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QDoubleVector3D &vector);
#endif
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QDoubleVector3D &);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QDoubleVector3D &);
#endif
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOADDRESS_H
#define QGEOADDRESS_H
#include <QtCore/QMetaType>
#include <QtCore/QSharedDataPointer>
#include <QtPositioning/qpositioningglobal.h>
QT_BEGIN_NAMESPACE
class QString;
class QGeoAddressPrivate;
class Q_POSITIONING_EXPORT QGeoAddress
{
public:
QGeoAddress();
QGeoAddress(const QGeoAddress &other);
~QGeoAddress();
QGeoAddress &operator=(const QGeoAddress &other);
bool operator==(const QGeoAddress &other) const;
bool operator!=(const QGeoAddress &other) const {
return !(other == *this);
}
QString text() const;
void setText(const QString &text);
QString country() const;
void setCountry(const QString &country);
QString countryCode() const;
void setCountryCode(const QString &countryCode);
QString state() const;
void setState(const QString &state);
QString county() const;
void setCounty(const QString &county);
QString city() const;
void setCity(const QString &city);
QString district() const;
void setDistrict(const QString &district);
QString postalCode() const;
void setPostalCode(const QString &postalCode);
QString street() const;
void setStreet(const QString &street);
bool isEmpty() const;
void clear();
bool isTextGenerated() const;
private:
QSharedDataPointer<QGeoAddressPrivate> d;
};
Q_DECLARE_TYPEINFO(QGeoAddress, Q_MOVABLE_TYPE);
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoAddress)
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QLOCATION_GEOADDRESS_P_H
#define QLOCATION_GEOADDRESS_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QString>
#include <QSharedData>
QT_BEGIN_NAMESPACE
class QGeoAddressPrivate : public QSharedData
{
public:
QGeoAddressPrivate();
QGeoAddressPrivate(const QGeoAddressPrivate &other);
~QGeoAddressPrivate();
QString sCountry; //!< country field
QString sCountryCode; //!< country code field
QString sState; //!< state field
QString sCounty; //!< county field
QString sCity; //!< city field
QString sDistrict; //!< district field
QString sStreet; //!< street name field
QString sPostalCode; //!< postal code field
QString sText;
bool m_autoGeneratedText;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOAREAMONITORINFO_H
#define QGEOAREAMONITORINFO_H
#include <QtPositioning/QGeoCoordinate>
#include <QtPositioning/QGeoShape>
#include <QtCore/QSharedDataPointer>
#include <QtCore/QVariantMap>
QT_BEGIN_NAMESPACE
class QDataStream;
class QGeoAreaMonitorInfo;
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo &);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo &);
#endif
class QGeoAreaMonitorInfoPrivate;
class Q_POSITIONING_EXPORT QGeoAreaMonitorInfo
{
public:
explicit QGeoAreaMonitorInfo(const QString &name = QString());
QGeoAreaMonitorInfo(const QGeoAreaMonitorInfo &other);
~QGeoAreaMonitorInfo();
QGeoAreaMonitorInfo &operator=(const QGeoAreaMonitorInfo &other);
bool operator==(const QGeoAreaMonitorInfo &other) const;
bool operator!=(const QGeoAreaMonitorInfo &other) const;
QString name() const;
void setName(const QString &name);
QString identifier() const;
bool isValid() const;
QGeoShape area() const;
void setArea(const QGeoShape &newShape);
QDateTime expiration() const;
void setExpiration(const QDateTime &expiry);
bool isPersistent() const;
void setPersistent(bool isPersistent);
QVariantMap notificationParameters() const;
void setNotificationParameters(const QVariantMap &parameters);
private:
QSharedDataPointer<QGeoAreaMonitorInfoPrivate> d;
#ifndef QT_NO_DATASTREAM
friend Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &, const QGeoAreaMonitorInfo &);
friend Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &, QGeoAreaMonitorInfo &);
#endif
};
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug, const QGeoAreaMonitorInfo &);
#endif
QT_END_NAMESPACE
#endif // QGEOAREAMONITORINFO_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOAREAMONITORSOURCE_H
#define QGEOAREAMONITORSOURCE_H
#include <QtPositioning/QGeoCoordinate>
#include <QtPositioning/QGeoAreaMonitorInfo>
#include <QtPositioning/QGeoPositionInfoSource>
#include <QtCore/QObject>
#include <QtCore/QStringList>
QT_BEGIN_NAMESPACE
class QGeoPositionInfo;
class QGeoAreaMonitorSourcePrivate;
class Q_POSITIONING_EXPORT QGeoAreaMonitorSource : public QObject
{
Q_OBJECT
public:
enum Error {
AccessError = 0,
InsufficientPositionInfo = 1,
UnknownSourceError = 2,
NoError = 3
};
Q_ENUMS(Error)
enum AreaMonitorFeature {
PersistentAreaMonitorFeature = 0x00000001,
AnyAreaMonitorFeature = 0xffffffff
};
Q_DECLARE_FLAGS(AreaMonitorFeatures, AreaMonitorFeature)
explicit QGeoAreaMonitorSource(QObject *parent);
virtual ~QGeoAreaMonitorSource();
static QGeoAreaMonitorSource *createDefaultSource(QObject *parent);
static QGeoAreaMonitorSource *createSource(const QString& sourceName, QObject *parent);
static QStringList availableSources();
virtual void setPositionInfoSource(QGeoPositionInfoSource *source);
virtual QGeoPositionInfoSource* positionInfoSource() const;
QString sourceName() const;
virtual Error error() const = 0;
virtual AreaMonitorFeatures supportedAreaMonitorFeatures() const = 0;
virtual bool startMonitoring(const QGeoAreaMonitorInfo &monitor) = 0;
virtual bool stopMonitoring(const QGeoAreaMonitorInfo &monitor) = 0;
virtual bool requestUpdate(const QGeoAreaMonitorInfo &monitor, const char *signal) = 0;
virtual QList<QGeoAreaMonitorInfo> activeMonitors() const = 0;
virtual QList<QGeoAreaMonitorInfo> activeMonitors(const QGeoShape &lookupArea) const = 0;
Q_SIGNALS:
void areaEntered(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update);
void areaExited(const QGeoAreaMonitorInfo &monitor, const QGeoPositionInfo &update);
void monitorExpired(const QGeoAreaMonitorInfo &monitor);
void error(QGeoAreaMonitorSource::Error error);
private:
Q_DISABLE_COPY(QGeoAreaMonitorSource)
QGeoAreaMonitorSourcePrivate *d;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCIRCLE_H
#define QGEOCIRCLE_H
#include <QtPositioning/QGeoShape>
QT_BEGIN_NAMESPACE
class QGeoCoordinate;
class QGeoCirclePrivate;
class Q_POSITIONING_EXPORT QGeoCircle : public QGeoShape
{
Q_GADGET
Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter)
Q_PROPERTY(qreal radius READ radius WRITE setRadius)
public:
QGeoCircle();
QGeoCircle(const QGeoCoordinate &center, qreal radius = -1.0);
QGeoCircle(const QGeoCircle &other);
QGeoCircle(const QGeoShape &other);
~QGeoCircle();
QGeoCircle &operator=(const QGeoCircle &other);
using QGeoShape::operator==;
bool operator==(const QGeoCircle &other) const;
using QGeoShape::operator!=;
bool operator!=(const QGeoCircle &other) const;
void setCenter(const QGeoCoordinate &center);
QGeoCoordinate center() const;
void setRadius(qreal radius);
qreal radius() const;
void translate(double degreesLatitude, double degreesLongitude);
QGeoCircle translated(double degreesLatitude, double degreesLongitude) const;
Q_INVOKABLE QString toString() const;
private:
inline QGeoCirclePrivate *d_func();
inline const QGeoCirclePrivate *d_func() const;
};
Q_DECLARE_TYPEINFO(QGeoCircle, Q_MOVABLE_TYPE);
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoCircle)
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCIRCLE_P_H
#define QGEOCIRCLE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeoshape_p.h"
#include "qgeocoordinate.h"
QT_BEGIN_NAMESPACE
class QGeoCirclePrivate : public QGeoShapePrivate
{
public:
QGeoCirclePrivate();
QGeoCirclePrivate(const QGeoCoordinate &center, qreal radius);
QGeoCirclePrivate(const QGeoCirclePrivate &other);
~QGeoCirclePrivate();
bool isValid() const Q_DECL_OVERRIDE;
bool isEmpty() const Q_DECL_OVERRIDE;
bool contains(const QGeoCoordinate &coordinate) const Q_DECL_OVERRIDE;
QGeoCoordinate center() const Q_DECL_OVERRIDE;
void extendShape(const QGeoCoordinate &coordinate) Q_DECL_OVERRIDE;
QGeoShapePrivate *clone() const Q_DECL_OVERRIDE;
bool operator==(const QGeoShapePrivate &other) const Q_DECL_OVERRIDE;
QGeoCoordinate m_center;
qreal radius;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCOORDINATE_H
#define QGEOCOORDINATE_H
#include <QtCore/QMetaType>
#include <QtCore/QString>
#include <QtCore/QSharedDataPointer>
#include <QtPositioning/qpositioningglobal.h>
QT_BEGIN_NAMESPACE
class QDebug;
class QDataStream;
class QGeoCoordinatePrivate;
class Q_POSITIONING_EXPORT QGeoCoordinate
{
Q_GADGET
Q_PROPERTY(double latitude READ latitude WRITE setLatitude)
Q_PROPERTY(double longitude READ longitude WRITE setLongitude)
Q_PROPERTY(double altitude READ altitude WRITE setAltitude)
Q_PROPERTY(bool isValid READ isValid)
public:
enum CoordinateType {
InvalidCoordinate,
Coordinate2D,
Coordinate3D
};
enum CoordinateFormat {
Degrees,
DegreesWithHemisphere,
DegreesMinutes,
DegreesMinutesWithHemisphere,
DegreesMinutesSeconds,
DegreesMinutesSecondsWithHemisphere
};
QGeoCoordinate();
QGeoCoordinate(double latitude, double longitude);
QGeoCoordinate(double latitude, double longitude, double altitude);
QGeoCoordinate(const QGeoCoordinate &other);
~QGeoCoordinate();
QGeoCoordinate &operator=(const QGeoCoordinate &other);
bool operator==(const QGeoCoordinate &other) const;
inline bool operator!=(const QGeoCoordinate &other) const {
return !operator==(other);
}
bool isValid() const;
CoordinateType type() const;
void setLatitude(double latitude);
double latitude() const;
void setLongitude(double longitude);
double longitude() const;
void setAltitude(double altitude);
double altitude() const;
Q_INVOKABLE qreal distanceTo(const QGeoCoordinate &other) const;
Q_INVOKABLE qreal azimuthTo(const QGeoCoordinate &other) const;
Q_INVOKABLE QGeoCoordinate atDistanceAndAzimuth(qreal distance, qreal azimuth, qreal distanceUp = 0.0) const;
Q_INVOKABLE QString toString(CoordinateFormat format = DegreesMinutesSecondsWithHemisphere) const;
private:
QSharedDataPointer<QGeoCoordinatePrivate> d;
friend class QGeoCoordinatePrivate;
};
Q_DECLARE_TYPEINFO(QGeoCoordinate, Q_MOVABLE_TYPE);
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug, const QGeoCoordinate &);
#endif
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoCoordinate &coordinate);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoCoordinate &coordinate);
#endif
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoCoordinate)
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOCOORDINATE_P_H
#define QGEOCOORDINATE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QSharedData>
#include "qgeocoordinate.h"
QT_BEGIN_NAMESPACE
class QGeoCoordinatePrivate : public QSharedData
{
public:
QGeoCoordinatePrivate();
QGeoCoordinatePrivate(const QGeoCoordinatePrivate &other);
~QGeoCoordinatePrivate();
double lat;
double lng;
double alt;
static void atDistanceAndAzimuth(const QGeoCoordinate &coord,
qreal distance, qreal azimuth,
double *lon, double *lat);
};
QT_END_NAMESPACE
#endif // QGEOCOORDINATE_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOLOCATION_H
#define QGEOLOCATION_H
#include <QtCore/QSharedDataPointer>
#include <QtCore/QMetaType>
#include <QtPositioning/qpositioningglobal.h>
QT_BEGIN_NAMESPACE
class QGeoAddress;
class QGeoCoordinate;
class QGeoRectangle;
class QGeoLocationPrivate;
class Q_POSITIONING_EXPORT QGeoLocation
{
public:
QGeoLocation();
QGeoLocation(const QGeoLocation &other);
~QGeoLocation();
QGeoLocation &operator=(const QGeoLocation &other);
bool operator==(const QGeoLocation &other) const;
bool operator!=(const QGeoLocation &other) const {
return !(other == *this);
}
QGeoAddress address() const;
void setAddress(const QGeoAddress &address);
QGeoCoordinate coordinate() const;
void setCoordinate(const QGeoCoordinate &position);
QGeoRectangle boundingBox() const;
void setBoundingBox(const QGeoRectangle &box);
bool isEmpty() const;
private:
QSharedDataPointer<QGeoLocationPrivate> d;
};
Q_DECLARE_TYPEINFO(QGeoLocation, Q_MOVABLE_TYPE);
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoLocation)
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOLOCATION_P_H
#define QGEOLOCATION_P_H
#include <QtCore/QSharedData>
#include <QtPositioning/QGeoAddress>
#include <QtPositioning/QGeoCoordinate>
#include <QtPositioning/QGeoRectangle>
QT_BEGIN_NAMESPACE
class QGeoLocationPrivate : public QSharedData
{
public:
QGeoLocationPrivate();
QGeoLocationPrivate(const QGeoLocationPrivate &other);
~QGeoLocationPrivate();
bool operator==(const QGeoLocationPrivate &other) const;
bool isEmpty() const;
QGeoAddress address;
QGeoCoordinate coordinate;
QGeoRectangle viewport;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOPOSITIONINFO_H
#define QGEOPOSITIONINFO_H
#include <QtPositioning/QGeoCoordinate>
#include <QtCore/QDateTime>
QT_BEGIN_NAMESPACE
class QDebug;
class QDataStream;
class QGeoPositionInfoPrivate;
class Q_POSITIONING_EXPORT QGeoPositionInfo
{
public:
enum Attribute {
Direction,
GroundSpeed,
VerticalSpeed,
MagneticVariation,
HorizontalAccuracy,
VerticalAccuracy
};
QGeoPositionInfo();
QGeoPositionInfo(const QGeoCoordinate &coordinate, const QDateTime &updateTime);
QGeoPositionInfo(const QGeoPositionInfo &other);
~QGeoPositionInfo();
QGeoPositionInfo &operator=(const QGeoPositionInfo &other);
bool operator==(const QGeoPositionInfo &other) const;
inline bool operator!=(const QGeoPositionInfo &other) const {
return !operator==(other);
}
bool isValid() const;
void setTimestamp(const QDateTime &timestamp);
QDateTime timestamp() const;
void setCoordinate(const QGeoCoordinate &coordinate);
QGeoCoordinate coordinate() const;
void setAttribute(Attribute attribute, qreal value);
qreal attribute(Attribute attribute) const;
void removeAttribute(Attribute attribute);
bool hasAttribute(Attribute attribute) const;
private:
#ifndef QT_NO_DEBUG_STREAM
friend Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &info);
#endif
#ifndef QT_NO_DATASTREAM
friend Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info);
friend Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info);
#endif
QGeoPositionInfoPrivate *d;
};
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoPositionInfo &info);
#endif
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, QGeoPositionInfo::Attribute attr);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo::Attribute &attr);
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoPositionInfo &info);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoPositionInfo &info);
#endif
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOPOSITIONINFOSOURCE_H
#define QGEOPOSITIONINFOSOURCE_H
#include <QtPositioning/QGeoPositionInfo>
#include <QtCore/QObject>
QT_BEGIN_NAMESPACE
class QGeoPositionInfoSourcePrivate;
class Q_POSITIONING_EXPORT QGeoPositionInfoSource : public QObject
{
Q_OBJECT
Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval)
Q_PROPERTY(int minimumUpdateInterval READ minimumUpdateInterval)
Q_PROPERTY(QString sourceName READ sourceName)
public:
enum Error {
AccessError = 0,
ClosedError = 1,
UnknownSourceError = 2,
NoError = 3
};
Q_ENUMS(Error)
enum PositioningMethod {
NoPositioningMethods = 0x00000000,
SatellitePositioningMethods = 0x000000ff,
NonSatellitePositioningMethods = 0xffffff00,
AllPositioningMethods = 0xffffffff
};
Q_DECLARE_FLAGS(PositioningMethods, PositioningMethod)
explicit QGeoPositionInfoSource(QObject *parent);
virtual ~QGeoPositionInfoSource();
virtual void setUpdateInterval(int msec);
int updateInterval() const;
virtual void setPreferredPositioningMethods(PositioningMethods methods);
PositioningMethods preferredPositioningMethods() const;
virtual QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const = 0;
virtual PositioningMethods supportedPositioningMethods() const = 0;
virtual int minimumUpdateInterval() const = 0;
QString sourceName() const;
static QGeoPositionInfoSource *createDefaultSource(QObject *parent);
static QGeoPositionInfoSource *createSource(const QString &sourceName, QObject *parent);
static QStringList availableSources();
virtual Error error() const = 0;
public Q_SLOTS:
virtual void startUpdates() = 0;
virtual void stopUpdates() = 0;
virtual void requestUpdate(int timeout = 0) = 0;
Q_SIGNALS:
void positionUpdated(const QGeoPositionInfo &update);
void updateTimeout();
void error(QGeoPositionInfoSource::Error);
private:
Q_DISABLE_COPY(QGeoPositionInfoSource)
QGeoPositionInfoSourcePrivate *d;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoPositionInfoSource::PositioningMethods)
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOPOSITIONINFOSOURCE_P_H
#define QGEOPOSITIONINFOSOURCE_P_H
#include "qgeopositioninfosource.h"
#include "qgeopositioninfosourcefactory.h"
#include <QJsonObject>
#include <QString>
#include <QHash>
#include <QList>
QT_BEGIN_NAMESPACE
class QGeoPositionInfoSourcePrivate
{
public:
int interval;
QGeoPositionInfoSource::PositioningMethods methods;
QJsonObject metaData;
QGeoPositionInfoSourceFactory *factory;
QString providerName;
void loadMeta();
void loadPlugin();
static QHash<QString, QJsonObject> plugins(bool reload = false);
static void loadPluginMetadata(QHash<QString, QJsonObject> &list);
static QList<QJsonObject> pluginsSorted();
};
QT_END_NAMESPACE
#endif // QGEOPOSITIONINFOSOURCE_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOPOSITIONINFOSOURCEFACTORY_H
#define QGEOPOSITIONINFOSOURCEFACTORY_H
#include <QtPositioning/QGeoPositionInfoSource>
#include <QtPositioning/QGeoSatelliteInfoSource>
#include <QtPositioning/QGeoAreaMonitorSource>
#include <QtCore/QList>
QT_BEGIN_NAMESPACE
class Q_POSITIONING_EXPORT QGeoPositionInfoSourceFactory
{
public:
virtual ~QGeoPositionInfoSourceFactory();
virtual QGeoPositionInfoSource *positionInfoSource(QObject *parent) = 0;
virtual QGeoSatelliteInfoSource *satelliteInfoSource(QObject *parent) = 0;
virtual QGeoAreaMonitorSource *areaMonitor(QObject *parent) = 0;
};
#define QT_POSITION_SOURCE_INTERFACE
Q_DECLARE_INTERFACE(QGeoPositionInfoSourceFactory,
"org.qt-project.qt.position.sourcefactory/5.0")
QT_END_NAMESPACE
#endif // QGEOPOSITIONINFOSOURCEFACTORY_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOPROJECTION_P_H
#define QGEOPROJECTION_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#ifndef M_PI
#define M_PI (3.14159265358979323846)
#endif
#include <qglobal.h>
#include <QtCore/qvariant.h>
#include "qpositioningglobal.h"
QT_BEGIN_NAMESPACE
class QGeoCoordinate;
class QDoubleVector2D;
Q_POSITIONING_EXPORT QVariant geoCoordinateInterpolator(const QGeoCoordinate &from,
const QGeoCoordinate &to,
qreal progress);
class Q_POSITIONING_EXPORT QGeoProjection
{
public:
static QDoubleVector2D coordToMercator(const QGeoCoordinate &coord);
static QGeoCoordinate mercatorToCoord(const QDoubleVector2D &mercator);
static QGeoCoordinate coordinateInterpolation(const QGeoCoordinate &from, const QGeoCoordinate &to, qreal progress);
private:
static double realmod(const double a, const double b);
};
QT_END_NAMESPACE
#endif // QGEOPROJECTION_P_H
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEORECTANGLE_H
#define QGEORECTANGLE_H
#include <QtPositioning/QGeoShape>
QT_BEGIN_NAMESPACE
class QGeoCoordinate;
class QGeoRectanglePrivate;
class Q_POSITIONING_EXPORT QGeoRectangle : public QGeoShape
{
Q_GADGET
Q_PROPERTY(QGeoCoordinate bottomLeft READ bottomLeft WRITE setBottomLeft)
Q_PROPERTY(QGeoCoordinate bottomRight READ bottomRight WRITE setBottomRight)
Q_PROPERTY(QGeoCoordinate topLeft READ topLeft WRITE setTopLeft)
Q_PROPERTY(QGeoCoordinate topRight READ topRight WRITE setTopRight)
Q_PROPERTY(QGeoCoordinate center READ center WRITE setCenter)
Q_PROPERTY(double height READ height WRITE setHeight)
Q_PROPERTY(double width READ width WRITE setWidth)
public:
QGeoRectangle();
QGeoRectangle(const QGeoCoordinate &center, double degreesWidth, double degreesHeight);
QGeoRectangle(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight);
QGeoRectangle(const QList<QGeoCoordinate> &coordinates);
QGeoRectangle(const QGeoRectangle &other);
QGeoRectangle(const QGeoShape &other);
~QGeoRectangle();
QGeoRectangle &operator=(const QGeoRectangle &other);
using QGeoShape::operator==;
bool operator==(const QGeoRectangle &other) const;
using QGeoShape::operator!=;
bool operator!=(const QGeoRectangle &other) const;
void setTopLeft(const QGeoCoordinate &topLeft);
QGeoCoordinate topLeft() const;
void setTopRight(const QGeoCoordinate &topRight);
QGeoCoordinate topRight() const;
void setBottomLeft(const QGeoCoordinate &bottomLeft);
QGeoCoordinate bottomLeft() const;
void setBottomRight(const QGeoCoordinate &bottomRight);
QGeoCoordinate bottomRight() const;
void setCenter(const QGeoCoordinate &center);
QGeoCoordinate center() const;
void setWidth(double degreesWidth);
double width() const;
void setHeight(double degreesHeight);
double height() const;
using QGeoShape::contains;
bool contains(const QGeoRectangle &rectangle) const;
bool intersects(const QGeoRectangle &rectangle) const;
void translate(double degreesLatitude, double degreesLongitude);
QGeoRectangle translated(double degreesLatitude, double degreesLongitude) const;
QGeoRectangle united(const QGeoRectangle &rectangle) const;
QGeoRectangle operator|(const QGeoRectangle &rectangle) const;
QGeoRectangle &operator|=(const QGeoRectangle &rectangle);
Q_INVOKABLE QString toString() const;
private:
inline QGeoRectanglePrivate *d_func();
inline const QGeoRectanglePrivate *d_func() const;
};
Q_DECLARE_TYPEINFO(QGeoRectangle, Q_MOVABLE_TYPE);
inline QGeoRectangle QGeoRectangle::operator|(const QGeoRectangle &rectangle) const
{
return united(rectangle);
}
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoRectangle)
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEORECTANGLE_P_H
#define QGEORECTANGLE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qgeoshape_p.h"
#include "qgeocoordinate.h"
QT_BEGIN_NAMESPACE
class QGeoRectanglePrivate : public QGeoShapePrivate
{
public:
QGeoRectanglePrivate();
QGeoRectanglePrivate(const QGeoCoordinate &topLeft, const QGeoCoordinate &bottomRight);
QGeoRectanglePrivate(const QGeoRectanglePrivate &other);
~QGeoRectanglePrivate();
bool isValid() const Q_DECL_OVERRIDE;
bool isEmpty() const Q_DECL_OVERRIDE;
bool contains(const QGeoCoordinate &coordinate) const Q_DECL_OVERRIDE;
QGeoCoordinate center() const Q_DECL_OVERRIDE;
void extendShape(const QGeoCoordinate &coordinate) Q_DECL_OVERRIDE;
QGeoShapePrivate *clone() const Q_DECL_OVERRIDE;
bool operator==(const QGeoShapePrivate &other) const Q_DECL_OVERRIDE;
QGeoCoordinate topLeft;
QGeoCoordinate bottomRight;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSATELLITEINFO_H
#define QGEOSATELLITEINFO_H
#include <QtPositioning/qpositioningglobal.h>
QT_BEGIN_NAMESPACE
class QDebug;
class QDataStream;
class QGeoSatelliteInfoPrivate;
class Q_POSITIONING_EXPORT QGeoSatelliteInfo
{
public:
enum Attribute {
Elevation,
Azimuth
};
enum SatelliteSystem {
Undefined = 0x00,
GPS = 0x01,
GLONASS = 0x02
};
QGeoSatelliteInfo();
QGeoSatelliteInfo(const QGeoSatelliteInfo &other);
~QGeoSatelliteInfo();
QGeoSatelliteInfo &operator=(const QGeoSatelliteInfo &other);
bool operator==(const QGeoSatelliteInfo &other) const;
inline bool operator!=(const QGeoSatelliteInfo &other) const {
return !operator==(other);
}
void setSatelliteSystem(SatelliteSystem system);
SatelliteSystem satelliteSystem() const;
void setSatelliteIdentifier(int satId);
int satelliteIdentifier() const;
void setSignalStrength(int signalStrength);
int signalStrength() const;
void setAttribute(Attribute attribute, qreal value);
qreal attribute(Attribute attribute) const;
void removeAttribute(Attribute attribute);
bool hasAttribute(Attribute attribute) const;
private:
#ifndef QT_NO_DEBUG_STREAM
friend Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoSatelliteInfo &info);
#endif
#ifndef QT_NO_DATASTREAM
friend Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info);
friend Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info);
#endif
QGeoSatelliteInfoPrivate *d;
};
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug dbg, const QGeoSatelliteInfo &info);
#endif
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoSatelliteInfo &info);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoSatelliteInfo &info);
#endif
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSATELLITEINFOSOURCE_H
#define QGEOSATELLITEINFOSOURCE_H
#include <QtPositioning/QGeoSatelliteInfo>
#include <QtCore/QObject>
#include <QtCore/QList>
QT_BEGIN_NAMESPACE
class QGeoSatelliteInfoSourcePrivate;
class Q_POSITIONING_EXPORT QGeoSatelliteInfoSource : public QObject
{
Q_OBJECT
Q_PROPERTY(int updateInterval READ updateInterval WRITE setUpdateInterval)
Q_PROPERTY(int minimumUpdateInterval READ minimumUpdateInterval)
public:
enum Error {
AccessError = 0,
ClosedError = 1,
NoError = 2,
UnknownSourceError = -1
};
Q_ENUMS(Error)
explicit QGeoSatelliteInfoSource(QObject *parent);
virtual ~QGeoSatelliteInfoSource();
static QGeoSatelliteInfoSource *createDefaultSource(QObject *parent);
static QGeoSatelliteInfoSource *createSource(const QString &sourceName, QObject *parent);
static QStringList availableSources();
QString sourceName() const;
virtual void setUpdateInterval(int msec);
int updateInterval() const;
virtual int minimumUpdateInterval() const = 0;
virtual Error error() const = 0;
public Q_SLOTS:
virtual void startUpdates() = 0;
virtual void stopUpdates() = 0;
virtual void requestUpdate(int timeout = 0) = 0;
Q_SIGNALS:
void satellitesInViewUpdated(const QList<QGeoSatelliteInfo> &satellites);
void satellitesInUseUpdated(const QList<QGeoSatelliteInfo> &satellites);
void requestTimeout();
void error(QGeoSatelliteInfoSource::Error);
private:
Q_DISABLE_COPY(QGeoSatelliteInfoSource)
QGeoSatelliteInfoSourcePrivate *d;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSHAPE_H
#define QGEOSHAPE_H
#include <QtCore/QSharedDataPointer>
#include <QtPositioning/QGeoCoordinate>
QT_BEGIN_NAMESPACE
class QDebug;
class QGeoShapePrivate;
class Q_POSITIONING_EXPORT QGeoShape
{
Q_GADGET
Q_PROPERTY(ShapeType type READ type)
Q_PROPERTY(bool isValid READ isValid)
Q_PROPERTY(bool isEmpty READ isEmpty)
Q_ENUMS(ShapeType)
public:
QGeoShape();
QGeoShape(const QGeoShape &other);
~QGeoShape();
enum ShapeType {
UnknownType,
RectangleType,
CircleType
};
ShapeType type() const;
bool isValid() const;
bool isEmpty() const;
Q_INVOKABLE bool contains(const QGeoCoordinate &coordinate) const;
QGeoCoordinate center() const;
void extendShape(const QGeoCoordinate &coordinate);
bool operator==(const QGeoShape &other) const;
bool operator!=(const QGeoShape &other) const;
QGeoShape &operator=(const QGeoShape &other);
Q_INVOKABLE QString toString() const;
protected:
QGeoShape(QGeoShapePrivate *d);
QSharedDataPointer<QGeoShapePrivate> d_ptr;
private:
inline QGeoShapePrivate *d_func();
inline const QGeoShapePrivate *d_func() const;
};
Q_DECLARE_TYPEINFO(QGeoShape, Q_MOVABLE_TYPE);
#ifndef QT_NO_DEBUG_STREAM
Q_POSITIONING_EXPORT QDebug operator<<(QDebug, const QGeoShape &);
#endif
#ifndef QT_NO_DATASTREAM
Q_POSITIONING_EXPORT QDataStream &operator<<(QDataStream &stream, const QGeoShape &shape);
Q_POSITIONING_EXPORT QDataStream &operator>>(QDataStream &stream, QGeoShape &shape);
#endif
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QGeoShape)
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QGEOSHAPE_P_H
#define QGEOSHAPE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtCore/QSharedData>
#include "qgeoshape.h"
QT_BEGIN_NAMESPACE
class QGeoShapePrivate : public QSharedData
{
public:
explicit QGeoShapePrivate(QGeoShape::ShapeType type);
virtual ~QGeoShapePrivate();
virtual bool isValid() const = 0;
virtual bool isEmpty() const = 0;
virtual bool contains(const QGeoCoordinate &coordinate) const = 0;
virtual QGeoCoordinate center() const = 0;
virtual void extendShape(const QGeoCoordinate &coordinate) = 0;
virtual QGeoShapePrivate *clone() const = 0;
virtual bool operator==(const QGeoShapePrivate &other) const;
QGeoShape::ShapeType type;
};
// don't use the copy constructor when detaching from a QSharedDataPointer, use virtual clone()
// call instead.
template <>
Q_INLINE_TEMPLATE QGeoShapePrivate *QSharedDataPointer<QGeoShapePrivate>::clone()
{
return d->clone();
}
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QLOCATIONUTILS_P_H
#define QLOCATIONUTILS_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <QtCore/QtGlobal>
QT_BEGIN_NAMESPACE
class QTime;
class QByteArray;
class QGeoPositionInfo;
class QLocationUtils
{
public:
inline static bool isValidLat(double lat) {
return lat >= -90 && lat <= 90;
}
inline static bool isValidLong(double lng) {
return lng >= -180 && lng <= 180;
}
inline static double clipLat(double lat) {
if (lat > 90)
lat = 90;
else if (lat < -90)
lat = -90;
return lat;
}
inline static double wrapLong(double lng) {
if (lng > 180)
lng -= 360;
else if (lng < -180)
lng += 360;
return lng;
}
/*
Creates a QGeoPositionInfo from a GGA, GLL, RMC, VTG or ZDA sentence.
Note:
- GGA and GLL sentences have time but not date so the update's
QDateTime object will have an invalid date.
- RMC reports date with a two-digit year so in this case the year
is assumed to be after the year 2000.
*/
Q_AUTOTEST_EXPORT static bool getPosInfoFromNmea(const char *data, int size,
QGeoPositionInfo *info, double uere,
bool *hasFix = 0);
/*
Returns true if the given NMEA sentence has a valid checksum.
*/
Q_AUTOTEST_EXPORT static bool hasValidNmeaChecksum(const char *data, int size);
/*
Returns time from a string in hhmmss or hhmmss.z+ format.
*/
Q_AUTOTEST_EXPORT static bool getNmeaTime(const QByteArray &bytes, QTime *time);
/*
Accepts for example ("2734.7964", 'S', "15306.0124", 'E') and returns the
lat-long values. Fails if lat or long fail isValidLat() or isValidLong().
*/
Q_AUTOTEST_EXPORT static bool getNmeaLatLong(const QByteArray &latString, char latDirection, const QByteArray &lngString, char lngDirection, double *lat, double *lon);
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QNMEAPOSITIONINFOSOURCE_H
#define QNMEAPOSITIONINFOSOURCE_H
#include <QtPositioning/QGeoPositionInfoSource>
QT_BEGIN_NAMESPACE
class QIODevice;
class QNmeaPositionInfoSourcePrivate;
class Q_POSITIONING_EXPORT QNmeaPositionInfoSource : public QGeoPositionInfoSource
{
Q_OBJECT
public:
enum UpdateMode {
RealTimeMode = 1,
SimulationMode
};
explicit QNmeaPositionInfoSource(UpdateMode updateMode, QObject *parent = 0);
~QNmeaPositionInfoSource();
void setUserEquivalentRangeError(double uere);
double userEquivalentRangeError() const;
UpdateMode updateMode() const;
void setDevice(QIODevice *source);
QIODevice *device() const;
void setUpdateInterval(int msec);
QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const;
PositioningMethods supportedPositioningMethods() const;
int minimumUpdateInterval() const;
Error error() const;
public Q_SLOTS:
void startUpdates();
void stopUpdates();
void requestUpdate(int timeout = 0);
protected:
virtual bool parsePosInfoFromNmeaData(const char *data,
int size,
QGeoPositionInfo *posInfo,
bool *hasFix);
private:
Q_DISABLE_COPY(QNmeaPositionInfoSource)
friend class QNmeaPositionInfoSourcePrivate;
QNmeaPositionInfoSourcePrivate *d;
void setError(QGeoPositionInfoSource::Error positionError);
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QNMEAPOSITIONINFOSOURCE_P_H
#define QNMEAPOSITIONINFOSOURCE_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include "qnmeapositioninfosource.h"
#include "qgeopositioninfo.h"
#include <QObject>
#include <QQueue>
#include <QPointer>
QT_BEGIN_NAMESPACE
class QBasicTimer;
class QTimerEvent;
class QTimer;
class QNmeaReader;
struct QPendingGeoPositionInfo
{
QGeoPositionInfo info;
bool hasFix;
};
class QNmeaPositionInfoSourcePrivate : public QObject
{
Q_OBJECT
public:
QNmeaPositionInfoSourcePrivate(QNmeaPositionInfoSource *parent, QNmeaPositionInfoSource::UpdateMode updateMode);
~QNmeaPositionInfoSourcePrivate();
void startUpdates();
void stopUpdates();
void requestUpdate(int msec);
bool parsePosInfoFromNmeaData(const char *data,
int size,
QGeoPositionInfo *posInfo,
bool *hasFix);
void notifyNewUpdate(QGeoPositionInfo *update, bool fixStatus);
QNmeaPositionInfoSource::UpdateMode m_updateMode;
QPointer<QIODevice> m_device;
QGeoPositionInfo m_lastUpdate;
bool m_invokedStart;
QGeoPositionInfoSource::Error m_positionError;
double m_userEquivalentRangeError;
public Q_SLOTS:
void readyRead();
protected:
void timerEvent(QTimerEvent *event);
private Q_SLOTS:
void emitPendingUpdate();
void sourceDataClosed();
void updateRequestTimeout();
private:
bool openSourceDevice();
bool initialize();
void prepareSourceDevice();
void emitUpdated(const QGeoPositionInfo &update);
QNmeaPositionInfoSource *m_source;
QNmeaReader *m_nmeaReader;
QBasicTimer *m_updateTimer;
QGeoPositionInfo m_pendingUpdate;
QDate m_currentDate;
QTimer *m_requestTimer;
qreal m_horizontalAccuracy;
qreal m_verticalAccuracy;
bool m_noUpdateLastInterval;
bool m_updateTimeoutSent;
bool m_connectedReadyRead;
};
class QNmeaReader
{
public:
explicit QNmeaReader(QNmeaPositionInfoSourcePrivate *sourcePrivate)
: m_proxy(sourcePrivate) {}
virtual ~QNmeaReader() {}
virtual void readAvailableData() = 0;
protected:
QNmeaPositionInfoSourcePrivate *m_proxy;
};
class QNmeaRealTimeReader : public QNmeaReader
{
public:
explicit QNmeaRealTimeReader(QNmeaPositionInfoSourcePrivate *sourcePrivate);
virtual void readAvailableData();
};
class QNmeaSimulatedReader : public QObject, public QNmeaReader
{
Q_OBJECT
public:
explicit QNmeaSimulatedReader(QNmeaPositionInfoSourcePrivate *sourcePrivate);
~QNmeaSimulatedReader();
virtual void readAvailableData();
protected:
virtual void timerEvent(QTimerEvent *event);
private Q_SLOTS:
void simulatePendingUpdate();
private:
bool setFirstDateTime();
void processNextSentence();
QQueue<QPendingGeoPositionInfo> m_pendingUpdates;
int m_currTimerId;
bool m_hasValidDateTime;
};
QT_END_NAMESPACE
#endif
/****************************************************************************
**
** Copyright (C) 2015 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtPositioning module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL21$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 or version 3 as published by the Free
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
** following information to ensure the GNU Lesser General Public License
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** As a special exception, The Qt Company gives you certain additional
** rights. These rights are described in The Qt Company LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QPOSITIONINGGLOBAL_H
#define QPOSITIONINGGLOBAL_H
#include <QtCore/qglobal.h>
QT_BEGIN_NAMESPACE
#ifndef QT_STATIC
# if defined(QT_BUILD_POSITIONING_LIB)
# define Q_POSITIONING_EXPORT Q_DECL_EXPORT
# else
# define Q_POSITIONING_EXPORT Q_DECL_IMPORT
# endif
#else
# define Q_POSITIONING_EXPORT
#endif
QT_END_NAMESPACE
#endif // QPOSITIONINGGLOBAL_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment