diff options
author | Sergio Ahumada <sahumada@blackberry.com> | 2014-06-14 21:44:51 +0200 |
---|---|---|
committer | Sergio Ahumada <sahumada@blackberry.com> | 2014-06-14 21:44:51 +0200 |
commit | fc3f5e2ea8ba535d40610444c1f79b8ee9457968 (patch) | |
tree | b8a6812bb255dfc44d67bd0013658fb003be7159 /src/plugins/position/winrt/qgeopositioninfosource_winrt_p.h | |
parent | 52969e957df3db332e6d95105a2600ab8f5f0ec6 (diff) | |
parent | 036c51c6841a207921a8d2dff3971e74f71201e9 (diff) | |
download | qtlocation-fc3f5e2ea8ba535d40610444c1f79b8ee9457968.tar.gz |
Merge remote-tracking branch 'origin/5.3' into dev
Change-Id: I79173a906d9af146e3707f8cacc60892609f590c
Diffstat (limited to 'src/plugins/position/winrt/qgeopositioninfosource_winrt_p.h')
-rw-r--r-- | src/plugins/position/winrt/qgeopositioninfosource_winrt_p.h | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/plugins/position/winrt/qgeopositioninfosource_winrt_p.h b/src/plugins/position/winrt/qgeopositioninfosource_winrt_p.h new file mode 100644 index 00000000..9f67a990 --- /dev/null +++ b/src/plugins/position/winrt/qgeopositioninfosource_winrt_p.h @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtPositioning module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QGEOPOSITIONINFOSOURCEWINRT_H +#define QGEOPOSITIONINFOSOURCEWINRT_H + +#include "qgeopositioninfosource.h" +#include "qgeopositioninfo.h" + +#include <QTimer> + +#include <EventToken.h> +#include <wrl.h> + +namespace ABI { + namespace Windows { + namespace Devices { + namespace Geolocation{ + struct IGeolocator; + struct IPositionChangedEventArgs; + struct IStatusChangedEventArgs; + } + } + } +} + +QT_BEGIN_NAMESPACE + +class QGeoPositionInfoSourceWinrt : public QGeoPositionInfoSource +{ + Q_OBJECT +public: + QGeoPositionInfoSourceWinrt(QObject *parent = 0); + ~QGeoPositionInfoSourceWinrt(); + + QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const; + PositioningMethods supportedPositioningMethods() const; + + void setPreferredPositioningMethods(PositioningMethods methods); + + void setUpdateInterval(int msec); + int minimumUpdateInterval() const; + Error error() const; + + HRESULT onPositionChanged(ABI::Windows::Devices::Geolocation::IGeolocator *locator, + ABI::Windows::Devices::Geolocation::IPositionChangedEventArgs *args); + +public slots: + void startUpdates(); + void stopUpdates(); + + void requestUpdate(int timeout = 0); + +private slots: + void stopHandler(); + void virtualPositionUpdate(); + void singleUpdateTimeOut(); +private: + bool startHandler(); + + Q_DISABLE_COPY(QGeoPositionInfoSourceWinrt) + void setError(QGeoPositionInfoSource::Error positionError); + bool checkNativeState(); + + Microsoft::WRL::ComPtr<ABI::Windows::Devices::Geolocation::IGeolocator> m_locator; + EventRegistrationToken m_positionToken; + + QGeoPositionInfo m_lastPosition; + QGeoPositionInfoSource::Error m_positionError; + + //EventRegistrationToken m_StatusToken; + QTimer m_periodicTimer; + QTimer m_singleUpdateTimer; + bool m_updatesOngoing; +}; + +QT_END_NAMESPACE + +#endif // QGEOPOSITIONINFOSOURCEWINRT_H |