File indexing completed on 2024-04-14 03:48:01
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org> 0004 // 0005 0006 #ifndef MARBLE_POSITIONPROVIDERPLUGININTERFACE_H 0007 #define MARBLE_POSITIONPROVIDERPLUGININTERFACE_H 0008 0009 #include "PluginInterface.h" 0010 0011 class QDateTime; 0012 0013 namespace Marble 0014 { 0015 class GeoDataAccuracy; 0016 class GeoDataCoordinates; 0017 0018 enum PositionProviderStatus { 0019 PositionProviderStatusError = 0, 0020 PositionProviderStatusUnavailable, 0021 PositionProviderStatusAcquiring, 0022 PositionProviderStatusAvailable 0023 }; 0024 0025 /** 0026 * @short The interface for position provider plugins. 0027 * 0028 */ 0029 class MARBLE_EXPORT PositionProviderPluginInterface: public PluginInterface 0030 { 0031 public: 0032 ~PositionProviderPluginInterface() override; 0033 0034 virtual void initialize() = 0; 0035 0036 virtual bool isInitialized() const = 0; 0037 0038 virtual PositionProviderStatus status() const = 0; 0039 virtual GeoDataCoordinates position() const = 0; 0040 virtual GeoDataAccuracy accuracy() const = 0; 0041 0042 /** 0043 * Returns the speed of the gps device in meters per second 0044 */ 0045 virtual qreal speed() const = 0; 0046 0047 /** 0048 * Returns the direction in which the gps device is moving. 0049 * The direction is an angle (in degrees) clockwise from geographical north 0050 */ 0051 virtual qreal direction() const = 0; 0052 0053 virtual QDateTime timestamp() const = 0; 0054 0055 /** 0056 * Returns an error string to be presented to the user 0057 * if the status is PositionProviderStatusError. For other 0058 * states, the result value is undefined. 0059 */ 0060 virtual QString error() const; 0061 }; 0062 0063 } 0064 0065 Q_DECLARE_INTERFACE( Marble::PositionProviderPluginInterface, "org.kde.Marble.PositionProviderPluginInterface/1.02" ) 0066 0067 Q_DECLARE_METATYPE( Marble::PositionProviderStatus ) 0068 0069 #endif