Changeset View
Changeset View
Standalone View
Standalone View
src/lib/marble/MarbleInputHandler.cpp
Show First 20 Lines • Show All 42 Lines • ▼ Show 20 Line(s) | 41 | public: | |||
---|---|---|---|---|---|
43 | 43 | | |||
44 | MarbleAbstractPresenter *const m_marblePresenter; | 44 | MarbleAbstractPresenter *const m_marblePresenter; | ||
45 | bool m_positionSignalConnected; | 45 | bool m_positionSignalConnected; | ||
46 | QTimer *m_mouseWheelTimer; | 46 | QTimer *m_mouseWheelTimer; | ||
47 | Qt::MouseButtons m_disabledMouseButtons; | 47 | Qt::MouseButtons m_disabledMouseButtons; | ||
48 | qreal m_wheelZoomTargetDistance; | 48 | qreal m_wheelZoomTargetDistance; | ||
49 | bool m_panViaArrowsEnabled; | 49 | bool m_panViaArrowsEnabled; | ||
50 | bool m_inertialEarthRotation; | 50 | bool m_inertialEarthRotation; | ||
51 | bool m_mouseViewRotation; | ||||
51 | int m_steps; | 52 | int m_steps; | ||
52 | const int m_discreteZoomSteps = 120; | 53 | const int m_discreteZoomSteps = 120; | ||
53 | }; | 54 | }; | ||
54 | 55 | | |||
55 | MarbleInputHandler::Protected::Protected(MarbleAbstractPresenter *marblePresenter) | 56 | MarbleInputHandler::Protected::Protected(MarbleAbstractPresenter *marblePresenter) | ||
56 | : m_marblePresenter( marblePresenter ), | 57 | : m_marblePresenter( marblePresenter ), | ||
57 | m_positionSignalConnected( false ), | 58 | m_positionSignalConnected( false ), | ||
58 | m_mouseWheelTimer( nullptr ), | 59 | m_mouseWheelTimer( nullptr ), | ||
59 | m_disabledMouseButtons( Qt::NoButton ), | 60 | m_disabledMouseButtons( Qt::NoButton ), | ||
60 | m_wheelZoomTargetDistance( 0.0 ), | 61 | m_wheelZoomTargetDistance( 0.0 ), | ||
61 | m_panViaArrowsEnabled( true ), | 62 | m_panViaArrowsEnabled( true ), | ||
62 | m_inertialEarthRotation( true ), | 63 | m_inertialEarthRotation( true ), | ||
64 | m_mouseViewRotation( true ), | ||||
63 | m_steps(0) | 65 | m_steps(0) | ||
64 | { | 66 | { | ||
65 | } | 67 | } | ||
66 | 68 | | |||
67 | MarbleInputHandler::MarbleInputHandler(MarbleAbstractPresenter *marblePresenter) | 69 | MarbleInputHandler::MarbleInputHandler(MarbleAbstractPresenter *marblePresenter) | ||
68 | : d(new Protected(marblePresenter)) | 70 | : d(new Protected(marblePresenter)) | ||
69 | { | 71 | { | ||
70 | d->m_mouseWheelTimer = new QTimer( this ); | 72 | d->m_mouseWheelTimer = new QTimer( this ); | ||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Line(s) | 123 | { | |||
122 | d->m_inertialEarthRotation = enabled; | 124 | d->m_inertialEarthRotation = enabled; | ||
123 | } | 125 | } | ||
124 | 126 | | |||
125 | bool MarbleInputHandler::inertialEarthRotationEnabled() const | 127 | bool MarbleInputHandler::inertialEarthRotationEnabled() const | ||
126 | { | 128 | { | ||
127 | return d->m_inertialEarthRotation; | 129 | return d->m_inertialEarthRotation; | ||
128 | } | 130 | } | ||
129 | 131 | | |||
132 | void MarbleInputHandler::setMouseViewRotationEnabled(bool enabled) | ||||
133 | { | ||||
134 | d->m_mouseViewRotation = enabled; | ||||
135 | } | ||||
136 | | ||||
137 | bool MarbleInputHandler::mouseViewRotationEnabled() const | ||||
138 | { | ||||
139 | return d->m_mouseViewRotation; | ||||
140 | } | ||||
141 | | ||||
130 | void MarbleInputHandler::stopInertialEarthRotation() | 142 | void MarbleInputHandler::stopInertialEarthRotation() | ||
131 | { | 143 | { | ||
132 | } | 144 | } | ||
133 | 145 | | |||
134 | class Q_DECL_HIDDEN MarbleDefaultInputHandler::Private | 146 | class Q_DECL_HIDDEN MarbleDefaultInputHandler::Private | ||
135 | { | 147 | { | ||
136 | public: | 148 | public: | ||
137 | Private(); | 149 | Private(); | ||
▲ Show 20 Lines • Show All 694 Lines • ▼ Show 20 Line(s) | 804 | { | |||
832 | 844 | | |||
833 | if (d->m_midPressed) | 845 | if (d->m_midPressed) | ||
834 | { | 846 | { | ||
835 | int eventy = event->y(); | 847 | int eventy = event->y(); | ||
836 | int dy = d->m_midPressedY - eventy; | 848 | int dy = d->m_midPressedY - eventy; | ||
837 | MarbleInputHandler::d->m_marblePresenter->setRadius(d->m_startingRadius * pow(1.005, dy)); | 849 | MarbleInputHandler::d->m_marblePresenter->setRadius(d->m_startingRadius * pow(1.005, dy)); | ||
838 | } | 850 | } | ||
839 | 851 | | |||
840 | if (d->m_rightPressed) | 852 | if (d->m_rightPressed && MarbleInputHandler::d->m_mouseViewRotation) | ||
841 | { | 853 | { | ||
842 | qreal centerX, centerY; | 854 | qreal centerX, centerY; | ||
843 | MarbleInputHandler::d->m_marblePresenter->map()->screenCoordinates( | 855 | MarbleInputHandler::d->m_marblePresenter->map()->screenCoordinates( | ||
844 | MarbleInputHandler::d->m_marblePresenter->centerLongitude(), | 856 | MarbleInputHandler::d->m_marblePresenter->centerLongitude(), | ||
845 | MarbleInputHandler::d->m_marblePresenter->centerLatitude(), centerX, centerY); | 857 | MarbleInputHandler::d->m_marblePresenter->centerLatitude(), centerX, centerY); | ||
846 | 858 | | |||
847 | // Deltas from previous position. | 859 | // Deltas from previous position. | ||
848 | int dx = event->x() - d->m_rightPosition.x(); | 860 | int dx = event->x() - d->m_rightPosition.x(); | ||
▲ Show 20 Lines • Show All 162 Lines • Show Last 20 Lines |