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>
This commit is contained in:
torstenandCopilot committed 2026-09-15 18:20:26 +00:00
1 parent f23384bb68
commit 7173785915
18662 files changed
+4115092 -5435

No files matched your search

@@ -0,0 +1,28 @@
#
# CMakeLists.txt for File Dialog
#
# $Id$
# $HeadURL$
# $Author$
# Created by Iuliana Ojog, SLSE, 2017-07-12
#
FIND_PACKAGE(KDReports REQUIRED)
SET(ltsReportDisplay_SRCS
lts_report_display_widget.h
lts_report_display_widget.cpp
)
NGL_ADD_LIBRARY2(WS LtsReportDisplay SHARED ${ltsReportDisplay_SRCS})
NGL_TARGET_LINK_LIBRARIES(LtsReportDisplay
PRIVATE
LtsWidgets
PUBLIC
Qt5::Widgets
KDReports::KDReports
)
NGL_TARGET_INCLUDE_DIRECTORIES(LtsReportDisplay
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../
)
@@ -0,0 +1,96 @@
/**
* @RDE_HEADER@
* Shows a report of combat power in form of curves
* $Id$
* $HeadURL$
* $Author$
*/
#include "lts_report_display_widget.h"
#include <QResizeEvent>
#include <QPainter>
#include <QPaintEvent>
#include <QTimer>
// Taken from KDReportsLayoutHelper.cpp START
// (WebCMS-TES-UAE-RP 2953 Falsche Positionierung im AAR)
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT extern int qt_defaultDpi(); // This is what QTextDocument uses...
QT_END_NAMESPACE
// Taken from KDReportsLayoutHelper.cpp END
namespace LtsWidgets
{
LtsReportDisplayWidget::LtsReportDisplayWidget(QWidget *parent)
: QWidget(parent)
{
// setAttribute(Qt::WA_OpaquePaintEvent);
// minimale Breite, danach sollte die ScrollArea einen horizontalen Scrollbar darstellen
setMinimumWidth(400);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
}
void LtsReportDisplayWidget::setReport(KDReports::Report *report)
{
m_report = report;
update();
}
void LtsReportDisplayWidget::paintEvent(QPaintEvent *event)
{
if (!m_report)
{
QWidget::paintEvent(event);
return;
}
if (m_pixmap.size() != size())
{
QImage img(size(), QImage::Format_ARGB32);
QPainter p(&img);
p.fillRect(rect(), Qt::white);
m_report->paintPage(0, p);
p.end();
m_pixmap = QPixmap::fromImage(img);
}
QPainter p(this);
p.drawPixmap(0, 0, m_pixmap);
p.end();
}
void LtsReportDisplayWidget::resizeEvent(QResizeEvent *event)
{
QWidget::resizeEvent(event);
if (!m_report)
return;
qreal withPixel = size().width();
// qreal withMM = withPixel / physicalDpiX() * 25.4;
qreal withMM = withPixel / qt_defaultDpi() * 25.4;
m_report->setWidthForEndlessPrinter(withMM);
if (!m_bNewMinSizeSlotCalled)
{
m_bNewMinSizeSlotCalled = true;
QTimer::singleShot(10, this, &LtsReportDisplayWidget::setNewMinimumSize);
}
}
void LtsReportDisplayWidget::setNewMinimumSize()
{
m_bNewMinSizeSlotCalled = false;
if (!m_report)
return;
// die neue minimale Höhe festlegen um ggf. einen vertikalen Scrollbar anzuzeigen
QSize newSize = m_report->paperSize().toSize();
// DEBUG_LOG(m_logger) << "old min height: " << minimumHeight() << " - new min height: " << newSize.height() << END_LOG;
// Zur Erklärung: es kann passieren, dass die ScrollArea entscheidet, dass der vertikale Scrollbar jetzt nicht mehr nötig ist
// dies triggert ein resize Event und demnach eine neue Breite. Dadurch verändert sich dann natürlich auch die
// neue minimale Höhe was widerrum dazu führt, dass der Scrollbar wieder nötig ist usw.
// deshalb eine kleine hysterese, hoffentlich reicht es so
if (minimumHeight() >= newSize.height() && minimumHeight() - 20 <= newSize.height())
return;
setMinimumHeight(newSize.height());
}
} // namespace LtsWidgets
@@ -0,0 +1,42 @@
/**
* @RDE_HEADER@
* Shows a report of combat power in form of curves
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QWidget>
#include <QPixmap>
#include <KDReports/KDReportsReport>
#include <LtsReportDisplay/ltsreportdisplay_export.h>
namespace LtsWidgets
{
class LTSREPORTDISPLAY_EXPORT LtsReportDisplayWidget : public QWidget
{
Q_OBJECT
public:
explicit LtsReportDisplayWidget(QWidget *parent = nullptr);
~LtsReportDisplayWidget() = default;
void setReport(KDReports::Report *report);
public slots:
void setNewMinimumSize();
protected:
void paintEvent(QPaintEvent *event) override;
void resizeEvent(QResizeEvent *event) override;
private:
bool m_bNewMinSizeSlotCalled{false};
QPixmap m_pixmap;
KDReports::Report *m_report{nullptr};
};
}