File indexing completed on 2024-04-14 03:47:59

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2011 Guillaume Martres <smarter@ubuntu.com>
0004 // SPDX-FileCopyrightText: 2011, 2012 Bernhard Beschow <bbeschow@cs.tu-berlin.de>
0005 //
0006 
0007 #ifndef PLACEMARKPOSITIONPROVIDERPLUGIN_H
0008 #define PLACEMARKPOSITIONPROVIDERPLUGIN_H
0009 
0010 #include "PositionProviderPlugin.h"
0011 
0012 #include "GeoDataCoordinates.h"
0013 #include "GeoDataAccuracy.h"
0014 
0015 #include <QDateTime>
0016 
0017 namespace Marble
0018 {
0019 
0020 class GeoDataPlacemark;
0021 class MarbleModel;
0022 
0023 class PlacemarkPositionProviderPlugin: public PositionProviderPlugin
0024 {
0025     Q_OBJECT
0026     Q_INTERFACES( Marble::PositionProviderPluginInterface )
0027 
0028  public:
0029     explicit PlacemarkPositionProviderPlugin( MarbleModel *marbleModel, QObject* parent=nullptr );
0030 
0031     QString name() const override;
0032     QString nameId() const override;
0033     QString guiString() const override;
0034     QString version() const override;
0035     QString description() const override;
0036     QString copyrightYears() const override;
0037     QVector<PluginAuthor> pluginAuthors() const override;
0038     QIcon icon() const override;
0039     void initialize() override;
0040     bool isInitialized() const override;
0041 
0042     PositionProviderPlugin *newInstance() const override;
0043 
0044     PositionProviderStatus status() const override;
0045     GeoDataCoordinates position() const override;
0046     GeoDataAccuracy accuracy() const override;
0047     qreal speed() const override;
0048     qreal direction() const override;
0049     QDateTime timestamp() const override;
0050 
0051  private:
0052     MarbleModel *const m_marbleModel;
0053     const GeoDataPlacemark *m_placemark;
0054     GeoDataCoordinates m_coordinates;
0055     QDateTime m_timestamp;
0056     qreal m_speed;
0057     qreal m_direction;
0058 
0059     PositionProviderStatus m_status;
0060     GeoDataAccuracy m_accuracy;
0061     bool m_isInitialized;
0062 
0063  private Q_SLOTS:
0064     void setPlacemark( const GeoDataPlacemark *placemark );
0065 
0066     void updatePosition();
0067 };
0068 
0069 }
0070 
0071 #endif // PLACEMARKPOSITIONPROVIDERPLUGIN_H