Marble

RouteSimulationPositionProviderPlugin.h
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2011 Konrad Enzensberger <[email protected]>
4 // SPDX-FileCopyrightText: 2011 Dennis Nienhüser <[email protected]>
5 // SPDX-FileCopyrightText: 2012 Bernhard Beschow <[email protected]>
6 //
7 
8 #ifndef MARBLE_ROUTESIMULATIONPOSITIONPROVIDERPLUGIN_H
9 #define MARBLE_ROUTESIMULATIONPOSITIONPROVIDERPLUGIN_H
10 
11 #include "PositionProviderPlugin.h"
12 
13 #include "GeoDataLineString.h"
14 #include "GeoDataCoordinates.h"
15 
16 #include <QDateTime>
17 #include <QTimer>
18 
19 namespace Marble
20 {
21 
22 class MarbleModel;
23 
24 class RouteSimulationPositionProviderPlugin: public PositionProviderPlugin
25 {
26  Q_OBJECT
28 
29 public:
30  explicit RouteSimulationPositionProviderPlugin(MarbleModel *marbleModel, QObject* parent=nullptr);
31  ~RouteSimulationPositionProviderPlugin() override;
32 
33  // Implementing PluginInterface
34  QString name() const override;
35  QString nameId() const override;
36  QString guiString() const override;
37  QString version() const override;
38  QString description() const override;
39  QString copyrightYears() const override;
40  QVector<PluginAuthor> pluginAuthors() const override;
41  QIcon icon() const override;
42  void initialize() override;
43  bool isInitialized() const override;
44  qreal speed() const override;
45  qreal direction() const override;
46  QDateTime timestamp() const override;
47 
48  // Implementing PositionProviderPlugin
49  PositionProviderPlugin * newInstance() const override;
50 
51  // Implementing PositionProviderPluginInterface
52  PositionProviderStatus status() const override;
53  GeoDataCoordinates position() const override;
54  GeoDataAccuracy accuracy() const override;
55 
56 private Q_SLOTS:
57  /** Regular (each second) position and status update */
58  void update();
59  void updateRoute();
60 
61 private:
62  GeoDataCoordinates addNoise(const Marble::GeoDataCoordinates &,const Marble::GeoDataAccuracy &) const;
63  static qreal addNoise(qreal bearing);
64  void changeStatus(PositionProviderStatus status);
65 
66  MarbleModel *const m_marbleModel;
67  int m_currentIndex;
68  PositionProviderStatus m_status;
69  GeoDataLineString m_lineString;
70  GeoDataLineString m_lineStringInterpolated;
71  GeoDataCoordinates m_currentPosition;
72  GeoDataCoordinates m_currentPositionWithNoise;
73  QDateTime m_currentDateTime;
74  qreal m_speed;
75  qreal m_direction;
76  qreal m_directionWithNoise;
77  QTimer m_updateTimer;
78 };
79 
80 }
81 
82 #endif // MARBLE_ROUTESIMULATIONPOSITIONPROVIDERPLUGIN_H
Q_OBJECTQ_OBJECT
A 3d point representation.
Q_SLOTSQ_SLOTS
void initialize(StandardShortcut id)
Q_SCRIPTABLE CaptureState status()
Binds a QML item to a specific geodetic location in screen coordinates.
Q_INTERFACES(...)
The interface for position provider plugins.
unsigned int version()
QString name(StandardShortcut id)
void update(Part *part, const QByteArray &data, qint64 dataSize)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Oct 2 2023 03:52:09 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.