Marble

AbstractFloatItem.h
1 // SPDX-License-Identifier: LGPL-2.1-or-later
2 //
3 // SPDX-FileCopyrightText: 2008 Torsten Rahn <[email protected]>
4 // SPDX-FileCopyrightText: 2012 Illya Kovalevskyy <[email protected]>
5 //
6 
7 #ifndef MARBLE_ABSTRACTFLOATITEM_H
8 #define MARBLE_ABSTRACTFLOATITEM_H
9 
10 #include <QPointF>
11 #include <QSizeF>
12 
13 #include "RenderPlugin.h"
14 #include "FrameGraphicsItem.h"
15 #include "marble_export.h"
16 
17 class QContextMenuEvent;
18 class QHelpEvent;
19 class QMenu;
20 class QWidget;
21 class QFont;
22 class QPen;
23 
24 namespace Marble
25 {
26 
27 class AbstractFloatItemPrivate;
28 
29 /**
30  * @brief The abstract class for float item plugins
31  *
32  * Float Item is a variant of Marble render plugins
33  * It keeps floating on top of the map at a given screen position
34  *
35  * Good examples are Overview Map, License
36  *
37  */
38 
39 class MARBLE_EXPORT AbstractFloatItem : public RenderPlugin, public FrameGraphicsItem
40 {
41  Q_OBJECT
42 
43  public:
44  explicit AbstractFloatItem( const MarbleModel *marbleModel,
45  const QPointF &point = QPointF( 10.0, 10.0 ),
46  const QSizeF &size = QSizeF( 150.0, 50.0 ) );
47  ~AbstractFloatItem() override;
48 
49  QHash<QString,QVariant> settings() const override;
50  void setSettings(const QHash<QString, QVariant> &settings) override;
51 
52  RenderType renderType() const override;
53 
54  /**
55  * @brief current pen for rendering
56  * @return pen
57  */
58  QPen pen() const;
59 
60  /**
61  * @brief setting current pen for rendering
62  * @param pen
63  */
64  void setPen( const QPen &pen );
65 
66  /**
67  * @brief current font for rendering
68  * @return font
69  */
70  QFont font() const;
71 
72  /**
73  * @brief setting current font for rendering
74  * @param font
75  */
76  void setFont( const QFont &font );
77 
78  /**
79  * @brief Paints the float item on the map.
80  * @deprecated Do not override this method since it won't be called any longer.
81  * Override one of FrameGraphicsItem's paint methods instead.
82  */
83  MARBLE_DEPRECATED bool render( GeoPainter *painter, ViewportParams *viewport,
84  const QString& renderPos = QLatin1String("FLOAT_ITEM"),
85  GeoSceneLayer * layer = nullptr ) override;
86 
87  QString renderPolicy() const override;
88 
89  /**
90  * @brief Returns the rendering position of this float item.
91  * @deprecated The return value of method is ignored. The float item's rendering position
92  * will always be "FLOAT_ITEM".
93  */
94  MARBLE_DEPRECATED QStringList renderPosition() const override;
95 
96  /**
97  * @brief Set visibility of the float item
98  *
99  * Float items can be visible or invisible.
100  * It's possible to check visibility with @see visible
101  *
102  * @param visible visibility of the item
103  */
104  void setVisible( bool visible );
105 
106  /**
107  * @brief Check visibility of the float item
108  *
109  * Float items can be visible or invisible.
110  * It's possible to set visibility with @see setVisible
111  *
112  * @return visible or not
113  */
114  bool visible() const;
115 
116  /**
117  * @brief Check is position locked
118  *
119  * Float Item position can be locked. If it is,
120  * the item can't be moved with the cursor (in the UI)
121  *
122  * To set it use @see setPositionLocked
123  *
124  * @return position locked or not
125  */
126  bool positionLocked() const;
127 
128  public Q_SLOTS:
129  /**
130  * @brief Set is position locked
131  * @param lock is locked?
132  *
133  * Float Item position can be locked. If it is,
134  * item can't be moved with cursor (in UI)
135  *
136  * To check it use @see positionLocked
137  *
138  */
139  void setPositionLocked( bool lock );
140 
141  /**
142  * @brief Show the item
143  *
144  * If the item was hidden this function will show it
145  *
146  */
147  void show();
148 
149  /**
150  * @brief Hide the item
151  *
152  * If the item was shown this function will hide it
153  *
154  */
155  void hide();
156 
157  protected:
158  bool eventFilter(QObject *object, QEvent *e) override;
159  virtual void contextMenuEvent ( QWidget *w, QContextMenuEvent *e );
160  virtual void toolTipEvent( QHelpEvent *e );
161  QMenu* contextMenu();
162 
163  private:
164  Q_DISABLE_COPY( AbstractFloatItem )
165  AbstractFloatItemPrivate * const d;
166 };
167 
168 }
169 
170 #endif
The abstract class that creates a renderable item.
Definition: RenderPlugin.h:38
The abstract class for float item plugins.
Layer of a GeoScene document.
Definition: GeoSceneLayer.h:28
A public class that controls what is visible in the viewport of a Marble map.
Binds a QML item to a specific geodetic location in screen coordinates.
A painter that allows to draw geometric primitives on the map.
Definition: GeoPainter.h:88
RenderType
A Type of plugin.
Definition: RenderPlugin.h:54
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition: MarbleModel.h:86
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Oct 2 2023 03:52:07 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.