1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2011 Dennis Nienhüser <nienhueser@kde.org>
4 //
5 
6 #ifndef MARBLE_DECLARATIVE_POSITIONSOURCE_H
7 #define MARBLE_DECLARATIVE_POSITIONSOURCE_H
8 
9 #include "Coordinate.h"
10 
11 #include <QObject>
12 
13 namespace Marble {
14 
15 class MarbleQuickItem;
16 
17 class PositionSource : public QObject
18 {
19     Q_OBJECT
20 
21     Q_PROPERTY( MarbleQuickItem* map READ map WRITE setMap NOTIFY mapChanged )
22     Q_PROPERTY( bool active READ active WRITE setActive NOTIFY activeChanged )
23     Q_PROPERTY( QString source READ source WRITE setSource NOTIFY sourceChanged )
24     Q_PROPERTY( bool hasPosition READ hasPosition NOTIFY hasPositionChanged )
25     Q_PROPERTY( Coordinate* position READ position NOTIFY positionChanged )
26     Q_PROPERTY( qreal speed READ speed NOTIFY speedChanged )
27 
28 public:
29     explicit PositionSource( QObject* parent = nullptr);
30 
31     bool active() const;
32 
33     void setActive( bool active );
34 
35     QString source() const;
36 
37     void setSource( const QString &source );
38 
39     bool hasPosition() const;
40 
41     Coordinate* position();
42 
43     MarbleQuickItem *map();
44 
45     void setMap( MarbleQuickItem *map );
46 
47     qreal speed() const;
48 
49 Q_SIGNALS:
50     void mapChanged();
51 
52     void activeChanged();
53 
54     void sourceChanged();
55 
56     void hasPositionChanged();
57 
58     void positionChanged();
59 
60     void speedChanged();
61 
62 private Q_SLOTS:
63     void updatePosition();
64 
65 private:
66     void start();
67 
68     bool m_active;
69 
70     QString m_source;
71 
72     bool m_hasPosition;
73 
74     Coordinate m_position;
75 
76     QPointer<MarbleQuickItem> m_marbleQuickItem;
77 
78     qreal m_speed;
79 };
80 
81 }
82 
83 #endif
84