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