Marble

AbstractFloatItem.h
1// SPDX-License-Identifier: LGPL-2.1-or-later
2//
3// SPDX-FileCopyrightText: 2008 Torsten Rahn <tackat@kde.org>
4// SPDX-FileCopyrightText: 2012 Illya Kovalevskyy <illya.kovalevskyy@gmail.com>
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
18class QHelpEvent;
19class QMenu;
20class QWidget;
21class QFont;
22class QPen;
23
24namespace Marble
25{
26
27class 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
39class 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 for float item plugins.
A painter that allows to draw geometric primitives on the map.
Definition GeoPainter.h:89
Layer of a GeoScene document.
The data model (not based on QAbstractModel) for a MarbleWidget.
Definition MarbleModel.h:87
The abstract class that creates a renderable item.
RenderType
A Type of plugin.
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.
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:18:16 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.