Complete Qt6 migration: full clean build green across groups G1-G12 incl. runtime plugin set

new_docker_build.sh gains Group 12 (212 GUI/Data plugins); fixes LtsUtilsGuiDds visibility (LTO-stripped exports), LtsProjectionWorkstation unity name shadow, 6 unity-off dirs (dup file-scope statics, ddsftc INTERFACE sources) and reconfigures BUILD_FILTERMANAGEMENT/BUILD_PLUGINS_SERVICEMONITOR=ON
This commit is contained in:
berrux-dev committed 2026-10-20 09:36:57 +02:00
1 parent eb1d949edc
commit 815e16368e
1718 files changed
+126739 -18495

No files matched your search

@@ -20,7 +20,7 @@ Server::Server()
: QObject(nullptr)
, m_server(new QWebSocketServer(QString(), QWebSocketServer::NonSecureMode, this))
{
QRandomGenerator::global()->seed();
// (legacy: qsrand(time(nullptr));) — Qt6's QRandomGenerator::global() is auto-seeded; ->seed() on the global aborts in Qt 6.10.
}
@@ -19,14 +19,14 @@ CustomWidget::~CustomWidget()
void CustomWidget::onPositionChanged(const Core::GeoPosition &position, int participantId)
{
if (participantId == 0 || std::isnan(position.lon()) || std::isnan(position.lat()))
if (participantId == 0 || std::isnan(position.lon) || std::isnan(position.lat))
m_ui->lblPos->setText(tr("Invalid Position"));
else
{
QString mgrs = LtsCoordTrans::mgrsFromGeographic(position.lon(), position.lat());
QString mgrs = LtsCoordTrans::mgrsFromGeographic(position.lon, position.lat);
if (!qFuzzyIsNull(position.z()))
mgrs += QStringLiteral(" | ") + QString::number(position.z(), 'f', 2);
if (!qFuzzyIsNull(position.z))
mgrs += QStringLiteral(" | ") + QString::number(position.z, 'f', 2);
m_ui->lblPos->setText(mgrs);
}
@@ -26,9 +26,9 @@ QWidget *GuiElementPlugin::createGuiElement(QWidget *parent)
connect(m_customWidget, &CustomWidget::finOnMapClicked, this, &GuiElementPlugin::onFindOnMap);
connect(m_ppmDtc.get(), &ParticipantManagement::Interface::Dtc::participantPositionChanged,
m_customWidget, [=](const ParticipantManagement::ParticipantPosition &ppPos){
m_customWidget->onPositionChanged(ppPos.pos(), m_participantId);
m_customWidget->onPositionChanged(ppPos.pos, m_participantId);
}, Qt::UniqueConnection);
m_customWidget->onPositionChanged(m_ppmDtc->participantPosition(m_participantId).pos(), m_participantId);
m_customWidget->onPositionChanged(m_ppmDtc->participantPosition(m_participantId).pos, m_participantId);
return m_customWidget;
}
@@ -30,7 +30,8 @@ ParticipantDataGenerator::MainHandler::MainHandler(QObject *parent)
, m_participantCreationTimer(new QElapsedTimer())
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("PDG.MainHandler"))
{
QRandomGenerator::global()->seed(QDateTime::currentMSecsSinceEpoch());
// (legacy: qsrand(QDateTime::currentMSecsSinceEpoch());) — Qt6's QRandomGenerator::global() is
// auto-seeded non-deterministically; ->seed() on the global/system generator aborts in Qt 6.10.
}
ParticipantDataGenerator::MainHandler::~MainHandler()
@@ -269,7 +270,7 @@ ParticipantManagement::Type ParticipantDataGenerator::MainHandler::randomType()
int32_t ParticipantDataGenerator::MainHandler::randomSuperiorModId(int32_t upperBound)
{
QRandomGenerator::global()->seed(QDateTime::currentMSecsSinceEpoch());
// (legacy: qsrand(...) re-seeded per call) — Qt6 global generator is auto-seeded; ->seed() aborts in Qt 6.10.
auto ret = QRandomGenerator::global()->bounded(upperBound + 1);
return ret == 0 ? ret + 1 : ret;
}
@@ -37,6 +37,11 @@ NGL_TARGET_INCLUDE_DIRECTORIES(test_qledline
NGL_WRAP_UI(test_qledline_SRCS ${test_qledline_UICS})
NGL_ADD_EXECUTABLE(WS NO_TRANSLATION test_qledline ${test_qledline_SRCS} ${test_qledline_HDRS} ${test_qledline_UICS})
# The .ui files live in the ui/ subdir. The explicit NGL_WRAP_UI (qt6_wrap_ui) above
# processes them with their ui/ paths; Qt6's strict AUTOUIC auto-scan instead looks for
# the bare basenames in the source root and fails. Disable the auto-scan (explicit wrap
# still generates the ui_*.h headers).
set_target_properties(test_qledline PROPERTIES AUTOUIC OFF)
NGL_TARGET_LINK_LIBRARIES(test_qledline
qledline
@@ -39,7 +39,7 @@ void BuiltinAnyListener::on_data_available(dds::sub::DataReader<S> &reader)
continue;
dds::core::optional<dds::core::xtypes::DynamicType> dynamicType = sampleIt->data()->type();
if (!dynamicType.is_set() || dynamicType.get().kind() != dds::core::xtypes::TypeKind::STRUCTURE_TYPE)
if (!dynamicType.has_value() || dynamicType.get().kind() != dds::core::xtypes::TypeKind::STRUCTURE_TYPE)
continue;
const dds::core::xtypes::StructType &structType = static_cast<dds::core::xtypes::StructType&>(dynamicType.get());
@@ -5,6 +5,7 @@
#include <QtCore/QCoreApplication>
#include <QtCore/QDateTime>
#include <QtCore/QElapsedTimer>
#include <QtCore/QRandomGenerator>
#include "proxy_emulator.h"
#include <QtCore/QTimer>
@@ -90,10 +91,11 @@ void VulnerabilityStateGenerator::MainHandler::quit()
ProjectDataManagement::VulnerabilityState VulnerabilityStateGenerator::MainHandler::randomVulnerabilityState()
{
qsrand(QDateTime::currentMSecsSinceEpoch());
// (legacy: qsrand(QDateTime::currentMSecsSinceEpoch()); re-seeded per call) — Qt6's QRandomGenerator::global()
// is auto-seeded; ->seed() on the global/system generator aborts in Qt 6.10.
unsigned int index = 0;
if (m_vsMap.size() > 0)
index = qrand() % m_vsMap.size();
index = QRandomGenerator::global()->bounded(m_vsMap.size());
return m_vsMap.value(index);
@@ -104,23 +106,23 @@ void VulnerabilityStateGenerator::MainHandler::setNewState()
{
for (auto it = m_partMap.begin(); it != m_partMap.end(); ++it)
{
if (it.value().m_equipmentNumber().is_set() && it.value().m_equipmentNumber().get() > 0)
if (it.value().equipmentNumber.has_value() && it.value().equipmentNumber.value() > 0)
m_proxyEmulator->publishNewState(randomVulnerabilityState(), it.value());
}
}
void VulnerabilityStateGenerator::MainHandler::fillMapFromEnum()
{
m_vsMap.insert(0, ProjectDataManagement::VulnerabilityState::CombatReady);
m_vsMap.insert(1, ProjectDataManagement::VulnerabilityState::LightDamage);
m_vsMap.insert(2, ProjectDataManagement::VulnerabilityState::MediumDamage);
m_vsMap.insert(3, ProjectDataManagement::VulnerabilityState::HeavyDamage);
m_vsMap.insert(4, ProjectDataManagement::VulnerabilityState::MobilityKill);
m_vsMap.insert(5, ProjectDataManagement::VulnerabilityState::VisibleMobilityKill);
m_vsMap.insert(6, ProjectDataManagement::VulnerabilityState::WeaponSystemDamage);
m_vsMap.insert(7, ProjectDataManagement::VulnerabilityState::VisibleWeaponSystemDamage);
m_vsMap.insert(8, ProjectDataManagement::VulnerabilityState::CatastrophicKill);
m_vsMap.insert(9, ProjectDataManagement::VulnerabilityState::TemporarySeverance);
m_vsMap.insert(10, ProjectDataManagement::VulnerabilityState::NearMiss);
m_vsMap.insert(11, ProjectDataManagement::VulnerabilityState::HitWithNoEffect);
m_vsMap.insert(0, ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady);
m_vsMap.insert(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_LightDamage);
m_vsMap.insert(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MediumDamage);
m_vsMap.insert(3, ProjectDataManagement::VulnerabilityState::VulnerabilityState_HeavyDamage);
m_vsMap.insert(4, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MobilityKill);
m_vsMap.insert(5, ProjectDataManagement::VulnerabilityState::VulnerabilityState_VisibleMobilityKill);
m_vsMap.insert(6, ProjectDataManagement::VulnerabilityState::VulnerabilityState_WeaponSystemDamage);
m_vsMap.insert(7, ProjectDataManagement::VulnerabilityState::VulnerabilityState_VisibleWeaponSystemDamage);
m_vsMap.insert(8, ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill);
m_vsMap.insert(9, ProjectDataManagement::VulnerabilityState::VulnerabilityState_TemporarySeverance);
m_vsMap.insert(10, ProjectDataManagement::VulnerabilityState::VulnerabilityState_NearMiss);
m_vsMap.insert(11, ProjectDataManagement::VulnerabilityState::VulnerabilityState_HitWithNoEffect);
}
@@ -46,14 +46,14 @@ void VulnerabilityStateGenerator::ProxyEmulator::giveInitState(const QMap<qint32
{
const ParticipantManagement::Participant &currentParticipant = it.value();
if (currentParticipant.m_equipmentNumber().is_set())
if (currentParticipant.equipmentNumber.has_value())
{
++participantsWithEquipmentNumber;
TrainingAreaBase::EquipmentState state;
state.m_equipmentNumber(currentParticipant.m_equipmentNumber().get());
state.sampleTime(QDateTime::currentMSecsSinceEpoch());
state.vulnerabilityState(ProjectDataManagement::VulnerabilityState::CombatReady);
state.equipmentNumber = currentParticipant.equipmentNumber.value();
state.sampleTime = QDateTime::currentMSecsSinceEpoch();
state.vulnerabilityState = ProjectDataManagement::VulnerabilityState::VulnerabilityState_CombatReady;
m_tabDts->publish(state);
}
@@ -76,11 +76,11 @@ void VulnerabilityStateGenerator::ProxyEmulator::publishNewState(ProjectDataMana
{
TrainingAreaBase::EquipmentState state;
state.m_equipmentNumber(participant.m_equipmentNumber().get());
state.sampleTime(QDateTime::currentMSecsSinceEpoch());
state.vulnerabilityState(newState);
state.equipmentNumber = participant.equipmentNumber.value();
state.sampleTime = QDateTime::currentMSecsSinceEpoch();
state.vulnerabilityState = newState;
DEBUG_LOG(m_logger) << "participantId: " << participant.m_id() << ", state: " << newState << ", equipNo: " << participant.m_equipmentNumber().get();
DEBUG_LOG(m_logger) << "participantId: " << participant.id << ", state: " << newState << ", equipNo: " << participant.equipmentNumber.value();
m_tabDts->publish(state);
}