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 2b957d1edb
commit 598fc2560e
1718 files changed
+126739 -18495

No files matched your search

@@ -0,0 +1,17 @@
#pragma once
// Registers Qt metatypes for AVM DDS types used as QVariant values in GUI code.
//
// Declared in a single, guarded location so the QMetaTypeId<T> specialization is
// defined before any Q_OBJECT slot/signal QtMocHelpers::SlotData instantiates the
// primary QMetaTypeId<T> template. Qt6 rejects a class-template specialization that
// follows the primary template's implicit instantiation ("specialization of
// QMetaTypeId<T> after instantiation"), which Qt5 tolerated, so the declaration must
// precede the first such SlotData in a translation unit.
#include <AudioVideoManagement/avm_dtc.h>
#include <QMetaType>
#ifndef Q_DECLARE_METATYPE_AVM_FREQUENCYPLANNING
#define Q_DECLARE_METATYPE_AVM_FREQUENCYPLANNING
Q_DECLARE_METATYPE(AudioVideoManagement::FrequencyPlanning)
#endif
@@ -263,7 +263,7 @@ void AvsMenus::Menu::replaceMvsEntries(MenuStruct &menu) const
newMenu.reserve(menu.menuEntries.size());
for (auto menuEntry : menu.menuEntries)
{
if (menuEntry.mountingPointId.is_set() && menuEntry.mountingPointId.get() < 0)
if (menuEntry.mountingPointId.has_value() && menuEntry.mountingPointId.get() < 0)
menuEntry.name = m_dtc->videoTeam(menuEntry.mountingPointId.get()*-1).streamName;
newMenu.push_back(std::move(menuEntry));
}
@@ -360,12 +360,12 @@ void AvsMenus::Menu::setMenu(const MenuStruct &menu, const boost::optional<int>
std::vector<AudioVideoManagement::AvMenuEntry> menuEntriesToUse;
for (const auto &entry : realMenu.menuEntries())
{
if (!entry.isGroup() && !entry.mountingPointId.is_set() )
if (!entry.isGroup() && !entry.mountingPointId.has_value() )
continue;
bool isMounted = false;
if(!entry.isGroup() && entry.mountingPointId.is_set())
if(!entry.isGroup() && entry.mountingPointId.has_value())
{
for (const auto &mountedAsset : mountedAssets)
@@ -92,10 +92,10 @@ Database::AvmCnrConfig toDb(const ModifyCnrConfigRequest &config)
result.radioCircuit = QString::fromStdString(config.radioCircuit);
result.callSign = QString::fromStdString(config.callSign);
result.partyId = config.partyId;
if (config.unitId.is_set())
if (config.unitId.has_value())
result.unitId = config.unitId.get();
result.recording = config.recording;
if (config.exerciseId.is_set())
if (config.exerciseId.has_value())
result.exerciseId = config.exerciseId.get();
return result;
@@ -491,7 +491,7 @@ bool CnrHandler::checkConstraint(const std::function<bool (const CnrConfig &)> &
// or when both exercises are currently active.
// If one is global and one local the constraint must always hold if the local exercise is active
// Otherwise the constraint must always hold
bool bothLocal = config.exerciseId.is_set() && exerciseId.is_initialized();
bool bothLocal = config.exerciseId.has_value() && exerciseId.is_initialized();
if (bothLocal)
{
bool sameExercise = config.exerciseId.get() == *exerciseId;
@@ -500,12 +500,12 @@ bool CnrHandler::checkConstraint(const std::function<bool (const CnrConfig &)> &
if (!sameExercise && !bothActive)
continue;
}
else if(config.exerciseId.is_set() && !exerciseId.is_initialized())
else if(config.exerciseId.has_value() && !exerciseId.is_initialized())
{
if(!isActiveExercise(config.exerciseId.get()))
continue;
}
else if(exerciseId.is_initialized() && !config.exerciseId.is_set())
else if(exerciseId.is_initialized() && !config.exerciseId.has_value())
{
if(!isActiveExercise(*exerciseId))
continue;
@@ -663,7 +663,7 @@ bool CnrHandler::isActiveExercise(int exerciseId) const
bool CnrHandler::needDeviceConfig(const CnrConfig &config) const
{
// For global, we always need the config
if (!config.exerciseId.is_set())
if (!config.exerciseId.has_value())
return true;
int32_t exerciseId = config.exerciseId.get();
@@ -703,7 +703,7 @@ bool CnrHandler::haveActiveFrequencyPlanning() const
QString CnrHandler::exerciseList(const CnrConfig &config) const
{
// Local
if (config.exerciseId.is_set())
if (config.exerciseId.has_value())
return ExerciseContext(config.exerciseId.get()).toString();
// Global - all active exercises, no matter if they have active plannings or not
@@ -101,7 +101,7 @@ Core::FunctionReplyObject isValid(int configId, int64_t exerciseId, Handler *han
return reply.setStr(tr_lts("dds", "%1 config %2 does not exist")).arg(configTypeAsString).arg(configId);
const auto &config = handler->config(configId);
if (config.exerciseId.is_set() && config.exerciseId.get() != exerciseId)
if (config.exerciseId.has_value() && config.exerciseId.get() != exerciseId)
return reply.setStr(tr_lts("dds", "%1 config %2 cannot be used in exercise %3")).arg(configTypeAsString).arg(configId).arg(exerciseId);
return reply;
@@ -51,7 +51,7 @@ namespace AudioVideoManagement
template<class T>
boost::optional<T> toBoost(const dds::core::optional<T> &optionalValue)
{
if (!optionalValue.is_set())
if (!optionalValue.has_value())
return boost::none;
return optionalValue.get();
}
@@ -87,7 +87,7 @@ Database::AvmFrequencyPlanning toDb(const FrequencyPlanning &ddsPlan)
{
Database::AvmFrequencyPlanning dbPlan;
dbPlan.id = ddsPlan.id;
if (ddsPlan.exerciseId.is_set())
if (ddsPlan.exerciseId.has_value())
dbPlan.exerciseId = ddsPlan.exerciseId.get();
dbPlan.dateOfCreation = ddsPlan.date;
dbPlan.frequencySetId = ddsPlan.frequencySetId;
@@ -385,8 +385,8 @@ Core::FunctionReplyObject FrequencyPlanningHandler::validateModifyRequest(const
const FrequencyPlanning &oldPlan = *found;
if ((oldPlan.exerciseId.is_set() && oldPlan.exerciseId.get() != request.exerciseId)
|| (!oldPlan.exerciseId.is_set() && request.exerciseId != 0))
if ((oldPlan.exerciseId.has_value() && oldPlan.exerciseId.get() != request.exerciseId)
|| (!oldPlan.exerciseId.has_value() && request.exerciseId != 0))
return reply.setStr(tr_lts("dds", "Exercise may not be changed"));
if (request.frequencySetId != oldPlan.frequencySetId)
@@ -418,7 +418,7 @@ Core::FunctionReplyObject FrequencyPlanningHandler::validateRequest(const Core::
return reply.setStr(tr_lts("dds", "FrequencyPlanning %1 does not exist")).arg(request.id);
const FrequencyPlanning &plan = *foundPlan;
int exerciseId = plan.exerciseId.is_set() ? plan.exerciseId.get() : 0;
int exerciseId = plan.exerciseId.has_value() ? plan.exerciseId.get() : 0;
auto foundActivePlan = m_activePlannings.constFind(exerciseId);
bool isActive = foundActivePlan != m_activePlannings.constEnd() && foundActivePlan->frequencyPlanningId == plan.id;
if (isActive)
@@ -543,7 +543,7 @@ Core::FunctionReplyObject FrequencyPlanningHandler::testActivation(const std::ve
for (const FrequencyPlanningData &entry : entries)
{
const CnrConfig &cnrConfig = m_cnrHandler->config(entry.cnrConfigId);
bool isGlobal = !cnrConfig.exerciseId.is_set();
bool isGlobal = !cnrConfig.exerciseId.has_value();
if (!isGlobal)
continue;
@@ -620,7 +620,7 @@ std::vector<int> FrequencyPlanningHandler::takenGlobalCnrConfigs(const std::vect
for (const FrequencyPlanningData &entry : plan.data)
{
const CnrConfig &cnrConfig = m_cnrHandler->config(entry.cnrConfigId);
bool isGlobal = !cnrConfig.exerciseId.is_set();
bool isGlobal = !cnrConfig.exerciseId.has_value();
if (isGlobal)
result.push_back(cnrConfig.id);
}
@@ -775,7 +775,7 @@ void FrequencyPlanningHandler::onCnrConfigRemoved(int cnrConfigId)
req.data.erase(found);
req.date = fp.date;
req.exerciseId = fp.exerciseId.is_set() ? fp.exerciseId.get() : 0;
req.exerciseId = fp.exerciseId.has_value() ? fp.exerciseId.get() : 0;
req.frequencySetId = fp.frequencySetId;
req.id = fp.id;
req.name = fp.name;
@@ -29,14 +29,14 @@ static FrequencyPlanningStatus convert(const ModifyFrequencyPlanningStatusReques
}
newData.uuid = request.uuid.empty() ? oldData.uuid : request.uuid;
newData.id = oldData.id;
if (request.sent.is_set())
if (request.sent.has_value())
{
newData.sent = request.sent.get();
newData.requester = request.requester; // ! Requester is only sent, when data gets sent.
}
if (request.received.is_set())
if (request.received.has_value())
newData.received = request.received.get();
if (request.activated.is_set())
if (request.activated.has_value())
{
newData.activated = request.activated.get();
newData.requester = request.requester; // ! Requester is only sent, when data gets activated.
@@ -124,11 +124,11 @@ Database::AvmFrequencyPlanningStatus ObjectFrequencyPlanningStatus::toDbData(con
dbData.content = QString::fromStdString(ddsData.content);
dbData.reason = static_cast<int>(ddsData.reason);
if (ddsData.sent.is_set())
if (ddsData.sent.has_value())
dbData.sent = static_cast<qint64>(ddsData.sent.get());
if (ddsData.received.is_set())
if (ddsData.received.has_value())
dbData.received = static_cast<qint64>(ddsData.received.get());
if (ddsData.activated.is_set())
if (ddsData.activated.has_value())
dbData.activated = static_cast<qint64>(ddsData.activated.get());
return dbData;
@@ -67,7 +67,7 @@ Database::AvmTvcConfig toDb(const ModifyTvcConfigRequest &request)
result.info = QString::fromStdString(request.info);
result.recording = request.recording;
result.tetraChannelId = request.tetraChannelId;
if (request.exerciseId.is_set())
if (request.exerciseId.has_value())
result.exerciseId = request.exerciseId.get();
return result;
@@ -427,7 +427,7 @@ void TvcHandler::onContextActivated(const ExerciseContext &context)
for (const TvcConfig &tvcConfig : std::as_const(m_cache))
{
bool isLocal = tvcConfig.exerciseId.is_set();
bool isLocal = tvcConfig.exerciseId.has_value();
if (isLocal)
{
if (tvcConfig.exerciseId == context.id())
@@ -449,7 +449,7 @@ void TvcHandler::onContextDeactivated(const ExerciseContext &context)
for (const TvcConfig &tvcConfig : std::as_const(m_cache))
{
bool isLocal = tvcConfig.exerciseId.is_set();
bool isLocal = tvcConfig.exerciseId.has_value();
if (isLocal)
{
@@ -535,7 +535,7 @@ bool TvcHandler::checkConstraint(const std::function<bool (const TvcConfig &)> &
// If both configs are local the constraint must hold if they are in the same exercise
// or when both exercises are currently active.
// Otherwise (one or both are global) the constraint must always hold
bool bothLocal = config.exerciseId.is_set() && exerciseId.is_initialized();
bool bothLocal = config.exerciseId.has_value() && exerciseId.is_initialized();
if (bothLocal)
{
bool sameExercise = config.exerciseId.get() == *exerciseId;
@@ -557,7 +557,7 @@ bool TvcHandler::checkConstraint(const std::function<bool (const TvcConfig &)> &
*/
QString TvcHandler::exerciseList(const TvcConfig &config) const
{
bool isLocal = config.exerciseId.is_set();
bool isLocal = config.exerciseId.has_value();
if (isLocal)
return ExerciseContext(config.exerciseId.get()).toString();
@@ -575,7 +575,7 @@ QString TvcHandler::exerciseList(const TvcConfig &config) const
bool TvcHandler::needDeviceConfig(const TvcConfig &config) const
{
bool isGlobal = !config.exerciseId.is_set();
bool isGlobal = !config.exerciseId.has_value();
bool hasActiveExericse = m_activeExercises->count() > 0;
return (isGlobal && hasActiveExericse) || (!isGlobal && isActiveExercise(config.exerciseId.get()));
}