File indexing completed on 2024-05-05 03:49:18

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2012 Dennis Nienhüser <nienhueser@kde.org>
0004 //
0005 
0006 #ifndef MARBLE_DECLARATIVE_NAVIGATION_H
0007 #define MARBLE_DECLARATIVE_NAVIGATION_H
0008 
0009 #include <QObject>
0010 #include <QtQml>
0011 
0012 namespace Marble {
0013 
0014 class MarbleQuickItem;
0015 class NavigationPrivate;
0016 
0017 class Navigation : public QObject
0018 {
0019     Q_OBJECT
0020     Q_PROPERTY(Marble::MarbleQuickItem * marbleQuickItem READ marbleQuickItem WRITE setMarbleQuickItem NOTIFY marbleQuickItemChanged)
0021     Q_PROPERTY(bool guidanceModeEnabled READ guidanceModeEnabled WRITE setGuidanceModeEnabled NOTIFY guidanceModeEnabledChanged)
0022     Q_PROPERTY(bool muted READ muted WRITE setMuted NOTIFY mutedChanged)
0023     Q_PROPERTY(QString speaker READ speaker WRITE setSpeaker NOTIFY speakerChanged)
0024     Q_PROPERTY(QString nextInstructionText READ nextInstructionText NOTIFY nextInstructionTextChanged)
0025     Q_PROPERTY(QString nextRoad READ nextRoad NOTIFY nextRoadChanged)
0026     Q_PROPERTY(QString nextInstructionImage READ nextInstructionImage NOTIFY nextInstructionImageChanged)
0027     Q_PROPERTY(qreal nextInstructionDistance READ nextInstructionDistance NOTIFY nextInstructionDistanceChanged)
0028     Q_PROPERTY(qreal destinationDistance READ destinationDistance NOTIFY destinationDistanceChanged)
0029     Q_PROPERTY(QString voiceNavigationAnnouncement READ voiceNavigationAnnouncement NOTIFY voiceNavigationAnnouncementChanged)
0030     Q_PROPERTY(bool deviated READ deviated NOTIFY deviationChanged)
0031     Q_PROPERTY(double screenAccuracy READ screenAccuracy NOTIFY screenAccuracyChanged)
0032     Q_PROPERTY(QPointF screenPosition READ screenPosition NOTIFY screenPositionChanged)
0033 
0034 public:
0035     explicit Navigation( QObject* parent = nullptr );
0036 
0037     ~Navigation() override;
0038 
0039     bool guidanceModeEnabled() const;
0040 
0041     void setGuidanceModeEnabled( bool enabled );
0042 
0043     bool muted() const;
0044 
0045     void setMuted(bool enabled);
0046 
0047     QString nextInstructionText() const;
0048 
0049     QString nextRoad() const;
0050 
0051     QString nextInstructionImage() const;
0052 
0053     qreal nextInstructionDistance() const;
0054 
0055     qreal destinationDistance() const;
0056 
0057     QString voiceNavigationAnnouncement() const;
0058 
0059     QString speaker() const;
0060 
0061     void setSpeaker( const QString &speaker );
0062 
0063     bool deviated() const;
0064 
0065     Marble::MarbleQuickItem * marbleQuickItem() const;
0066 
0067     double screenAccuracy() const;
0068 
0069     QPointF screenPosition() const;
0070 
0071 public Q_SLOTS:
0072     void setMarbleQuickItem(Marble::MarbleQuickItem * marbleQuickItem);
0073 
0074 Q_SIGNALS:
0075     void mapChanged();
0076 
0077     void guidanceModeEnabledChanged();
0078 
0079     void mutedChanged(bool arg);
0080 
0081     void nextInstructionTextChanged();
0082 
0083     void nextInstructionImageChanged();
0084 
0085     void nextInstructionDistanceChanged();
0086 
0087     void destinationDistanceChanged();
0088 
0089     void nextRoadChanged();
0090 
0091     void voiceNavigationAnnouncementChanged();
0092 
0093     void soundEnabledChanged();
0094 
0095     void speakerChanged();
0096 
0097     void deviationChanged();
0098 
0099     void marbleQuickItemChanged(Marble::MarbleQuickItem * marbleQuickItem);
0100 
0101     void screenAccuracyChanged();
0102 
0103     void screenPositionChanged();
0104 
0105 private Q_SLOTS:
0106     void update();
0107     void updateScreenPosition();
0108 
0109 private:
0110     NavigationPrivate* const d;
0111 };
0112 
0113 }
0114 
0115 #endif