File indexing completed on 2024-05-05 03:49:19
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2011 Dennis Nienhüser <nienhueser@kde.org> 0004 // 0005 0006 #ifndef MARBLE_DECLARATIVE_POSITIONSOURCE_H 0007 #define MARBLE_DECLARATIVE_POSITIONSOURCE_H 0008 0009 #include "Coordinate.h" 0010 0011 #include <QObject> 0012 0013 namespace Marble { 0014 0015 class MarbleQuickItem; 0016 0017 class PositionSource : public QObject 0018 { 0019 Q_OBJECT 0020 0021 Q_PROPERTY( MarbleQuickItem* map READ map WRITE setMap NOTIFY mapChanged ) 0022 Q_PROPERTY( bool active READ active WRITE setActive NOTIFY activeChanged ) 0023 Q_PROPERTY( QString source READ source WRITE setSource NOTIFY sourceChanged ) 0024 Q_PROPERTY( bool hasPosition READ hasPosition NOTIFY hasPositionChanged ) 0025 Q_PROPERTY( Coordinate* position READ position NOTIFY positionChanged ) 0026 Q_PROPERTY( qreal speed READ speed NOTIFY speedChanged ) 0027 0028 public: 0029 explicit PositionSource( QObject* parent = nullptr); 0030 0031 bool active() const; 0032 0033 void setActive( bool active ); 0034 0035 QString source() const; 0036 0037 void setSource( const QString &source ); 0038 0039 bool hasPosition() const; 0040 0041 Coordinate* position(); 0042 0043 MarbleQuickItem *map(); 0044 0045 void setMap( MarbleQuickItem *map ); 0046 0047 qreal speed() const; 0048 0049 Q_SIGNALS: 0050 void mapChanged(); 0051 0052 void activeChanged(); 0053 0054 void sourceChanged(); 0055 0056 void hasPositionChanged(); 0057 0058 void positionChanged(); 0059 0060 void speedChanged(); 0061 0062 private Q_SLOTS: 0063 void updatePosition(); 0064 0065 private: 0066 void start(); 0067 0068 bool m_active; 0069 0070 QString m_source; 0071 0072 bool m_hasPosition; 0073 0074 Coordinate m_position; 0075 0076 QPointer<MarbleQuickItem> m_marbleQuickItem; 0077 0078 qreal m_speed; 0079 }; 0080 0081 } 0082 0083 #endif