Inserts first successfull qt6 migration Lts/Viewer
This commit is contained in:
29 files changed
+238
-18437
No files matched your search
@@ -293,7 +293,7 @@ endif()
|
||||
# server uses QWebSocketServer; LtsWebSocket/httq enable their real websocket
|
||||
# paths via QT6_WEBSOCKETS_AVAILABLE when the module is found).
|
||||
find_package(Qt6 6.2 COMPONENTS Concurrent Core LinguistTools Network
|
||||
Multimedia Sql SerialPort Test Xml Positioning Svg WebSockets PrintSupport OpenGL QUIET)
|
||||
Multimedia Sql SerialPort Test Xml Positioning Svg WebSockets PrintSupport OpenGL OpenGLWidgets QUIET)
|
||||
|
||||
if(Qt6_FOUND)
|
||||
# Skip GUI find_package - it fails without OpenGL. We'll create manual targets below.
|
||||
@@ -303,7 +303,7 @@ endif()
|
||||
|
||||
# If Qt6 not found yet, try with full component list including OpenGL
|
||||
if(NOT Qt6_FOUND)
|
||||
find_package(Qt6 6.2 COMPONENTS Concurrent Core LinguistTools Network OpenGL PrintSupport
|
||||
find_package(Qt6 6.2 COMPONENTS Concurrent Core LinguistTools Network OpenGL OpenGLWidgets PrintSupport
|
||||
Multimedia Sql Svg SerialPort Test UiTools WebSockets WebEngineCore WebEngineWidgets
|
||||
Widgets Xml Positioning QUIET)
|
||||
if(Qt6_FOUND AND OpenGL_FOUND)
|
||||
|
||||
@@ -424,6 +424,7 @@ NGL_TARGET_LINK_LIBRARIES(situationMap
|
||||
Qt6::Concurrent
|
||||
Qt6::Network
|
||||
Qt6::PrintSupport
|
||||
Qt6::OpenGLWidgets
|
||||
LtsCoordTrans
|
||||
ArcGISQt5Hack
|
||||
PUBLIC
|
||||
|
||||
+4
-4
@@ -85,12 +85,12 @@ void ViewshedLocation::connectSignals()
|
||||
connect(m_sceneView, &SceneGraphicsView::mouseClicked, this, [this](QMouseEvent& event)
|
||||
{
|
||||
if (!m_locationViewshed[0])
|
||||
createViewshed(event.x(), event.y());
|
||||
createViewshed(event.position().x(), event.position().y());
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
const Point pt = m_sceneView->screenToBaseSurface(event.x(), event.y());
|
||||
const Point pt = m_sceneView->screenToBaseSurface(event.position().x(), event.position().y());
|
||||
m_locationViewshed[i]->setLocation(pt);
|
||||
}
|
||||
}
|
||||
@@ -99,7 +99,7 @@ void ViewshedLocation::connectSignals()
|
||||
connect(m_sceneView, &SceneGraphicsView::mousePressedAndHeld, this, [this](QMouseEvent& event)
|
||||
{
|
||||
if (!m_locationViewshed[0])
|
||||
createViewshed(event.x(), event.y());
|
||||
createViewshed(event.position().x(), event.position().y());
|
||||
|
||||
m_calculating = true;
|
||||
});
|
||||
@@ -110,7 +110,7 @@ void ViewshedLocation::connectSignals()
|
||||
{
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
const Point pt = m_sceneView->screenToBaseSurface(event.x(), event.y());
|
||||
const Point pt = m_sceneView->screenToBaseSurface(event.position().x(), event.position().y());
|
||||
m_locationViewshed[i]->setLocation(pt);
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -18,6 +18,7 @@
|
||||
#include <SpatialReference.h>
|
||||
#include <Geometry.h>
|
||||
#include <Polygon.h>
|
||||
#include <AttributeListModel.h>
|
||||
|
||||
|
||||
// Qt
|
||||
|
||||
+1
@@ -18,6 +18,7 @@
|
||||
#include <Graphic.h>
|
||||
#include <SpatialReference.h>
|
||||
#include <Point.h>
|
||||
#include <AttributeListModel.h>
|
||||
|
||||
|
||||
// Qt
|
||||
|
||||
+2
-2
@@ -22,8 +22,8 @@
|
||||
#endif // ACRGIS_VERSION
|
||||
|
||||
#ifdef HAS_LOCATION_DISPLAY
|
||||
# include <arcgis/LocationDisplay.h>
|
||||
# include <arcgis/SimulatedLocationDataSource.h>
|
||||
# include <LocationDisplay.h>
|
||||
# include <SimulatedLocationDataSource.h>
|
||||
#endif // HAS_LOCATION_DISPLAY
|
||||
|
||||
// Qt
|
||||
|
||||
+2
-2
@@ -669,8 +669,8 @@ bool BasicPathObjectImpl::updateArrowHead(BasicPathObjectImpl::ArrowHead &arrowH
|
||||
|
||||
Esri::ArcGISRuntime::GeodeticDistanceResult distRes = Esri::ArcGISRuntime::GeometryEngine::distanceGeodetic(esriEnd3D,
|
||||
camPoint,
|
||||
Esri::ArcGISRuntime::LinearUnitId::Meters,
|
||||
Esri::ArcGISRuntime::AngularUnitId::Degrees,
|
||||
Esri::ArcGISRuntime::LinearUnit(Esri::ArcGISRuntime::LinearUnitId::Meters),
|
||||
Esri::ArcGISRuntime::AngularUnit(Esri::ArcGISRuntime::AngularUnitId::Degrees),
|
||||
Esri::ArcGISRuntime::GeodeticCurveType::Geodesic);
|
||||
realEnable = distRes.distance() < 20000;
|
||||
}
|
||||
|
||||
+6
-1
@@ -45,6 +45,10 @@
|
||||
#include <PolylineBuilder.h>
|
||||
#include <Polygon.h>
|
||||
#include <PolygonBuilder.h>
|
||||
#include <Point.h>
|
||||
#include <ImmutablePartCollection.h>
|
||||
#include <ImmutablePart.h>
|
||||
#include <LinearUnit.h>
|
||||
|
||||
#include <QPointF>
|
||||
#include <QVector>
|
||||
@@ -378,9 +382,10 @@ QVector<Point3D> GeometryEngine::buffer(AbstractMapObject *mapObj, double distan
|
||||
|
||||
// Esri::ArcGISRuntime::GeometryEngine::buffer -> works for 2D
|
||||
// Esri::ArcGISRuntime::GeometryEngine::bufferGeodetic -> works for 2D and 3D!?
|
||||
const Esri::ArcGISRuntime::LinearUnit linearUnit(Esri::ArcGISRuntime::LinearUnitId::Meters);
|
||||
const Esri::ArcGISRuntime::Polygon polyline = Esri::ArcGISRuntime::GeometryEngine::bufferGeodetic(esriGeometry,
|
||||
distance,
|
||||
Esri::ArcGISRuntime::LinearUnitId::Meters,
|
||||
linearUnit,
|
||||
1,
|
||||
Esri::ArcGISRuntime::GeodeticCurveType::Geodesic);
|
||||
if (polyline.parts().isEmpty())
|
||||
|
||||
@@ -37,7 +37,6 @@ namespace SituationMap { namespace MathUtils
|
||||
|
||||
|
||||
void PathRasterer::rasterize(qreal tMin, qreal tMax, QVector<QPointF> & vertexList) { exeRasterize( tMin, tMax, vertexList ); }
|
||||
void PathRasterer::rasterize(qreal tMin, qreal tMax, QList<QPointF> & vertexList) { exeRasterize( tMin, tMax, vertexList ); }
|
||||
|
||||
|
||||
template <class List> void PathRasterer::exeRasterize( qreal tMin, qreal tMax, List & vertexList )
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "rubberband_drawable.h"
|
||||
|
||||
#include <Map.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
|
||||
namespace SituationMap { namespace RB
|
||||
|
||||
+35
-35
@@ -155,16 +155,16 @@ bool EventDispatcher::eventFilterGesture( QGestureEvent * gestureEvent )
|
||||
{
|
||||
case Qt::GestureStarted:
|
||||
{
|
||||
handled = onPress( hotSpot.x(), hotSpot.y(), nullptr );
|
||||
handled = onPress( hotSpot.x(), hotSpot.y(), Qt::NoModifier );
|
||||
if (handled) gestureEvent -> accept( panGesture );
|
||||
} break;
|
||||
|
||||
case Qt::GestureUpdated:
|
||||
handled = onMove ( hotSpot.x() + offset.x(), hotSpot.y() + offset.y(), Qt::MouseButton::LeftButton, nullptr );
|
||||
handled = onMove ( hotSpot.x() + offset.x(), hotSpot.y() + offset.y(), Qt::MouseButton::LeftButton, Qt::NoModifier );
|
||||
break;
|
||||
case Qt::GestureFinished:
|
||||
// handled = onMove ( hotSpot.x() + offset.x(), hotSpot.y() + offset.y(), Qt::MouseButton::LeftButton, 0 );
|
||||
handled = onClick( hotSpot.x() + offset.x(), hotSpot.y() + offset.y(), nullptr );
|
||||
handled = onClick( hotSpot.x() + offset.x(), hotSpot.y() + offset.y(), Qt::NoModifier );
|
||||
break;
|
||||
case Qt::GestureCanceled:
|
||||
getEventActions()->resetAction( this, 0, 0 );
|
||||
@@ -183,7 +183,7 @@ bool EventDispatcher::eventFilterGesture( QGestureEvent * gestureEvent )
|
||||
case Qt::GestureFinished :
|
||||
{
|
||||
getEventActions()->resetAction( this, qRound(applyGesture->position().x()), qRound(applyGesture->position().y()) );
|
||||
handled = onDoubleClick( qRound(applyGesture->position().x()), qRound(applyGesture->position().y()), nullptr );
|
||||
handled = onDoubleClick( qRound(applyGesture->position().x()), qRound(applyGesture->position().y()), Qt::NoModifier );
|
||||
if (handled)
|
||||
{
|
||||
gestureEvent -> accept( applyGesture );
|
||||
@@ -211,11 +211,11 @@ bool EventDispatcher::eventFilterWheel( QWheelEvent * e )
|
||||
const int WHEEL_DELTA = 120; // natural mouse driver constant
|
||||
|
||||
if (e->modifiers().testFlag(Qt::KeyboardModifier::ControlModifier) &&
|
||||
e->buttons().testFlag(Qt::MidButton))
|
||||
e->buttons().testFlag(Qt::MiddleButton))
|
||||
{
|
||||
int newValue = (int)_snapRatio + (e->angleDelta() / WHEEL_DELTA).manhattanLength();
|
||||
_snapRatio = (newValue < 5) ? 5 : newValue;
|
||||
return onMove( e->x(), e->y(), e->buttons(), e->modifiers() );
|
||||
return onMove( e->position().x(), e->position().y(), e->buttons(), e->modifiers() );
|
||||
}
|
||||
return false;
|
||||
} /* EventDispatcher::eventFilterWheel */
|
||||
@@ -266,21 +266,21 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
|
||||
if (Qt::RightButton == mouseEvent->button())
|
||||
{
|
||||
handled = onMenuPress( mouseEvent->x()
|
||||
, mouseEvent->y()
|
||||
handled = onMenuPress( mouseEvent->position().x()
|
||||
, mouseEvent->position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
}
|
||||
if (Qt::LeftButton == mouseEvent->button())
|
||||
{
|
||||
if (!(mouseEvent->modifiers().testFlag(Qt::KeyboardModifier::ControlModifier)))
|
||||
{
|
||||
handled = onPress( mouseEvent->x()
|
||||
, mouseEvent->y()
|
||||
handled = onPress( mouseEvent->position().x()
|
||||
, mouseEvent->position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
if (handled) _leftPressHandled = true;
|
||||
}
|
||||
}
|
||||
if (Qt::MidButton == mouseEvent->button())
|
||||
if (Qt::MiddleButton == mouseEvent->button())
|
||||
{
|
||||
handled = mouseEvent->modifiers().testFlag(Qt::KeyboardModifier::ControlModifier);
|
||||
}
|
||||
@@ -294,12 +294,12 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
|
||||
QTouchEvent *mouseEvent = static_cast<QTouchEvent*>(e);
|
||||
|
||||
if (mouseEvent->touchPoints().size() > 0)
|
||||
if (mouseEvent->points().size() > 0)
|
||||
{
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->touchPoints().at(0);
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->points().at(0);
|
||||
|
||||
handled = onPress( tp.pos().x()
|
||||
, tp.pos().y()
|
||||
handled = onPress( tp.position().x()
|
||||
, tp.position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
if (handled) _leftPressHandled = true;
|
||||
}
|
||||
@@ -316,8 +316,8 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
{
|
||||
if (!(mouseEvent->modifiers().testFlag(Qt::KeyboardModifier::ControlModifier)))
|
||||
{
|
||||
onDoubleClick( mouseEvent->x()
|
||||
, mouseEvent->y()
|
||||
onDoubleClick( mouseEvent->position().x()
|
||||
, mouseEvent->position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
|
||||
_doubleClickHandled = handled = true;
|
||||
@@ -334,8 +334,8 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
|
||||
if (Qt::RightButton == mouseEvent->button())
|
||||
{
|
||||
handled = onMenuClick( mouseEvent->x()
|
||||
, mouseEvent->y()
|
||||
handled = onMenuClick( mouseEvent->position().x()
|
||||
, mouseEvent->position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
}
|
||||
if (Qt::LeftButton == mouseEvent->button())
|
||||
@@ -346,14 +346,14 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
if (_leftPressHandled)
|
||||
{
|
||||
_leftPressHandled = false;
|
||||
handled = onClick( mouseEvent->x()
|
||||
, mouseEvent->y()
|
||||
handled = onClick( mouseEvent->position().x()
|
||||
, mouseEvent->position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
}
|
||||
else callEventAction( &EventActionInterface::buttonPositionAction, mouseEvent->x(), mouseEvent->y() );
|
||||
else callEventAction( &EventActionInterface::buttonPositionAction, mouseEvent->position().x(), mouseEvent->position().y() );
|
||||
}
|
||||
}
|
||||
if (Qt::MidButton == mouseEvent->button())
|
||||
if (Qt::MiddleButton == mouseEvent->button())
|
||||
{
|
||||
handled = mouseEvent->modifiers().testFlag(Qt::KeyboardModifier::ControlModifier);
|
||||
}
|
||||
@@ -369,20 +369,20 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
QTouchEvent *mouseEvent = static_cast<QTouchEvent*>(e);
|
||||
|
||||
// The mouse button press event must had be handled before. If not skip button release ...
|
||||
if (mouseEvent->touchPoints().size() > 0)
|
||||
if (mouseEvent->points().size() > 0)
|
||||
{
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->touchPoints().at(0);
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->points().at(0);
|
||||
if (_leftPressHandled)
|
||||
{
|
||||
_leftPressHandled = false;
|
||||
handled = onClick( tp.pos().x()
|
||||
, tp.pos().y()
|
||||
handled = onClick( tp.position().x()
|
||||
, tp.position().y()
|
||||
, mouseEvent->modifiers() );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
callEventAction( &EventActionInterface::buttonPositionAction, tp.pos().x(), tp.pos().y() );
|
||||
callEventAction( &EventActionInterface::buttonPositionAction, tp.position().x(), tp.position().y() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -398,7 +398,7 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
|
||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
|
||||
|
||||
if (mouseEvent->buttons() != Qt::MidButton)
|
||||
if (mouseEvent->buttons() != Qt::MiddleButton)
|
||||
{
|
||||
if (!(mouseEvent->modifiers().testFlag(Qt::KeyboardModifier::ControlModifier)))
|
||||
{
|
||||
@@ -417,8 +417,8 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
}
|
||||
}
|
||||
|
||||
handled = onMove( mouseEvent->x()
|
||||
, mouseEvent->y()
|
||||
handled = onMove( mouseEvent->position().x()
|
||||
, mouseEvent->position().y()
|
||||
, mouseEvent->buttons()
|
||||
, mouseEvent->modifiers());
|
||||
|
||||
@@ -441,12 +441,12 @@ bool EventDispatcher::eventFilter( QObject * watched, QEvent * e )
|
||||
_doubleClickHandled = false;
|
||||
|
||||
QTouchEvent* mouseEvent = static_cast<QTouchEvent*>(e);
|
||||
if (mouseEvent->touchPoints().size() > 0)
|
||||
if (mouseEvent->points().size() > 0)
|
||||
{
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->touchPoints().at(0);
|
||||
const QEventPoint tp = mouseEvent->points().at(0);
|
||||
|
||||
handled = onMove( tp.pos().x()
|
||||
, tp.pos().y()
|
||||
handled = onMove( tp.position().x()
|
||||
, tp.position().y()
|
||||
, Qt::LeftButton
|
||||
, mouseEvent->modifiers());
|
||||
}
|
||||
|
||||
+53
-82
@@ -48,6 +48,10 @@
|
||||
#include <Graphic.h>
|
||||
#include <MapGraphicsView.h>
|
||||
#include <SceneGraphicsView.h>
|
||||
#include <Point.h>
|
||||
#include <Viewpoint.h>
|
||||
#include <AttributeListModel.h>
|
||||
#include <IdentifyGraphicsOverlayResult.h>
|
||||
|
||||
|
||||
namespace SituationMap { namespace RB
|
||||
@@ -70,25 +74,7 @@ EventMouseNavigator::EventMouseNavigator(QWidget * getEventsFrom, SituationMap::
|
||||
#endif
|
||||
, _pressedMouseButton(Qt::NoButton)
|
||||
{
|
||||
// prepare identify:
|
||||
switch (_sitMap->mode())
|
||||
{
|
||||
case Mode::Mode_2D:
|
||||
connect( _sitMap->getEsriMapGraphicsView()
|
||||
, &Esri::ArcGISRuntime::MapGraphicsView::identifyGraphicsOverlaysCompleted
|
||||
, this
|
||||
, &EventMouseNavigator::onGetPickingResult );
|
||||
break;
|
||||
case Mode::Mode_3D:
|
||||
connect( _sitMap->getEsriSceneGraphicsView()
|
||||
, &Esri::ArcGISRuntime::SceneGraphicsView::identifyGraphicsOverlaysCompleted
|
||||
, this
|
||||
, &EventMouseNavigator::onGetPickingResult );
|
||||
break;
|
||||
default:
|
||||
// empty
|
||||
break;
|
||||
}
|
||||
// prepare identify: (Qt6/ArcGIS SDK v300 uses async QFuture pattern instead of signals)
|
||||
} // EventMouseNavigator::EventMouseNavigator
|
||||
|
||||
|
||||
@@ -135,7 +121,7 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
|
||||
_restoreMouseCursor = getCursorFromWidget();
|
||||
|
||||
if (Qt::MidButton == mouseEvent->button())
|
||||
if (Qt::MiddleButton == mouseEvent->button())
|
||||
{
|
||||
handled = true;
|
||||
|
||||
@@ -154,11 +140,11 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
_pressedMouseButton = Qt::MouseButton::LeftButton;
|
||||
|
||||
_mousePanningActive = false;
|
||||
if (mouseEvent->touchPoints().size() > 0)
|
||||
if (mouseEvent->points().size() > 0)
|
||||
{
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->touchPoints().at(0);
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->points().at(0);
|
||||
|
||||
_mouseMoveRefPos = tp.pos().toPoint(); // for panning
|
||||
_mouseMoveRefPos = tp.position().toPoint(); // for panning
|
||||
_restoreMouseCursor = getCursorFromWidget();
|
||||
}
|
||||
} break;
|
||||
@@ -187,7 +173,7 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
if (Rubberband::activeRubberbands(_sitMap).isEmpty())
|
||||
{
|
||||
handled = false; // pass event to esri map to click buttons
|
||||
selectionRequested(mouseEvent->localPos());
|
||||
selectionRequested(mouseEvent->position());
|
||||
// do not handled = true; because some buttons in GraphicsView needs to get the event later.
|
||||
}
|
||||
}
|
||||
@@ -198,10 +184,10 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
if (Qt::RightButton == mouseEvent->button())
|
||||
{
|
||||
handled = true;
|
||||
pickRequested( mouseEvent->localPos() );
|
||||
pickRequested( mouseEvent->position() );
|
||||
}
|
||||
|
||||
if ((Qt::MidButton == mouseEvent->button()))
|
||||
if ((Qt::MiddleButton == mouseEvent->button()))
|
||||
{
|
||||
if (!_mousePanningActiveForCenterMapMidButton)
|
||||
{
|
||||
@@ -225,9 +211,9 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
}
|
||||
}
|
||||
|
||||
if ((_mousePanningActive) || (Qt::MidButton == mouseEvent->button()))
|
||||
if ((_mousePanningActive) || (Qt::MiddleButton == mouseEvent->button()))
|
||||
{
|
||||
handled = (Qt::MidButton == mouseEvent->button());
|
||||
handled = (Qt::MiddleButton == mouseEvent->button());
|
||||
setCursorToWidget( _restoreMouseCursor );
|
||||
}
|
||||
_mousePanningActive = false;
|
||||
@@ -239,9 +225,9 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
debugString = QLatin1String("Touch button release event");
|
||||
|
||||
QTouchEvent * mouseEvent = static_cast<QTouchEvent*>(e);
|
||||
if (mouseEvent->touchPoints().size() > 0)
|
||||
if (mouseEvent->points().size() > 0)
|
||||
{
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->touchPoints().at(0);
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->points().at(0);
|
||||
|
||||
if (_cursorChanged)
|
||||
{
|
||||
@@ -253,12 +239,12 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
* The ESRI::MapView is doing panning on mouse move when left mouse button is pressed.
|
||||
* To prevent selection in this case check mouse move distance.
|
||||
*/
|
||||
if (Qt::LeftButton == _pressedMouseButton && ((tp.pos() - _mouseMoveRefPos).manhattanLength() < 3) )
|
||||
if (Qt::LeftButton == _pressedMouseButton && ((tp.position() - _mouseMoveRefPos).manhattanLength() < 3) )
|
||||
{
|
||||
if (Rubberband::activeRubberbands(_sitMap).isEmpty())
|
||||
{
|
||||
handled = false; // pass event to esri map to click buttons
|
||||
selectionRequested(tp.pos());
|
||||
selectionRequested(tp.position());
|
||||
// do not handled = true; because some buttons in GraphicsView needs to get the event later.
|
||||
}
|
||||
}
|
||||
@@ -285,7 +271,7 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
{
|
||||
handled = true;
|
||||
|
||||
if (mouseEvent->buttons().testFlag(Qt::MidButton))
|
||||
if (mouseEvent->buttons().testFlag(Qt::MiddleButton))
|
||||
{
|
||||
_mousePanningActiveForCenterMapMidButton = true;
|
||||
|
||||
@@ -328,13 +314,13 @@ bool EventMouseNavigator::eventFilter(QObject * watched, QEvent * e)
|
||||
debugString = QLatin1String("touch button move event");
|
||||
QTouchEvent *mouseEvent = static_cast<QTouchEvent*>(e);
|
||||
|
||||
if (mouseEvent->touchPoints().size() > 0)
|
||||
if (mouseEvent->points().size() > 0)
|
||||
{
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->touchPoints().at(0);
|
||||
const QTouchEvent::TouchPoint tp = mouseEvent->points().at(0);
|
||||
|
||||
if (isSignalConnected(QMetaMethod::fromSignal(&EventMouseNavigator::mouseMovedEvent)))
|
||||
{
|
||||
emit mouseMovedEvent(tp.pos().x(), tp.pos().y());
|
||||
emit mouseMovedEvent(tp.position().x(), tp.position().y());
|
||||
}
|
||||
|
||||
if (_mousePanningActive)
|
||||
@@ -546,58 +532,43 @@ void EventMouseNavigator::pickRequested( const QPointF &pos )
|
||||
|
||||
void EventMouseNavigator::requestPicking(const QPointF &pos)
|
||||
{
|
||||
_pickingTask.cancel(); // cancel old task
|
||||
|
||||
// store new task
|
||||
bool returnPopUpsOnly = false;
|
||||
int maximumResultsPerOverlay = std::numeric_limits<int>::max(); // huge number;
|
||||
_pickingTask = _sitMap->getEsriGeoView()->identifyGraphicsOverlays(pos.x(), pos.y(), _pickTolerance,
|
||||
returnPopUpsOnly, maximumResultsPerOverlay);
|
||||
//qWarning() << " XXXXXXX" << LOGFUNCTION;
|
||||
|
||||
// check new task
|
||||
if (!_pickingTask.isValid())
|
||||
// Cancel any existing picking task
|
||||
if (_pickingTask.isRunning())
|
||||
{
|
||||
_pendingRequest = RequestType::None;
|
||||
qWarning() << LOGFUNCTION << " _identfyGraphicsOverlayTask invalid";
|
||||
_pickingTask.cancel();
|
||||
}
|
||||
|
||||
// Start new async identify operation
|
||||
bool returnPopUpsOnly = false;
|
||||
int maximumResultsPerOverlay = std::numeric_limits<int>::max();
|
||||
_pickingTask = _sitMap->getEsriGeoView()->identifyGraphicsOverlaysAsync(pos, _pickTolerance,
|
||||
returnPopUpsOnly, maximumResultsPerOverlay);
|
||||
|
||||
// Handle async result with continuation
|
||||
_pickingTask.then(this, [this](const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults) {
|
||||
const QList<SituationMap::UniqueMapId> & selectedIdList = mapToUniqueMapId(identifyResults);
|
||||
|
||||
switch (_pendingRequest)
|
||||
{
|
||||
case RequestType::Picking:
|
||||
emit contextMenuRequest(selectedIdList, _viewPortPos);
|
||||
break;
|
||||
case RequestType::Selection:
|
||||
emit selectionRequest(selectedIdList, _viewPortPos);
|
||||
break;
|
||||
case RequestType::None:
|
||||
//empty
|
||||
break;
|
||||
} // switch
|
||||
|
||||
// reset some 'flags' to enable a new request:
|
||||
_pendingRequest = RequestType::None;
|
||||
_viewPortPos = QPointF(-1, -1);
|
||||
});
|
||||
|
||||
} // EventMouseNavigator::requestPicking
|
||||
|
||||
|
||||
void EventMouseNavigator::onGetPickingResult(const QUuid &taskId, const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults)
|
||||
{
|
||||
// qWarning() << " YYYYYYY" << LOGFUNCTION;
|
||||
|
||||
if (_pickingTask.taskId() != taskId)
|
||||
{
|
||||
qDebug() << " taskId does not match";
|
||||
return;
|
||||
}
|
||||
|
||||
const QList<SituationMap::UniqueMapId> & selectedIdList = mapToUniqueMapId(identifyResults);
|
||||
|
||||
// qWarning() << " _pendingRequest="<< (int)_pendingRequest << " count= " << _selectedIdList.count();
|
||||
|
||||
switch (_pendingRequest)
|
||||
{
|
||||
case RequestType::Picking:
|
||||
emit contextMenuRequest(selectedIdList, _viewPortPos);
|
||||
break;
|
||||
case RequestType::Selection:
|
||||
emit selectionRequest(selectedIdList, _viewPortPos);
|
||||
break;
|
||||
case RequestType::None:
|
||||
//emtpy
|
||||
break;
|
||||
} // switch
|
||||
|
||||
// reset some 'flags' to enable a new request:
|
||||
_pendingRequest = RequestType::None;
|
||||
_viewPortPos = QPointF(-1, -1);
|
||||
} // EventMouseNavigator::onGetPickingResult
|
||||
|
||||
|
||||
QList<UniqueMapId> EventMouseNavigator::mapToUniqueMapId(const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult *> &identifyResults)
|
||||
{
|
||||
QList<SituationMap::UniqueMapId> idList;
|
||||
|
||||
+1
-3
@@ -145,8 +145,6 @@ namespace SituationMap { namespace RB
|
||||
|
||||
protected slots:
|
||||
|
||||
void onGetPickingResult(const QUuid &taskId, const QList<::Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult *> &identifyResults );
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
@@ -195,7 +193,7 @@ namespace SituationMap { namespace RB
|
||||
|
||||
static qreal _zoomFactorBase; // Base value to calculate zoom factor values from QWheelEvent
|
||||
|
||||
QFuture<void> _pickingTask;
|
||||
QFuture<QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*>> _pickingTask;
|
||||
|
||||
/**
|
||||
test for already running picking task.
|
||||
|
||||
@@ -50,10 +50,10 @@ QGestureRecognizer::Result ApplyGestureRecognizer::recognize( QGesture * stateGe
|
||||
{
|
||||
const QTouchEvent * ev = static_cast<const QTouchEvent*>(event);
|
||||
// qDebug() << "ApplyGesture begin";
|
||||
q->_position = ev->touchPoints().at(0).pos();
|
||||
q->setHotSpot(ev->touchPoints().at(0).screenPos());
|
||||
q->_tripleTouch = (ev->touchPoints().size() == 3);
|
||||
if (ev->touchPoints().size() == 1 )
|
||||
q->_position = ev->points().at(0).position();
|
||||
q->setHotSpot(ev->points().at(0).globalPosition().toPoint());
|
||||
q->_tripleTouch = (ev->points().size() == 3);
|
||||
if (ev->points().size() == 1 )
|
||||
result = QGestureRecognizer::Ignore;
|
||||
else
|
||||
result = QGestureRecognizer::TriggerGesture;
|
||||
@@ -63,12 +63,12 @@ QGestureRecognizer::Result ApplyGestureRecognizer::recognize( QGesture * stateGe
|
||||
case QEvent::TouchEnd:
|
||||
{
|
||||
const QTouchEvent * ev = static_cast<const QTouchEvent*>(event);
|
||||
if (q->state() != Qt::NoGesture && ev->touchPoints().size() >= 1 && ev->touchPoints().size() <= 3)
|
||||
if (q->state() != Qt::NoGesture && ev->points().size() >= 1 && ev->points().size() <= 3)
|
||||
{
|
||||
if (ev->touchPoints().size() == 3) q->_tripleTouch = true;
|
||||
if (ev->points().size() == 3) q->_tripleTouch = true;
|
||||
// qDebug() << "ApplyGesture update _tripleTouch=" << q->_tripleTouch;
|
||||
QTouchEvent::TouchPoint p = ev->touchPoints().at(0);
|
||||
QPoint delta = p.pos().toPoint() - p.startPos().toPoint();
|
||||
QEventPoint p = ev->points().at(0);
|
||||
QPoint delta = p.position().toPoint() - p.pressPosition().toPoint();
|
||||
enum { TapRadius = 40 };
|
||||
if (delta.manhattanLength() <= TapRadius)
|
||||
{
|
||||
|
||||
+1
@@ -43,6 +43,7 @@
|
||||
|
||||
#include <Map.h>
|
||||
#include <MapGraphicsView.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
|
||||
namespace SituationMap { namespace RB
|
||||
|
||||
+3
-5
@@ -30,20 +30,18 @@
|
||||
|
||||
|
||||
#include <QtCore/QObject>
|
||||
#include <QtCore/QPointer>
|
||||
|
||||
#include <QtGui/QColor>
|
||||
|
||||
#include <QtWidgets/QGraphicsScene>
|
||||
|
||||
#include <MapGraphicsView.h>
|
||||
#include <Point.h>
|
||||
|
||||
#include <Common/referenced.h>
|
||||
#include <Common/situation_map_logging.h>
|
||||
|
||||
|
||||
class QGraphicsScene;
|
||||
|
||||
namespace Esri { namespace ArcGISRuntime { class MapGraphicsView; } }
|
||||
|
||||
namespace SituationMap { namespace RB
|
||||
{
|
||||
|
||||
|
||||
+1
@@ -32,6 +32,7 @@
|
||||
|
||||
#include <MapGraphicsView.h>
|
||||
#include <Map.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
#include <QtWidgets/QGraphicsScene>
|
||||
#include <QtWidgets/QGraphicsEllipseItem>
|
||||
|
||||
+1
@@ -33,6 +33,7 @@
|
||||
|
||||
#include <Map.h>
|
||||
#include <MapGraphicsView.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
#include <QtWidgets/QGraphicsScene>
|
||||
|
||||
|
||||
+99
-116
@@ -49,6 +49,8 @@
|
||||
#include <QtGui/QGuiApplication>
|
||||
|
||||
#include <IdentifyGraphicsOverlayResult.h>
|
||||
#include <AttributeListModel.h>
|
||||
#include <Graphic.h>
|
||||
|
||||
namespace SituationMap { namespace RB
|
||||
{
|
||||
@@ -64,8 +66,8 @@ namespace SituationMap { namespace RB
|
||||
|
||||
int m_currentIndex;
|
||||
int m_selectionIndex;
|
||||
QFuture<void> m_pickingTask;
|
||||
QFuture<void> m_selectionTask;
|
||||
QFuture<void> m_pickingTask;
|
||||
QFuture<void> m_selectionTask;
|
||||
QPoint m_pickingPoint;
|
||||
QPointF * m_startMove;
|
||||
ScreenToLocationHelper * m_screenToMap;
|
||||
@@ -106,19 +108,18 @@ namespace SituationMap { namespace RB
|
||||
|
||||
|
||||
RubberbandMultiPointFeature3D::RubberbandMultiPointFeature3D( SituationMap::Map * map, QObject * parent, bool isActive )
|
||||
: Rubberband3D(map,parent,isActive)
|
||||
, _internal( new RubberbandMultiPointFeature3D::InternalData() )
|
||||
, _isClosed(false)
|
||||
, _isCircular(false)
|
||||
{
|
||||
MapImpl *mapImpl = static_cast<MapImpl*>(_baseInternal->_map.data());
|
||||
Esri::ArcGISRuntime::SceneGraphicsView *view = mapImpl->getEsriSceneGraphicsView();
|
||||
: Rubberband3D(map,parent,isActive)
|
||||
, _internal( new RubberbandMultiPointFeature3D::InternalData() )
|
||||
, _isClosed(false)
|
||||
, _isCircular(false)
|
||||
{
|
||||
MapImpl *mapImpl = static_cast<MapImpl*>(_baseInternal->_map.data());
|
||||
Esri::ArcGISRuntime::SceneGraphicsView *view = mapImpl->getEsriSceneGraphicsView();
|
||||
|
||||
connect( view, &Esri::ArcGISRuntime::SceneGraphicsView::identifyGraphicsOverlaysCompleted, this, &RubberbandMultiPointFeature3D::onGetPickingResult );
|
||||
_internal->m_screenToMap = new ScreenToLocationHelper(view);
|
||||
connect( _internal->m_screenToMap, &ScreenToLocationHelper::mouseScenePositionChanged, this, &RubberbandMultiPointFeature3D::onMapPosition ); // ToDO
|
||||
_internal->m_screenToMap = new ScreenToLocationHelper(view);
|
||||
connect( _internal->m_screenToMap, &ScreenToLocationHelper::mouseScenePositionChanged, this, &RubberbandMultiPointFeature3D::onMapPosition ); // ToDo
|
||||
|
||||
} // RubberbandMultiPointFeature3D::RubberbandMultiPointFeature3D( SituationMap::Map * map, QObject * parent = nullptr, bool isActive )
|
||||
} // RubberbandMultiPointFeature3D::RubberbandMultiPointFeature3D( SituationMap::Map * map, QObject * parent = nullptr, bool isActive )
|
||||
|
||||
|
||||
RubberbandMultiPointFeature3D::~RubberbandMultiPointFeature3D()
|
||||
@@ -348,96 +349,6 @@ namespace SituationMap { namespace RB
|
||||
} // void RubberbandMultiPointFeature3D::onMapPosition(const QPointF &mapCoordinate)
|
||||
|
||||
|
||||
void RubberbandMultiPointFeature3D::onGetPickingResult(const QUuid &taskId, const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults)
|
||||
{
|
||||
if (_internal->m_pickingTask.taskId() == taskId)
|
||||
{
|
||||
for (auto iResult : identifyResults)
|
||||
{
|
||||
const QList<Esri::ArcGISRuntime::Graphic*> &gResults = iResult->graphics();
|
||||
for (auto pickedGraphic : gResults)
|
||||
{
|
||||
if (pickedGraphic->attributes())
|
||||
{
|
||||
bool ok = false;
|
||||
int pickedIndex = pickedGraphic->attributes()->attributeValue(QStringLiteral("Rubberband3D-Item")).toInt(&ok);
|
||||
|
||||
if (ok)
|
||||
{
|
||||
qCritical() << "Picking index " << pickedIndex;
|
||||
_internal->m_currentIndex = pickedIndex;
|
||||
_internal->m_screenToMap->screenToLocation(_internal->m_pickingPoint.x(), _internal->m_pickingPoint.y());
|
||||
|
||||
if (pickedIndex < _internal->m_marker.size())
|
||||
{
|
||||
GraphicalObjectPictureMarker *&marker = _internal->m_marker[pickedIndex];
|
||||
|
||||
if (marker)
|
||||
{
|
||||
marker->setImage(markerSelectionImage());
|
||||
marker->updateView();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
} // foreach pickedGraphic
|
||||
} // foreach iResult
|
||||
|
||||
if ((!_isCircular) || (_internal->m_coordinates.size() < 2))
|
||||
{
|
||||
// add new coordinate and calculate map location
|
||||
_internal->m_currentIndex = _internal->m_marker.size();
|
||||
_internal->m_marker << nullptr;
|
||||
_internal->m_coordinates << QPointF();
|
||||
|
||||
_internal->m_screenToMap->screenToLocation(_internal->m_pickingPoint.x(), _internal->m_pickingPoint.y());
|
||||
}
|
||||
}
|
||||
|
||||
if (_internal->m_selectionTask.taskId() == taskId)
|
||||
{
|
||||
for (auto iResult : identifyResults)
|
||||
{
|
||||
const QList<Esri::ArcGISRuntime::Graphic*> &gResults = iResult->graphics();
|
||||
for (auto pickedGraphic : gResults)
|
||||
{
|
||||
if (pickedGraphic->attributes())
|
||||
{
|
||||
bool ok = false;
|
||||
int pickedIndex = pickedGraphic->attributes()->attributeValue(QStringLiteral("Rubberband3D-Item")).toInt(&ok);
|
||||
|
||||
if ((ok) && (pickedIndex < _internal->m_marker.size()))
|
||||
{
|
||||
GraphicalObjectPictureMarker *&marker = _internal->m_marker[pickedIndex];
|
||||
|
||||
if (marker)
|
||||
{
|
||||
_internal->m_selectionIndex = pickedIndex;
|
||||
marker->setImage(markerSelectionImage());
|
||||
marker->updateView();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((_internal->m_selectionIndex >= 0) && (_internal->m_selectionIndex < _internal->m_marker.size()))
|
||||
{
|
||||
GraphicalObjectPictureMarker *&marker = _internal->m_marker[_internal->m_selectionIndex];
|
||||
|
||||
if (marker)
|
||||
{
|
||||
marker->setImage(markerImage());
|
||||
marker->updateView();
|
||||
}
|
||||
_internal->m_selectionIndex = -1;
|
||||
}
|
||||
} // void RubberbandMultiPointFeature3D::onGetPickingResult(const QUuid &taskId, const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults)
|
||||
|
||||
|
||||
bool RubberbandMultiPointFeature3D::selectAction(AbstractEventDispatcher *, int x, int y)
|
||||
{
|
||||
delete _internal->m_startMove;
|
||||
@@ -451,9 +362,55 @@ namespace SituationMap { namespace RB
|
||||
|
||||
_internal->m_pickingTask.cancel(); // cancel old task
|
||||
_internal->m_pickingPoint = QPoint(x,y);
|
||||
_internal->m_pickingTask = mapImpl->getEsriGeoView()->identifyGraphicsOverlays(x,y,EventMouseNavigator::pickTolerance(),false,std::numeric_limits<int>::max());
|
||||
_internal->m_currentIndex = -1;
|
||||
|
||||
_internal->m_pickingTask = mapImpl->getEsriGeoView()->identifyGraphicsOverlaysAsync(QPointF(x,y),EventMouseNavigator::pickTolerance(),false,std::numeric_limits<int>::max())
|
||||
.then(this, [this](const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults)
|
||||
{
|
||||
for (auto iResult : identifyResults)
|
||||
{
|
||||
const QList<Esri::ArcGISRuntime::Graphic*> &gResults = iResult->graphics();
|
||||
for (auto pickedGraphic : gResults)
|
||||
{
|
||||
if (pickedGraphic->attributes())
|
||||
{
|
||||
bool ok = false;
|
||||
int pickedIndex = pickedGraphic->attributes()->attributeValue(QStringLiteral("Rubberband3D-Item")).toInt(&ok);
|
||||
|
||||
if (ok)
|
||||
{
|
||||
qCritical() << "Picking index " << pickedIndex;
|
||||
_internal->m_currentIndex = pickedIndex;
|
||||
_internal->m_screenToMap->screenToLocation(_internal->m_pickingPoint.x(), _internal->m_pickingPoint.y());
|
||||
|
||||
if (pickedIndex < _internal->m_marker.size())
|
||||
{
|
||||
GraphicalObjectPictureMarker *&marker = _internal->m_marker[pickedIndex];
|
||||
|
||||
if (marker)
|
||||
{
|
||||
marker->setImage(markerSelectionImage());
|
||||
marker->updateView();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
} // foreach pickedGraphic
|
||||
} // foreach iResult
|
||||
|
||||
if ((!_isCircular) || (_internal->m_coordinates.size() < 2))
|
||||
{
|
||||
// add new coordinate and calculate map location
|
||||
_internal->m_currentIndex = _internal->m_marker.size();
|
||||
_internal->m_marker << nullptr;
|
||||
_internal->m_coordinates << QPointF();
|
||||
|
||||
_internal->m_screenToMap->screenToLocation(_internal->m_pickingPoint.x(), _internal->m_pickingPoint.y());
|
||||
}
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -510,19 +467,45 @@ namespace SituationMap { namespace RB
|
||||
MapImpl *mapImpl = static_cast<MapImpl*>(_baseInternal->_map.data());
|
||||
|
||||
_internal->m_selectionTask.cancel(); // cancel old task
|
||||
_internal->m_selectionTask = mapImpl->getEsriGeoView()->identifyGraphicsOverlays(x,y,EventMouseNavigator::pickTolerance(),false,std::numeric_limits<int>::max());
|
||||
|
||||
if ((_internal->m_selectionIndex >= 0) && (_internal->m_selectionIndex < _internal->m_marker.size()))
|
||||
{
|
||||
GraphicalObjectPictureMarker *&marker = _internal->m_marker[_internal->m_selectionIndex];
|
||||
|
||||
if (marker)
|
||||
{
|
||||
marker->setImage(markerImage());
|
||||
marker->updateView();
|
||||
}
|
||||
}
|
||||
_internal->m_pickingPoint = QPoint(x,y);
|
||||
_internal->m_selectionIndex = -1;
|
||||
|
||||
_internal->m_selectionTask = mapImpl->getEsriGeoView()->identifyGraphicsOverlaysAsync(QPointF(x,y),EventMouseNavigator::pickTolerance(),false,std::numeric_limits<int>::max())
|
||||
.then(this, [this](const QList<Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults)
|
||||
{
|
||||
for (auto iResult : identifyResults)
|
||||
{
|
||||
const QList<Esri::ArcGISRuntime::Graphic*> &gResults = iResult->graphics();
|
||||
for (auto pickedGraphic : gResults)
|
||||
{
|
||||
if (pickedGraphic->attributes())
|
||||
{
|
||||
bool ok = false;
|
||||
int pickedIndex = pickedGraphic->attributes()->attributeValue(QStringLiteral("Rubberband3D-Item")).toInt(&ok);
|
||||
|
||||
if (ok)
|
||||
{
|
||||
qCritical() << "Picking index " << pickedIndex;
|
||||
_internal->m_selectionIndex = pickedIndex;
|
||||
_internal->m_screenToMap->screenToLocation(_internal->m_pickingPoint.x(), _internal->m_pickingPoint.y());
|
||||
|
||||
if (pickedIndex < _internal->m_marker.size())
|
||||
{
|
||||
GraphicalObjectPictureMarker *&marker = _internal->m_marker[pickedIndex];
|
||||
|
||||
if (marker)
|
||||
{
|
||||
marker->setImage(markerSelectionImage());
|
||||
marker->updateView();
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
} // foreach pickedGraphic
|
||||
} // foreach iResult
|
||||
});
|
||||
}
|
||||
return false;
|
||||
} // bool RubberbandMultiPointFeature3D::moveAction(AbstractEventDispatcher*,int,int)
|
||||
|
||||
-1
@@ -120,7 +120,6 @@ namespace SituationMap { namespace RB
|
||||
|
||||
protected slots:
|
||||
|
||||
void onGetPickingResult(const QUuid &taskId, const QList<::Esri::ArcGISRuntime::IdentifyGraphicsOverlayResult*> &identifyResults);
|
||||
void onMapPosition( const Point3D &mapCoordinate );
|
||||
|
||||
}; /* RubberbandMultiPointFeature3D */
|
||||
|
||||
+1
@@ -36,6 +36,7 @@
|
||||
|
||||
#include <Map.h>
|
||||
#include <MapGraphicsView.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
|
||||
namespace SituationMap { namespace RB
|
||||
|
||||
+1
@@ -35,6 +35,7 @@
|
||||
#include <cmath>
|
||||
|
||||
#include <Map.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
|
||||
|
||||
|
||||
+1
@@ -42,6 +42,7 @@
|
||||
|
||||
#include <Map.h>
|
||||
#include <MapGraphicsView.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
#include <QtCore/QLine>
|
||||
|
||||
|
||||
+1
@@ -39,6 +39,7 @@
|
||||
|
||||
#include <Map.h>
|
||||
#include <MapGraphicsView.h>
|
||||
#include <SpatialReference.h>
|
||||
|
||||
#include <QtGui/QCursor>
|
||||
#include <QtWidgets/QPushButton>
|
||||
|
||||
+5
-5
@@ -125,9 +125,9 @@ namespace SituationMap { namespace RB
|
||||
}
|
||||
}
|
||||
|
||||
if (Qt::MidButton == mouseEvent->button())
|
||||
if (Qt::MiddleButton == mouseEvent->button())
|
||||
{
|
||||
handled = (Qt::MidButton == mouseEvent->button());
|
||||
handled = (Qt::MiddleButton == mouseEvent->button());
|
||||
|
||||
_mousePanningActive = true;
|
||||
setCursorToWidget( QCursor(Qt::CursorShape::ClosedHandCursor) );
|
||||
@@ -161,9 +161,9 @@ namespace SituationMap { namespace RB
|
||||
pickRequested( mouseEvent->pos() );
|
||||
}
|
||||
|
||||
if ((_mousePanningActive) || (Qt::MidButton == mouseEvent->button()))
|
||||
if ((_mousePanningActive) || (Qt::MiddleButton == mouseEvent->button()))
|
||||
{
|
||||
handled = (Qt::MidButton == mouseEvent->button());
|
||||
handled = (Qt::MiddleButton == mouseEvent->button());
|
||||
setCursorToWidget( _restoreMouseCursor );
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ namespace SituationMap { namespace RB
|
||||
}
|
||||
}
|
||||
|
||||
if ((_mousePanningActive) || mouseEvent->buttons().testFlag(Qt::MidButton))
|
||||
if ((_mousePanningActive) || mouseEvent->buttons().testFlag(Qt::MiddleButton))
|
||||
{
|
||||
handled = true;
|
||||
EsriRuntimeQt::AnimationMode mode = _esriMap->animationMode();
|
||||
|
||||
+7
-7
@@ -50,21 +50,21 @@ namespace SituationMap { namespace RB {
|
||||
case QEvent::TouchBegin:
|
||||
{
|
||||
qDebug() << "ApplyGesture begin";
|
||||
q->_position = ev->touchPoints().at(0).pos();
|
||||
q->setHotSpot(ev->touchPoints().at(0).screenPos());
|
||||
q->_tripleTouch = (ev->touchPoints().size() == 3);
|
||||
q->_position = ev->points().at(0).position();
|
||||
q->setHotSpot(ev->points().at(0).globalPosition().toPoint());
|
||||
q->_tripleTouch = (ev->points().size() == 3);
|
||||
result = QGestureRecognizer::TriggerGesture;
|
||||
} break;
|
||||
|
||||
case QEvent::TouchUpdate:
|
||||
case QEvent::TouchEnd:
|
||||
{
|
||||
if (q->state() != Qt::NoGesture && ev->touchPoints().size() >= 1 && ev->touchPoints().size() <= 3)
|
||||
if (q->state() != Qt::NoGesture && ev->points().size() >= 1 && ev->points().size() <= 3)
|
||||
{
|
||||
if (ev->touchPoints().size() == 3) q->_tripleTouch = true;
|
||||
if (ev->points().size() == 3) q->_tripleTouch = true;
|
||||
qDebug() << "ApplyGesture update _tripleTouch=" << q->_tripleTouch;
|
||||
QTouchEvent::TouchPoint p = ev->touchPoints().at(0);
|
||||
QPoint delta = p.pos().toPoint() - p.startPos().toPoint();
|
||||
QEventPoint p = ev->points().at(0);
|
||||
QPoint delta = p.position().toPoint() - p.pressPosition().toPoint();
|
||||
enum { TapRadius = 40 };
|
||||
if (delta.manhattanLength() <= TapRadius)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user