Migrates remaining services and plugins to generated rtiddsgen API

Converts accessor calls to plain member access across the residual service set.
This commit is contained in:
berrux-dev committed 2026-09-21 02:47:48 +02:00
1 parent 6a8c31b735
commit c3eda18234
104 files changed
+2424 -2430

No files matched your search

@@ -77,19 +77,19 @@ void EemTests::startTest()
if (m_testId == 1) // publish dynamicParticipantData
{
const qint64 time = QDateTime::currentMSecsSinceEpoch();
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::MediumDamage, time - 15000 * 60, 38);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MediumDamage, time - 15000 * 60, 38);
QTest::qWait(500);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::MediumDamage, time - 13000 * 30, 38);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MediumDamage, time - 13000 * 30, 38);
QTest::qWait(500);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::HeavyDamage, time - 10000 * 60, 38);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_HeavyDamage, time - 10000 * 60, 38);
QTest::qWait(500);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::MobilityKill, time - 8000 * 30, 38);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MobilityKill, time - 8000 * 30, 38);
QTest::qWait(500);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::MobilityKill, time - 6000 * 60, 38);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MobilityKill, time - 6000 * 60, 38);
QTest::qWait(500);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::CatastrophicKill, time - 4000 * 30, 38);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill, time - 4000 * 30, 38);
QTest::qWait(500);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::CatastrophicKill, time - 2000, 38);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill, time - 2000, 38);
QTest::qWait(500);
}
@@ -101,14 +101,14 @@ void EemTests::startTest()
QTest::qWait(500);
// dynamic participant data for ied
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::HeavyDamage, time + 1000 * 60, 49, ProjectDataManagement::StateChangeOriginator::ImprovisedExplosiveDevice);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_HeavyDamage, time + 1000 * 60, 49, ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_ImprovisedExplosiveDevice);
QTest::qWait(500);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::MobilityKill, time + 2000 * 60, 49, ProjectDataManagement::StateChangeOriginator::ImprovisedExplosiveDevice);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MobilityKill, time + 2000 * 60, 49, ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_ImprovisedExplosiveDevice);
QTest::qWait(500);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::CatastrophicKill, time + 3000 * 60, 70, ProjectDataManagement::StateChangeOriginator::ImprovisedExplosiveDevice);
tryCreateDynamicParticipantData(1, ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill, time + 3000 * 60, 70, ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_ImprovisedExplosiveDevice);
QTest::qWait(5000);
checkEvents(ProjectDataManagement::PdmEventType::HitEffectSimulation, 3);
checkEvents(ProjectDataManagement::PdmEventType::EventType_HitEffectSimulation, 3);
}
if (m_testId == 3)
@@ -123,11 +123,11 @@ void EemTests::startTest()
if (m_testId == 6)
{
const qint64 time = QDateTime::currentMSecsSinceEpoch();
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::HeavyDamage, time - 10000 * 60, 0, ProjectDataManagement::StateChangeOriginator::Sanitation);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_HeavyDamage, time - 10000 * 60, 0, ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Sanitation);
QTest::qWait(500);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::MediumDamage, time - 8000 * 30, 0, ProjectDataManagement::StateChangeOriginator::Sanitation);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_MediumDamage, time - 8000 * 30, 0, ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Sanitation);
QTest::qWait(500);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::LightDamage, time - 5000 * 30, 0, ProjectDataManagement::StateChangeOriginator::Sanitation);
tryCreateDynamicParticipantData(2, ProjectDataManagement::VulnerabilityState::VulnerabilityState_LightDamage, time - 5000 * 30, 0, ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Sanitation);
QTest::qWait(500);
checkEvents(ProjectDataManagement::PdmEventType::Sanitation, 3);
@@ -149,23 +149,23 @@ void EemTests::tryCreateDynamicParticipantData(int participantId, ProjectDataMan
ParticipantManagement::DynamicParticipantData dp;
const rti::core::int64 esTime = static_cast<rti::core::int64>(time);
ParticipantManagement::StateInformation si;
si.stateTime(esTime);
si.vulnerabilityState(vulnState);
si.stateTime = esTime;
si.vulnerabilityState = vulnState;
if (chargeTypeId > 0)
si.originatorChargeTypeId(chargeTypeId);
si.originatorId(participantId + 1);
si.originatorType(originator);
si.vitality(100);
if (originator == ProjectDataManagement::StateChangeOriginator::Sanitation)
si.originatorChargeTypeId = chargeTypeId;
si.originatorId = participantId + 1;
si.originatorType = originator;
si.vitality = 100;
if (originator == ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Sanitation)
{
si.sanitationResult(ParticipantManagement::SanitationResult::Sufficient);
si.sanitationProceduresTaken(1);
si.sanitationResult = ParticipantManagement::SanitationResult::Sufficient;
si.sanitationProceduresTaken = 1;
}
dp.participantId(participantId);
dp.participantId = participantId;
//dp.isManipulated(true);
dp.stateHistory().push_back(si);
dp.sampleTime(esTime);
dp.stateHistory.push_back(si);
dp.sampleTime = esTime;
DEBUG_LOG(m_logger) << "Publishing DynamicParticipantData for participant " << participantId ;
if (!m_ppmDts->publish(dp))
@@ -180,17 +180,17 @@ void EemTests::trySendFireEvent()
{
TrainingAreaBase::EquipmentGearAssignment gearAssigment;
gearAssigment.equipmentNumber(1002);
gearAssigment.sampleTime(QDateTime::currentMSecsSinceEpoch());
gearAssigment.equipmentNumber = 1002;
gearAssigment.sampleTime = QDateTime::currentMSecsSinceEpoch();
std::vector<TrainingAreaBase::Gear> gears;
gears.resize(2);
gears[0].gearId(132456);
gears[0].gearTypeId(1003); // Sniper
gears[1].gearId(45778);
gears[1].gearTypeId(1006); // HMG
gears[0].gearId = 132456;
gears[0].gearTypeId = 1003; // Sniper
gears[1].gearId = 45778;
gears[1].gearTypeId = 1006; // HMG
gearAssigment.gears(gears);
gearAssigment.gears = gears;
DEBUG_LOG(m_logger) << "Publish EquipmentGearAssigment";
if (!m_tabDts->publish(gearAssigment))
@@ -201,17 +201,17 @@ void EemTests::trySendFireEvent()
TrainingAreaBase::EquipmentGearChargeState gearChargeState;
gearChargeState.equipmentNumber(1002);
gearChargeState.sampleTime(QDateTime::currentMSecsSinceEpoch());
gearChargeState.equipmentNumber = 1002;
gearChargeState.sampleTime = QDateTime::currentMSecsSinceEpoch();
std::vector<TrainingAreaBase::GearCharge> vGearCharge;
vGearCharge.resize(1);
vGearCharge[0].gearId(132456);
vGearCharge[0].gearTypeId(1003);
vGearCharge[0].chargeTypeId(44);
vGearCharge[0].remain(250);
vGearCharge[0].gearId = 132456;
vGearCharge[0].gearTypeId = 1003;
vGearCharge[0].chargeTypeId = 44;
vGearCharge[0].remain = 250;
gearChargeState.charge(vGearCharge);
gearChargeState.charge = vGearCharge;
DEBUG_LOG(m_logger) << "Publish EquipmentGearChargeState";
if (!m_tabDts->publish(gearChargeState))
@@ -221,16 +221,16 @@ void EemTests::trySendFireEvent()
}
TrainingAreaBase::EquipmentGearEvent gearEvent;
gearEvent.equipmentNumber(1002);
gearEvent.sampleTime(QDateTime::currentMSecsSinceEpoch()+1000);
gearEvent.equipmentNumber = 1002;
gearEvent.sampleTime = QDateTime::currentMSecsSinceEpoch()+1000;
TrainingAreaBase::GearCharge gc;
gc.gearId(132456);
gc.gearTypeId(1003);
gc.chargeTypeId(44);
gc.remain(200);
gearEvent.chargeAmount(200);
gearEvent.charge(gc);
gc.gearId = 132456;
gc.gearTypeId = 1003;
gc.chargeTypeId = 44;
gc.remain = 200;
gearEvent.chargeAmount = 200;
gearEvent.charge = gc;
DEBUG_LOG(m_logger) << "Publish EquipmentGearEvent";
if (!m_tabDts->publish(gearEvent))
@@ -239,13 +239,13 @@ void EemTests::trySendFireEvent()
failExit();
}
gearEvent.equipmentNumber(1003);
gc.gearId(45678);
gc.gearTypeId(1009);
gc.chargeTypeId(9);
gc.remain(350);
gearEvent.chargeAmount(100);
gearEvent.charge(gc);
gearEvent.equipmentNumber = 1003;
gc.gearId = 45678;
gc.gearTypeId = 1009;
gc.chargeTypeId = 9;
gc.remain = 350;
gearEvent.chargeAmount = 100;
gearEvent.charge = gc;
DEBUG_LOG(m_logger) << "Publish EquipmentGearEvent";
if (!m_tabDts->publish(gearEvent))
@@ -263,9 +263,9 @@ void EemTests::trySendFireEvent()
int noEvents = 0;
for(const ExerciseEventManagement::Event &e : events)
{
INFO_LOG(m_logger) << "eventId: " << e.id() << ", eventType: " << e.eventTypeId().underlying();
if (e.eventTypeId() == ProjectDataManagement::PdmEventType_def::WeaponAssignment ||
e.eventTypeId() == ProjectDataManagement::PdmEventType_def::FireEvent)
INFO_LOG(m_logger) << "eventId: " << e.id << ", eventType: " << e.eventTypeId;
if (e.eventTypeId == ProjectDataManagement::PdmEventType::WeaponAssignment ||
e.eventTypeId == ProjectDataManagement::PdmEventType::FireEvent)
noEvents ++;
}
@@ -283,27 +283,27 @@ void EemTests::trySendBiteMessage()
{
TrainingAreaBase::EquipmentBite bite;
bite.batteryState(2);
bite.equipmentNumber(1002);
bite.biteState(16);
bite.configError(true);
bite.configState(8);
bite.sampleTime(QDateTime::currentMSecsSinceEpoch());
bite.batteryState = 2;
bite.equipmentNumber = 1002;
bite.biteState = 16;
bite.configError = true;
bite.configState = 8;
bite.sampleTime = QDateTime::currentMSecsSinceEpoch();
std::vector<TrainingAreaBase::EquipmentBiteError> beVec;
beVec.resize(2);
beVec[0].canDeviceNumber(1000);
beVec[0].errorNumber(23);
beVec[0].subdeviceNumber(110);
beVec[0].uniqueId(198765);
beVec[0].canDeviceNumber = 1000;
beVec[0].errorNumber = 23;
beVec[0].subdeviceNumber = 110;
beVec[0].uniqueId = 198765;
beVec[1].canDeviceNumber(1001);
beVec[1].errorNumber(24);
beVec[1].subdeviceNumber(111);
beVec[1].uniqueId(9876);
beVec[1].canDeviceNumber = 1001;
beVec[1].errorNumber = 24;
beVec[1].subdeviceNumber = 111;
beVec[1].uniqueId = 9876;
bite.biteErrors(beVec);
bite.biteErrors = beVec;
if (!m_tabDts->publish(bite))
{
@@ -318,12 +318,12 @@ void EemTests::trySendBuildingState()
{
Buildings::BuildingState bState;
bState.id(301);
bState.damagePercent(80);
bState.damagePercentOld(0);
bState.sampleTime(QDateTime::currentMSecsSinceEpoch());
bState.vulnerabilityState(ProjectDataManagement::VulnerabilityState::CatastrophicKill);
bState.structureElementId(26);
bState.id = 301;
bState.damagePercent = 80;
bState.damagePercentOld = 0;
bState.sampleTime = QDateTime::currentMSecsSinceEpoch();
bState.vulnerabilityState = ProjectDataManagement::VulnerabilityState::VulnerabilityState_CatastrophicKill;
bState.structureElementId = 26;
// bState.aesId(1);
// bState.assetId(10);
// bState.chargeTypeId(44);
@@ -346,18 +346,18 @@ void EemTests::tryCreateIed(qint64 time)
{
GuezIedManagement::Ied ied;
ied.id(100);
ied.name("Test IED");
ied.partyId(4);
ied.equipmentNumber(1003);
ied.type(GuezIedManagement::IedType::IedBigPyro);
ied.explosiveForce(100);
ied.pairingState(GuezIedManagement::IedPairingState_def::NotPaired);
ied.tacticalState(GuezIedManagement::IedTacticalState_def::TriggeredByControlDevice);
ied.pyrotechnics(true);
ied.symbol("AP6D|CMPL|10014000001103000000");
ied.id = 100;
ied.name = "Test IED";
ied.partyId = 4;
ied.equipmentNumber = 1003;
ied.type = GuezIedManagement::IedType::IedBigPyro;
ied.explosiveForce = 100;
ied.pairingState = GuezIedManagement::IedPairingState::NotPaired;
ied.tacticalState = GuezIedManagement::IedTacticalState::TriggeredByControlDevice;
ied.pyrotechnics = true;
ied.symbol = "AP6D|CMPL|10014000001103000000";
const rti::core::int64 esTime = static_cast<rti::core::int64>(time);
ied.sampleTime(esTime);
ied.sampleTime = esTime;
DEBUG_LOG(m_logger) << "Publishing Ied " ;
if (!m_gimDts->publish(ied))
@@ -377,13 +377,13 @@ void EemTests::checkEvents(const ProjectDataManagement::PdmEventType &et, int ex
for (const ExerciseEventManagement::Event &e : events)
{
INFO_LOG(m_logger) << "eventId: " << e.id() << ", eventType: " << e.eventTypeId().underlying();
if (e.eventTypeId() == et)
INFO_LOG(m_logger) << "eventId: " << e.id << ", eventType: " << e.eventTypeId;
if (e.eventTypeId == et)
{
QJsonObject prop = LtsUtils::JsonObject::fromJson(e.properties());
QJsonObject prop = LtsUtils::JsonObject::fromJson(e.properties);
int ot = prop[QStringLiteral("OriginatorType")].toInt();
if (et == ProjectDataManagement::PdmEventType::HitEffectSimulation && ot == 20) //ImprovisedExplosiveDevice
if (et == ProjectDataManagement::PdmEventType::EventType_HitEffectSimulation && ot == 20) //ImprovisedExplosiveDevice
noEvents ++;
if (et == ProjectDataManagement::PdmEventType::Sanitation && ot == 10) // Sanitation
noEvents ++;
@@ -37,7 +37,7 @@ public Q_SLOTS:
protected Q_SLOTS:
void tryCreateDynamicParticipantData(int participantId, ProjectDataManagement::VulnerabilityState vulnState, qint64 time, int chargeTypeId,
ProjectDataManagement::StateChangeOriginator originator = ProjectDataManagement::StateChangeOriginator::Participant);
ProjectDataManagement::StateChangeOriginator originator = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Participant);
void trySendFireEvent();
void trySendBiteMessage();
void trySendBuildingState();
@@ -4,9 +4,15 @@
# $Author$
#
# Make ${Qt6_WebSockets} optional
if(QT6_GUI_AVAILABLE AND TARGET Qt6::WebSockets)
set(Qt6_WebSockets ${Qt6_WebSockets})
# Link the real WebSockets module whenever the websocket code path is
# compiled: QT6_WEBSOCKETS_AVAILABLE (root CMakeLists) and the manual
# Qt6::WebSockets import are set when the real module was found. The old
# QT6_GUI_AVAILABLE condition never holds in this environment (Qt6
# discovery takes the minimal path) and the Qt6_WebSockets variable was
# never defined, so the websocket code compiled without the module on the
# link line and failed only at link time.
if(QT6_WEBSOCKETS_REAL_FOUND OR Qt6WebSockets_FOUND)
set(Qt6_WebSockets Qt6::WebSockets)
else()
set(Qt6_WebSockets "")
endif()
@@ -30,7 +30,7 @@ public:
bool init(const QStringList &qosFileList = QStringList());
void setRunningState(Core::RunningState rs);
void addPortToPacemaker(quint16 port, Core::PortType type);
void addPortToPacemaker(quint16 port, Core::CorePortType type);
std::shared_ptr<DDSConnector::DdsConnector> ddsConnector() const { return m_ddsConnector; }
std::shared_ptr<ExerciseEventManagement::Interface::Dts> dts() const { return m_ddsDts; }
@@ -61,7 +61,7 @@
<topicType name="Event" isDataObject="1" routeToClient="0" routeToServer="0" routeInReplay="0" recordTopic="0">
<column name="id" idlType="long long" isKey="1"/>
<column name="sampleTime" idlType="long long"/>
<column name="eventTypeId" idlType="ProjectDataManagement::EventType"/>
<column name="eventTypeId" idlType="ProjectDataManagement::PdmEventType"/>
<column name="participantId" idlType="long"/>
<column name="partyId" idlType="long"/>
<column name="equipmentNumber" idlType="long"/>
@@ -188,8 +188,8 @@ void HandlerDynamicParticipantData::tryCreateHitEvent(Database::EemEvent eData,
if (stateInfo.originatorType() == ProjectDataManagement::StateChangeOriginator::Participant)
{
ParticipantManagement::Participant originData = m_partMap.value(stateInfo.originatorId());
if (originData.equipmentNumber().is_set())
obj[QStringLiteral("OriginatorEquipmentNumber")] = originData.equipmentNumber().get();
if (originData.equipmentNumber.is_set())
obj[QStringLiteral("OriginatorEquipmentNumber")] = originData.equipmentNumber.get();
if (originData.partyId() == eData.partyId)
obj[QStringLiteral("FriendlyFire")] = true;
@@ -269,7 +269,7 @@ void HandlerDynamicParticipantData::onDynamicParticipantDataChanged(const Partic
Database::EemEvent eData;
eData.participantId = data.participantId();
eData.equipmentNumber = pData.equipmentNumber().is_set() ? pData.equipmentNumber().get() : -1;
eData.equipmentNumber = pData.equipmentNumber.is_set() ? pData.equipmentNumber.get() : -1;
eData.partyId = pData.partyId();
eData.sampleTime = data.sampleTime();
eData.eventTypeId = ProjectDataManagement::PdmEventType_def::Unknown;
@@ -373,7 +373,7 @@ void HandlerDynamicParticipantData::onParticipantGearEventChanged(const Particip
Database::EemEvent eData;
eData.id = 0;
eData.participantId = data.participantId();
eData.equipmentNumber = pData.equipmentNumber().is_set() ? pData.equipmentNumber().get() : -1;
eData.equipmentNumber = pData.equipmentNumber.is_set() ? pData.equipmentNumber.get() : -1;
eData.partyId = pData.partyId();
eData.sampleTime = data.sampleTime();
eData.eventTypeId = ProjectDataManagement::PdmEventType_def::FireEvent;
@@ -508,8 +508,8 @@ void HandlerDynamicParticipantData::onBuildingStateChanged(const Buildings::Buil
if (data.originatorType() == ProjectDataManagement::StateChangeOriginator::Participant)
{
ParticipantManagement::Participant originData = m_partMap.value(data.originatorParticipantId());
if (originData.equipmentNumber().is_set())
obj[QStringLiteral("OriginatorEquipmentNumber")] = originData.equipmentNumber().get();
if (originData.equipmentNumber.is_set())
obj[QStringLiteral("OriginatorEquipmentNumber")] = originData.equipmentNumber.get();
}
if (data.originatorType() == ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation)
{
@@ -90,8 +90,8 @@ void HandlerParticipantEvent::onAesItemViewChanged(const AreaEffectSimulation::A
Database::EemEvent eData = m_aesMap[data.id()];
eData.sampleTime = data.effectStart();
if (data.partyId().is_set())
eData.partyId = data.partyId().get();
if (data.partyId.is_set())
eData.partyId = data.partyId.get();
switch(modType)
{
@@ -242,14 +242,14 @@ void HandlerParticipantEvent::onExplosionSingleChanged(const AreaEffectSimulatio
{
Database::EemEvent eData = m_aesMap[data.id()];
if ( !data.effectStart().is_set())
if ( !data.effectStart.is_set())
{
return;
}
eData.sampleTime = data.effectStart().get();
eData.sampleTime = data.effectStart.get();
if (data.partyId().is_set())
eData.partyId = data.partyId().get();
if (data.partyId.is_set())
eData.partyId = data.partyId.get();
switch(modType)
{
@@ -280,7 +280,7 @@ void HandlerParticipantEvent::onExplosionSingleChanged(const AreaEffectSimulatio
obj[QStringLiteral("AesType")] = QJsonValue(AreaEffectSimulation::AesType::AtExplosionSingle);
obj[QStringLiteral("ChargeTypeId")] = QJsonValue(data.chargeStruct().chargeTypeId());
obj[QStringLiteral("duration")] = QJsonValue(aesItem.effectDuration());
obj[QStringLiteral("endTime")] = QJsonValue(data.effectStart().get() + aesItem.effectDuration());
obj[QStringLiteral("endTime")] = QJsonValue(data.effectStart.get() + aesItem.effectDuration());
eData.properties = QString::fromUtf8(QJsonDocument(obj).toJson(QJsonDocument::Compact));
//const Core::GeoPosition geoPosition ( data.impactPosition().lon(), data.impactPosition().lat(), 0);
@@ -147,7 +147,7 @@ bool MainHandler::loadFromDatabase()
ERROR_LOG(m_logger) << "Can not initialize WebSocket Event server";
return false;
}
m_ddsHandler->addPortToPacemaker(m_webSocketEventServer->listenPort(), Core::PortType::WebSocketServer);
m_ddsHandler->addPortToPacemaker(m_webSocketEventServer->listenPort(), Core::CorePortType::WebSocketServer);
if (!m_handlerEerEvent || !m_handlerEerEvent->init())
{
@@ -166,7 +166,7 @@ void WebSocketEventServer::historyDataRequested(const QSqlDatabase &db, QWebSock
{
const QString ids = query.queryItemValue(QStringLiteral("eventTypeId"));
// split/unsplit to make sure only integers are there
const QVector<QStringRef> idVec = ids.splitRef(QLatin1Char(','));
const QStringList idVec = ids.split(QLatin1Char(','));
QStringList eventList;
eventList.reserve(idVec.size());
for (const auto &id : idVec)