Files
qt-migration-legatus/qt5-before/dlbo/Lts/Common/LtsWidgets/lts_drop_handler.h
T
torstenandCopilot 7173785915 Qt6 Migration: Complete migration with DDS/RTI support and build validation
Major Changes:
- Merged latest Qt5 devel content from dlbo (292 files changed, 7 new dirs)
- Consolidated forward-declarations and include folders
- Removed unneeded modules per Niklas' repo check list

Build System Fixes:
- Fixed CMake VERSION_GREATER syntax in ParticipantManagement/CMakeLists.txt
- Added VLC packages (libvlc-dev, vlc-plugin-base) to docker_build.sh
- Added PostgreSQL dev packages (libpq-dev, postgresql-server-dev-all) to Dockerfile
- Fixed locale warnings (ANSI_X3.4-1968 → C.UTF-8)
- Fixed ArcGIS SDK path warnings when BUILD_ARCGIS=OFF

Code Generation Fixes:
- Fixed IDL enum collisions (PortType→CorePortType/DdsutPortType, PdmEventType)
- Fixed Grantlee template svc_translation.cpp.grantlee:
  - Changed {{ idl_enum.name }}_def:: to {{ idl_enum.name }}::
  - Fixed .underlying() calls for C++11 scoped enums (enum class)
- Removed generated files from repo (moc_*, *_dtc.h, *_ftc.h)

Validation:
- BUILD_RTI=ON: SUCCESS
- BUILD_RTI=OFF: SUCCESS
- C++17 standard maintained for RTI 7.7 compatibility
- Ubuntu 26.04 Docker environment verified

Remaining Warnings (expected):
- BgViewer, KDChart, KDReports, Poppler-Qt6 not found (optional features)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-15 18:20:26 +00:00

142 lines
4.9 KiB
Objective-C

/**
**
** @RDE_HEADER@
** Virtual base class of a simple drop handler.
** $Id$
** $HeadURL$
** $Author$
**
** -----------------------------------------------------------------------------------------------
**
** Hardware-Environment: Intel-PC
** Software-Environment: Windows 7, Linux, Qt 5.4. ArcGIS 10.2.5
**
** Language ........: C++ 11
**
** -----------------------------------------------------------------------------------------------
**
** Author ...........: Jörg Turla, SPD G, Tel. 3132
**
** -----------------------------------------------------------------------------------------------
**
** Notes .........:
**
** 18.12.2015, JT : First edition for use with Qt5
**
** -----------------------------------------------------------------------------------------------
*/
#pragma once
class QMimeData;
namespace LtsWidgets
{
/**
@class LtsDropHandler pdrophandler.h
@brief Interface class to handle drop events of special mime data type.
@see SituationMap::Map, SituationMap::DropEventManager
The LtsDropHandler class is an interface class to handle drop event for one type of mime data. It is used from DropEventManager to process drop events.
The DropEventManager will call the doDrop function to process events. The doDrop fuction has to be implemented in derived class.
Following example shows how to implement a drop handler.
@code
#include <pwidgets/pdrophandler.h>
class DropCreatePolyLine : public LtsWidgets::LtsDropHandler
{
PlanEditor * m_planEditor;
PlanEditor::InternalData * m_planEditorInternal;
bool m_smooth;
public:
DropCreatePolyLine( PlanEditor * planEditor
, PlanEditor::InternalData * planEditorInternal
, bool smooth = false )
: LtsWidgets::LtsDropHandler()
, m_planEditor(planEditor)
, m_planEditorInternal(planEditorInternal)
, m_smooth(smooth) {;}
virtual ~DropCreatePolyLine() = default;
void doDrop( int x, int y, const QMimeData * mimeData = nullptr) const override;
}; // DropCreatePolyLine
void PlanEditor::installLineDropHandler( LtsWidgets::LtsDragIcon * dragIcon )
{
qulonglong key = m_dropEventManager->add(new DropCreatePolyLine(this,m_internal));
dragIcon->setDropHandlerKey( key );
} // PlanEditor::installLineDropHandler( LtsWidgets::LtsDragIcon * dragIcon )
void DropCreatePolyLine::doDrop( int x, int y, const QMimeData * mimeData ) const
{
SituationMap::Map * map;
SituationMap::RB::RubberbandMultiPointFeature * rubberband;
SituationMap::RB::RubberbandFactory & rbFactory;
map = m_planEditorInternal->m_map;
rbFactory = map->rubberbandFactory();
if (m_smooth) rubberband = rbFactory.create<SituationMap::RB::RubberbandSmoothLine>();
else rubberband = rbFactory.create<SituationMap::RB::RubberbandMultiPointFeature>();
if (rubberband != nullptr)
{
rubberband -> setAutoDelete( true );
rubberband -> enableClosed( false );
uint dx = map->width() * 0.25;
uint dy = map->height() * 0.25;
QVector<QPointF> lineCoordinates;
lineCoordinates += map->viewPortWindowPointToGeoCoordinate(QPoint(x-dx,y-dy));
lineCoordinates += map->viewPortWindowPointToGeoCoordinate(QPoint(x+dx,y+dy));
rubberband->setCoordinateVector( lineCoordinates );
QObject::connect( rubberband , &SituationMap::RB::Rubberband::apply
, m_planEditor, &PlanEditor::onPolylineCreate );
QObject::connect( rubberband , &SituationMap::RB::Rubberband::abort
, m_planEditor, &PlanEditor::onRubberbandAbort );
} // DropCreatePolyLine::doDrop( int x, int y )
} // DropCreatePolyLine::doDrop( int x, int y ) const
@endcode
*/
class LtsDropHandler
{
public:
LtsDropHandler() = default;
virtual ~LtsDropHandler() = default;
LtsDropHandler( const LtsDropHandler & ) = delete;
LtsDropHandler & operator = ( const LtsDropHandler & ) = delete;
/**
Function to process drop events.
@param x x coordinate of cursor position referred to widget pixel coordinates.
@param y y coordinate of cursor position referred to widget pixel coordinates.
@param mimeData Pointer to data to be dropped.
*/
virtual void doDrop( int x, int y, const QMimeData * mimeData ) const = 0;
}; // class LtsDropHandler
} // namespace LtsWidgets