File indexing completed on 2024-04-28 03:50:08

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2009 Eckhart Wörner <ewoerner@kde.org>
0004 //
0005 
0006 #ifndef GPSDPOSITIONPROVIDERPLUGIN_H
0007 #define GPSDPOSITIONPROVIDERPLUGIN_H
0008 
0009 #include "PositionProviderPlugin.h"
0010 #include "GeoDataCoordinates.h"
0011 #include "GeoDataAccuracy.h"
0012 
0013 #include <QDateTime>
0014 
0015 #include <libgpsmm.h>
0016 
0017 
0018 namespace Marble
0019 {
0020 
0021 class GpsdThread;
0022 
0023 class GpsdPositionProviderPlugin: public PositionProviderPlugin
0024 {
0025     Q_OBJECT
0026     Q_PLUGIN_METADATA(IID "org.kde.marble.GpsdPositionProviderPlugin")
0027     Q_INTERFACES( Marble::PositionProviderPluginInterface )
0028 
0029  public:
0030     GpsdPositionProviderPlugin();
0031     ~GpsdPositionProviderPlugin() override;
0032 
0033     QString name() const override;
0034     QString nameId() const override;
0035     QString guiString() const override;
0036     QString version() const override;
0037     QString description() const override;
0038     QString copyrightYears() const override;
0039     QVector<PluginAuthor> pluginAuthors() const override;
0040     QIcon icon() const override;
0041     void initialize() override;
0042     bool isInitialized() const override;
0043 
0044     PositionProviderPlugin * newInstance() const override;
0045 
0046     PositionProviderStatus status() const override;
0047     GeoDataCoordinates position() const override;
0048     GeoDataAccuracy accuracy() const override;
0049     QString error() const override;
0050     qreal speed() const override;
0051     qreal direction() const override;
0052     QDateTime timestamp() const override;
0053 
0054  private:
0055     GpsdThread* m_thread;
0056     PositionProviderStatus m_status;
0057     GeoDataCoordinates m_position;
0058     GeoDataAccuracy m_accuracy;
0059     qreal m_speed;
0060     qreal m_track;
0061     QDateTime m_timestamp;
0062 
0063  private Q_SLOTS:
0064     void update(gps_data_t data);
0065 };
0066 
0067 }
0068 
0069 #endif