Continue the Qt5->Qt6 migration so the LTS Projects (Group 10) and LTS
Application (Group 11) compile, link, and ctest runs.
Qt5->Qt6 API migration (resolves removed/deprecated Qt6 APIs) across Lts
Tools and Apps, e.g. QAction->QActionGroup, QAbstractSocket::errorOccurred,
Qt::SkipEmptyParts, QRandomGenerator, QInputDevice::DeviceType,
QRegularExpression, QLatin1Literal->QStringLiteral, and the SampleModel
m_description->description rename.
CMake build fixes:
- CMakeLists.txt: add Lts/Common to CMAKE_AUTOMOC_INCLUDE_DIRECTORIES so moc
resolves Q_INTERFACES(ProjectPlugin::Plugin) for the migrated Projects.
- cmake/NGLMacros.cmake: NGL_COMPILE_RESOURCES - replace return() (which aborts
the calling CMakeLists.txt) with an if/else/endif.
- OpApp/THP: guard the ArcGISQt5Hack link with $<IF:$<TARGET_EXISTS:...>> (the
target is absent when the SituationMap viewer is stubbed); matches
CentralEffectSimulation.
- LtsSession: prefer the in-tree svcCoreClient target over a FIND_LIBRARY in
/usr/local/lib.
- CnrProxyTester/DotMatrixDisplay: set AUTOUIC_SEARCH_PATHS for the ui/ subdir.
- TopicDiscover: link NGLLogger.
Export-header visibility stubs (expand the empty *_EXPORT macro to
__attribute__((visibility("default"))); the build sets -fvisibility=hidden and
these stubs shadow the CMake-generated header):
- include/LtsProjectionWorkstation/ltsprojectionworkstation_export.h (fixes
undefined reference to LtsProjectionWorkstation::getInstance /
setProjectionOperatorPreset)
- include/LtsSession/ltssession_export.h, include/LtsUtilsGuiDds/ltsutilsguidds_export.h (same pattern)
New plugin modules (copied from legacy) so LtsAppDescriptorChecker finds the
gui:3 IIDs referenced by the Projects' apps.json:
- TakeHomePackageManager/OldTHP gui:3:tpm.man, gui:3:tpm.usb
- PresentationManagement/.../ScriptEditor gui:3:pre.script.edit
- Timeline/Gui/EventTimelineClassic gui:3:tln.view
new_docker_build.sh: correct group targets to the actual CMake target names,
guard LtsReportDisplay on BUILD_CODIFICATION, and skip modules unavailable in
the prebuilt image (AsmWorkstationCertifier/botan2, TrajectoryWidget,
VideoImport, thp_viewer/VLC).
- Replace all Qt5:: target references with Qt6:: in 26 CMakeLists.txt files
- Add missing participant_info_gui_element_interface.h to ParticipantManagement plugin
Qt6 migration: All CMake target_link_libraries now use Qt6::Core, Qt6::Widgets,
Qt6::Network instead of Qt5:: equivalents.
Validated with BUILD_RTI=ON and BUILD_RTI=OFF - both builds successful.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Plugin Interface Header für FileManagement Data Plugin
- Benötigt für LtsFileDialog Build (BUILD_RTI=OFF)
- Vom Qt5-Quellcode kopiert und angepasst
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- avm_mvs_video_team_gui_plugin.cpp: QApplication::desktop() → QGuiApplication::primaryScreen()
- LogViewTelegramDialog.cpp: QApplication::desktop() → QGuiApplication::primaryScreen()
- Added QGuiApplication includes where needed
- Removed duplicate QScreen include
This completes the QDesktopWidget API migration across all modules.
QApplication::desktop() is deprecated in Qt5 and removed in Qt6.
Replacement: QGuiApplication::primaryScreen()->geometry() or availableGeometry().
Refs: Qt6 migration, C++17 constraint due to RTI Connext DDS 7.7.0 incompatibility
TrainingAreaBase:
- Add BUILD_RTI guards to dds_handler.cpp (entire file)
- Add BUILD_RTI guards to recv_from_dds_aes.h for tab_db.h include
- Add BUILD_RTI guards to main_handler.h for tab_db.h include
- Remove duplicate m_logger declaration in main_handler.h
- Add stub headers for RTI types (tab_db_stub.hpp, tab_enums_stub.hpp, etc.)
VideoOverlayManagement:
- Fix member initialization order in handler_overlays.h
- Fix member initialization order in avs_interface.h
- Fix member initialization order in main_handler.h
- Change logger.cpp include from NGLLogger.h to INGLLogger.h
- Add BUILD_RTI guard to handler_overlays.cpp for RTI signal connection
Plugins:
- Migrate QDesktopWidget → QScreen in Light/Dark style plugins
- Fix CMakeLists.txt for SituationReplayManagement (BUILD_RTI guards)
- Fix CMakeLists.txt for CombatNetRadio (Qt6::Core linking)
- Remove QDesktopWidget includes in multiple plugin files
Infrastructure:
- Remove duplicate INGLLogger.h include directory
- Add stub headers for ProjectDataManagement (pdm.hpp, etc.)
- Add stub headers for RoutingServiceNG
BUILD_RTI=OFF build now compiles successfully (1112 targets).
- Add missing m_logger member declarations to GenericDataWriter,
GenericDataReader, GenericDtcImplSubscriberTemplate
- Add DynamicDataImpl.hpp include for complete type in publisher.h/cpp
- Wrap dds_connector.cpp implementation in #if BUILD_RTI guards
- Fix stub signatures in dds_connector.h to match implementation
- Set CMAKE_CXX_STANDARD to 17 (RTI 7.7.0 hard requirement)
RTI Connext DDS 7.7.0 only supports C++14/C++17. C++20/23 causes
header compilation errors. Cannot mix C++ variants.
Remaining Qt6 issues (separate from RTI work):
- QJsonDocument::toBinaryData/fromBinaryData → toJson/fromJson
- QJsonObject initializer list syntax in training_area_telegrams.cpp
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- SVCALMCOMMON_EXPORT in logger.h verwendet (statt ALM_COMMON_EXPORT)
- Include für alm_types.h in alm_config_alarm_model.h hinzugefügt
- Include für data_modification_enum.h in allen AlarmManagement-Modellen hinzugefügt
- DataModification → Lts::DataModification in allen Gui-Modellen korrigiert
- GuezNasat gna_dtc.h: Include für data_modification_enum.h hinzugefügt
- gna_nasat_aircraft_model.h/.cpp: Include-Pfad zu <GuezNasat/logger.h>
korrigiert, Logger-Initialisierung auf GuezNasat::getLogger() umgestellt
- gna_nasat_aircraft_part_model.h/.cpp: Methodensignaturen von
ParticipantManagement::DataModification zu globalem DataModification
geändert für konsistente Type-Verwendung
- gna_dtc.h: Include-Pfad für logger.h korrigiert
- gna_nasat_aircraft.h: Member-Variablen zu Getter-Methoden geändert
- CMakeLists.txt: Include-Verzeichnis für GuezNasat-Modul hinzugefügt
Alle Callback-Lambdas verwenden jetzt das globale DataModification-Enum
aus LtsUtilsCore statt dem veralteten ParticipantManagement-Namespace.
- cmake/FindRTI.cmake: Add INTERFACE placeholder targets when RTI not found
- cmake/FindRTI.cmake: Force BUILD_RTI=OFF when RTI not installed
- Lts/Common/LtsSession/CMakeLists.txt: Make LtsSessionDataDds conditional on BUILD_RTI
- Lts/Viewer/CMakeLists.txt: Make LtsDataView conditional on BUILD_RTI
- Lts/Plugins/*/CMakeLists.txt: 97 plugin files wrapped in BUILD_RTI conditionals
- cmake/NGLMacros.cmake: Fix NGL_ADD_BIG_RESOURCES macro (removed premature return())
- Multiple Qt6 API fixes: QLinkedList→std::list, QStringRef→QStringView, etc.
- BUILD_RTI_FIXES_SUMMARY.md: Comprehensive documentation of all fixes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- TopicEditorBase hängt von LtsScriptTimeline ab (nur mit BUILD_RTI)
- AreaEffectSimulation hängt von svcAesCommon ab (RTI-generierte Dateien)
- Beide Module werden nur mit BUILD_RTI=ON gebaut
- Vermeidet Build-Fehler wenn RTI nicht installiert ist