Marble

AutoNavigation.h
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2010 Siddharth Srivastava <[email protected]>
4 //
5 
6 #ifndef MARBLE_AUTONAVIGATION_H
7 #define MARBLE_AUTONAVIGATION_H
8 
9 #include "marble_export.h"
10 #include "MarbleGlobal.h"
11 
12 #include <QObject>
13 
14 namespace Marble
15 {
16 
17 class GeoDataCoordinates;
18 class MarbleModel;
19 class ViewportParams;
20 
21 class MARBLE_EXPORT AutoNavigation : public QObject
22 {
23  Q_OBJECT
24 
25 public:
26 
27  /**
28  * @brief Constructor
29  * @param widget the marble widget. It cannot be null.
30  * @param parent optional parent object
31  */
32  explicit AutoNavigation( MarbleModel *model, const ViewportParams *viewport, QObject *parent = nullptr );
33 
34  /** Destructor */
35  ~AutoNavigation() override;
36 
37  /**
38  * An enum type
39  * Represents which recentering method is selected
40  */
41  enum CenterMode {
42  DontRecenter = 0,
43  AlwaysRecenter = 1, /**< Enum Value AlwaysRecenter. Recenter always to the map center */
44  RecenterOnBorder = 2 /**< Enum Value RecenterOnBorder. Recenter when reaching map border */
45  };
46 
47  /**
48  * @brief For Auto Centering adjustment of map in Navigation Mode
49  * @param recenterMode toggles among the recenteing method chosen
50  * @see CenterMode
51  */
52  void setRecenter( CenterMode recenterMode );
53 
54  /**
55  * @brief For Auto Zooming adjustment of map in Navigation Mode
56  * @param activate true to enable auto zooming
57  */
58  void setAutoZoom( bool activate );
59 
60  AutoNavigation::CenterMode recenterMode() const;
61 
62  bool autoZoom() const;
63 
64 public Q_SLOTS:
65 
66  /**
67  * @brief For adjusting the gps location (recentering) or map(autozooming)
68  * @param position current gps location
69  * @param speed of the gps device
70  */
71  void adjust( const GeoDataCoordinates &position, qreal speed );
72 
73  /**
74  * Temporarily inhibits auto-centering and auto-zooming
75  */
76  void inhibitAutoAdjustments();
77 
78 Q_SIGNALS:
79  /**
80  * signal emitted when auto center is turned on (Always re-center, re-center when required ) or off(Disabled)
81  * @param recenterMode the mode for re-centering selected
82  */
83  void recenterModeChanged( AutoNavigation::CenterMode mode );
84 
85  /**
86  * signal emitted when auto zoom is toggled
87  */
88  void autoZoomToggled( bool enabled );
89 
90  void zoomIn( FlyToMode );
91 
92  void zoomOut( FlyToMode );
93 
94  void centerOn( const GeoDataCoordinates &position, bool animated );
95 
96 private:
97  class Private;
98  Private * const d;
99 };
100 } //namespace marble
101 
102 #endif // MARBLE_AUTONAVIGATION_H
QAction * zoomOut(const QObject *recvr, const char *slot, QObject *parent)
Binds a QML item to a specific geodetic location in screen coordinates.
FlyToMode
Describes possible flight mode (interpolation between source and target camera positions)
Definition: MarbleGlobal.h:162
QAction * zoomIn(const QObject *recvr, const char *slot, QObject *parent)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Thu Sep 21 2023 04:12:25 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.