• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.14
  • kdeedu
  • marble
  • src
  • lib
  • marble
MarbleInputHandler.h
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2005-2007 Torsten Rahn <tackat@kde.org>
9 // Copyright 2007 Inge Wallin <ingwa@kde.org>
10 // Copyright 2014 Adam Dabrowski <adamdbrw@gmail.com>
11 //
12 
13 #ifndef MARBLE_MARBLEINPUTHANDLER_H
14 #define MARBLE_MARBLEINPUTHANDLER_H
15 
16 #include <QObject>
17 #include <QString>
18 #include <QRect>
19 
20 #include "marble_export.h"
21 
22 class QEvent;
23 class QKeyEvent;
24 class QMouseEvent;
25 class QTouchEvent;
26 class QWheelEvent;
27 class QGestureEvent;
28 class QRubberBand;
29 class QCursor;
30 class QTimer;
31 
32 namespace Marble
33 {
34 
35 class MarbleModel;
36 class MarbleAbstractPresenter;
37 class MarbleWidgetPopupMenu;
38 class AbstractDataPluginItem;
39 class RenderPlugin;
40 
41 class MARBLE_EXPORT MarbleInputHandler : public QObject
42 {
43  Q_OBJECT
44 
45  public:
46  explicit MarbleInputHandler( MarbleAbstractPresenter* );
47  virtual ~MarbleInputHandler();
48 
49  void setPositionSignalConnected( bool connected );
50  bool isPositionSignalConnected() const;
51 
60  void setMouseButtonPopupEnabled( Qt::MouseButton mouseButton, bool enabled );
61 
66  bool isMouseButtonPopupEnabled( Qt::MouseButton mouseButton ) const;
67 
68  void setPanViaArrowsEnabled( bool enabled );
69 
70  bool panViaArrowsEnabled() const;
71 
72  void setInertialEarthRotationEnabled( bool enabled );
73 
79  bool inertialEarthRotationEnabled() const;
80 
81  Q_SIGNALS:
82  // Mouse button menus
83  void lmbRequest( int, int );
84  void rmbRequest( int, int );
85 
86  //Gps coordinates
87  void mouseClickScreenPosition( int, int );
88  void mouseMoveGeoPosition( QString );
89 
90  protected Q_SLOTS:
91  void restoreViewContext();
92 
93  protected:
94  class Protected;
95  Protected * const d;
96 
97  private Q_SLOTS:
98  virtual void installPluginEventFilter( RenderPlugin *renderPlugin ) = 0;
99 
100  private:
101  Q_DISABLE_COPY( MarbleInputHandler )
102 };
103 
104 class AbstractSelectionRubber
105 {
106 public:
107  virtual ~AbstractSelectionRubber() {}
108  virtual void show() = 0;
109  virtual void hide() = 0;
110  virtual bool isVisible() const = 0;
111  virtual const QRect &geometry() const = 0;
112  virtual void setGeometry(const QRect &geometry) = 0;
113 };
114 
115 class MARBLE_EXPORT MarbleDefaultInputHandler : public MarbleInputHandler
116 {
117  Q_OBJECT
118 
119  public:
120  explicit MarbleDefaultInputHandler( MarbleAbstractPresenter* marblePresenter);
121  virtual ~MarbleDefaultInputHandler();
122 
123  protected:
124  bool eventFilter( QObject *, QEvent * );
125  bool handleMouseEvent(QMouseEvent *e);
126  bool handlePinch(QPointF center, qreal scaleFactor, Qt::GestureState state);
127 
128  //FIXME - refactor (abstraction & composition)
129  QPointer<AbstractDataPluginItem> lastToolTipItem();
130  QTimer* toolTipTimer();
131  QPoint toolTipPosition();
132 
133  private Q_SLOTS:
134  virtual void installPluginEventFilter( RenderPlugin *renderPlugin ) = 0;
135  virtual void showLmbMenu( int, int ) = 0;
136  virtual void showRmbMenu( int, int ) = 0;
137 
138  virtual void openItemToolTip() = 0;
139  virtual void setCursor(const QCursor &) = 0;
140 
141  void lmbTimeout();
142 
143  private:
144  virtual AbstractSelectionRubber *selectionRubber() = 0;
145  virtual bool layersEventFilter(QObject *, QEvent *) = 0;
146 
147  virtual bool handleTouch(QTouchEvent *e);
148  virtual bool handleKeyPress(QKeyEvent *e);
149  virtual bool handleDoubleClick(QMouseEvent *e);
150  virtual bool handleWheel(QWheelEvent *e);
151  virtual bool handleGesture(QGestureEvent *e);
152 
153  virtual void handleMouseButtonPress(QMouseEvent *e);
154  virtual void handleLeftMouseButtonPress(QMouseEvent *e);
155  virtual void handleRightMouseButtonPress(QMouseEvent *e);
156  virtual void handleMiddleMouseButtonPress(QMouseEvent *e);
157  virtual void handleMouseButtonRelease(QMouseEvent *e);
158 
159  virtual void hideSelectionIfCtrlReleased(QEvent *e);
160  virtual void checkReleasedMove(QMouseEvent *e);
161 
162  //Returns whatever should be returned from mouse event handling loop
163  virtual bool acceptMouse();
164 
165  void notifyPosition(bool isAboveMap, qreal mouseLon, qreal mouseLat);
166  QPoint mouseMovedOutside(QMouseEvent *event);
167  void adjustCursorShape(const QPoint& mousePosition, const QPoint& mouseDirection);
168 
169  Q_DISABLE_COPY(MarbleDefaultInputHandler)
170  class Private;
171  Private * const d;
172 };
173 
174 }
175 
176 #endif //MARBLE_MARBLEINPUTHANDLER_H
QEvent
QPointer
QWheelEvent
QPoint
QMouseEvent
QGestureEvent
QRubberBand
QPointF
Marble::AbstractSelectionRubber::setGeometry
virtual void setGeometry(const QRect &geometry)=0
QRect
QTimer
QObject
MARBLE_EXPORT
#define MARBLE_EXPORT
Definition: marble_export.h:20
Marble::AbstractSelectionRubber::hide
virtual void hide()=0
QString
QKeyEvent
marble_export.h
Marble::MarbleAbstractPresenter
Definition: MarbleAbstractPresenter.h:26
Marble::AbstractSelectionRubber::show
virtual void show()=0
Marble::MarbleDefaultInputHandler
Definition: MarbleInputHandler.h:115
Marble::AbstractSelectionRubber::geometry
virtual const QRect & geometry() const =0
Marble::AbstractSelectionRubber::isVisible
virtual bool isVisible() const =0
Marble::AbstractSelectionRubber
Definition: MarbleInputHandler.h:104
QCursor
QTouchEvent
Marble::RenderPlugin
The abstract class that creates a renderable item.
Definition: RenderPlugin.h:43
Marble::MarbleInputHandler::d
Protected *const d
Definition: MarbleInputHandler.h:94
Marble::MarbleInputHandler
Definition: MarbleInputHandler.h:41
Marble::AbstractSelectionRubber::~AbstractSelectionRubber
virtual ~AbstractSelectionRubber()
Definition: MarbleInputHandler.h:107
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:13:40 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal