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