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

@@ -41,7 +41,7 @@ struct AvsSessionContext::Composite
, audioPrioObserver(exerciseId_, operatorId, exerciseContextHandle.opmDtc(), exerciseContextHandle.exmDtc())
, avaComm(NGL::Connections::hostName(NGL::Connections::eConnection::AVS_WORKSTATION), NGL::Connections::port(NGL::Connections::eConnection::AVS_WORKSTATION))
, avaControl(&avaComm, exerciseContextHandle.streamNameMapping(), PluginSettings::instance()->avaTimeout())
, avaSession(&avaControl, exerciseId, QString::fromStdString(operator_.name()), langCode, operator_.audioChannelPriority(), audioPrioObserver.timezone(), guiStyle, PluginSettings::instance()->avaKeepAliveEnabled())
, avaSession(&avaControl, exerciseId, QString::fromStdString(operator_.name), langCode, operator_.audioChannelPriority, audioPrioObserver.timezone(), guiStyle, PluginSettings::instance()->avaKeepAliveEnabled())
, avaState(&avaSession)
, streamNameMappingToAva(&avaSession, exerciseContextHandle.streamNameMapping())
, avsMenus(&avaSession, exerciseContextHandle.dtc().get(), exerciseContextHandle.ismDtc(), avaState.rtState())
@@ -80,12 +80,12 @@ OperatorSettingsObserver::OperatorSettingsObserver(int exerciseId, int operatorI
Q_ASSERT(exmDtc);
OperatorManagement::User operator_ = m_opmDtc->user(operatorId);
if (operator_.id() == operatorId)
m_currentPrio = operator_.audioChannelPriority();
if (operator_.id == operatorId)
m_currentPrio = operator_.audioChannelPriority;
ExerciseManagement::Exercise exercise = m_exmDtc->exercise(exerciseId);
if (exercise.id() == exerciseId)
m_timezoneCalculator->setDefaultTimezone(QChar::fromLatin1(exercise.defaultTimeZone()));
if (exercise.id == exerciseId)
m_timezoneCalculator->setDefaultTimezone(QChar::fromLatin1(exercise.defaultTimeZone));
connect(opmDtc, &OperatorManagement::Interface::Dtc::userChanged, this, &OperatorSettingsObserver::onOperatorChanged);
connect(exmDtc, &ExerciseManagement::Interface::Dtc::exerciseChanged, this, &OperatorSettingsObserver::onExerciseChanged);
@@ -109,10 +109,10 @@ void OperatorSettingsObserver::onOperatorChanged(const OperatorManagement::User
case DataModification::eModified:
{
if (operator_.id() != m_operatorId)
if (operator_.id != m_operatorId)
return;
AvaAudioPrio prio = operator_.audioChannelPriority();
AvaAudioPrio prio = operator_.audioChannelPriority;
if (prio == m_currentPrio)
return;
@@ -131,13 +131,13 @@ void OperatorSettingsObserver::onOperatorChanged(const OperatorManagement::User
void OperatorSettingsObserver::onExerciseChanged(const ExerciseManagement::Exercise &exercise, DataModification modType)
{
if (exercise.id() != m_exerciseId)
if (exercise.id != m_exerciseId)
return;
switch (modType)
{
case DataModification::eModified:
m_timezoneCalculator->setDefaultTimezone(QChar::fromLatin1(exercise.defaultTimeZone()));
m_timezoneCalculator->setDefaultTimezone(QChar::fromLatin1(exercise.defaultTimeZone));
break;
default:
@@ -51,7 +51,7 @@ void RtProfileObserver::onCnrConfigChanged(const CnrConfig &cnrConfig, DataModif
return;
if (!isInProfile(cnrConfig))
return;
m_avaControl->changeRtProfileCircuitName(m_rtState, {RadioSystem::Cnr, cnrConfig.id(), cnrConfig.radioCircuit()});
m_avaControl->changeRtProfileCircuitName(m_rtState, {RadioSystem::Cnr, cnrConfig.id, cnrConfig.radioCircuit});
}
void RtProfileObserver::onTvcConfigChanged(const TvcConfig &tvcConfig, DataModification modType)
@@ -60,14 +60,14 @@ void RtProfileObserver::onTvcConfigChanged(const TvcConfig &tvcConfig, DataModif
return;
if (!isInProfile(tvcConfig))
return;
m_avaControl->changeRtProfileCircuitName(m_rtState, {RadioSystem::Tvc, tvcConfig.id(), tvcConfig.radioCircuit()});
m_avaControl->changeRtProfileCircuitName(m_rtState, {RadioSystem::Tvc, tvcConfig.id, tvcConfig.radioCircuit});
}
void RtProfileObserver::onCnrTvcProfileChanged(const CnrTvcProfile &profile, DataModification modType)
{
Q_UNUSED(modType);
if (profile.exerciseId() != m_exerciseId || profile.operatorId() != m_operatorId)
if (profile.exerciseId != m_exerciseId || profile.operatorId != m_operatorId)
return;
switch (modType)
@@ -95,16 +95,16 @@ QVector<RtState::RadioCircuit> RtProfileObserver::defaultRtChannels() const
const QMap<int, TvcConfig> tvccs = m_dtc->tvcConfigs();
QVector<RtState::RadioCircuit> rtChannels;
rtChannels.reserve(m_profile->data().size());
for (const auto &cnrTvcProfileData : m_profile->data())
rtChannels.reserve(m_profile->data.size());
for (const auto &cnrTvcProfileData : m_profile->data)
{
std::string circuitName;
if (cnrTvcProfileData.radioSystemId() == RadioSystem::Cnr)
circuitName = cnrcs.value(cnrTvcProfileData.radioCircuitId()).radioCircuit();
if (cnrTvcProfileData.radioSystemId == RadioSystem::Cnr)
circuitName = cnrcs.value(cnrTvcProfileData.radioCircuitId).radioCircuit;
else
circuitName = tvccs.value(cnrTvcProfileData.radioCircuitId()).radioCircuit();
circuitName = tvccs.value(cnrTvcProfileData.radioCircuitId).radioCircuit;
rtChannels.push_back({cnrTvcProfileData.radioSystemId(), cnrTvcProfileData.radioCircuitId(), circuitName});
rtChannels.push_back({cnrTvcProfileData.radioSystemId, cnrTvcProfileData.radioCircuitId, circuitName});
}
return rtChannels;
@@ -115,7 +115,7 @@ boost::optional<CnrTvcProfile> RtProfileObserver::getProfile() const
boost::optional<CnrTvcProfile> foundProfile;
std::function<bool(const CnrTvcProfile &profile)> forUserInExercise = [this, &foundProfile] (const CnrTvcProfile &profile)
{
if (profile.exerciseId() != m_exerciseId || profile.operatorId() != m_operatorId)
if (profile.exerciseId != m_exerciseId || profile.operatorId != m_operatorId)
return false;
foundProfile = profile;
return true;
@@ -127,12 +127,12 @@ boost::optional<CnrTvcProfile> RtProfileObserver::getProfile() const
bool RtProfileObserver::isInProfile(const CnrConfig &cnrConfig) const
{
return isInProfile(RadioSystem::Cnr, cnrConfig.id());
return isInProfile(RadioSystem::Cnr, cnrConfig.id);
}
bool RtProfileObserver::isInProfile(const TvcConfig &tvcConfig) const
{
return isInProfile(RadioSystem::Tvc, tvcConfig.id());
return isInProfile(RadioSystem::Tvc, tvcConfig.id);
}
bool RtProfileObserver::isInProfile(RadioSystem radioSystem, int32_t id) const
@@ -140,8 +140,8 @@ bool RtProfileObserver::isInProfile(RadioSystem radioSystem, int32_t id) const
if (!m_profile)
return false;
for (const auto &cnrTvcProfileData : m_profile->data())
if (cnrTvcProfileData.radioSystemId() == radioSystem && cnrTvcProfileData.radioCircuitId() == id)
for (const auto &cnrTvcProfileData : m_profile->data)
if (cnrTvcProfileData.radioSystemId == radioSystem && cnrTvcProfileData.radioCircuitId == id)
return true;
return false;
@@ -21,12 +21,11 @@ QDataStream& operator>>(QDataStream& ds, StreamData& sd)
AvailStreamsModel::AvailStreamsModel(Interface::Dtc* avmDtc, int32_t exerciseId, QObject* parent)
: NGLTreeModel(parent, new NGLTreeItem(QVariant()), {tr("Available")}), m_exerciseId(exerciseId), m_avmDtc(avmDtc),
m_cnrRoot(new NGLTreeItem(QVariant())), m_tvcRoot(new NGLTreeItem(QVariant())), m_changes(false)
m_cnrRoot(new NGLTreeItem(QVariant())), m_tvcRoot(new NGLTreeItem(QVariant())), m_changes(false),
m_logger(getLogger("AudioSettingsAvailStreamsModel"))
{
Q_ASSERT(avmDtc);
qRegisterMetaTypeStreamOperators<StreamData>();
setMimeType(StreamData::mimeType());
StreamData data;
@@ -168,7 +167,7 @@ void AvailStreamsModel::insertUpdateData(const T& config, DataModification modTy
if (modType == DataModification::eModified)
{
if (config.exerciseId().is_set() && config.exerciseId().get() != m_exerciseId)
if (config.exerciseId.has_value() && config.exerciseId.get() != m_exerciseId)
action = DataModification::eRemoved;
}
@@ -177,7 +176,7 @@ void AvailStreamsModel::insertUpdateData(const T& config, DataModification modTy
switch (action)
{
case DataModification::eAdded:
if (config.exerciseId().is_set() && config.exerciseId().get() != m_exerciseId)
if (config.exerciseId.has_value() && config.exerciseId.get() != m_exerciseId)
break;
Q_FALLTHROUGH();
case DataModification::eModified: {
@@ -17,7 +17,7 @@ namespace AudioVideoManagement
{
AudioSettingsDialog::AudioSettingsDialog(QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), m_ui(new Ui::AudioSettingsDialog),
m_requestHelper(new LtsUtils::RequestHelper(this))
m_requestHelper(new LtsUtils::RequestHelper(this)), m_logger(getLogger("AudioSettingsDialog"))
{
m_ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
@@ -111,9 +111,9 @@ void AudioSettingsDialog::onOperatorChanged(const OperatorManagement::User& data
switch (modType)
{
case DataModification::eRemoved: {
Q_ASSERT(m_operatorMap.contains(data.id()));
Q_ASSERT(m_operatorMap.contains(data.id));
if (m_ui->operatorComboBox->currentData().toInt() == data.id())
if (m_ui->operatorComboBox->currentData().toInt() == data.id)
{
__unchange__();
m_modelAllocated->resetChangeState();
@@ -121,25 +121,25 @@ void AudioSettingsDialog::onOperatorChanged(const OperatorManagement::User& data
m_filterAvailable->invalidate();
}
m_operatorMap.remove(data.id());
m_ui->operatorComboBox->removeItem(m_ui->operatorComboBox->findData(data.id()));
m_operatorMap.remove(data.id);
m_ui->operatorComboBox->removeItem(m_ui->operatorComboBox->findData(data.id));
break;
}
case DataModification::eAdded: {
Q_ASSERT(!m_operatorMap.contains(data.id()));
const QString operatorName = QString::fromStdString(data.name());
m_operatorMap.insert(data.id(), operatorName);
m_ui->operatorComboBox->addItem(operatorName, data.id());
Q_ASSERT(!m_operatorMap.contains(data.id));
const QString operatorName = QString::fromStdString(data.name);
m_operatorMap.insert(data.id, operatorName);
m_ui->operatorComboBox->addItem(operatorName, data.id);
m_ui->operatorComboBox->model()->sort(0);
break;
}
case DataModification::eModified: {
Q_ASSERT(m_operatorMap.contains(data.id()));
const QString operatorName = QString::fromStdString(data.name());
m_operatorMap.insert(data.id(), operatorName);
int i = m_ui->operatorComboBox->findData(data.id());
Q_ASSERT(m_operatorMap.contains(data.id));
const QString operatorName = QString::fromStdString(data.name);
m_operatorMap.insert(data.id, operatorName);
int i = m_ui->operatorComboBox->findData(data.id);
Q_ASSERT(i != -1);
m_ui->operatorComboBox->setItemText(i, operatorName);
m_ui->operatorComboBox->model()->sort(0);
@@ -150,15 +150,15 @@ void AudioSettingsDialog::onOperatorChanged(const OperatorManagement::User& data
void AudioSettingsDialog::onCnrTvcProfileChanged(const CnrTvcProfile& data, DataModification modType)
{
if (m_session->exerciseId() == data.exerciseId())
if (m_session->exerciseId() == data.exerciseId)
{
if (modType == DataModification::eRemoved)
{
m_cnrTvcProfileMap.remove(data.id());
m_cnrTvcProfileMap.remove(data.id);
}
else
{
m_cnrTvcProfileMap.insert(data.id(), data);
m_cnrTvcProfileMap.insert(data.id, data);
fillOperatorList();
}
}
@@ -170,12 +170,12 @@ void AudioSettingsDialog::fillOperatorList()
for (const auto& rc : std::as_const(m_cnrTvcProfileMap))
{
if ((rc.exerciseId() != m_session->exerciseId()) ||
(rc.operatorId() != m_ui->operatorComboBox->currentData().toInt()))
if ((rc.exerciseId != m_session->exerciseId()) ||
(rc.operatorId != m_ui->operatorComboBox->currentData().toInt()))
continue;
newStreamData.reserve(rc.data().size());
for (const CnrTvcProfileData& profileEntry : rc.data())
newStreamData.reserve(rc.data.size());
for (const CnrTvcProfileData& profileEntry : rc.data)
newStreamData += toStreamData(profileEntry);
break;
@@ -264,12 +264,12 @@ bool AudioSettingsDialog::applyRemove()
for (const auto& profile : std::as_const(m_cnrTvcProfileMap))
{
if (profile.operatorId() != m_operatorId)
if (profile.operatorId != m_operatorId)
continue;
removeRequest.id(profile.id());
removeRequest.id = profile.id;
break;
}
if (removeRequest.id() <= 0)
if (removeRequest.id <= 0)
return true;
m_requestHelper->startSingleRequest(
@@ -285,23 +285,23 @@ bool AudioSettingsDialog::applyModify()
for (const auto& profile : std::as_const(m_cnrTvcProfileMap))
{
if (profile.operatorId() != m_operatorId)
if (profile.operatorId != m_operatorId)
continue;
modifyRequest.id(profile.id());
modifyRequest.id = profile.id;
break;
}
modifyRequest.exerciseId(m_session->exerciseId());
modifyRequest.operatorId(m_operatorId);
modifyRequest.exerciseId = m_session->exerciseId();
modifyRequest.operatorId = m_operatorId;
const QVector<StreamData> allocatedList = m_modelAllocated->getStreamDataVector();
modifyRequest.data().reserve(allocatedList.size());
modifyRequest.data.reserve(allocatedList.size());
for (const StreamData& stream : allocatedList)
{
CnrTvcProfileData circuitData;
circuitData.radioSystemId(stream.bIsCnr ? RadioSystem::Cnr : RadioSystem::Tvc);
circuitData.radioCircuitId(stream.topicId);
modifyRequest.data().push_back(std::move(circuitData));
circuitData.radioSystemId = stream.bIsCnr ? RadioSystem::Cnr : RadioSystem::Tvc;
circuitData.radioCircuitId = stream.topicId;
modifyRequest.data.push_back(std::move(circuitData));
}
m_requestHelper->startSingleRequest(
@@ -383,18 +383,18 @@ void AudioSettingsDialog::onEntryRemoved(const StreamData& stream)
StreamData AudioSettingsDialog::toStreamData(const CnrTvcProfileData& profileEntry) const
{
int configId = profileEntry.radioCircuitId();
int configId = profileEntry.radioCircuitId;
StreamData streamData;
streamData.topicId = configId;
if (profileEntry.radioSystemId() == RadioSystem::Cnr)
if (profileEntry.radioSystemId == RadioSystem::Cnr)
{
streamData.name = QString::fromStdString(m_avmDtc->cnrConfig(configId).radioCircuit());
streamData.name = QString::fromStdString(m_avmDtc->cnrConfig(configId).radioCircuit);
streamData.bIsCnr = true;
}
else
{
streamData.name = QString::fromStdString(m_avmDtc->tvcConfig(configId).radioCircuit());
streamData.name = QString::fromStdString(m_avmDtc->tvcConfig(configId).radioCircuit);
streamData.bIsCnr = false;
}
@@ -10,7 +10,8 @@ namespace AudioVideoManagement
{
AllocatedStreamsModel::AllocatedStreamsModel(QObject* parent)
: NGLTreeModel(parent, new NGLTreeItem(QVariant(QLatin1String("root"))), {tr("Allocated")})
: NGLTreeModel(parent, new NGLTreeItem(QVariant(QLatin1String("root"))), {tr("Allocated")}),
m_logger(getLogger("AudioSettingsUsedStreamsModel"))
{
setMimeType(StreamData::mimeType());
}
@@ -19,14 +19,14 @@ struct StreamData : boost::totally_ordered<StreamData>
StreamData() = default;
explicit StreamData(const TvcConfig &tvcConfig)
: name(QString::fromStdString(tvcConfig.radioCircuit()))
, topicId(tvcConfig.id())
: name(QString::fromStdString(tvcConfig.radioCircuit))
, topicId(tvcConfig.id)
, bIsCnr(false)
{}
explicit StreamData(const CnrConfig &cnrConfig)
: name(QString::fromStdString(cnrConfig.radioCircuit()))
, topicId(cnrConfig.id())
: name(QString::fromStdString(cnrConfig.radioCircuit))
, topicId(cnrConfig.id)
, bIsCnr(true)
{}
@@ -21,7 +21,8 @@ AvmSequenceModel::AvmSequenceModel(QObject *parent)
tr("Speed"),
tr("Volume"),
tr("Description")},
parent)
parent),
m_logger(getLogger("AvmSequenceModel"))
{}
void AvmSequenceModel::setTimezoneHoursOffset(int timezoneHoursOffset)
@@ -11,6 +11,7 @@
#include <AudioVideoManagement/avs_dialog.h>
#include <LtsSession/lts_session_data.h>
#include <QtCore/QJsonArray>
#include <QtWidgets/QTreeView>
#include <TopicEditorBase/topic_previewer.h>
#include <boost/optional.hpp>
#include <cmath>
@@ -52,7 +53,8 @@ AvaTimePoint msecsToAvaTimePoint(qint64 msecs)
TopicEditor::TopicEditor(LtsSession::LtsSession* session, const TopicEditorBase::TopicData& data, QWidget* parent)
: TopicEditorBase::TopicEditor(parent), m_session(session), m_avmDataIfc(nullptr),
m_model(new AvmSequenceModel(this)), m_playbackMenu(nullptr), m_ui(new Ui::AVTopicEditor)
m_model(new AvmSequenceModel(this)), m_playbackMenu(nullptr), m_ui(new Ui::AVTopicEditor),
m_logger(getLogger("TopicEditor"))
{
Q_ASSERT(session);
@@ -79,7 +81,7 @@ TopicEditor::TopicEditor(LtsSession::LtsSession* session, const TopicEditorBase:
m_proxyModel->setSourceModel(m_model);
m_ui->tvSequences->setModel(m_proxyModel);
connect(m_ui->tvSequences, &QTreeView::doubleClicked, m_ui->tvSequences->selectionModel(),
&QItemSelectionModel::select);
[this](const QModelIndex &idx) { m_ui->tvSequences->selectionModel()->select(idx, QItemSelectionModel::Toggle); });
connect(m_ui->tvSequences->selectionModel(), &QItemSelectionModel::selectionChanged, this, &TopicEditor::onEnaDisa);
connect(m_ui->pbDelete, &QToolButton::clicked, this, &TopicEditor::onDeleteSequences);
@@ -14,14 +14,14 @@ namespace
bool isMountingPointOfInterest(const InfrastructureManagement::StructureElement& se, bool isAudio)
{
if (se.structureElementTypeId() != InfrastructureManagement::StructureElementType::MountingPoint)
if (se.structureElementTypeId != InfrastructureManagement::StructureElementType::MountingPoint)
return false;
if (se.mountingPointTypeId() == InfrastructureManagement::MountingPointType::IndoorCamera ||
se.mountingPointTypeId() == InfrastructureManagement::MountingPointType::OutdoorCamera)
if (se.mountingPointTypeId == InfrastructureManagement::MountingPointType::IndoorCamera ||
se.mountingPointTypeId == InfrastructureManagement::MountingPointType::OutdoorCamera)
return true;
if (isAudio && se.mountingPointTypeId() == InfrastructureManagement::MountingPointType::AnnouncementUnit)
if (isAudio && se.mountingPointTypeId == InfrastructureManagement::MountingPointType::AnnouncementUnit)
return true;
return false;
@@ -47,13 +47,12 @@ AvailableStreamsModel::AvailableStreamsModel(const std::shared_ptr<Interface::Dt
const std::shared_ptr<InfrastructureManagement::Interface::Dtc>& ismDtc,
LtsSession::LtsSession* session, StreamNameMapping* streamNameMapping,
QObject* parent, bool isAudio)
: NGLTreeModel(parent, new NGLTreeItem(QVariant(), QIcon()), ,
m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger()){tr("Available Streams")}),
m_isAudio(isAudio), m_avmDtc(avmDtc), m_ismDtc(ismDtc), m_session(session), m_streamNameMapping(streamNameMapping)
: NGLTreeModel(parent, new NGLTreeItem(QVariant(), QIcon()), {tr("Available Streams")}), m_isAudio(isAudio),
m_avmDtc(avmDtc), m_ismDtc(ismDtc), m_session(session), m_streamNameMapping(streamNameMapping),
m_logger(getLogger("AvailableStreamsModel"))
{
Q_ASSERT(ismDtc);
Q_ASSERT(streamNameMapping);
qRegisterMetaTypeStreamOperators<StreamModelData>("StreamModelData");
qRegisterMetaType<StreamModelData>("StreamModelData");
setMimeType(s_MimeType);
@@ -175,7 +174,7 @@ void AvailableStreamsModel::initModel()
const auto& buildings = m_ismDtc->mainStructureElements();
for (const auto& building : buildings)
{
for (const auto& mountingPoint : building.elements())
for (const auto& mountingPoint : building.elements)
{
if (!isMountingPointOfInterest(mountingPoint, m_isAudio))
continue;
@@ -183,7 +182,7 @@ void AvailableStreamsModel::initModel()
bool isMounted = false;
for (const auto& mountedAsset : mountedAssets)
{
if (mountedAsset.structureElementId() == mountingPoint.id())
if (mountedAsset.structureElementId == mountingPoint.id)
{
isMounted = true;
break;
@@ -193,11 +192,11 @@ void AvailableStreamsModel::initModel()
if (!isMounted)
continue;
StreamModelData item;
item.name = m_streamNameMapping->displayName(mountingPoint.id());
item.mountingPointId = mountingPoint.id();
item.name = m_streamNameMapping->displayName(mountingPoint.id);
item.mountingPointId = mountingPoint.id;
item.isGroup = false;
if (mountingPoint.mountingPointTypeId() == InfrastructureManagement::MountingPointType::IndoorCamera)
if (mountingPoint.mountingPointTypeId == InfrastructureManagement::MountingPointType::IndoorCamera)
toAddIndoor.push_back(item);
else
toAddOutdoor.push_back(item);
@@ -209,12 +208,12 @@ void AvailableStreamsModel::initModel()
const auto& mvsStreams = m_avmDtc->videoTeams();
for (const auto& videoTeam : mvsStreams)
{
if (videoTeam.exerciseId() != m_session->exerciseId())
if (videoTeam.exerciseId != m_session->exerciseId())
continue;
DEBUG_LOG(m_logger) << "add new videoteam" << videoTeam;
StreamModelData item;
item.name = QString::fromStdString(videoTeam.streamName().c_str());
item.mountingPointId = -1 * videoTeam.id();
item.name = QString::fromStdString(videoTeam.streamName.c_str());
item.mountingPointId = -1 * videoTeam.id;
item.isGroup = false;
toAddMvs.push_back(item);
@@ -248,22 +247,22 @@ StreamModelData StreamModelData::createFromServiceItem(const AvMenuEntry& entry,
const QMap<int, VideoTeam>& videoTeamList)
{
StreamModelData data;
data.id = entry.id();
data.parentId = entry.parentId();
data.isGroup = entry.isGroup();
if (entry.isGroup())
data.name = QString::fromStdString(entry.name().get());
data.id = entry.id;
data.parentId = entry.parentId;
data.isGroup = entry.isGroup;
if (entry.isGroup)
data.name = QString::fromStdString(entry.name.get());
else
{
if (entry.mountingPointId().is_set() && (entry.mountingPointId().get() > 0))
if (entry.mountingPointId.has_value() && (entry.mountingPointId.get() > 0))
{
data.mountingPointId = entry.mountingPointId().get();
data.name = streamNameMapping->displayName(entry.mountingPointId().get());
data.mountingPointId = entry.mountingPointId.get();
data.name = streamNameMapping->displayName(entry.mountingPointId.get());
}
else
{
data.mountingPointId = entry.mountingPointId().get();
data.name = QString::fromStdString(videoTeamList.value(entry.mountingPointId().get() * -1).streamName());
data.mountingPointId = entry.mountingPointId.get();
data.name = QString::fromStdString(videoTeamList.value(entry.mountingPointId.get() * -1).streamName);
}
}
@@ -15,7 +15,7 @@ namespace AudioVideoManagement
ChooseMenu::ChooseMenu(Interface::Dtc* dtc, AvsMenus* avsMenus, QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), m_dtc(dtc), m_avsMenus(avsMenus),
m_ui(new Ui::ChooseMenuStruct)
m_ui(new Ui::ChooseMenuStruct), m_logger(getLogger("ChooseMenu"))
{
Q_ASSERT(dtc);
Q_ASSERT(avsMenus);
@@ -47,22 +47,22 @@ void ChooseMenu::onMenuStructChanged(const MenuStruct& data, DataModification mo
switch (modType)
{
case DataModification::eAdded: {
if (data.isAudio())
m_ui->cbAudio->addItem(QString::fromStdString(data.name()), data.id());
if (data.isAudio)
m_ui->cbAudio->addItem(QString::fromStdString(data.name), data.id);
else
m_ui->cbVideo->addItem(QString::fromStdString(data.name()), data.id());
m_ui->cbVideo->addItem(QString::fromStdString(data.name), data.id);
break;
}
case DataModification::eRemoved: {
if (data.isAudio())
if (data.isAudio)
{
int index = m_ui->cbAudio->findData(data.id());
int index = m_ui->cbAudio->findData(data.id);
m_ui->cbAudio->removeItem(index);
}
else
{
int index = m_ui->cbVideo->findData(data.id());
int index = m_ui->cbVideo->findData(data.id);
m_ui->cbVideo->removeItem(index);
}
break;
@@ -1,6 +1,7 @@
#include "avm_menu_edit.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "ui_avm_menu_edit.h"
@@ -13,6 +14,7 @@ MenuEdit::MenuEdit(QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), m_ftc(nullptr),
m_ui(new Ui::MenuEdit), m_availStreamsModel(nullptr), m_usedStreamsModel(nullptr), m_isAudio(false),
m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
}
@@ -44,8 +46,8 @@ bool MenuEdit::init(LtsSession::LtsSession* session, const std::shared_ptr<Audio
}
m_ftc = ftc;
m_isAudio = ms.isAudio();
m_name = QString::fromStdString(ms.name());
m_isAudio = ms.isAudio;
m_name = QString::fromStdString(ms.name);
m_availStreamsModel = new AvailableStreamsModel(dtc, ismDtc, session, streamNameMapping, this, m_isAudio);
m_ui->availTreeView->setModel(m_availStreamsModel);
@@ -69,7 +71,7 @@ bool MenuEdit::init(LtsSession::LtsSession* session, const std::shared_ptr<Audio
else
setOnlineHelpFilename(QStringLiteral("Situation-Video_Menu"));
if (ms.id() <= 0)
if (ms.id <= 0)
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Apply, false);
return true;
@@ -78,7 +80,7 @@ bool MenuEdit::init(LtsSession::LtsSession* session, const std::shared_ptr<Audio
bool MenuEdit::apply()
{
MenuStruct ms = m_usedStreamsModel->getMenuStruct();
ms.isAudio(m_isAudio);
ms.isAudio = m_isAudio;
bool ret = m_requestHelper->startSingleRequest([this, ms]() { return m_ftc->modifyMenuStructRequest(ms, this); });
@@ -1,6 +1,7 @@
#include "avm_menu_edit_view.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_menu_edit.h"
#include "avm_new_menu_struct.h"
@@ -19,6 +20,7 @@ MenuEditView::MenuEditView(const QString& menuGroup, LtsSession::LtsSession* ses
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_menuGroup(menuGroup), m_model(nullptr),
m_isAudio(false), m_dtc(nullptr), m_ftc(nullptr), m_session(session),
m_requestHelper(new LtsUtils::RequestHelper(this)), m_ui(new Ui::MenuEditView)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
m_ui->widget->setSelectionMode(QAbstractItemView::SingleSelection);
@@ -102,8 +104,8 @@ void MenuEditView::onAddMenuStruct()
connect(newDialog, &NewMenuStruct::newName, this, [this](const QString& name) {
MenuStruct ms;
ms.name(name.toStdString());
ms.isAudio(m_isAudio);
ms.name = name.toStdString();
ms.isAudio = m_isAudio;
MenuEdit* dialog = new MenuEdit(this);
dialog->init(m_session, m_dtc, m_ftc, m_ismDtc, m_streamNameMapping, ms);
@@ -123,15 +125,15 @@ void MenuEditView::onEditMenuStruct()
return;
AudioVideoManagement::MenuStruct ms = m_model->getRowData(row);
ms.isAudio(m_isAudio);
ms.isAudio = m_isAudio;
DEBUG_LOG(m_logger) << "---onEditMenuStruct () "
<< " id: " << ms.id() << " name: " << ms.name();
<< " id: " << ms.id << " name: " << ms.name;
MenuEdit* dialog = new MenuEdit(this);
dialog->init(m_session, m_dtc, m_ftc, m_ismDtc, m_streamNameMapping, ms);
addDialog(dialog, m_menuGroup, QLatin1String("avmMenuEdit") + QString::number(ms.id()),
addDialog(dialog, m_menuGroup, QLatin1String("avmMenuEdit") + QString::number(ms.id),
LtsWidgets::LayoutArea::eDialogTab);
}
@@ -141,7 +143,7 @@ void MenuEditView::onRemoveMenuStruct()
if (!idx.isValid())
return;
const AudioVideoManagement::MenuStruct ms = m_model->getRowData(idx.row());
const Core::RemoveElementRequest req(ms.id());
const Core::RemoveElementRequest req(ms.id);
m_requestHelper->startSingleRequest([req, this]() { return m_ftc->removeMenuStructRequest(req, this); });
if (m_model->rowCount() == 0)
@@ -1,6 +1,7 @@
#include "avm_menu_view_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <FileManagement/flm_translation.h>
#include <QtCore/QJsonArray>
@@ -13,6 +14,7 @@ namespace AudioVideoManagement
MenuViewModel::MenuViewModel(QObject* parent)
: LtsWidgets::LtsAbstractTableModel<AudioVideoManagement::MenuStruct>({tr("Id"), tr("Name")}, parent),
m_isAudio(false), m_dtc(nullptr)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
}
@@ -38,9 +40,9 @@ QVariant MenuViewModel::data(const QModelIndex& index, int role) const
switch (index.column())
{
case 0:
return ms.id();
return ms.id;
case 1:
return QString::fromStdString(ms.name());
return QString::fromStdString(ms.name);
default:
break;
}
@@ -51,9 +53,9 @@ QVariant MenuViewModel::data(const QModelIndex& index, int role) const
bool MenuViewModel::isFiltered(const MenuStruct& data, DataModification modType) const
{
Q_UNUSED(modType);
if (data.isAudio() != m_isAudio)
if (data.isAudio != m_isAudio)
return true;
if (data.isDefault())
if (data.isDefault)
return true;
return false;
}
@@ -70,22 +72,22 @@ QByteArray MenuViewModel::modelToJson(int row) const
const AudioVideoManagement::MenuStruct& menuStruct = m_vecData.at(row);
obj[QStringLiteral("id")] = 0;
obj[QStringLiteral("isAudio")] = menuStruct.isAudio();
obj[QStringLiteral("isDefault")] = menuStruct.isDefault();
obj[QStringLiteral("name")] = QString::fromStdString(menuStruct.name());
obj[QStringLiteral("isAudio")] = menuStruct.isAudio;
obj[QStringLiteral("isDefault")] = menuStruct.isDefault;
obj[QStringLiteral("name")] = QString::fromStdString(menuStruct.name);
QJsonArray arrData;
for (const AudioVideoManagement::AvMenuEntry& avMenuEntry : menuStruct.menuEntries())
for (const AudioVideoManagement::AvMenuEntry& avMenuEntry : menuStruct.menuEntries)
{
QJsonObject innerData;
innerData[QStringLiteral("id")] = avMenuEntry.id();
innerData[QStringLiteral("isGroup")] = avMenuEntry.isGroup();
if (avMenuEntry.mountingPointId().is_set())
innerData[QStringLiteral("mountingPointId")] = avMenuEntry.mountingPointId().get();
if (avMenuEntry.name().is_set())
innerData[QStringLiteral("name")] = QString::fromStdString(avMenuEntry.name().get());
innerData[QStringLiteral("parentId")] = avMenuEntry.parentId();
innerData[QStringLiteral("rowId")] = avMenuEntry.rowId();
innerData[QStringLiteral("id")] = avMenuEntry.id;
innerData[QStringLiteral("isGroup")] = avMenuEntry.isGroup;
if (avMenuEntry.mountingPointId.has_value())
innerData[QStringLiteral("mountingPointId")] = avMenuEntry.mountingPointId.get();
if (avMenuEntry.name.has_value())
innerData[QStringLiteral("name")] = QString::fromStdString(avMenuEntry.name.get());
innerData[QStringLiteral("parentId")] = avMenuEntry.parentId;
innerData[QStringLiteral("rowId")] = avMenuEntry.rowId;
arrData += innerData;
}
@@ -101,31 +103,31 @@ QVector<AudioVideoManagement::MenuStruct> MenuViewModel::jsonToMenuStructs(const
AudioVideoManagement::MenuStruct menuStruct;
const QJsonDocument doc(QJsonDocument::fromJson(content));
const QJsonObject obj(doc.object());
menuStruct.id(0);
menuStruct.isAudio(obj[QStringLiteral("isAudio")].toBool());
menuStruct.isDefault(obj[QStringLiteral("isDefault")].toBool());
menuStruct.name(obj[QStringLiteral("name")].toString().toStdString());
menuStruct.id = 0;
menuStruct.isAudio = obj[QStringLiteral("isAudio")].toBool();
menuStruct.isDefault = obj[QStringLiteral("isDefault")].toBool();
menuStruct.name = obj[QStringLiteral("name")].toString().toStdString();
const QJsonArray arrEntry(obj.value(QStringLiteral("menuEntries")).toArray());
menuStruct.menuEntries().resize(arrEntry.size());
menuStruct.menuEntries.resize(arrEntry.size());
INFO_LOG(m_logger) << "arrEntry.size()=" << arrEntry.size();
for (int j = 0; j < arrEntry.size(); ++j)
{
const QJsonObject objEntry(arrEntry.at(j).toObject());
AudioVideoManagement::AvMenuEntry avMenuEntry;
avMenuEntry.id(-10000000 + objEntry[QStringLiteral("id")].toInt());
avMenuEntry.isGroup(objEntry[QStringLiteral("isGroup")].toBool());
avMenuEntry.mountingPointId(objEntry[QStringLiteral("mountingPointId")].toInt());
avMenuEntry.id = -10000000 + objEntry[QStringLiteral("id")].toInt();
avMenuEntry.isGroup = objEntry[QStringLiteral("isGroup")].toBool();
avMenuEntry.mountingPointId = objEntry[QStringLiteral("mountingPointId")].toInt();
if (objEntry.contains(QStringLiteral("name")))
avMenuEntry.name().set(objEntry[QStringLiteral("name")].toString().toStdString());
avMenuEntry.name.set(objEntry[QStringLiteral("name")].toString().toStdString());
if (objEntry[QStringLiteral("isGroup")].toBool())
avMenuEntry.parentId(0);
avMenuEntry.parentId = 0;
else
avMenuEntry.parentId(-10000000 + objEntry[QStringLiteral("parentId")].toInt());
avMenuEntry.rowId(objEntry[QStringLiteral("rowId")].toInt());
avMenuEntry.parentId = -10000000 + objEntry[QStringLiteral("parentId")].toInt();
avMenuEntry.rowId = objEntry[QStringLiteral("rowId")].toInt();
menuStruct.menuEntries()[j] = avMenuEntry;
menuStruct.menuEntries[j] = avMenuEntry;
}
result.append(menuStruct);
@@ -2,6 +2,7 @@
#include "avm_new_menu_struct.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "ui_avm_new_menu_struct.h"
@@ -13,6 +14,7 @@ namespace AudioVideoManagement
NewMenuStruct::NewMenuStruct(QWidget *parent)
: LtsWidgets::LtsFramelessDialog(parent, LtsWidgets::Behaviour::Modal)
, m_ui(new Ui::NewMenuStruct)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
m_ui->ltsDialogButtonBox->getButton(LtsWidgets::DialogButton::Ok)->hide();
@@ -1,6 +1,7 @@
#include "avm_playback_menu.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "TopicEditor/avm_sequence_model.h"
@@ -269,6 +270,7 @@ QueryTimeline::QueryTimeline(const AvaStream& stream, const AvaTimePoint& start,
AvmPlaybackMenu::AvmPlaybackMenu(QWidget* parent)
: QWidget(parent), m_ui(new Ui::Playback), m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
}
@@ -563,7 +565,7 @@ bool AvmPlaybackMenu::init(LtsSession::LtsSession* session, AvaSession* avaSessi
const QChar tz = LtsUtils::OperatorSettings::getInstance()
->value(QStringLiteral("TimeSettings"), QStringLiteral("TimeZone"), QChar(QLatin1Char('Z')))
.toChar();
int idx = m_ui->cbTimeZone->findData(tz.isNull() ? 0 : tz);
int idx = m_ui->cbTimeZone->findData(tz.isNull() ? 0 : tz.unicode());
if (idx >= 0)
m_ui->cbTimeZone->setCurrentIndex(idx);
@@ -1173,41 +1175,41 @@ QString AvmPlaybackMenu::getInternalStreamName() const
void AvmPlaybackMenu::selectMarker(const MarkerManagement::Marker& marker)
{
if (marker.id() == 0)
if (marker.id == 0)
return;
QSignalBlocker blocker(m_ui->cbMarkerStreams);
(void)blocker;
const auto& rowData = marker;
DEBUG_LOG(m_logger) << "AvmPlaybackMenu::onMarkerClicked name = " << QString::fromStdString(rowData.name())
<< " note = " << QString::fromStdString(rowData.note());
DEBUG_LOG(m_logger) << "AvmPlaybackMenu::onMarkerClicked name = " << QString::fromStdString(rowData.name)
<< " note = " << QString::fromStdString(rowData.note);
bool selectMarkerStream = false;
for (const MarkerManagement::MarkerDescription& desc : rowData.descriptions())
for (const MarkerManagement::MarkerDescription& desc : rowData.descriptions)
{
if ((desc.markerType() == MarkerManagement::MarkerType::Video && m_isAudio == false) ||
(desc.markerType() == MarkerManagement::MarkerType::Audio && m_isAudio == true))
if ((desc.markerType == MarkerManagement::MarkerType::Video && m_isAudio == false) ||
(desc.markerType == MarkerManagement::MarkerType::Audio && m_isAudio == true))
{
m_ui->cbMarkerStreams->clear();
break;
}
}
for (const MarkerManagement::MarkerDescription& desc : rowData.descriptions())
for (const MarkerManagement::MarkerDescription& desc : rowData.descriptions)
{
DEBUG_LOG(m_logger) << " description = " << QString::fromStdString(desc.content())
<< " desc.markerType()=" << desc.markerType();
if ((desc.markerType() == MarkerManagement::MarkerType::Video && m_isAudio == false) ||
(desc.markerType() == MarkerManagement::MarkerType::Audio && m_isAudio == true))
DEBUG_LOG(m_logger) << " description = " << QString::fromStdString(desc.content)
<< " desc.markerType()=" << desc.markerType;
if ((desc.markerType == MarkerManagement::MarkerType::Video && m_isAudio == false) ||
(desc.markerType == MarkerManagement::MarkerType::Audio && m_isAudio == true))
{
AvaStream avaStream;
avaStream.type = m_isAudio ? AvaStreamType::Audio : AvaStreamType::Video;
avaStream.source = AvaStreamSource::Server;
AvaStream selectedStream;
const QStringList streams(QString::fromStdString(desc.content()).split(QLatin1Char(',')));
const QStringList streams(QString::fromStdString(desc.content).split(QLatin1Char(',')));
for (const QString& sr : streams)
{
@@ -1239,7 +1241,7 @@ void AvmPlaybackMenu::selectMarker(const MarkerManagement::Marker& marker)
}
}
qint64 time = rowData.timeStamp() - rowData.timeStampOffset();
qint64 time = rowData.timeStamp - rowData.timeStampOffset;
DEBUG_LOG(m_logger) << "marker time: " << time << " ("
<< QDateTime::fromMSecsSinceEpoch(time).toString(QStringLiteral("dd.MM.yy HH:mm:ss.zzz"))
@@ -1253,7 +1255,7 @@ void AvmPlaybackMenu::selectMarker(const MarkerManagement::Marker& marker)
if (selectMarkerStream)
onMarkerStreamSelected();
emit markerSelected(QString::fromStdString(rowData.note()));
emit markerSelected(QString::fromStdString(rowData.note));
m_ui->tavIntervals->selectionModel()->clear();
}
@@ -1288,8 +1290,8 @@ void AvmPlaybackMenu::onSetMarkerClicked()
MarkerManagement::Marker mrk;
MarkerManagement::MarkerDescription ma;
ma.markerType(m_isAudio ? MarkerManagement::MarkerType::Audio : MarkerManagement::MarkerType::Video);
auto& descriptions = mrk.descriptions();
ma.markerType = m_isAudio ? MarkerManagement::MarkerType::Audio : MarkerManagement::MarkerType::Video;
auto& descriptions = mrk.descriptions;
QStringList streamList;
streamList.reserve(m_selectedStreams->size());
const QLatin1Char star = QLatin1Char('*');
@@ -1299,12 +1301,12 @@ void AvmPlaybackMenu::onSetMarkerClicked()
streamList += stream.internalName;
streamList.last().append(star);
}
ma.content() = streamList.join(QStringLiteral(", ")).toStdString();
ma.content = streamList.join(QStringLiteral(", ")).toStdString();
descriptions.resize(descriptions.size() + 1, ma);
mrk.note(note.toStdString());
mrk.timeStamp(m_timeControl->timeMSec());
mrk.timeStampOffset(0);
mrk.operatorId(LtsSessionData::LtsSessionData::getInstance()->getOperatorId());
mrk.note = note.toStdString();
mrk.timeStamp = m_timeControl->timeMSec();
mrk.timeStampOffset = 0;
mrk.operatorId = LtsSessionData::LtsSessionData::getInstance()->getOperatorId();
m_requestHelper->startSingleRequest([mrk, this]() { return m_mrkDataIfc->setMarker(mrk, this); });
}
@@ -168,6 +168,7 @@ class AvmPlaybackMenu : public QWidget, protected MarkerManagement::Interface::F
void applyAvsVolume();
PlaybackAppHandle m_playbackApp;
NGL::INGLLogger& m_logger;
bool m_isAudio = false;
StreamNameMapping* m_streamNameMapping = nullptr;
boost::optional<QString> m_presetStreamName;
@@ -3,6 +3,7 @@
#include "avm_playback_menu_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
namespace AudioVideoManagement
{
@@ -11,6 +12,7 @@ AvmPlaybackMenuDialog::AvmPlaybackMenuDialog(bool isAudio, QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly)
, m_isAudio(isAudio)
, m_ui(new Ui::AvmPlaybackMenuDialog)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
if (m_isAudio)
@@ -1,12 +1,14 @@
#include "avm_used_streams_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_available_streams_model.h"
#include <AudioVideoManagement/stream_name_mapping.h>
#include <QMimeData>
#include <QtCore/QSet>
#include <QtCore/QIODevice>
#include <nglwidgets/ngltreeitem.h>
#include <utility>
@@ -20,6 +22,7 @@ UsedStreamsModel::UsedStreamsModel(const std::shared_ptr<Interface::Dtc> avmDtc,
: NGLTreeModel(parent, nullptr, {tr("Streams")}), m_avmDtc(avmDtc), m_ismDtc(ismDtc), m_dummyId(-10000000),
m_menuStruct(ms), m_streamNameMapping(streamNameMapping)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
Q_ASSERT(streamNameMapping);
initModel();
@@ -225,21 +228,21 @@ static void getItems(const NGLTreeItem* item, int rowId, int parentId,
StreamModelData s = item->data().value<StreamModelData>();
AvMenuEntry me;
me.id(s.id ? s.id : newId++);
me.parentId(parentId);
me.isGroup(s.isGroup);
me.id = s.id ? s.id : newId++;
me.parentId = parentId;
me.isGroup = s.isGroup;
if (s.isGroup)
me.name().set(s.name.toStdString());
me.name.set(s.name.toStdString());
else
me.mountingPointId(s.mountingPointId);
me.rowId(rowId);
me.mountingPointId = s.mountingPointId;
me.rowId = rowId;
contToAdd.push_back(me);
if (s.isGroup)
{
for (int row = 0; row < item->childCount(); ++row)
getItems(item->child(row), row + 1, me.id(), contToAdd, newId);
getItems(item->child(row), row + 1, me.id, contToAdd, newId);
}
}
}
@@ -247,12 +250,12 @@ static void getItems(const NGLTreeItem* item, int rowId, int parentId,
MenuStruct UsedStreamsModel::getMenuStruct() const
{
MenuStruct ms;
ms.id(m_menuStruct.id());
ms.name(m_menuStruct.name());
ms.id = m_menuStruct.id;
ms.name = m_menuStruct.name;
int newId = -10000000;
for (int row = 0; row < m_rootItem->childCount(); ++row)
getItems(m_rootItem->child(row), row + 1, ms.id(), ms.menuEntries(), newId);
getItems(m_rootItem->child(row), row + 1, ms.id, ms.menuEntries, newId);
return ms;
}
@@ -264,22 +267,22 @@ void UsedStreamsModel::insertChildren(NGLTreeItem* parent, int parentId,
QMap<int, int> rowIds;
for (const AudioVideoManagement::AvMenuEntry& me : entries)
{
if (me.parentId() != parentId)
if (me.parentId != parentId)
continue;
data.setValue(StreamModelData::createFromServiceItem(me, m_streamNameMapping, m_avmDtc->videoTeams()));
NGLTreeItem* treeItem = new NGLTreeItem(data);
auto hierIt = rowIds.insert(me.rowId(), me.rowId());
auto hierIt = rowIds.insert(me.rowId, me.rowId);
const int rowToInsert = std::distance(rowIds.begin(), hierIt);
parent->insertChild(rowToInsert, treeItem);
if (me.isGroup())
if (me.isGroup)
{
DEBUG_LOG(m_logger) << "insertChildren" << me.mountingPointId() << me.name();
insertChildren(treeItem, me.id(), entries);
DEBUG_LOG(m_logger) << "insertChildren" << me.mountingPointId << me.name;
insertChildren(treeItem, me.id, entries);
}
}
}
@@ -472,7 +475,7 @@ bool UsedStreamsModel::initModel()
data.setValue(ms);
setRootItem(new NGLTreeItem(data));
insertChildren(m_rootItem, m_menuStruct.id(), m_menuStruct.menuEntries());
insertChildren(m_rootItem, m_menuStruct.id, m_menuStruct.menuEntries);
connect(m_ismDtc.get(), &InfrastructureManagement::Interface::Dtc::mainStructureElementChanged, this,
&UsedStreamsModel::onDataChanged);
connect(m_avmDtc.get(), &AudioVideoManagement::Interface::Dtc::videoTeamChanged, this,
@@ -518,7 +521,7 @@ void UsedStreamsModel::onDataChanged(const InfrastructureManagement::MainStructu
{
beginResetModel();
INFO_LOG(m_logger) << "onDataChanged m_rootItem->childCount()" << m_rootItem->childCount()
<< " data.elements().size()=" << data.elements().size();
<< " data.elements().size()=" << data.elements.size();
switch (modType)
{
@@ -526,12 +529,12 @@ void UsedStreamsModel::onDataChanged(const InfrastructureManagement::MainStructu
break;
case DataModification::eModified:
case DataModification::eAdded:
for (const InfrastructureManagement::StructureElement& se : data.elements())
for (const InfrastructureManagement::StructureElement& se : data.elements)
{
INFO_LOG(m_logger) << "se.id()" << se.id() << " se.displayName()" << se.displayName()
INFO_LOG(m_logger) << "se.id()" << se.id << " se.displayName()" << se.displayName
<< " m_rootItem->childCount()" << m_rootItem->childCount();
const QString newName = QString::fromStdString(se.displayName());
updateStreamNames(se.id(), newName, m_rootItem);
const QString newName = QString::fromStdString(se.displayName);
updateStreamNames(se.id, newName, m_rootItem);
}
}
endResetModel();
@@ -551,10 +554,10 @@ void UsedStreamsModel::onDataChangedMvs(const VideoTeam& data, const DataModific
case DataModification::eModified:
case DataModification::eAdded:
INFO_LOG(m_logger) << "se.id()" << data.id() << " se.displayName()" << data.streamName()
INFO_LOG(m_logger) << "se.id()" << data.id << " se.displayName()" << data.streamName
<< " m_rootItem->childCount()" << m_rootItem->childCount();
const QString newName = QString::fromStdString(data.streamName());
updateStreamNames(-1 * data.id(), newName, m_rootItem);
const QString newName = QString::fromStdString(data.streamName);
updateStreamNames(-1 * data.id, newName, m_rootItem);
}
endResetModel();
emit modelDataChanged();
@@ -1,6 +1,7 @@
#include "topic_replay.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <AudioVideoManagement/ava_control.h>
#include <AudioVideoManagement/ava_session.h>
@@ -43,6 +44,7 @@ class TopicReplay::ExportScript : public QObject
};
TopicReplay::TopicReplay(DataInterface* dataIfc, bool isAudio) : m_isAudio(isAudio), m_dataIfc(dataIfc)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
DEBUG_LOG(m_logger) << "TopicReplay::TopicReplay()";
Q_ASSERT(dataIfc);
@@ -22,8 +22,8 @@ QByteArray cnrConfigVectorToJson(const QVector<CnrConfig> &configVector, int32_t
for (const CnrConfig &config : std::as_const(configVector))
{
if((isGlobal && config.exerciseId().is_set())
|| (!isGlobal && !config.exerciseId().is_set()))
if((isGlobal && config.exerciseId.has_value())
|| (!isGlobal && !config.exerciseId.has_value()))
continue;
arr += cnrConfigToJson(config);
@@ -43,12 +43,12 @@ QJsonObject cnrConfigToJson(const CnrConfig &config)
using namespace JsonKeys;
cnrObj.insert(CALL_SIGN(), QString::fromStdString(config.callSign()));
cnrObj.insert(CNR_CHANNEL_ID(), config.cnrChannelId());
cnrObj.insert(IS_GLOBAL(), !config.exerciseId().is_set());
cnrObj.insert(RADIO_CIRCUIT(), QString::fromStdString(config.radioCircuit()));
cnrObj.insert(IS_ACTIVE(), config.isActive());
cnrObj.insert(RECORDING(), config.recording());
cnrObj.insert(CALL_SIGN(), QString::fromStdString(config.callSign));
cnrObj.insert(CNR_CHANNEL_ID(), config.cnrChannelId);
cnrObj.insert(IS_GLOBAL(), !config.exerciseId.has_value());
cnrObj.insert(RADIO_CIRCUIT(), QString::fromStdString(config.radioCircuit));
cnrObj.insert(IS_ACTIVE(), config.isActive);
cnrObj.insert(RECORDING(), config.recording);
return cnrObj;
}
@@ -60,12 +60,12 @@ T jsonToCnr(const QJsonObject &cnrJson)
using namespace JsonKeys ;
cnrConfigRequest.callSign(cnrJson.value(CALL_SIGN()).toString().toStdString());
cnrConfigRequest.cnrChannelId(cnrJson.value(CNR_CHANNEL_ID()).toInt());
cnrConfigRequest.id(0);
cnrConfigRequest.radioCircuit(cnrJson.value(RADIO_CIRCUIT()).toString().toStdString());
cnrConfigRequest.callSign = cnrJson.value(CALL_SIGN()).toString().toStdString();
cnrConfigRequest.cnrChannelId = cnrJson.value(CNR_CHANNEL_ID()).toInt();
cnrConfigRequest.id = 0;
cnrConfigRequest.radioCircuit = cnrJson.value(RADIO_CIRCUIT()).toString().toStdString();
cnrConfigRequest.recording(cnrJson.value(RECORDING()).toBool());
cnrConfigRequest.recording = cnrJson.value(RECORDING()).toBool();
return cnrConfigRequest;
}
@@ -1,6 +1,7 @@
#include "avm_combat_net_radio_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_cnr_json_helper.h"
#include "avm_combat_net_radio_dialog_model.h"
@@ -20,6 +21,7 @@ namespace AudioVideoManagement
CombatNetRadioDialog::CombatNetRadioDialog(LtsSession::LtsSession* session, const QString& menuGroup, QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_session(session),
m_ui(new Ui::CombatNetRadioDialog), m_menuGroup(menuGroup), m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
setUnchangeable(true);
@@ -128,7 +130,7 @@ void CombatNetRadioDialog::onEditClicked()
EditCombatNetRadioDialog* dialog = new EditCombatNetRadioDialog(config, m_session->exerciseId(), m_session,
m_ppmDtc, m_avmDtc, m_avmFtc, m_exmDtc, this);
addDialog(dialog, m_menuGroup, QStringLiteral("EditCNRConfig%1").arg(config.id()),
addDialog(dialog, m_menuGroup, QStringLiteral("EditCNRConfig%1").arg(config.id),
LtsWidgets::LayoutArea::eDialogTab);
}
@@ -139,7 +141,7 @@ void CombatNetRadioDialog::onRemoveClicked()
if (!currentIndex.isValid())
return;
Core::RemoveElementRequest request(m_model->data(currentIndex, Qt::UserRole).value<CnrConfig>().id());
Core::RemoveElementRequest request(m_model->data(currentIndex, Qt::UserRole).value<CnrConfig>().id);
m_requestHelper->startSingleRequest([this, request]() { return m_avmFtc->removeCnrConfigRequest(request, this); });
}
@@ -157,7 +159,7 @@ void CombatNetRadioDialog::onSelectionChanged()
CnrConfig config = m_model->data(currentIndex, Qt::UserRole).value<CnrConfig>();
bool enabled =
rowSelected && (config.exerciseId().is_set() || m_session->partitionType() == IDL::PartitionType::Global);
rowSelected && (config.exerciseId.has_value() || m_session->partitionType() == IDL::PartitionType::Global);
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, enabled);
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, enabled);
}
@@ -1,6 +1,7 @@
#include "avm_combat_net_radio_dialog_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_cnr_json_helper.h"
@@ -19,6 +20,7 @@ CombatNetRadioDialogModel::CombatNetRadioDialogModel(int32_t exerciseId, QObject
: LtsAbstractTableModel<CnrConfig>(
{tr("Channel Number"), tr("Radio Circuit"), tr("Code Word"), tr("Party"), tr("Unit"), tr("Global")}, parent),
m_exerciseId(exerciseId)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
}
@@ -34,43 +36,43 @@ QVariant CombatNetRadioDialogModel::data(const QModelIndex& index, int role) con
{
case CHANNEL:
INFO_LOG(m_logger) << "CombatNetRadioDialogModel::data role =" << role << " row = " << index.row();
return QString::fromStdString(m_cnrChannels.value(config.cnrChannelId()).name());
return QString::fromStdString(m_cnrChannels.value(config.cnrChannelId).name);
case RADIO_CIRCUIT:
return QString::fromStdString(config.radioCircuit());
return QString::fromStdString(config.radioCircuit);
case CALL_SIGN:
return QString::fromStdString(config.callSign());
return QString::fromStdString(config.callSign);
case PARTY:
if (config.exerciseId().is_set() || config.partyId() > 0)
return ParticipantManagement::trPartyName(m_parties.value(config.partyId()).name());
if (config.exerciseId.has_value() || config.partyId > 0)
return ParticipantManagement::trPartyName(m_parties.value(config.partyId).name);
else
return QStringLiteral("-");
case UNIT: {
if (!config.unitId().is_set())
if (!config.unitId.has_value())
return {};
const int unitId = config.unitId().get();
const auto unit = m_units.value(config.unitId().get());
if (unit.id() != unitId)
const int unitId = config.unitId.get();
const auto unit = m_units.value(config.unitId.get());
if (unit.id != unitId)
return {};
INFO_LOG(m_logger) << " config.unitId()=" << unitId << " Str=" << unit.name();
INFO_LOG(m_logger) << " config.unitId()=" << unitId << " Str=" << unit.name;
QString unitStr;
if (unit.designator().size() > 0)
unitStr = QString::fromStdString(unit.designator()) + QLatin1Char('/');
unitStr.append(QString::fromStdString(unit.tacticalIdentifier()));
if (unit.designator.size() > 0)
unitStr = QString::fromStdString(unit.designator) + QLatin1Char('/');
unitStr.append(QString::fromStdString(unit.tacticalIdentifier));
INFO_LOG(m_logger) << "unitStr = " << unitStr;
return unitStr;
}
case GLOBAL:
return config.exerciseId().is_set() ? tr("No") : tr("Yes");
return config.exerciseId.has_value() ? tr("No") : tr("Yes");
}
}
else if (role == Qt::BackgroundRole)
{
if (config.exerciseId().is_set() && config.exerciseId().get() == m_exerciseId)
if (config.exerciseId.has_value() && config.exerciseId.get() == m_exerciseId)
return {};
if (!config.exerciseId().is_set() && m_exerciseId <= 0)
if (!config.exerciseId.has_value() && m_exerciseId <= 0)
return {};
return QColor(Qt::gray);
}
@@ -105,7 +107,7 @@ bool CombatNetRadioDialogModel::onlyGlobals()
{
for (const CnrConfig& config : std::as_const(m_vecData))
{
if (config.exerciseId().is_set() && config.exerciseId().get() == m_exerciseId)
if (config.exerciseId.has_value() && config.exerciseId.get() == m_exerciseId)
return false;
}
return true;
@@ -136,7 +138,7 @@ bool CombatNetRadioDialogFilter::filterAcceptsRow(int sourceRow, const QModelInd
{
CnrConfig cnrConfig = m_sourceModel->getRowData(sourceRow);
if (cnrConfig.exerciseId().is_set() && cnrConfig.exerciseId().get() != m_exerciseId)
if (cnrConfig.exerciseId.has_value() && cnrConfig.exerciseId.get() != m_exerciseId)
return false;
return LtsColumnFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
@@ -7,6 +7,7 @@
#include <LtsWidgets/lts_abstract_table_model.h>
#include <LtsWidgets/lts_column_filter_proxy_model.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h>
#include <cstdint>
#include <memory>
@@ -1,6 +1,7 @@
#include "avm_edit_combat_net_radio_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "ui_avm_edit_combat_net_radio_dialog.h"
@@ -25,9 +26,9 @@ namespace
CnrConfig toConfig(const ModifyCnrConfigRequest& modifyRequest)
{
return {modifyRequest.id(), modifyRequest.cnrChannelId(), modifyRequest.exerciseId(),
modifyRequest.radioCircuit(), modifyRequest.partyId(), modifyRequest.unitId(),
modifyRequest.recording(), modifyRequest.callSign(), false};
return {modifyRequest.id, modifyRequest.cnrChannelId, modifyRequest.exerciseId,
modifyRequest.radioCircuit, modifyRequest.partyId, modifyRequest.unitId,
modifyRequest.recording, modifyRequest.callSign, false};
}
const QString& NO_CHANNEL()
@@ -61,9 +62,9 @@ EditCombatNetRadioDialog::EditCombatNetRadioDialog(const CnrConfig& cnrConfig, i
const std::shared_ptr<Interface::Dtc>& avmDtc,
const std::shared_ptr<Interface::Ftc>& avmFtc,
ExerciseManagement::Interface::Dtc* exmDtc, QWidget* parent)
: EditCombatNetRadioDialog(cnrConfig.id(), exerciseId, session, ppmDtc, avmDtc, avmFtc, exmDtc, parent)
: EditCombatNetRadioDialog(cnrConfig.id, exerciseId, session, ppmDtc, avmDtc, avmFtc, exmDtc, parent)
{
m_channelId = cnrConfig.cnrChannelId();
m_channelId = cnrConfig.cnrChannelId;
m_isGlobal = session->partitionType() == IDL::PartitionType::Global;
setUiValues(cnrConfig);
@@ -79,6 +80,7 @@ EditCombatNetRadioDialog::EditCombatNetRadioDialog(const boost::optional<int32_t
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel),
m_ui(new Ui::EditCombatNetRadioDialog), m_id(id), m_exerciseId(exerciseId), m_ppmDtc(ppmDtc), m_avmDtc(avmDtc),
m_avmFtc(avmFtc), m_exmDtc(exmDtc), m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
Q_ASSERT(ppmDtc);
Q_ASSERT(avmDtc);
@@ -109,19 +111,19 @@ void EditCombatNetRadioDialog::setUiValues(const CnrConfig& cnrConfig)
setUiValuesForGlobal();
m_ui->chkGlobal->setChecked(m_isGlobal);
initCbChannels(cnrConfig.cnrChannelId());
initCbChannels(cnrConfig.cnrChannelId);
bool disableParty =
(m_avmDtc->cnrChannel(cnrConfig.cnrChannelId()).frequencyBand() == FrequencyBand::REL) || m_isGlobal;
(m_avmDtc->cnrChannel(cnrConfig.cnrChannelId).frequencyBand == FrequencyBand::REL) || m_isGlobal;
if (!disableParty)
{
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(cnrConfig.partyId()));
int unitId = cnrConfig.unitId().is_set() ? cnrConfig.unitId().get() : 0;
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(cnrConfig.partyId));
int unitId = cnrConfig.unitId.has_value() ? cnrConfig.unitId.get() : 0;
m_ui->cbUnit->setCurrentIndex(m_ui->cbUnit->findData(unitId));
}
m_ui->leCallSign->setText(QString::fromStdString(cnrConfig.callSign()));
m_ui->chkRecording->setChecked(cnrConfig.recording());
m_ui->leRadioCircuit->setText(QString::fromStdString(cnrConfig.radioCircuit()));
onPartyIndexChanged(cnrConfig.partyId());
m_ui->leCallSign->setText(QString::fromStdString(cnrConfig.callSign));
m_ui->chkRecording->setChecked(cnrConfig.recording);
m_ui->leRadioCircuit->setText(QString::fromStdString(cnrConfig.radioCircuit));
onPartyIndexChanged(cnrConfig.partyId);
}
void EditCombatNetRadioDialog::setUiValuesForGlobal()
@@ -139,16 +141,16 @@ ModifyCnrConfigRequest EditCombatNetRadioDialog::createRequest()
{
ModifyCnrConfigRequest request;
request.id(m_id.get_value_or(0));
request.callSign(m_ui->leCallSign->text().toStdString());
request.cnrChannelId(m_ui->cbChannel->currentData().toInt());
request.radioCircuit(m_ui->leRadioCircuit->text().toStdString());
request.recording(m_ui->chkRecording->isChecked());
request.partyId(m_ui->cbParty->currentData().toInt());
request.id = m_id.get_value_or(0);
request.callSign = m_ui->leCallSign->text().toStdString();
request.cnrChannelId = m_ui->cbChannel->currentData().toInt();
request.radioCircuit = m_ui->leRadioCircuit->text().toStdString();
request.recording = m_ui->chkRecording->isChecked();
request.partyId = m_ui->cbParty->currentData().toInt();
if (!m_isGlobal)
request.exerciseId(m_exerciseId);
request.exerciseId = m_exerciseId;
if (m_ui->cbUnit->currentIndex() > 0)
request.unitId().set(m_ui->cbUnit->currentIndex());
request.unitId.set(m_ui->cbUnit->currentIndex());
return request;
}
@@ -158,8 +160,8 @@ bool EditCombatNetRadioDialog::apply()
if (m_ui->cbUnit->currentIndex() > 0)
{
request.unitId().set(m_ui->cbUnit->currentData().toInt());
INFO_LOG(m_logger) << "currentIndex=" << m_ui->cbUnit->currentIndex() << " unitId =" << request.unitId().get();
request.unitId.set(m_ui->cbUnit->currentData().toInt());
INFO_LOG(m_logger) << "currentIndex=" << m_ui->cbUnit->currentIndex() << " unitId =" << request.unitId.get();
}
return m_requestHelper->startSingleRequest(
@@ -176,7 +178,7 @@ void EditCombatNetRadioDialog::init(LtsSession::LtsSession* session)
ERROR_LOG(m_logger) << "Could not retrieve visible Parties!";
for (const ParticipantManagement::Party& party : std::as_const(parties))
m_ui->cbParty->addItem(ParticipantManagement::trPartyName(party.name()), party.id());
m_ui->cbParty->addItem(ParticipantManagement::trPartyName(party.name), party.id);
connect(m_ui->cbParty, QOverload<int>::of(&LtsWidgets::LtsComboBox::currentIndexChanged), this,
&EditCombatNetRadioDialog::onPartyIndexChanged);
@@ -231,44 +233,44 @@ void EditCombatNetRadioDialog::updateFreeChannelsAndTakenNames()
QMap<int, QString> exerciseNameCache;
const auto allCnrConfigs = m_avmDtc->cnrConfigs();
const ExerciseManagement::Exercise ownExercise = m_exmDtc->exercise(m_exerciseId);
ExerciseManagement::ExerciseState ownState = m_exmDtc->exercise(m_exerciseId).state();
ExerciseManagement::ExerciseState ownState = m_exmDtc->exercise(m_exerciseId).state;
for (const AudioVideoManagement::CnrConfig& cnrConfig : allCnrConfigs)
{
if (m_id.is_initialized() && *m_id == cnrConfig.id())
if (m_id.is_initialized() && *m_id == cnrConfig.id)
continue;
if (ownExercise.state() == ExerciseManagement::ExerciseState::Created && cnrConfig.exerciseId() != m_exerciseId)
if (ownExercise.state == ExerciseManagement::ExerciseState::Created && cnrConfig.exerciseId != m_exerciseId)
{
if (ownExercise.linkedExerciseId() < 1 || cnrConfig.exerciseId() != ownExercise.linkedExerciseId())
if (ownExercise.linkedExerciseId < 1 || cnrConfig.exerciseId != ownExercise.linkedExerciseId)
continue;
if (!exerciseNameCache.contains(ownExercise.linkedExerciseId()))
if (!exerciseNameCache.contains(ownExercise.linkedExerciseId))
exerciseNameCache.insert(
ownExercise.linkedExerciseId(),
QString::fromStdString(m_exmDtc->exercise(ownExercise.linkedExerciseId()).name()));
ownExercise.linkedExerciseId,
QString::fromStdString(m_exmDtc->exercise(ownExercise.linkedExerciseId).name));
channelsToDisable.insert(
cnrConfig.cnrChannelId(),
tr("(already taken in %1)").arg(exerciseNameCache.value(ownExercise.linkedExerciseId())));
cnrConfig.cnrChannelId,
tr("(already taken in %1)").arg(exerciseNameCache.value(ownExercise.linkedExerciseId)));
continue;
}
if (ownExercise.state() == ExerciseManagement::ExerciseState::Started ||
ownExercise.state() == ExerciseManagement::ExerciseState::Paused)
if (ownExercise.state == ExerciseManagement::ExerciseState::Started ||
ownExercise.state == ExerciseManagement::ExerciseState::Paused)
{
if (cnrConfig.exerciseId().is_set())
if (cnrConfig.exerciseId.has_value())
{
int cnrExerciseId = cnrConfig.exerciseId().get();
int cnrExerciseId = cnrConfig.exerciseId.get();
if (exercisesConsider.contains(cnrExerciseId) && cnrExerciseId != m_exerciseId)
{
if (!exerciseNameCache.contains(cnrExerciseId))
exerciseNameCache.insert(cnrExerciseId,
QString::fromStdString(m_exmDtc->exercise(cnrExerciseId).name()));
QString::fromStdString(m_exmDtc->exercise(cnrExerciseId).name));
channelsToDisable.insert(cnrConfig.cnrChannelId(),
channelsToDisable.insert(cnrConfig.cnrChannelId,
tr("(already taken in %1)").arg(exerciseNameCache.value(cnrExerciseId)));
continue;
@@ -278,36 +280,36 @@ void EditCombatNetRadioDialog::updateFreeChannelsAndTakenNames()
if (!m_isGlobal)
{
if (cnrConfig.exerciseId().is_set() && !exercisesConsider.contains(cnrConfig.exerciseId().get()))
if (cnrConfig.exerciseId.has_value() && !exercisesConsider.contains(cnrConfig.exerciseId.get()))
continue;
if (!cnrConfig.exerciseId().is_set() && ownState != ExerciseManagement::ExerciseState::Created)
if (!cnrConfig.exerciseId.has_value() && ownState != ExerciseManagement::ExerciseState::Created)
{
channelsToDisable.insert(cnrConfig.cnrChannelId(), tr("(already taken in global exercise)"));
channelsToDisable.insert(cnrConfig.cnrChannelId, tr("(already taken in global exercise)"));
continue;
}
}
if (m_isGlobal && cnrConfig.exerciseId().is_set() && exercisesConsider.contains(cnrConfig.exerciseId().get()))
if (m_isGlobal && cnrConfig.exerciseId.has_value() && exercisesConsider.contains(cnrConfig.exerciseId.get()))
{
int exerciseId = cnrConfig.exerciseId().get();
int exerciseId = cnrConfig.exerciseId.get();
if (!exerciseNameCache.contains(exerciseId))
exerciseNameCache.insert(exerciseId, QString::fromStdString(m_exmDtc->exercise(exerciseId).name()));
exerciseNameCache.insert(exerciseId, QString::fromStdString(m_exmDtc->exercise(exerciseId).name));
channelsToDisable.insert(cnrConfig.cnrChannelId(),
channelsToDisable.insert(cnrConfig.cnrChannelId,
tr("(already taken in %1)").arg(exerciseNameCache.value(exerciseId)));
continue;
}
if (cnrConfig.exerciseId().is_set() && exercisesIgnore.contains(cnrConfig.exerciseId().get()))
if (cnrConfig.exerciseId.has_value() && exercisesIgnore.contains(cnrConfig.exerciseId.get()))
continue;
m_takenNames.push_back(QString::fromStdString(cnrConfig.radioCircuit()));
m_takenNames.push_back(QString::fromStdString(cnrConfig.radioCircuit));
freeChannels.removeOne(cnrConfig.cnrChannelId());
freeChannels.removeOne(cnrConfig.cnrChannelId);
}
if (m_id.is_initialized())
@@ -326,8 +328,8 @@ void EditCombatNetRadioDialog::updateCbChannels(QVector<int>&& freeChannels, QMa
const auto allChannels = m_avmDtc->cnrChannels();
const auto byName = [&allChannels](int leftChannelId, int rightChannelId) {
return QLatin1String(allChannels[leftChannelId].name().c_str()) <
QLatin1String(allChannels[rightChannelId].name().c_str());
return QLatin1String(allChannels[leftChannelId].name.c_str()) <
QLatin1String(allChannels[rightChannelId].name.c_str());
};
std::sort(freeChannels.begin(), freeChannels.end(), byName);
@@ -360,7 +362,7 @@ void EditCombatNetRadioDialog::updateCbChannels(QVector<int>&& freeChannels, QMa
m_ui->cbChannel->clear();
for (const auto& channelId : freeChannels)
{
QString channelName = QString::fromStdString(allChannels[channelId].name());
QString channelName = QString::fromStdString(allChannels[channelId].name);
if (channelsToDisable.contains(channelId))
{
@@ -407,23 +409,23 @@ QVector<int> EditCombatNetRadioDialog::exercisesToConsider() const
QVector<int> toBeConsidered;
toBeConsidered.reserve(allExercises.size());
if (!m_isGlobal && currentExercise.state() == ExerciseManagement::ExerciseState::Created)
if (!m_isGlobal && currentExercise.state == ExerciseManagement::ExerciseState::Created)
{
toBeConsidered.append(currentExercise.id());
toBeConsidered.append(currentExercise.id);
if (currentExercise.linkedExerciseId() > 0)
toBeConsidered.append(currentExercise.linkedExerciseId());
if (currentExercise.linkedExerciseId > 0)
toBeConsidered.append(currentExercise.linkedExerciseId);
return toBeConsidered;
}
if (!m_isGlobal && !isActive(allExercises[m_exerciseId].state()))
if (!m_isGlobal && !isActive(allExercises[m_exerciseId].state))
return {m_exerciseId};
for (const auto& exercise : allExercises)
{
if (isActive(exercise.state()))
toBeConsidered.append(exercise.id());
if (isActive(exercise.state))
toBeConsidered.append(exercise.id);
}
return toBeConsidered;
@@ -436,19 +438,19 @@ QVector<int> EditCombatNetRadioDialog::exercisesToIgnore() const
auto canBeIgnored = [this](const ExerciseManagement::Exercise& ex) -> bool {
if (m_isGlobal)
{
return (ex.state() == ExerciseManagement::ExerciseState::Created ||
ex.state() == ExerciseManagement::ExerciseState::Stopped ||
ex.state() == ExerciseManagement::ExerciseState::Terminated || ex.isDeleted());
return (ex.state == ExerciseManagement::ExerciseState::Created ||
ex.state == ExerciseManagement::ExerciseState::Stopped ||
ex.state == ExerciseManagement::ExerciseState::Terminated || ex.isDeleted);
}
return (ex.state() == ExerciseManagement::ExerciseState::Stopped ||
ex.state() == ExerciseManagement::ExerciseState::Terminated || ex.isDeleted());
return (ex.state == ExerciseManagement::ExerciseState::Stopped ||
ex.state == ExerciseManagement::ExerciseState::Terminated || ex.isDeleted);
};
QVector<int> exercisesToIgnore;
for (const auto& ex : allExercises)
{
if (canBeIgnored(ex))
exercisesToIgnore += ex.id();
exercisesToIgnore += ex.id;
}
return exercisesToIgnore;
}
@@ -473,17 +475,17 @@ void EditCombatNetRadioDialog::onPartyIndexChanged(int index)
for (const ParticipantManagement::Participant& unit : std::as_const(m_units))
{
QString unitStr;
if (unit.partyId() == partyId)
if (unit.partyId == partyId)
{
if (unit.designator().size() > 0)
if (unit.designator.size() > 0)
{
unitStr = QString::fromStdString(unit.designator()) + QLatin1Char('/');
unitStr = QString::fromStdString(unit.designator) + QLatin1Char('/');
INFO_LOG(m_logger) << "Designator != leer: unitStr = " << unitStr;
}
unitStr += QString::fromStdString(unit.tacticalIdentifier());
INFO_LOG(m_logger) << "unitStr =" << unitStr << " id =" << unit.id();
unitStr += QString::fromStdString(unit.tacticalIdentifier);
INFO_LOG(m_logger) << "unitStr =" << unitStr << " id =" << unit.id;
m_ui->cbUnit->addItem(unitStr, unit.id());
m_ui->cbUnit->addItem(unitStr, unit.id);
}
}
}
@@ -492,7 +494,7 @@ void EditCombatNetRadioDialog::onChannelChanged(int index)
{
int channelId = m_ui->cbChannel->itemData(index).toInt();
bool disableParty = (m_avmDtc->cnrChannel(channelId).frequencyBand() == FrequencyBand::REL) || m_isGlobal;
bool disableParty = (m_avmDtc->cnrChannel(channelId).frequencyBand == FrequencyBand::REL) || m_isGlobal;
m_ui->cbUnit->setDisabled(disableParty);
m_ui->lbUnit->setDisabled(disableParty);
m_ui->cbParty->setDisabled(disableParty);
@@ -509,16 +511,16 @@ QByteArray EditCombatNetRadioDialog::cnrConfigRequestToJson()
ModifyCnrConfigRequest req = createRequest();
QJsonObject obj;
obj[QStringLiteral("id")] = req.id();
obj[QStringLiteral("id")] = req.id;
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::AVMEditCombatNetRadio);
obj[QStringLiteral("callSign")] = QString::fromStdString(req.callSign());
obj[QStringLiteral("cnrChannelId")] = req.cnrChannelId();
obj[QStringLiteral("radioCircuit")] = QString::fromStdString(req.radioCircuit());
obj[QStringLiteral("recording")] = req.recording();
obj[QStringLiteral("partyId")] = req.partyId();
obj[QStringLiteral("isGlobal")] = !req.exerciseId().is_set();
if (req.unitId().is_set())
obj[QStringLiteral("unitId")] = req.unitId().get();
obj[QStringLiteral("callSign")] = QString::fromStdString(req.callSign);
obj[QStringLiteral("cnrChannelId")] = req.cnrChannelId;
obj[QStringLiteral("radioCircuit")] = QString::fromStdString(req.radioCircuit);
obj[QStringLiteral("recording")] = req.recording;
obj[QStringLiteral("partyId")] = req.partyId;
obj[QStringLiteral("isGlobal")] = !req.exerciseId.has_value();
if (req.unitId.has_value())
obj[QStringLiteral("unitId")] = req.unitId.get();
QJsonDocument doc(obj);
return doc.toJson(QJsonDocument::Compact);
}
@@ -529,16 +531,16 @@ ModifyCnrConfigRequest EditCombatNetRadioDialog::jsonToModifyCnrConfig(const QBy
const QJsonDocument doc(QJsonDocument::fromJson(content));
const QJsonObject obj(doc.object());
result.id(obj[QStringLiteral("id")].toInt());
result.callSign(obj[QStringLiteral("callSign")].toString().toStdString());
result.cnrChannelId(obj[QStringLiteral("cnrChannelId")].toInt());
result.radioCircuit(obj[QStringLiteral("radioCircuit")].toString().toStdString());
result.recording(obj[QStringLiteral("recording")].toInt());
result.partyId(obj[QStringLiteral("partyId")].toInt());
result.id = obj[QStringLiteral("id")].toInt();
result.callSign = obj[QStringLiteral("callSign")].toString().toStdString();
result.cnrChannelId = obj[QStringLiteral("cnrChannelId")].toInt();
result.radioCircuit = obj[QStringLiteral("radioCircuit")].toString().toStdString();
result.recording = obj[QStringLiteral("recording")].toInt();
result.partyId = obj[QStringLiteral("partyId")].toInt();
if (!obj.contains(QLatin1String("isGlobal")) || !obj[QLatin1String("isGlobal")].toBool())
result.exerciseId(m_exerciseId);
result.exerciseId = m_exerciseId;
if (obj.contains(QStringLiteral("unitId")))
result.unitId(obj[QStringLiteral("unitId")].toInt());
result.unitId = obj[QStringLiteral("unitId")].toInt();
return result;
}
@@ -9,6 +9,7 @@
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
#include <LtsWidgets/lts_dialog.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <FileManagement/flm_explorer_gui_plugin_interface.h>
#include <QtCore/QString>
#include <QtCore/QVector>
@@ -2,6 +2,7 @@
#include "avm_load_combat_net_radio_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "ui_avm_load_combat_net_radio_dialog.h"
#include "avm_cnr_json_helper.h"
@@ -15,6 +16,7 @@ LoadCombatNetRadioDialog::LoadCombatNetRadioDialog(const QByteArray &data,
: LtsWidgets::LtsFramelessDialog(parent, LtsWidgets::Behaviour::Modal)
, m_ui(new Ui::LoadCombatNetRadioDialog)
, m_model(new LoadCombatNetRadioDialogModel(data, session))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
m_ui->dataView->setModel(m_model);
@@ -1,6 +1,7 @@
#include "avm_load_combat_net_radio_dialog_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_cnr_json_helper.h"
@@ -24,6 +25,7 @@ LoadCombatNetRadioDialogModel::LoadCombatNetRadioDialogModel(const QByteArray& d
: LtsAbstractTableModel<CnrConfig>(
{tr("Include"), tr("Channel"), tr("Radio Circuit"), tr("Code Word"), tr("Conflict(s)")}, parent),
m_exerciseId(session == nullptr ? 0 : session->exerciseId())
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
DEBUG_LOG(m_logger) << "Own exercise id: " << m_exerciseId;
@@ -109,11 +111,11 @@ QVariant LoadCombatNetRadioDialogModel::data(const QModelIndex& index, int role)
switch (index.column())
{
case CHANNEL:
return QString::fromStdString(m_cnrChannels.value(config.cnrChannelId()).name());
return QString::fromStdString(m_cnrChannels.value(config.cnrChannelId).name);
case RADIO_CIRCUIT:
return QString::fromStdString(config.radioCircuit());
return QString::fromStdString(config.radioCircuit);
case CALL_SIGN:
return QString::fromStdString(config.callSign());
return QString::fromStdString(config.callSign);
case CONFLICTS:
return conflictsText(m_conflicts.at(index.row()));
default:
@@ -169,44 +171,44 @@ LoadCombatNetRadioDialogModel::Conflicts LoadCombatNetRadioDialogModel::getConfl
if (!(conflicts & RADIO_CIRCUIT_TAKEN_IN_OWN_CONFIG) && isRadioCircuitTakenInOwnConfig(config, it.value()))
{
conflicts |= RADIO_CIRCUIT_TAKEN_IN_OWN_CONFIG;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
if (!(conflicts & RADIO_CIRCUIT_TAKEN_IN_ANOTHER_EXERCISE) &&
isRadioCircuitTakenInAnotherExercise(config, it.value()))
{
conflicts |= RADIO_CIRCUIT_TAKEN_IN_ANOTHER_EXERCISE;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
if (!(conflicts & CHANNEL_TAKEN_IN_ACTIVE_EXERCISE) && isChannelTakenInActiveExercise(config, it.value()))
{
conflicts |= CHANNEL_TAKEN_IN_ACTIVE_EXERCISE;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
if (!(conflicts & CHANNEL_TAKEN_IN_LINKED_EXERCISE) && isChannelTakenInLinkedExercise(config, it.value()))
{
conflicts |= CHANNEL_TAKEN_IN_LINKED_EXERCISE;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
if (!(conflicts & CHANNEL_TAKEN_IN_OWN_CONFIG) && isChannelTakenInOwnConfig(config, it.value()))
{
conflicts |= CHANNEL_TAKEN_IN_OWN_CONFIG;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
if (!(conflicts & CHANNEL_TAKEN_IN_GLOBAL) && isChannelTakenInGlobal(config, it.value()))
{
conflicts |= CHANNEL_TAKEN_IN_GLOBAL;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
if (!(conflicts & RADIO_CIRCUIT_TAKEN_IN_GLOBAL) && isRadioCircuitTakenInGlobal(config, it.value()))
{
conflicts |= RADIO_CIRCUIT_TAKEN_IN_GLOBAL;
addConflictedCnr(row, it.value().id());
addConflictedCnr(row, it.value().id);
}
}
@@ -253,7 +255,7 @@ bool LoadCombatNetRadioDialogModel::isActiveExercise(int32_t exerciseId) const
using namespace ExerciseManagement;
ExerciseState exerciseState = m_exercises.value(exerciseId).state();
ExerciseState exerciseState = m_exercises.value(exerciseId).state;
return exerciseState == ExerciseState::Started || exerciseState == ExerciseState::Paused;
}
@@ -273,10 +275,10 @@ bool LoadCombatNetRadioDialogModel::isRadioCircuitTakenInOwnConfig(const CnrConf
const CnrConfig& existingConfig) const
{
if (m_exerciseId == 0)
return !existingConfig.exerciseId().is_set() && existingConfig.radioCircuit() == loadConfig.radioCircuit();
return !existingConfig.exerciseId.has_value() && existingConfig.radioCircuit == loadConfig.radioCircuit;
if (!existingConfig.exerciseId().is_set() || existingConfig.exerciseId().get() != m_exerciseId ||
existingConfig.radioCircuit() != loadConfig.radioCircuit())
if (!existingConfig.exerciseId.has_value() || existingConfig.exerciseId.get() != m_exerciseId ||
existingConfig.radioCircuit != loadConfig.radioCircuit)
return false;
return true;
@@ -285,9 +287,9 @@ bool LoadCombatNetRadioDialogModel::isRadioCircuitTakenInOwnConfig(const CnrConf
bool LoadCombatNetRadioDialogModel::isRadioCircuitTakenInAnotherExercise(const CnrConfig& loadConfig,
const CnrConfig& existingConfig) const
{
if (!isActiveExercise(m_exerciseId) || !existingConfig.exerciseId().is_set() ||
!isActiveExercise(existingConfig.exerciseId().get()) || existingConfig.exerciseId().get() == m_exerciseId ||
existingConfig.radioCircuit() != loadConfig.radioCircuit())
if (!isActiveExercise(m_exerciseId) || !existingConfig.exerciseId.has_value() ||
!isActiveExercise(existingConfig.exerciseId.get()) || existingConfig.exerciseId.get() == m_exerciseId ||
existingConfig.radioCircuit != loadConfig.radioCircuit)
return false;
return true;
@@ -296,10 +298,10 @@ bool LoadCombatNetRadioDialogModel::isRadioCircuitTakenInAnotherExercise(const C
bool LoadCombatNetRadioDialogModel::isChannelTakenInActiveExercise(const CnrConfig& loadConfig,
const CnrConfig& existingConfig) const
{
int32_t exerciseId = existingConfig.exerciseId().is_set() ? existingConfig.exerciseId().get() : 0;
int32_t exerciseId = existingConfig.exerciseId.has_value() ? existingConfig.exerciseId.get() : 0;
if (!isActiveExercise(m_exerciseId) || exerciseId == 0 || exerciseId == m_exerciseId ||
!isActiveExercise(exerciseId) || existingConfig.cnrChannelId() != loadConfig.cnrChannelId() ||
!isActiveExercise(exerciseId) || existingConfig.cnrChannelId != loadConfig.cnrChannelId ||
!isActiveExercise(exerciseId))
return false;
@@ -309,14 +311,14 @@ bool LoadCombatNetRadioDialogModel::isChannelTakenInActiveExercise(const CnrConf
bool LoadCombatNetRadioDialogModel::isChannelTakenInLinkedExercise(const CnrConfig& loadConfig,
const CnrConfig& existingConfig) const
{
if (m_exerciseId == 0 || m_exercises.value(m_exerciseId).linkedExerciseId() == 0)
if (m_exerciseId == 0 || m_exercises.value(m_exerciseId).linkedExerciseId == 0)
return false;
int32_t linkedExerciseId = m_exercises.value(m_exerciseId).linkedExerciseId();
int32_t linkedExerciseId = m_exercises.value(m_exerciseId).linkedExerciseId;
int32_t exerciseId = existingConfig.exerciseId().is_set() ? existingConfig.exerciseId().get() : 0;
int32_t exerciseId = existingConfig.exerciseId.has_value() ? existingConfig.exerciseId.get() : 0;
if (exerciseId != linkedExerciseId || existingConfig.cnrChannelId() != loadConfig.cnrChannelId())
if (exerciseId != linkedExerciseId || existingConfig.cnrChannelId != loadConfig.cnrChannelId)
return false;
return true;
@@ -325,16 +327,16 @@ bool LoadCombatNetRadioDialogModel::isChannelTakenInLinkedExercise(const CnrConf
bool LoadCombatNetRadioDialogModel::isChannelTakenInOwnConfig(const CnrConfig& loadConfig,
const CnrConfig& existingConfig) const
{
int32_t exerciseId = existingConfig.exerciseId().is_set() ? existingConfig.exerciseId().get() : 0;
int32_t exerciseId = existingConfig.exerciseId.has_value() ? existingConfig.exerciseId.get() : 0;
return existingConfig.cnrChannelId() == loadConfig.cnrChannelId() && exerciseId == m_exerciseId;
return existingConfig.cnrChannelId == loadConfig.cnrChannelId && exerciseId == m_exerciseId;
}
bool LoadCombatNetRadioDialogModel::isChannelTakenInGlobal(const CnrConfig& loadConfig,
const CnrConfig& existingConfig) const
{
if (!isActiveExercise(m_exerciseId) || m_exerciseId == 0 || existingConfig.exerciseId().is_set() ||
existingConfig.cnrChannelId() != loadConfig.cnrChannelId())
if (!isActiveExercise(m_exerciseId) || m_exerciseId == 0 || existingConfig.exerciseId.has_value() ||
existingConfig.cnrChannelId != loadConfig.cnrChannelId)
return false;
return true;
@@ -343,8 +345,8 @@ bool LoadCombatNetRadioDialogModel::isChannelTakenInGlobal(const CnrConfig& load
bool LoadCombatNetRadioDialogModel::isRadioCircuitTakenInGlobal(const CnrConfig& loadConfig,
const CnrConfig& existingConfig) const
{
if (!isActiveExercise(m_exerciseId) || m_exerciseId == 0 || existingConfig.exerciseId().is_set() ||
existingConfig.radioCircuit() != loadConfig.radioCircuit())
if (!isActiveExercise(m_exerciseId) || m_exerciseId == 0 || existingConfig.exerciseId.has_value() ||
existingConfig.radioCircuit != loadConfig.radioCircuit)
return false;
return true;
@@ -397,13 +399,13 @@ QVector<ModifyCnrConfigRequest> LoadCombatNetRadioDialogModel::modifyRequests()
const CnrConfig& cnrConfig = m_vecData.at(row);
modifyRequestsVec.append({0,
cnrConfig.cnrChannelId(),
cnrConfig.cnrChannelId,
exerciseId,
cnrConfig.radioCircuit(),
cnrConfig.recording(),
cnrConfig.radioCircuit,
cnrConfig.recording,
{},
partyId,
cnrConfig.callSign()});
cnrConfig.callSign});
}
return modifyRequestsVec;
@@ -1,6 +1,7 @@
#include "avm_edit_frequency_planning_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_edit_frequency_planning_frequency_data_model.h"
#include "avm_load_frequency_planning_dialog.h"
@@ -16,6 +17,7 @@
#include <LtsSession/lts_session_data.h>
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <ParticipantManagement/ppm_translation.h>
#include <PluginInterfaces/gui_plugin_interface.h>
#include <QtWidgets/QTreeView>
@@ -47,13 +49,14 @@ EditFrequencyPlanningDialog::EditFrequencyPlanningDialog(
m_ppmDtc(ppmDtc), m_ismDtc(ismDtc), m_exmDtc(exmDtc), m_requestHelper(new LtsUtils::RequestHelper(this)),
m_frequencyDataModel(
new EditFrequencyPlanningFrequencyDataModel(planning, m_session->exerciseId(), avmDtc, ismDtc, ppmDtc, this)),
m_frequencyPlanningId(copy ? 0 : planning.id()), m_exerciseId(session->exerciseId()),
m_frequencyPlanningId(copy ? 0 : planning.id), m_exerciseId(session->exerciseId()),
m_isEdit(EditFrequencyPlanningSetResourceDialog::DialogMode::Assign), m_activeFrequencyPlanningStatus(0)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
m_ui->leName->setText(QString::fromStdString(m_planning.name()));
m_ui->lbDate->setText(DTG::toStringMSec(m_planning.date()));
m_ui->leName->setText(QString::fromStdString(m_planning.name));
m_ui->lbDate->setText(DTG::toStringMSec(m_planning.date));
m_uiRequirements->addRequirement({m_ui->label, [this]() { return !m_ui->leName->text().isEmpty(); }});
@@ -138,11 +141,11 @@ bool EditFrequencyPlanningDialog::apply()
}
ModifyFrequencyPlanningRequest request = m_frequencyDataModel->modifyFrequencyPlanningRequest();
request.date(m_session->partitionTime());
m_ui->lbDate->setText(DTG::toStringMSec(request.date()));
m_planning.date() = request.date();
request.id(m_frequencyPlanningId);
request.name(m_ui->leName->text().toStdString());
request.date = m_session->partitionTime();
m_ui->lbDate->setText(DTG::toStringMSec(request.date));
m_planning.date = request.date;
request.id = m_frequencyPlanningId;
request.name = m_ui->leName->text().toStdString();
return m_requestHelper->startSingleRequest(
[this, request]() { return m_avmFtc->modifyFrequencyPlanningRequest(request, this); });
@@ -157,18 +160,18 @@ void EditFrequencyPlanningDialog::onAddClicked()
return;
CnrConfig cnrConfigRow = m_frequencyDataModel->itemData(idx).cnrConfig;
int cnrConfigId = cnrConfigRow.id();
int cnrConfigId = cnrConfigRow.id;
if (cnrConfigId <= 0)
return;
DEBUG_LOG(m_logger) << "---RessourceDialog aufrufen...."
<< " cnrConfigId: " << cnrConfigId << " radioCircuit: " << cnrConfigRow.radioCircuit()
<< " cnrConfigId: " << cnrConfigId << " radioCircuit: " << cnrConfigRow.radioCircuit
<< " FrequencySetId: " << m_frequencyDataModel->getFrequencySetId();
FrequencyPlanningData fpd = m_frequencyDataModel->getfrequencyPlanningData(cnrConfigId);
if (!fpd.cnrConfigId())
if (!fpd.cnrConfigId)
{
fpd.cnrConfigId(cnrConfigId);
fpd.cnrConfigId = cnrConfigId;
}
EditFrequencyPlanningResourceDialog* frequencyPlanningResourceDialog =
@@ -194,7 +197,7 @@ void EditFrequencyPlanningDialog::onRemoveClicked()
return;
CnrConfig cnrConfigRow = m_frequencyDataModel->itemData(idx).cnrConfig;
int cnrConfigId = cnrConfigRow.id();
int cnrConfigId = cnrConfigRow.id;
if (cnrConfigId <= 0)
return;
unassignRadioCircuit(cnrConfigId);
@@ -209,17 +212,17 @@ void EditFrequencyPlanningDialog::enableSelectedUnassignButton()
auto itemData = m_frequencyDataModel->itemData(idx);
CnrConfig cnrConfigRow = itemData.cnrConfig;
int cnrConfigId = cnrConfigRow.id();
int cnrConfigId = cnrConfigRow.id;
if (cnrConfigId <= 0)
return;
FrequencyPlanningData fpd = m_frequencyDataModel->getfrequencyPlanningData(cnrConfigId);
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Add, true);
if ((!cnrConfigRow.exerciseId().is_set() && m_planning.exerciseId().is_set()) || itemData.readOnly)
if ((!cnrConfigRow.exerciseId.has_value() && m_planning.exerciseId.has_value()) || itemData.readOnly)
{
m_buttonBox->setText(LtsWidgets::DialogButton::Add, tr("Show"));
m_isEdit = EditFrequencyPlanningSetResourceDialog::DialogMode::Show;
@@ -238,7 +241,7 @@ void EditFrequencyPlanningDialog::enableSelectedUnassignButton()
}
DEBUG_LOG(m_logger) << "---enableAssignUnassignButtons()...."
<< " cnrConfigId: " << cnrConfigId << " radioCircuitId: " << cnrConfigRow.radioCircuit();
<< " cnrConfigId: " << cnrConfigId << " radioCircuitId: " << cnrConfigRow.radioCircuit;
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove,
!itemData.readOnly &&
@@ -250,7 +253,7 @@ void EditFrequencyPlanningDialog::enableSelectedUnassignButton()
void EditFrequencyPlanningDialog::onAssignRadioCircuit(const FrequencyPlanningData& fpd)
{
DEBUG_LOG(m_logger) << "---onAssignRadioCircuit()...."
<< "CnrConfigId: " << fpd.cnrConfigId();
<< "CnrConfigId: " << fpd.cnrConfigId;
m_frequencyDataModel->setFrequencyPlanningData(fpd);
@@ -288,21 +291,21 @@ QVector<int> EditFrequencyPlanningDialog::otherActiveExercises() const
{
const auto allExercises_ = m_exmDtc->exercises();
Q_ASSERT(::isActive(allExercises_[m_exerciseId].state()));
Q_ASSERT(::isActive(allExercises_[m_exerciseId].state));
auto allExercises = allExercises_.values();
auto newEnd = std::remove_if(allExercises.begin(), allExercises.end(),
[](const ExerciseManagement::Exercise& ex) { return ex.isDeleted(); });
[](const ExerciseManagement::Exercise& ex) { return ex.isDeleted; });
allExercises.erase(newEnd, allExercises.end());
QVector<int> toBeConsidered;
for (const auto& exercise : std::as_const(allExercises))
{
if (exercise.id() == m_exerciseId)
if (exercise.id == m_exerciseId)
continue;
if (::isActive(exercise.state()))
toBeConsidered.append(exercise.id());
if (::isActive(exercise.state))
toBeConsidered.append(exercise.id);
}
return toBeConsidered;
}
@@ -315,8 +318,8 @@ QVector<int> EditFrequencyPlanningDialog::otherActivePlans() const
const auto activePlans = m_avmDtc->activeFrequencyPlannings();
for (const auto& activePlan : activePlans)
{
if (exercises.contains(activePlan.exerciseId()))
result.append(activePlan.frequencyPlanningId());
if (exercises.contains(activePlan.exerciseId))
result.append(activePlan.frequencyPlanningId);
}
return result;
}
@@ -3,6 +3,7 @@
#pragma once
#include <AudioVideoManagement/avm_qmetatypes.h>
#include <LtsWidgets/lts_dialog.h>
#include <AudioVideoManagement/logger.h>
@@ -1,12 +1,14 @@
#include "avm_edit_frequency_planning_frequency_data_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <AudioVideoManagement/avm_translation.h>
#include <FileManagement/flm_translation.h>
#include <InfrastructureManagement/ism_dtc.h>
#include <LtsUtilsCore/json_object.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <ParticipantManagement/ppm_translation.h>
#include <Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h>
#include <QtCore/QJsonArray>
@@ -23,7 +25,7 @@ void EditFrequencyPlanningFrequencyDataModel::onFrequencyPlanningChanged(const F
DataModification dm)
{
if (planning.id() != m_initPlan.id() && planning.exerciseId().is_set())
if (planning.id != m_initPlan.id && planning.exerciseId.has_value())
return;
if (dm == DataModification::eRemoved)
@@ -44,24 +46,24 @@ void EditFrequencyPlanningFrequencyDataModel::onFrequencyPlanningChanged(const F
return;
}
QHash<int, FrequencyPlanningData> fpdMap;
for (const auto& elem : planning.data())
fpdMap.insert(elem.cnrConfigId(), elem);
for (const auto& elem : planning.data)
fpdMap.insert(elem.cnrConfigId, elem);
for (NGLTreeItem* item : m_rootItem->constChildren())
{
if (!item->data().canConvert<ItemData>())
continue;
ItemData itemData = item->data().value<ItemData>();
if (itemData.cnrConfig.exerciseId().is_set() && itemData.cnrConfig.exerciseId().get() != m_exerciseId)
if (itemData.cnrConfig.exerciseId.has_value() && itemData.cnrConfig.exerciseId.get() != m_exerciseId)
continue;
if (!itemData.cnrConfig.exerciseId().is_set() && 0 != m_exerciseId)
if (!itemData.cnrConfig.exerciseId.has_value() && 0 != m_exerciseId)
continue;
if (fpdMap.contains(itemData.cnrConfig.id()))
if (fpdMap.contains(itemData.cnrConfig.id))
{
const FrequencyPlanningData& fpd = fpdMap[itemData.cnrConfig.id()];
const FrequencyPlanningData& fpd = fpdMap[itemData.cnrConfig.id];
if (item->childCount())
{
@@ -73,7 +75,7 @@ void EditFrequencyPlanningFrequencyDataModel::onFrequencyPlanningChanged(const F
delete itemData.radioCircuit;
itemData.radioCircuit = nullptr;
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
if (circuits.size() > 1)
{
for (RadioCircuit* circuit : std::as_const(circuits))
@@ -88,8 +90,8 @@ void EditFrequencyPlanningFrequencyDataModel::onFrequencyPlanningChanged(const F
itemData.radioCircuit = circuits[0];
item->setData(QVariant::fromValue(itemData));
}
m_frequencyPlanningData[fpd.cnrConfigId()] = fpd;
fpdMap.remove(itemData.cnrConfig.id());
m_frequencyPlanningData[fpd.cnrConfigId] = fpd;
fpdMap.remove(itemData.cnrConfig.id);
}
else
{
@@ -103,7 +105,7 @@ void EditFrequencyPlanningFrequencyDataModel::onFrequencyPlanningChanged(const F
delete itemData.radioCircuit;
itemData.radioCircuit = nullptr;
item->setData(QVariant::fromValue(itemData));
m_frequencyPlanningData.remove(itemData.cnrConfig.id());
m_frequencyPlanningData.remove(itemData.cnrConfig.id);
}
}
@@ -140,15 +142,16 @@ EditFrequencyPlanningFrequencyDataModel::EditFrequencyPlanningFrequencyDataModel
tr("Global"),
}),
m_exerciseId(exerciseId), m_avmDtc(avmDtc), m_ismDtc(ismDtc), m_ppmDtc(ppmDtc), m_initPlan(initPlanning)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
Q_ASSERT(avmDtc);
Q_ASSERT(ppmDtc);
DEBUG_LOG(m_logger) << "---EditFrequencyPlanningDataMod m_frequencyPlanningData[c.id()];el() ";
int frequencySetId = initPlanning.frequencySetId();
std::vector<FrequencySetDataWithId> fsdVec = m_avmDtc->frequencySet(frequencySetId).data();
int frequencySetId = initPlanning.frequencySetId;
std::vector<FrequencySetDataWithId> fsdVec = m_avmDtc->frequencySet(frequencySetId).data;
for (FrequencySetDataWithId fsd : fsdVec)
m_freqSetData.insert(fsd.id(), fsd);
m_freqSetData.insert(fsd.id, fsd);
m_units = m_ppmDtc->units();
@@ -157,15 +160,15 @@ EditFrequencyPlanningFrequencyDataModel::EditFrequencyPlanningFrequencyDataModel
for (const CnrConfig& cnrConfig : cnrConfigs)
{
if (cnrConfig.exerciseId().is_set() && cnrConfig.exerciseId().get() != m_exerciseId)
if (cnrConfig.exerciseId.has_value() && cnrConfig.exerciseId.get() != m_exerciseId)
continue;
dataVec.append(cnrConfig);
}
setCnrConfigs(dataVec);
m_avmDtc->activeFrequencyPlannings([this](const ActiveFrequencyPlanning& afp) {
if (afp.exerciseId() <= 0)
if (afp.exerciseId <= 0)
{
onFrequencyPlanningChanged(m_avmDtc->frequencyPlanning(afp.frequencyPlanningId()),
onFrequencyPlanningChanged(m_avmDtc->frequencyPlanning(afp.frequencyPlanningId),
DataModification::eAdded);
}
});
@@ -182,13 +185,13 @@ void EditFrequencyPlanningFrequencyDataModel::setCnrConfigs(const QVector<CnrCon
m_cnrConfigs.clear();
for (const CnrConfig& c : dataVec)
{
m_cnrConfigs.insert(c.id(), c);
m_cnrConfigs.insert(c.id, c);
ItemData id(c);
if (m_frequencyPlanningData.contains(c.id()))
if (m_frequencyPlanningData.contains(c.id))
{
FrequencyPlanningData fpd = m_frequencyPlanningData[c.id()];
id.readOnly = isReadOnly(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
FrequencyPlanningData fpd = m_frequencyPlanningData[c.id];
id.readOnly = isReadOnly(fpd.properties);
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
if (circuits.size() > 1)
{
ConfigTreeItem* configItem = new ConfigTreeItem(QVariant::fromValue(id));
@@ -227,7 +230,7 @@ EditFrequencyPlanningFrequencyDataModel::itemData(const QModelIndex& index)
QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index, int role) const
{
if ((role != Qt::DisplayRole && role != Qt::ToolTipRole && role != Qt::UserRole && role != Qt::TextColorRole &&
if ((role != Qt::DisplayRole && role != Qt::ToolTipRole && role != Qt::UserRole && role != Qt::ForegroundRole &&
role != Qt::BackgroundRole) ||
!index.isValid())
return NGLTreeModel::data(index, role);
@@ -265,11 +268,11 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
{
case RADIO_CIRCUIT_ID:
return setData.id();
return setData.id;
case FUNCTION: {
if (!rc)
return QStringLiteral("-");
return QString::fromStdString(m_freqSetData[rc->frequencySetDataId()].function());
return QString::fromStdString(m_freqSetData[rc->frequencySetDataId()].function);
}
case DEVICE: {
@@ -278,7 +281,7 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
RadioCircuitVHF* rcVhf = dynamic_cast<RadioCircuitVHF*>(rc);
if (!rcVhf)
return QStringLiteral("-");
return toString(m_freqSetData[rc->frequencySetDataId()].frequencyBand().underlying());
return toString(m_freqSetData[rc->frequencySetDataId()].frequencyBand);
}
case FREQUENCY: {
QLocale locale(QLocale::German);
@@ -290,7 +293,7 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
if (rcVhf && isAkwMode(rcVhf->operatingMode))
return QStringLiteral("-");
return tr("%1 MHz").arg(
locale.toString(m_freqSetData[rc->frequencySetDataId()].frequency() / 1000., 'f', 3));
locale.toString(m_freqSetData[rc->frequencySetDataId()].frequency / 1000., 'f', 3));
}
else
{
@@ -310,67 +313,67 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].akwBundle().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].akwBundle.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].akwBundle().get();
return m_freqSetData[rc->frequencySetDataId()].akwBundle.get();
}
case FSB_BUNDLE: {
if (!rc)
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].fsbBundle().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].fsbBundle.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].fsbBundle().get();
return m_freqSetData[rc->frequencySetDataId()].fsbBundle.get();
}
case AKW_RADIO_CIRCUIT: {
if (!rc)
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit().get();
return m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit.get();
}
case COMSEC: {
if (!rc)
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].comsec().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].comsec.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].comsec().get();
return m_freqSetData[rc->frequencySetDataId()].comsec.get();
}
case RADIO_CIRCUIT: {
if (!rc)
return QString::fromStdString(setData.radioCircuit());
return QString::fromStdString(setData.radioCircuit);
return id.name();
}
case PARTY: {
ParticipantManagement::Party party = m_ppmDtc->party(setData.partyId());
ParticipantManagement::Party party = m_ppmDtc->party(setData.partyId);
return ParticipantManagement::trPartyName(party.name());
return ParticipantManagement::trPartyName(party.name);
}
case UNIT: {
if (!setData.unitId().is_set())
if (!setData.unitId.has_value())
return {};
const int unitId = setData.unitId().get();
const int unitId = setData.unitId.get();
if (!m_units.contains(unitId))
return QStringLiteral("-");
const auto unit = m_units[unitId];
INFO_LOG(m_logger) << " config.unitId()=" << unitId << " Str=" << unit.name();
INFO_LOG(m_logger) << " config.unitId()=" << unitId << " Str=" << unit.name;
QString unitStr;
if (unit.designator().size() > 0)
unitStr = QString::fromStdString(unit.designator()) + QLatin1Char('/');
unitStr.append(QString::fromStdString(unit.tacticalIdentifier()));
if (unit.designator.size() > 0)
unitStr = QString::fromStdString(unit.designator) + QLatin1Char('/');
unitStr.append(QString::fromStdString(unit.tacticalIdentifier));
INFO_LOG(m_logger) << "unitStr = " << unitStr;
return unitStr;
@@ -382,7 +385,7 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
if (rc->radioStationId == 0)
return tr("Automatic");
else
return QString::fromStdString(m_ismDtc->mainStructureElement(rc->radioStationId).name());
return QString::fromStdString(m_ismDtc->mainStructureElement(rc->radioStationId).name);
}
case PILOTTON: {
if (!rc)
@@ -405,11 +408,11 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
return toString(rcVhf->operatingMode);
}
case CHANNEL: {
CnrChannel channel = m_avmDtc->cnrChannel(setData.cnrChannelId());
return QString::fromStdString(channel.name());
CnrChannel channel = m_avmDtc->cnrChannel(setData.cnrChannelId);
return QString::fromStdString(channel.name);
}
case GLOBAL: {
return setData.exerciseId().is_set() ? tr("No") : tr("Yes");
return setData.exerciseId.has_value() ? tr("No") : tr("Yes");
}
case PROPERTIES: {
if (!rc)
@@ -463,22 +466,22 @@ QVariant EditFrequencyPlanningFrequencyDataModel::data(const QModelIndex& index,
}
if (role == Qt::UserRole)
return setData.id();
return setData.id;
if (role == Qt::TextColorRole)
if (role == Qt::ForegroundRole)
{
for (int id : m_multipleAssignedCnrIds)
{
if (id == setData.id())
if (id == setData.id)
return QColor(Qt::red);
}
}
if (role == Qt::BackgroundRole)
{
if (setData.exerciseId().is_set() && setData.exerciseId().get() == m_exerciseId)
if (setData.exerciseId.has_value() && setData.exerciseId.get() == m_exerciseId)
return NGLTreeModel::data(index, role);
if (!setData.exerciseId().is_set() && m_exerciseId <= 0)
if (!setData.exerciseId.has_value() && m_exerciseId <= 0)
return NGLTreeModel::data(index, role);
return QColor(Qt::gray);
}
@@ -546,15 +549,15 @@ bool EditFrequencyPlanningFrequencyDataModel::unassignRadioCircuit(int32_t cnrCo
void EditFrequencyPlanningFrequencyDataModel::setFrequencePlanningId(int id)
{
if (m_initPlan.id() == id)
if (m_initPlan.id == id)
return;
if (m_initPlan.id() <= 0)
if (m_initPlan.id <= 0)
{
m_initPlan.id(id);
m_initPlan.id = id;
return;
}
WARNING_LOG(m_logger) << "Trying to set a new frequency planning id but there is alreay an id set ("
<< m_initPlan.id() << " - " << id << ")";
<< m_initPlan.id << " - " << id << ")";
}
ModifyFrequencyPlanningRequest EditFrequencyPlanningFrequencyDataModel::modifyFrequencyPlanningRequest() const
@@ -565,21 +568,21 @@ ModifyFrequencyPlanningRequest EditFrequencyPlanningFrequencyDataModel::modifyFr
for (const auto& keyValue : overKeyValue(m_frequencyPlanningData))
{
Q_ASSERT(keyValue.first > 0);
CnrConfig config = m_avmDtc->cnrConfig(keyValue.second.cnrConfigId());
if ((config.exerciseId().is_set() && config.exerciseId().get() == m_exerciseId) ||
(!config.exerciseId().is_set() && m_exerciseId == 0))
CnrConfig config = m_avmDtc->cnrConfig(keyValue.second.cnrConfigId);
if ((config.exerciseId.has_value() && config.exerciseId.get() == m_exerciseId) ||
(!config.exerciseId.has_value() && m_exerciseId == 0))
{
FrequencyPlanningData fpd = keyValue.second;
fpd.frequencyPlanningId() = m_initPlan.id();
fpd.frequencyPlanningId = m_initPlan.id;
planningDataVec.push_back(fpd);
}
}
return {m_initPlan.id(),
m_initPlan.exerciseId().is_set() ? m_initPlan.exerciseId().get() : 0,
m_initPlan.name(),
m_initPlan.date(),
m_initPlan.frequencySetId(),
return {m_initPlan.id,
m_initPlan.exerciseId.has_value() ? m_initPlan.exerciseId.get() : 0,
m_initPlan.name,
m_initPlan.date,
m_initPlan.frequencySetId,
planningDataVec};
}
@@ -591,18 +594,18 @@ FrequencyPlanning EditFrequencyPlanningFrequencyDataModel::toFrequencyPlanning()
for (const auto& keyValue : overKeyValue(m_frequencyPlanningData))
{
Q_ASSERT(keyValue.first > 0);
CnrConfig config = m_avmDtc->cnrConfig(keyValue.second.cnrConfigId());
if ((config.exerciseId().is_set() && config.exerciseId().get() == m_exerciseId) ||
(!config.exerciseId().is_set() && m_exerciseId == 0))
CnrConfig config = m_avmDtc->cnrConfig(keyValue.second.cnrConfigId);
if ((config.exerciseId.has_value() && config.exerciseId.get() == m_exerciseId) ||
(!config.exerciseId.has_value() && m_exerciseId == 0))
{
FrequencyPlanningData fpd = keyValue.second;
fpd.frequencyPlanningId() = m_initPlan.id();
fpd.frequencyPlanningId = m_initPlan.id;
planningDataVec.push_back(fpd);
}
}
FrequencyPlanning frequencyPlanning = m_initPlan;
frequencyPlanning.data(planningDataVec);
frequencyPlanning.data = planningDataVec;
return frequencyPlanning;
}
@@ -611,12 +614,12 @@ int EditFrequencyPlanningFrequencyDataModel::findCnrConfigByName(const QString&
{
int id = -1;
std::function<bool(const CnrConfig&)> findByNameInExercise = [this, &name, &id](const CnrConfig& cnrConfig) {
if (cnrConfig.exerciseId().is_set() && cnrConfig.exerciseId() != m_initPlan.exerciseId())
if (cnrConfig.exerciseId.has_value() && cnrConfig.exerciseId != m_initPlan.exerciseId)
return false;
if (QString::fromStdString(cnrConfig.radioCircuit()) != name)
if (QString::fromStdString(cnrConfig.radioCircuit) != name)
return false;
id = cnrConfig.id();
id = cnrConfig.id;
return true;
};
@@ -628,7 +631,7 @@ QByteArray EditFrequencyPlanningFrequencyDataModel::uiToJson() const
{
QJsonObject obj;
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::AVMEditFrequencyPlanning);
obj[QStringLiteral("frequencySetId")] = m_initPlan.frequencySetId();
obj[QStringLiteral("frequencySetId")] = m_initPlan.frequencySetId;
QJsonArray arr;
for (const auto& keyValue : overKeyValue(m_frequencyPlanningData))
@@ -636,8 +639,8 @@ QByteArray EditFrequencyPlanningFrequencyDataModel::uiToJson() const
QJsonObject inner;
const FrequencyPlanningData& info = keyValue.second;
inner[QStringLiteral("cnrChannelId")] = m_avmDtc->cnrConfig(info.cnrConfigId()).cnrChannelId();
inner[QStringLiteral("properties")] = QString::fromStdString(info.properties());
inner[QStringLiteral("cnrChannelId")] = m_avmDtc->cnrConfig(info.cnrConfigId).cnrChannelId;
inner[QStringLiteral("properties")] = QString::fromStdString(info.properties);
arr.append(inner);
}
@@ -651,15 +654,15 @@ QByteArray EditFrequencyPlanningFrequencyDataModel::uiToJson() const
void EditFrequencyPlanningFrequencyDataModel::setFrequencyPlanningData(const FrequencyPlanningData& fpd)
{
ConfigTreeItem* item = searchCnrConfig(m_rootItem, fpd.cnrConfigId());
ConfigTreeItem* item = searchCnrConfig(m_rootItem, fpd.cnrConfigId);
if (!item)
{
if (!m_cnrConfigs.contains(fpd.cnrConfigId()))
if (!m_cnrConfigs.contains(fpd.cnrConfigId))
return;
beginResetModel();
ItemData data(m_cnrConfigs[fpd.cnrConfigId()]);
data.readOnly = isReadOnly(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
ItemData data(m_cnrConfigs[fpd.cnrConfigId]);
data.readOnly = isReadOnly(fpd.properties);
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
if (circuits.size() > 1)
{
ConfigTreeItem* configItem = new ConfigTreeItem(QVariant::fromValue(data));
@@ -677,12 +680,12 @@ void EditFrequencyPlanningFrequencyDataModel::setFrequencyPlanningData(const Fre
ConfigTreeItem* configItem = new ConfigTreeItem(QVariant::fromValue(data));
insertRow(m_rootItem->childCount(), indexFromItem(m_rootItem), configItem);
}
m_frequencyPlanningData[fpd.cnrConfigId()] = fpd;
m_frequencyPlanningData[fpd.cnrConfigId] = fpd;
endResetModel();
return;
}
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
ItemData data = item->data().value<ItemData>();
item->removeAllChildren();
@@ -690,7 +693,7 @@ void EditFrequencyPlanningFrequencyDataModel::setFrequencyPlanningData(const Fre
{
data.radioCircuit = circuits[0];
item->setData(QVariant::fromValue(data));
m_frequencyPlanningData.insert(fpd.cnrConfigId(), fpd);
m_frequencyPlanningData.insert(fpd.cnrConfigId, fpd);
}
if (circuits.size() <= 1)
return;
@@ -701,7 +704,7 @@ void EditFrequencyPlanningFrequencyDataModel::setFrequencyPlanningData(const Fre
ConfigTreeItem* childItem = new ConfigTreeItem(QVariant::fromValue(data));
insertRow(item->childCount(), indexFromItem(item), childItem);
}
m_frequencyPlanningData.insert(fpd.cnrConfigId(), fpd);
m_frequencyPlanningData.insert(fpd.cnrConfigId, fpd);
endResetModel();
}
@@ -714,12 +717,12 @@ bool EditFrequencyPlanningFrequencyDataModel::checkResourceAssignments()
{
const FrequencyPlanningData& p = it.value();
QSet<int> fsdIdsOuter = frequencySetDataIds(p.properties());
QSet<int> fsdIdsOuter = frequencySetDataIds(p.properties);
for (auto startSearchIt = ++it; startSearchIt != m_frequencyPlanningData.constEnd(); ++startSearchIt)
{
const FrequencyPlanningData& pI = startSearchIt.value();
QSet<int> fsdIdsInner = frequencySetDataIds(pI.properties());
QSet<int> fsdIdsInner = frequencySetDataIds(pI.properties);
for (int inner : std::as_const(fsdIdsInner))
{
for (int outer : std::as_const(fsdIdsOuter))
@@ -727,17 +730,17 @@ bool EditFrequencyPlanningFrequencyDataModel::checkResourceAssignments()
if (inner != outer)
{
DEBUG_LOG(m_logger)
<< "---ist ungleich cnrConfigId(A): " << p.cnrConfigId() << " (B): " << pI.cnrConfigId();
<< "---ist ungleich cnrConfigId(A): " << p.cnrConfigId << " (B): " << pI.cnrConfigId;
}
else
{
DEBUG_LOG(m_logger)
<< "---ist gleich cnrConfigId(A): " << p.cnrConfigId() << " (B): " << pI.cnrConfigId();
if (!m_multipleAssignedCnrIds.contains(p.cnrConfigId()))
m_multipleAssignedCnrIds.append(p.cnrConfigId());
<< "---ist gleich cnrConfigId(A): " << p.cnrConfigId << " (B): " << pI.cnrConfigId;
if (!m_multipleAssignedCnrIds.contains(p.cnrConfigId))
m_multipleAssignedCnrIds.append(p.cnrConfigId);
if (!m_multipleAssignedCnrIds.contains(pI.cnrConfigId()))
m_multipleAssignedCnrIds.append(pI.cnrConfigId());
if (!m_multipleAssignedCnrIds.contains(pI.cnrConfigId))
m_multipleAssignedCnrIds.append(pI.cnrConfigId);
bOk = false;
}
}
@@ -760,31 +763,31 @@ bool EditFrequencyPlanningFrequencyDataModel::checkResourceAssignments()
bool EditFrequencyPlanningFrequencyDataModel::onCnrConfigChanged(const AudioVideoManagement::CnrConfig& data,
DataModification modType)
{
ConfigTreeItem* item = searchCnrConfig(m_rootItem, data.id());
ConfigTreeItem* item = searchCnrConfig(m_rootItem, data.id);
if (modType == DataModification::eRemoved)
{
if (!item)
return true;
m_cnrConfigs.remove(data.id());
m_frequencyPlanningData.remove(data.id());
m_cnrConfigs.remove(data.id);
m_frequencyPlanningData.remove(data.id);
return removeRow(item->row());
}
if (modType == DataModification::eAdded ||
(!item && data.exerciseId().is_set() && m_exerciseId == data.exerciseId().get()))
(!item && data.exerciseId.has_value() && m_exerciseId == data.exerciseId.get()))
{
Q_ASSERT(!item);
m_cnrConfigs.insert(data.id(), data);
m_cnrConfigs.insert(data.id, data);
ConfigTreeItem* newItem = new ConfigTreeItem(QVariant::fromValue(ItemData(data)));
m_rootItem->setModified(true);
insertRow(0, indexFromItem(m_rootItem), newItem);
return true;
}
if (item && data.exerciseId().is_set() && m_exerciseId != data.exerciseId().get())
if (item && data.exerciseId.has_value() && m_exerciseId != data.exerciseId.get())
return removeRow(item->row());
if (item)
@@ -794,7 +797,7 @@ bool EditFrequencyPlanningFrequencyDataModel::onCnrConfigChanged(const AudioVide
item->setData(QVariant::fromValue(id));
if (id.radioCircuit)
id.radioCircuit->name = QString::fromStdString(data.radioCircuit());
id.radioCircuit->name = QString::fromStdString(data.radioCircuit);
item->setModified(true);
return true;
@@ -809,7 +812,7 @@ EditFrequencyPlanningFrequencyDataModel::searchCnrConfig(const NGLTreeItem* pare
for (int r = 0; r < rowCount; ++r)
{
ConfigTreeItem* child = static_cast<ConfigTreeItem*>(parentItem->child(r));
if (child->data().value<ItemData>().cnrConfig.id() == cnrConfigId)
if (child->data().value<ItemData>().cnrConfig.id == cnrConfigId)
return child;
child = searchCnrConfig(child, cnrConfigId);
if (child)
@@ -823,7 +826,7 @@ QSet<int> EditFrequencyPlanningFrequencyDataModel::getAllocatedFrequencyPlanning
QSet<int> result;
for (const auto& fpd : std::as_const(m_frequencyPlanningData))
{
result += AudioVideoManagement::frequencySetDataIds(fpd.properties());
result += AudioVideoManagement::frequencySetDataIds(fpd.properties);
}
if (m_exerciseId == 0)
@@ -831,19 +834,19 @@ QSet<int> EditFrequencyPlanningFrequencyDataModel::getAllocatedFrequencyPlanning
QMap<qint32, AudioVideoManagement::FrequencyPlanning> frequencyPlannings = m_avmDtc->frequencyPlannings();
for (const auto& frequencyPlanning : std::as_const(frequencyPlannings))
{
if (!frequencyPlanning.exerciseId().is_set())
if (!frequencyPlanning.exerciseId.has_value())
continue;
for (const auto& frequencyPlanningData : frequencyPlanning.data())
for (const auto& frequencyPlanningData : frequencyPlanning.data)
{
result += AudioVideoManagement::frequencySetDataIds(frequencyPlanningData.properties());
result += AudioVideoManagement::frequencySetDataIds(frequencyPlanningData.properties);
}
}
}
return result;
}
FPFDelegate::FPFDelegate(QObject* parent) : QStyledItemDelegate(parent), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
FPFDelegate::FPFDelegate(QObject* parent) : QStyledItemDelegate(parent)
{
}
@@ -3,6 +3,7 @@
#pragma once
#include <AudioVideoManagement/avm_qmetatypes.h>
#include <nglwidgets/ngltreeitem.h>
#include <AudioVideoManagement/logger.h>
#include "avm_frequency_planning_helper.h"
@@ -129,7 +130,7 @@ public:
bool unassignRadioCircuit(int32_t cnrConfigId);
int32_t getFrequencySetId() const { return m_initPlan.frequencySetId(); }
int32_t getFrequencySetId() const { return m_initPlan.frequencySetId; }
QSet<int> getAllocatedFrequencyPlanningSetIds();
ModifyFrequencyPlanningRequest modifyFrequencyPlanningRequest() const;
@@ -1,6 +1,7 @@
#include "avm_edit_frequency_planning_resource_data_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <AudioVideoManagement/avm_translation.h>
#include <Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.h>
@@ -23,6 +24,7 @@ EditFrequencyPlanningResourceDataModel::EditFrequencyPlanningResourceDataModel(
},
parent),
m_assignedFrequencySetDataIds(assignedFrequencySetDataIds), m_frequencyBand(frequencyBand)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
}
@@ -38,33 +40,33 @@ QVariant EditFrequencyPlanningResourceDataModel::data(const QModelIndex& index,
switch (index.column())
{
case FREQ_SET_DATA_ID:
return setData.id();
return setData.id;
case FUNCTION:
return QString::fromStdString(setData.function());
return QString::fromStdString(setData.function);
case DEVICE:
return toString(setData.frequencyBand());
return toString(setData.frequencyBand);
case FREQUENCY:
return tr("%1 MHz").arg(locale.toString(setData.frequency() / 1000., 'f', 3));
return tr("%1 MHz").arg(locale.toString(setData.frequency / 1000., 'f', 3));
case AKW_BUNDLE:
if (setData.akwBundle().is_set())
return setData.akwBundle().get();
if (setData.akwBundle.has_value())
return setData.akwBundle.get();
return QStringLiteral("-");
case FSB_BUNDLE:
if (setData.fsbBundle().is_set())
return setData.fsbBundle().get();
if (setData.fsbBundle.has_value())
return setData.fsbBundle.get();
return QStringLiteral("-");
case AKW_RADIO_CIRCUIT:
if (setData.akwRadioCircuit())
return setData.akwRadioCircuit().get();
if (setData.akwRadioCircuit)
return setData.akwRadioCircuit.get();
return QStringLiteral("-");
case COMSEC:
if (setData.comsec().is_set())
return setData.comsec().get();
if (setData.comsec.has_value())
return setData.comsec.get();
return QStringLiteral("-");
}
}
else if (role == Qt::UserRole)
return setData.id();
return setData.id;
return QVariant();
}
@@ -73,18 +75,18 @@ bool EditFrequencyPlanningResourceDataModel::isFiltered(const AudioVideoManageme
DataModification modType) const
{
if (m_frequencyBand != FrequencyBand::REL && data.frequencyBand() != m_frequencyBand)
if (m_frequencyBand != FrequencyBand::REL && data.frequencyBand != m_frequencyBand)
return true;
if (m_frequencyBand == FrequencyBand::REL && data.frequencyBand() != FrequencyBand::VHF)
if (m_frequencyBand == FrequencyBand::REL && data.frequencyBand != FrequencyBand::VHF)
return true;
Q_UNUSED(modType);
if (m_assignedFrequencySetDataIds.contains(data.id()))
if (m_assignedFrequencySetDataIds.contains(data.id))
{
DEBUG_LOG(m_logger) << "---m_assignments.size(): " << m_assignedFrequencySetDataIds.size()
<< " frequencySetDataId: " << data.id() << " ist bereits enthalten";
<< " frequencySetDataId: " << data.id << " ist bereits enthalten";
return true;
}
@@ -2,6 +2,7 @@
#include "avm_edit_frequency_planning_frequency_data_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <utility>
#include "avm_edit_frequency_planning_resource_dialog.h"
#include "ui_avm_edit_frequency_planning_resource_dialog.h"
@@ -10,6 +11,7 @@
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <ParticipantManagement/ppm_translation.h>
#include <AudioVideoManagement/avm_ftc.h>
#include <AudioVideoManagement/avm_translation.h>
@@ -42,6 +44,7 @@ EditFrequencyPlanningResourceDialog::EditFrequencyPlanningResourceDialog(int fre
, m_ui(new Ui::EditFrequencyPlanningResourceDialog)
, m_frequencySetId(frequencySetId)
, m_dialogMode(dialogMode)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
@@ -63,18 +66,18 @@ bool EditFrequencyPlanningResourceDialog::init(LtsSession::LtsSession *session,
return succ;
m_units = m_ppmDtc->units();
m_config = m_avmDtc->cnrConfig(m_planningData.cnrConfigId());
m_config = m_avmDtc->cnrConfig(m_planningData.cnrConfigId);
m_radioCircuitName = QString::fromStdString(m_config.radioCircuit());
CnrChannel channel = m_avmDtc->cnrChannel(m_config.cnrChannelId());
m_frequencyBand = channel.frequencyBand();
m_radioCircuitName = QString::fromStdString(m_config.radioCircuit);
CnrChannel channel = m_avmDtc->cnrChannel(m_config.cnrChannelId);
m_frequencyBand = channel.frequencyBand;
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(planningData.properties());
bool readOnly = isReadOnly(planningData.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(planningData.properties);
bool readOnly = isReadOnly(planningData.properties);
for (RadioCircuit *circuit : std::as_const(circuits))
{
addMemberWidget(circuit, readOnly);
@@ -104,7 +107,7 @@ void EditFrequencyPlanningResourceDialog::retranslate()
if (m_dialogMode == EditFrequencyPlanningSetResourceDialog::DialogMode::Edit)
{
translate(m_ui.get(), m_avmDtc->cnrConfig(m_planningData.cnrConfigId()), m_radioCircuitName, tr("Radio Circuit"));
translate(m_ui.get(), m_avmDtc->cnrConfig(m_planningData.cnrConfigId), m_radioCircuitName, tr("Radio Circuit"));
}
else
{
@@ -130,8 +133,8 @@ bool EditFrequencyPlanningResourceDialog::apply()
doc.setObject(obj);
FrequencyPlanningData fpd;
fpd.properties(doc.toJson().toStdString());
fpd.cnrConfigId() = m_config.id();
fpd.properties = doc.toJson().toStdString();
fpd.cnrConfigId = m_config.id;
emit signalAssignRadioCircuit(fpd);
return true;
@@ -178,10 +181,10 @@ void EditFrequencyPlanningResourceDialog::addMemberWidget(RadioCircuit *radioCir
void EditFrequencyPlanningResourceDialog::onCnrConfigChanged(const AudioVideoManagement::CnrConfig &config, DataModification modType)
{
Q_UNUSED(modType);
if (m_config.id() == config.id())
if (m_config.id == config.id)
{
setLbRadioCiruit(config);
m_radioCircuitName = QString::fromStdString(config.radioCircuit());
m_radioCircuitName = QString::fromStdString(config.radioCircuit);
retranslate();
}
}
@@ -189,24 +192,24 @@ void EditFrequencyPlanningResourceDialog::onCnrConfigChanged(const AudioVideoMan
void EditFrequencyPlanningResourceDialog::setLbRadioCiruit(const AudioVideoManagement::CnrConfig &config)
{
ParticipantManagement::Party party = m_ppmDtc->party(config.partyId());
QString partyName = ParticipantManagement::trPartyName(party.name());
ParticipantManagement::Party party = m_ppmDtc->party(config.partyId);
QString partyName = ParticipantManagement::trPartyName(party.name);
QString unitString;
if (config.unitId().is_set())
if (config.unitId.has_value())
{
int unitId = config.unitId().get();
int unitId = config.unitId.get();
auto unit = m_units.value(unitId);
if (unit.id() == unitId)
if (unit.id == unitId)
{
if (unit.designator().size() > 0)
unitString = QString::fromStdString(unit.designator()) + QLatin1Char('/');
unitString.append(QString::fromStdString(unit.tacticalIdentifier()));
if (unit.designator.size() > 0)
unitString = QString::fromStdString(unit.designator) + QLatin1Char('/');
unitString.append(QString::fromStdString(unit.tacticalIdentifier));
}
}
m_ui->lblUnit->setText(unitString);
CnrChannel channel = m_avmDtc->cnrChannel(m_config.cnrChannelId());
m_ui->lblChannel->setText(QString::fromStdString(channel.name()));
CnrChannel channel = m_avmDtc->cnrChannel(m_config.cnrChannelId);
m_ui->lblChannel->setText(QString::fromStdString(channel.name));
m_ui->lblFrequencyBand->setText(toString(m_frequencyBand));
m_ui->lblRadioCircuit->setText(m_radioCircuitName);
m_ui->lblParty->setText(partyName);
@@ -2,6 +2,7 @@
#include "avm_edit_frequency_planning_frequency_data_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_edit_frequency_planning_set_resource_dialog.h"
#include "ui_avm_edit_frequency_planning_set_resource_dialog.h"
#include "avm_edit_frequency_planning_resource_data_model.h"
@@ -32,26 +33,27 @@ EditFrequencyPlanningSetResourceDialog::EditFrequencyPlanningSetResourceDialog(
, m_avmDtc(avmDtc)
, m_frequencyResourceDataModel(nullptr)
, m_config(m_avmDtc->cnrConfig(cnrConfigId))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
CnrChannel channel = m_avmDtc->cnrChannel(m_config.cnrChannelId());
CnrChannel channel = m_avmDtc->cnrChannel(m_config.cnrChannelId);
m_frequencyResourceDataModel = new EditFrequencyPlanningResourceDataModel(assignedFrequencySetDataIds, channel.frequencyBand(), this);
m_frequencyResourceDataModel = new EditFrequencyPlanningResourceDataModel(assignedFrequencySetDataIds, channel.frequencyBand, this);
std::vector<FrequencySetDataWithId> dataVec = m_avmDtc->frequencySet(m_frequencySetId).data();
std::vector<FrequencySetDataWithId> dataVec = m_avmDtc->frequencySet(m_frequencySetId).data;
for (const auto &it : dataVec)
{
if((operatingMode == RcOperatingMode::AkwEncEccm ||
operatingMode == RcOperatingMode::AkwEncNone)
&& it.akwRadioCircuit() == 0)
&& it.akwRadioCircuit == 0)
continue;
if((operatingMode != RcOperatingMode::AkwEncEccm &&
operatingMode != RcOperatingMode::AkwEncNone)
&& it.akwRadioCircuit() != 0)
&& it.akwRadioCircuit != 0)
continue;
m_frequencyResourceDataModel->insertRow(it);
}
@@ -81,7 +83,7 @@ void EditFrequencyPlanningSetResourceDialog::accept()
if (!idx.isValid())
return;
emit onSelectedFrequencySet(m_frequencyResourceDataModel->getRowData(idx.row()).id());
emit onSelectedFrequencySet(m_frequencyResourceDataModel->getRowData(idx.row()).id);
}
}
@@ -1,6 +1,7 @@
#include "avm_frequency_planning_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_edit_frequency_planning_dialog.h"
#include "avm_frequency_planning_dialog_model.h"
@@ -15,6 +16,7 @@
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
#include <LtsWidgets/lts_base_layout_widget.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <PluginInterfaces/gui_plugin_interface.h>
#include <QtWidgets/QMessageBox>
#include <QtWidgets/QTreeView>
@@ -28,6 +30,7 @@ FrequencyPlanningDialog::FrequencyPlanningDialog(LtsSession::LtsSession* session
m_menuGroup(menuGroup), m_copy(false), m_session(session), m_model(nullptr),
m_requestHelper(new LtsUtils::RequestHelper(this)), m_activePlanning({-1, -1}), m_avmDtc(nullptr),
m_avmFtc(nullptr), m_ppmDtc(nullptr), m_ismDtc(nullptr), m_flmGui(nullptr), m_activeFrequencyPlanningStatus(0)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
@@ -61,9 +64,9 @@ void FrequencyPlanningDialog::unsetActiveFrequencyPlanning()
void FrequencyPlanningDialog::setActiveFrequencyPlanning(const ActiveFrequencyPlanning& activePlanning)
{
m_ui->lbActiveFrequencyPlanning->setText(
QString::fromStdString(m_avmDtc->frequencyPlanning(activePlanning.frequencyPlanningId()).name()));
QString::fromStdString(m_avmDtc->frequencyPlanning(activePlanning.frequencyPlanningId).name));
m_activePlanning = activePlanning;
m_model->setActivePlanning(m_activePlanning.frequencyPlanningId());
m_model->setActivePlanning(m_activePlanning.frequencyPlanningId);
onSelectionChanged();
}
@@ -128,9 +131,9 @@ bool FrequencyPlanningDialog::init(const std::shared_ptr<Interface::Dtc>& avmDtc
setStatus(tr("No active Radio Controller connected."), {}, time(0) * 1000, TransmissionReason::TR_Unknown, Qt::red);
for (auto& elem : m_avmDtc->frequencyPlanningStatuss())
{
if (!elem.isActive())
if (!elem.isActive)
continue;
m_activeFrequencyPlanningStatus = elem.id();
m_activeFrequencyPlanningStatus = elem.id;
onFrequencyPlanningStatusChanged(elem, DataModification::eAdded);
}
connect(m_avmDtc.get(), &Interface::Dtc::frequencyPlanningStatusChanged, this,
@@ -144,12 +147,12 @@ void FrequencyPlanningDialog::onFrequencyPlanningStatusChanged(
{
if (modType == DataModification::eModified)
{
if (data.id() != m_activeFrequencyPlanningStatus)
if (data.id != m_activeFrequencyPlanningStatus)
return;
}
else if (modType == DataModification::eRemoved)
{
if (data.id() != m_activeFrequencyPlanningStatus)
if (data.id != m_activeFrequencyPlanningStatus)
return;
m_activeFrequencyPlanningStatus = 0;
@@ -159,28 +162,28 @@ void FrequencyPlanningDialog::onFrequencyPlanningStatusChanged(
}
else
{
if (!data.isActive())
if (!data.isActive)
return;
m_activeFrequencyPlanningStatus = data.id();
m_activeFrequencyPlanningStatus = data.id;
}
if (data.activated().is_set())
if (data.activated.has_value())
{
setStatus(tr("Activated"), QString::fromStdString(data.requester()), data.activated().get(), data.reason(),
setStatus(tr("Activated"), QString::fromStdString(data.requester), data.activated.get(), data.reason,
Qt::green);
return;
}
if (data.received().is_set())
if (data.received.has_value())
{
setStatus(tr("In Progress"), QString::fromStdString(data.requester()), data.received().get(), data.reason(),
setStatus(tr("In Progress"), QString::fromStdString(data.requester), data.received.get(), data.reason,
Qt::yellow);
return;
}
if (data.sent().is_set())
if (data.sent.has_value())
{
setStatus(tr("Sent"), QString::fromStdString(data.requester()), data.sent().get(),
setStatus(tr("Sent"), QString::fromStdString(data.requester), data.sent.get(),
TransmissionReason::TR_Unknown, Qt::yellow);
return;
}
@@ -255,11 +258,11 @@ void FrequencyPlanningDialog::onAddClicked()
{
FrequencyPlanning planning;
planning.id(0);
planning.id = 0;
if (m_session->exerciseId() != 0)
planning.exerciseId(m_session->exerciseId());
planning.frequencySetId(frequencySets.first().id());
planning.date(m_session->partitionTime());
planning.exerciseId = m_session->exerciseId();
planning.frequencySetId = frequencySets.first().id;
planning.date = m_session->partitionTime();
showEditDialog(planning);
}
else
@@ -278,7 +281,7 @@ void FrequencyPlanningDialog::onAddClicked()
m_copy = true;
qint64 dateOfCreation = m_session->partitionTime();
FrequencyPlanning planning = m_model->data(selectedRows.constFirst(), Qt::UserRole).value<FrequencyPlanning>();
planning.date(dateOfCreation);
planning.date = dateOfCreation;
showEditDialog(planning);
}
}
@@ -291,8 +294,8 @@ void FrequencyPlanningDialog::onEditClicked()
return;
const FrequencyPlanning& fp = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>();
DEBUG_LOG(m_logger) << "---onEditClicked() FrequencyPlanningId: " << fp.id()
<< " FrequencySetDataId: " << fp.frequencySetId();
DEBUG_LOG(m_logger) << "---onEditClicked() FrequencyPlanningId: " << fp.id
<< " FrequencySetDataId: " << fp.frequencySetId;
m_copy = false;
showEditDialog(m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>());
@@ -305,7 +308,7 @@ void FrequencyPlanningDialog::onRemoveClicked()
if (!currentIndex.isValid())
return;
int planningId = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>().id();
int planningId = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>().id;
if (m_editDlgMap.contains(planningId))
{
@@ -315,7 +318,7 @@ void FrequencyPlanningDialog::onRemoveClicked()
Core::RemoveElementRequest req;
req.id(planningId);
req.id = planningId;
m_requestHelper->startSingleRequest([this, req]() { return m_avmFtc->removeFrequencyPlanningRequest(req, this); });
}
@@ -328,8 +331,8 @@ void FrequencyPlanningDialog::onSelectionChanged()
if (hasSelection)
{
const QModelIndex currentIndex = selectedRows.constFirst();
selectedIsActive = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>().id() ==
m_activePlanning.frequencyPlanningId();
selectedIsActive = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>().id ==
m_activePlanning.frequencyPlanningId;
}
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, hasSelection);
@@ -362,9 +365,9 @@ void FrequencyPlanningDialog::onActivateDeactivatePlanningClicked()
if (!currentIndex.isValid())
return;
int32_t planningId = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>().id();
int32_t planningId = m_model->data(currentIndex, Qt::UserRole).value<FrequencyPlanning>().id;
bool isActive = planningId == m_activePlanning.frequencyPlanningId();
bool isActive = planningId == m_activePlanning.frequencyPlanningId;
if (!isActive)
{
ModifyActiveFrequencyPlanningRequest request(m_session->exerciseId(), planningId);
@@ -383,7 +386,7 @@ void FrequencyPlanningDialog::onActivateDeactivatePlanningClicked()
void FrequencyPlanningDialog::showEditDialog(const FrequencyPlanning& planning)
{
QString widgetIdentifier(QStringLiteral("FrequencyPlanning%1").arg(QString::number(planning.id())));
QString widgetIdentifier(QStringLiteral("FrequencyPlanning%1").arg(QString::number(planning.id)));
if (m_copy)
widgetIdentifier.append(QStringLiteral("Copy"));
@@ -402,14 +405,14 @@ void FrequencyPlanningDialog::showEditDialog(const FrequencyPlanning& planning)
if (!m_copy)
{
m_editDlgMap.insert(planning.id(), dlg);
m_editDlgMap.insert(planning.id, dlg);
}
}
void FrequencyPlanningDialog::onActiveFrequencyPlanningChanged(const ActiveFrequencyPlanning& data,
DataModification modType)
{
if (data.exerciseId() != m_session->exerciseId())
if (data.exerciseId != m_session->exerciseId())
return;
if (modType == DataModification::eRemoved)
@@ -2,6 +2,7 @@
#pragma once
#include <AudioVideoManagement/avm_qmetatypes.h>
#include <AudioVideoManagement/avm_ftc.h>
#include <AudioVideoManagement/logger.h>
#include <LtsUtils/LtsUtilsCore/data_modification_enum.h>
@@ -1,6 +1,7 @@
#include "avm_frequency_planning_dialog_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <FileManagement/flm_translation.h>
#include <QtCore/QJsonArray>
@@ -14,6 +15,7 @@ namespace AudioVideoManagement
FrequencyPlanningDialogModel::FrequencyPlanningDialogModel(int32_t exerciseId, QObject* parent)
: LtsAbstractTableModel<FrequencyPlanning>({tr("Name"), tr("Date"), tr("Set"), tr("Active")}, parent),
m_exerciseId(exerciseId)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
DEBUG_LOG(m_logger) << "---FrequencyPlanningDialogModel() ";
}
@@ -29,15 +31,15 @@ QVariant FrequencyPlanningDialogModel::data(const QModelIndex& index, int role)
switch (index.column())
{
case NAME:
return QString::fromStdString(planning.name());
return QString::fromStdString(planning.name);
case DATE:
return QDateTime::fromMSecsSinceEpoch(planning.date());
return QDateTime::fromMSecsSinceEpoch(planning.date);
case SET: {
const FrequencySet frequencySet = m_avmDtc->frequencySet(planning.frequencySetId());
return QString::fromStdString(frequencySet.name());
const FrequencySet frequencySet = m_avmDtc->frequencySet(planning.frequencySetId);
return QString::fromStdString(frequencySet.name);
}
case ACTIVE:
return planning.id() == m_activePlanningId ? tr("Active") : QStringLiteral("-");
return planning.id == m_activePlanningId ? tr("Active") : QStringLiteral("-");
}
}
else if (role == Qt::UserRole)
@@ -56,7 +58,7 @@ bool FrequencyPlanningDialogModel::init(const std::shared_ptr<Interface::Dtc>& a
&FrequencyPlanningDialogModel::onFrequencyPlanningChanged);
m_avmDtc->frequencyPlannings([this](const FrequencyPlanning& p) {
if (p.exerciseId().is_set() && p.exerciseId().get() == m_exerciseId)
if (p.exerciseId.has_value() && p.exerciseId.get() == m_exerciseId)
insertRow(p);
});
@@ -68,15 +70,15 @@ FrequencySet FrequencyPlanningDialogModel::frequencySetByIndex(const QModelIndex
if (!indexIsValid(index))
return FrequencySet();
return m_frequencySets.value(m_vecData.at(index.row()).frequencySetId());
return m_frequencySets.value(m_vecData.at(index.row()).frequencySetId);
}
void FrequencyPlanningDialogModel::onFrequencyPlanningChanged(const FrequencyPlanning& data, DataModification modType)
{
INFO_LOG(m_logger) << "onFrequencyPlanningChanged "
<< " data.exerciseId()" << data.exerciseId() << " m_exerciseId=" << m_exerciseId;
if ((data.exerciseId().is_set() && data.exerciseId().get() != m_exerciseId) ||
(!data.exerciseId().is_set() && m_exerciseId != 0))
<< " data.exerciseId()" << data.exerciseId << " m_exerciseId=" << m_exerciseId;
if ((data.exerciseId.has_value() && data.exerciseId.get() != m_exerciseId) ||
(!data.exerciseId.has_value() && m_exerciseId != 0))
return;
onDataChanged(data, modType);
@@ -94,21 +96,21 @@ QByteArray FrequencyPlanningDialogModel::modelToJson()
QJsonObject inner;
const FrequencyPlanning& planning = m_vecData.at(row);
inner[QStringLiteral("id")] = planning.id();
inner[QStringLiteral("name")] = QString::fromStdString(planning.name());
inner[QStringLiteral("dateOfCreation")] = planning.date();
if (planning.exerciseId().is_set())
inner[QStringLiteral("id")] = planning.id;
inner[QStringLiteral("name")] = QString::fromStdString(planning.name);
inner[QStringLiteral("dateOfCreation")] = static_cast<qint64>(planning.date);
if (planning.exerciseId.has_value())
{
inner[QStringLiteral("exerciseId")] = planning.exerciseId().get();
inner[QStringLiteral("exerciseId")] = planning.exerciseId.get();
}
inner[QStringLiteral("frequencySetId")] = planning.frequencySetId();
inner[QStringLiteral("frequencySetId")] = planning.frequencySetId;
arrData = {};
for (const FrequencyPlanningData& planningData : planning.data())
for (const FrequencyPlanningData& planningData : planning.data)
{
QJsonObject innerData;
innerData[QStringLiteral("cnrConfigId")] = planningData.cnrConfigId();
innerData[QStringLiteral("properties")] = QString::fromStdString(planningData.properties());
innerData[QStringLiteral("cnrConfigId")] = planningData.cnrConfigId;
innerData[QStringLiteral("properties")] = QString::fromStdString(planningData.properties);
arrData += innerData;
}
inner[QStringLiteral("data")] = arrData;
@@ -132,21 +134,21 @@ FrequencyPlanningDialogModel::jsonToFrequencyPlanningVector(const QByteArray& co
{
const QJsonObject obj(ele.toObject());
ModifyFrequencyPlanningRequest frequencyPlanning;
frequencyPlanning.date(obj[QStringLiteral("dateOfCreation")].toDouble());
frequencyPlanning.exerciseId(m_exerciseId);
frequencyPlanning.frequencySetId(obj[QStringLiteral("frequencySetId")].toInt());
frequencyPlanning.id(0);
frequencyPlanning.name(obj[QStringLiteral("name")].toString().toStdString());
frequencyPlanning.date = obj[QStringLiteral("dateOfCreation")].toDouble();
frequencyPlanning.exerciseId = m_exerciseId;
frequencyPlanning.frequencySetId = obj[QStringLiteral("frequencySetId")].toInt();
frequencyPlanning.id = 0;
frequencyPlanning.name = obj[QStringLiteral("name")].toString().toStdString();
const QJsonArray arrData = (obj.value(QStringLiteral("data")).toArray());
frequencyPlanning.data().reserve(arrData.size());
frequencyPlanning.data.reserve(arrData.size());
for (const auto& eleData : arrData)
{
const QJsonObject objData(eleData.toObject());
FrequencyPlanningData frequencyPlanningData;
frequencyPlanningData.cnrConfigId(objData[QStringLiteral("cnrConfigId")].toInt());
frequencyPlanningData.properties(objData[QStringLiteral("properties")].toString().toStdString());
frequencyPlanning.data().push_back(frequencyPlanningData);
frequencyPlanningData.cnrConfigId = objData[QStringLiteral("cnrConfigId")].toInt();
frequencyPlanningData.properties = objData[QStringLiteral("properties")].toString().toStdString();
frequencyPlanning.data.push_back(frequencyPlanningData);
}
result.push_back(std::move(frequencyPlanning));
@@ -170,7 +172,7 @@ bool FrequencyPlanningDialogProxyModel::lessThan(const QModelIndex& source_left,
switch (source_left.column())
{
case FrequencyPlanningDialogModel::DATE:
return dataLeft.date() < dataRight.date();
return dataLeft.date < dataRight.date;
case FrequencyPlanningDialogModel::NAME:
case FrequencyPlanningDialogModel::SET:
case FrequencyPlanningDialogModel::ACTIVE:
@@ -9,6 +9,8 @@
#include <boost/optional.hpp>
#include <memory>
#include <AudioVideoManagement/avm_qmetatypes.h>
namespace AudioVideoManagement
{
@@ -68,4 +70,3 @@ class FrequencyPlanningDialogProxyModel final : public LtsWidgets::LtsColumnFilt
};
} // namespace AudioVideoManagement
Q_DECLARE_METATYPE(AudioVideoManagement::FrequencyPlanning)
@@ -1,6 +1,7 @@
#include "avm_frequency_planning_widget.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_edit_frequency_planning_set_resource_dialog.h"
#include "avm_radio_specifica_hf_widget.h"
@@ -23,9 +24,9 @@ FrequencyPlanningWidget::FrequencyPlanningWidget(const std::shared_ptr<Interface
{
m_ui->setupUi(this);
m_ui->cbFrequencyBand->addItem(toString(FrequencyBand::VHF), FrequencyBand::VHF);
m_ui->cbFrequencyBand->addItem(toString(FrequencyBand::HF), FrequencyBand::HF);
m_ui->cbFrequencyBand->addItem(toString(FrequencyBand::UHF), FrequencyBand::UHF);
m_ui->cbFrequencyBand->addItem(toString(FrequencyBand::VHF), static_cast<int>(FrequencyBand::VHF));
m_ui->cbFrequencyBand->addItem(toString(FrequencyBand::HF), static_cast<int>(FrequencyBand::HF));
m_ui->cbFrequencyBand->addItem(toString(FrequencyBand::UHF), static_cast<int>(FrequencyBand::UHF));
connect(m_ui->leName, &QLineEdit::textChanged, this, &FrequencyPlanningWidget::onNameChanged);
connect(m_ui->cbFrequencyBand, qOverload<int>(&QComboBox::currentIndexChanged), this,
@@ -38,17 +39,17 @@ bool FrequencyPlanningWidget::init(LtsSession::LtsSession* session, RadioCircuit
int frequencySetId, FrequencyBand ft)
{
m_frequencySetId = frequencySetId;
m_cnrConfigId = cnrConfigId.id();
m_hasParty = cnrConfigId.partyId() != 0;
m_cnrConfigId = cnrConfigId.id;
m_hasParty = cnrConfigId.partyId != 0;
if (!session->getForeignGuiInterface<InfrastructureManagement::ForeignGuiComboboxInterface>(m_ismCbxIfc))
return false;
m_ui->cbFrequencyBand->setCurrentIndex(m_ui->cbFrequencyBand->findData(ft.underlying()));
m_ui->cbFrequencyBand->setCurrentIndex(m_ui->cbFrequencyBand->findData(static_cast<int>(ft)));
m_ui->cbFrequencyBand->setVisible(false);
m_ui->lbxFrequencyBand->setVisible(false);
switch (ft.underlying())
switch (ft)
{
case FrequencyBand::HF: {
@@ -67,10 +68,10 @@ bool FrequencyPlanningWidget::init(LtsSession::LtsSession* session, RadioCircuit
ft = data ? data->freqBand : FrequencyBand::VHF;
m_isRelay = true;
m_ui->cbFrequencyBand->setCurrentIndex(m_ui->cbFrequencyBand->findData(ft.underlying()));
m_ui->cbFrequencyBand->setCurrentIndex(m_ui->cbFrequencyBand->findData(static_cast<int>(ft)));
m_ui->cbFrequencyBand->setVisible(true);
m_ui->lbxFrequencyBand->setVisible(true);
switch (ft.underlying())
switch (ft)
{
case FrequencyBand::HF:
createHFWidget(data);
@@ -88,7 +89,7 @@ bool FrequencyPlanningWidget::init(LtsSession::LtsSession* session, RadioCircuit
}
}
m_ismCbxIfc->fillRadioStationsComboBox(m_ui->cbRadioStation, ft.underlying());
m_ismCbxIfc->fillRadioStationsComboBox(m_ui->cbRadioStation, static_cast<int>(ft));
if (m_hasParty && !m_isRelay)
m_ui->cbRadioStation->addItem(tr("Automatic"), 0);
if (!data)
@@ -117,7 +118,7 @@ void FrequencyPlanningWidget::setRelaisRestrictions(bool restrict)
{
if (restrict)
{
m_ui->cbFrequencyBand->setCurrentIndex(m_ui->cbFrequencyBand->findData(FrequencyBand::VHF));
m_ui->cbFrequencyBand->setCurrentIndex(m_ui->cbFrequencyBand->findData(static_cast<int>(FrequencyBand::VHF)));
m_ui->cbFrequencyBand->setEnabled(false);
}
else
@@ -152,13 +153,13 @@ void FrequencyPlanningWidget::onFrequencyBandChanged()
{
switch (m_ui->cbFrequencyBand->currentData().toInt())
{
case FrequencyBand::HF:
case static_cast<int>(FrequencyBand::HF):
createHFWidget();
break;
case FrequencyBand::UHF:
case static_cast<int>(FrequencyBand::UHF):
createUHFWidget();
break;
case FrequencyBand::VHF:
case static_cast<int>(FrequencyBand::VHF):
createVHFWidget();
break;
}
@@ -222,9 +223,9 @@ void FrequencyPlanningWidget::onCnrConfigChanged(const AudioVideoManagement::Cnr
DataModification modType)
{
Q_UNUSED(modType);
if (m_cnrConfigId == config.id())
if (m_cnrConfigId == config.id)
{
m_ui->leName->setText(QString::fromStdString(config.radioCircuit()));
m_ui->leName->setText(QString::fromStdString(config.radioCircuit));
}
}
@@ -1,6 +1,7 @@
#include "avm_init_frequency_planning_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "ui_avm_init_frequency_planning_dialog.h"
@@ -14,6 +15,7 @@ InitFrequencyPlanningDialog::InitFrequencyPlanningDialog(LtsSession::LtsSession*
const std::shared_ptr<Interface::Dtc>& avmDtc, QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkCancel), m_ui(new Ui::InitFrequencyPlanningDialog),
m_dateOfCreation(session->partitionTime()), m_session(session)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
DEBUG_LOG(m_logger) << "---InitFrequencyPlanningDialog() ";
m_ui->setupUi(this);
@@ -21,7 +23,7 @@ InitFrequencyPlanningDialog::InitFrequencyPlanningDialog(LtsSession::LtsSession*
QMap<int32_t, FrequencySet> frequencySets = avmDtc->frequencySets();
for (auto it = frequencySets.constBegin(); it != frequencySets.constEnd(); ++it)
m_ui->cbFrequencySets->addItem(QString::fromStdString(it.value().name()), QVariant::fromValue(it.key()));
m_ui->cbFrequencySets->addItem(QString::fromStdString(it.value().name), QVariant::fromValue(it.key()));
m_ui->tbTime->setText(DTG::toStringMSec(m_dateOfCreation));
@@ -51,12 +53,12 @@ bool InitFrequencyPlanningDialog::apply()
{
FrequencyPlanning planning;
planning.id(0);
planning.id = 0;
if (m_session->exerciseId() != 0)
planning.exerciseId(m_session->exerciseId());
planning.frequencySetId(m_ui->cbFrequencySets->currentData().toInt());
planning.name(m_ui->leName->text().toStdString());
planning.date(m_dateOfCreation);
planning.exerciseId = m_session->exerciseId();
planning.frequencySetId = m_ui->cbFrequencySets->currentData().toInt();
planning.name = m_ui->leName->text().toStdString();
planning.date = m_dateOfCreation;
emit newInitFrequencyPlanning(planning);
@@ -2,6 +2,7 @@
#pragma once
#include <AudioVideoManagement/avm_qmetatypes.h>
#include <AudioVideoManagement/avm_dtc.h>
#include <AudioVideoManagement/logger.h>
#include <LtsWidgets/lts_dialog.h>
@@ -2,6 +2,7 @@
#include "avm_load_frequency_planning_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "ui_avm_load_frequency_planning_dialog.h"
#include "avm_load_frequency_planning_dialog_model.h"
@@ -13,6 +14,7 @@ LoadFrequencyPlanningDialog::LoadFrequencyPlanningDialog(const QByteArray &data,
: LtsWidgets::LtsFramelessDialog(parent, LtsWidgets::Behaviour::Modal)
, m_ui(new Ui::LoadFrequencyPlanningDialog)
, m_model(new LoadFrequencyPlanningDialogModel(initPlan, avmDtc, ismDtc, this))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
@@ -1,6 +1,7 @@
#include "avm_load_frequency_planning_dialog_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <AudioVideoManagement/avm_translation.h>
#include <FileManagement/flm_translation.h>
@@ -23,10 +24,10 @@ void LoadFrequencyPlanningDialogModel::onFrequencyPlanningChanged(const Frequenc
{
Q_UNUSED(dm)
if (initPlanning.exerciseId().is_set() && initPlanning.exerciseId().get() != m_exerciseId)
if (initPlanning.exerciseId.has_value() && initPlanning.exerciseId.get() != m_exerciseId)
return;
if (m_exerciseId > 0 && initPlanning.exerciseId().is_set() && initPlanning.id() != m_initPlan.id())
if (m_exerciseId > 0 && initPlanning.exerciseId.has_value() && initPlanning.id != m_initPlan.id)
return;
beginResetModel();
@@ -39,7 +40,7 @@ void LoadFrequencyPlanningDialogModel::onFrequencyPlanningChanged(const Frequenc
continue;
ItemData id = item->data().value<ItemData>();
if (m_exerciseId == 0 && !initPlanning.exerciseId().is_set())
if (m_exerciseId == 0 && !initPlanning.exerciseId.has_value())
{
id.clearRadioCircuit();
item->setData(QVariant::fromValue(id));
@@ -50,10 +51,10 @@ void LoadFrequencyPlanningDialogModel::onFrequencyPlanningChanged(const Frequenc
if (m_exerciseId > 0)
{
if (initPlanning.exerciseId().is_set())
if (initPlanning.exerciseId.has_value())
{
if (id.cnrConfig.exerciseId().is_set())
if (id.cnrConfig.exerciseId.has_value())
{
id.clearRadioCircuit();
item->setData(QVariant::fromValue(id));
@@ -64,7 +65,7 @@ void LoadFrequencyPlanningDialogModel::onFrequencyPlanningChanged(const Frequenc
else
{
if (!id.cnrConfig.exerciseId().is_set())
if (!id.cnrConfig.exerciseId.has_value())
{
id.clearRadioCircuit();
item->setData(QVariant::fromValue(id));
@@ -80,22 +81,22 @@ void LoadFrequencyPlanningDialogModel::onFrequencyPlanningChanged(const Frequenc
for (const auto& frequencyPlanning : std::as_const(frequencyPlannings))
{
if ((initPlanning.exerciseId().is_set() && frequencyPlanning.exerciseId().is_set()) ||
(!initPlanning.exerciseId().is_set() && frequencyPlanning.exerciseId().is_set() &&
frequencyPlanning.exerciseId().get() != m_exerciseId))
if ((initPlanning.exerciseId.has_value() && frequencyPlanning.exerciseId.has_value()) ||
(!initPlanning.exerciseId.has_value() && frequencyPlanning.exerciseId.has_value() &&
frequencyPlanning.exerciseId.get() != m_exerciseId))
continue;
for (const auto& frequencyPlanningData : frequencyPlanning.data())
for (const auto& frequencyPlanningData : frequencyPlanning.data)
{
m_frequencyPlanningData.insert(frequencyPlanningData.cnrConfigId(), frequencyPlanningData);
m_frequencyPlanningData.insert(frequencyPlanningData.cnrConfigId, frequencyPlanningData);
setFrequencyPlanningData(frequencyPlanningData);
}
break;
}
for (const auto& frequencyPlanningData : initPlanning.data())
for (const auto& frequencyPlanningData : initPlanning.data)
{
m_frequencyPlanningData.insert(frequencyPlanningData.cnrConfigId(), frequencyPlanningData);
m_frequencyPlanningData.insert(frequencyPlanningData.cnrConfigId, frequencyPlanningData);
setFrequencyPlanningData(frequencyPlanningData);
}
endResetModel();
@@ -124,18 +125,19 @@ LoadFrequencyPlanningDialogModel::LoadFrequencyPlanningDialogModel(
tr("Squelch"),
}),
m_avmDtc(avmDtc), m_ismDtc(ismDtc), m_initPlan(initPlan), m_parentPlan(initPlan),
m_exerciseId(initPlan.exerciseId().is_set() ? initPlan.exerciseId().get() : 0)
m_exerciseId(initPlan.exerciseId.has_value() ? initPlan.exerciseId.get() : 0)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
Q_ASSERT(avmDtc);
DEBUG_LOG(m_logger) << "---EditFrequencyPlanningDataMod m_frequencyPlanningData[c.id()];el() ";
m_initPlan.data().clear();
m_initPlan.data.clear();
int frequencySetId = m_initPlan.frequencySetId();
std::vector<FrequencySetDataWithId> fsdVec = m_avmDtc->frequencySet(frequencySetId).data();
int frequencySetId = m_initPlan.frequencySetId;
std::vector<FrequencySetDataWithId> fsdVec = m_avmDtc->frequencySet(frequencySetId).data;
for (FrequencySetDataWithId fsd : fsdVec)
{
m_freqSetData.insert(fsd.id(), fsd);
m_freqSetData.insert(fsd.id, fsd);
}
onFrequencyPlanningChanged(m_initPlan, DataModification::eAdded);
@@ -150,7 +152,7 @@ void LoadFrequencyPlanningDialogModel::setData(const QByteArray& data)
using namespace LtsUtils;
const JsonObject obj = JsonObject::fromJson(data);
if (m_initPlan.frequencySetId() != obj.value<int>("frequencySetId"))
if (m_initPlan.frequencySetId != obj.value<int>("frequencySetId"))
{
ERROR_LOG(m_logger) << "false frequency set!";
@@ -158,7 +160,7 @@ void LoadFrequencyPlanningDialogModel::setData(const QByteArray& data)
}
beginResetModel();
m_initPlan.data().clear();
m_initPlan.data.clear();
for (const JsonObject& association : obj.value<std::vector<JsonObject>>("planningInfos"))
{
FrequencyPlanningData info;
@@ -172,27 +174,27 @@ void LoadFrequencyPlanningDialogModel::setData(const QByteArray& data)
;
CnrConfig invalidConfig;
invalidConfig.id(cnrConfigId);
invalidConfig.cnrChannelId(channelId);
invalidConfig.id = cnrConfigId;
invalidConfig.cnrChannelId = channelId;
m_cnrConfigs.insert(cnrConfigId, invalidConfig);
}
info.cnrConfigId(cnrConfigId);
info.properties(association.value<QString>("properties").toStdString());
info.cnrConfigId = cnrConfigId;
info.properties = association.value<QString>("properties").toStdString();
m_frequencyPlanningData.insert(cnrConfigId, info);
m_initPlan.data().push_back(info);
m_initPlan.data.push_back(info);
const CnrConfig cnrConfig = m_cnrConfigs.value(cnrConfigId);
ItemData id(cnrConfig);
if (m_frequencyPlanningData.contains(cnrConfig.id()))
if (m_frequencyPlanningData.contains(cnrConfig.id))
{
FrequencyPlanningData fpd = info;
id.readOnly = isReadOnly(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
id.readOnly = isReadOnly(fpd.properties);
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
if (circuits.size() > 1)
{
@@ -241,7 +243,7 @@ LoadFrequencyPlanningDialogModel::ItemData LoadFrequencyPlanningDialogModel::ite
QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int role) const
{
if ((role != Qt::DisplayRole && role != Qt::ToolTipRole && role != Qt::UserRole && role != Qt::TextColorRole &&
if ((role != Qt::DisplayRole && role != Qt::ToolTipRole && role != Qt::UserRole && role != Qt::ForegroundRole &&
role != Qt::BackgroundRole && role != Qt::CheckStateRole) ||
!index.isValid())
return NGLTreeModel::data(index, role);
@@ -283,7 +285,7 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
case FUNCTION: {
if (!rc)
return QStringLiteral("-");
return QString::fromStdString(m_freqSetData[rc->frequencySetDataId()].function());
return QString::fromStdString(m_freqSetData[rc->frequencySetDataId()].function);
}
case DEVICE: {
@@ -292,7 +294,7 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
RadioCircuitVHF* rcVhf = dynamic_cast<RadioCircuitVHF*>(rc);
if (!rcVhf)
return QStringLiteral("-");
return toString(m_freqSetData[rc->frequencySetDataId()].frequencyBand().underlying());
return toString(m_freqSetData[rc->frequencySetDataId()].frequencyBand);
}
case FREQUENCY: {
QLocale locale(QLocale::German);
@@ -304,7 +306,7 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
if (rcVhf && isAkwMode(rcVhf->operatingMode))
return QStringLiteral("-");
return tr("%1 MHz").arg(
locale.toString(m_freqSetData[rc->frequencySetDataId()].frequency() / 1000., 'f', 3));
locale.toString(m_freqSetData[rc->frequencySetDataId()].frequency / 1000., 'f', 3));
}
else
{
@@ -324,45 +326,45 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].akwBundle().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].akwBundle.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].akwBundle().get();
return m_freqSetData[rc->frequencySetDataId()].akwBundle.get();
}
case FSB_BUNDLE: {
if (!rc)
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].fsbBundle().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].fsbBundle.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].fsbBundle().get();
return m_freqSetData[rc->frequencySetDataId()].fsbBundle.get();
}
case AKW_RADIO_CIRCUIT: {
if (!rc)
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit().get();
return m_freqSetData[rc->frequencySetDataId()].akwRadioCircuit.get();
}
case COMSEC: {
if (!rc)
return QStringLiteral("-");
if (rc->frequencySetDataId() <= 0)
return QStringLiteral("-");
if (!m_freqSetData[rc->frequencySetDataId()].comsec().is_set())
if (!m_freqSetData[rc->frequencySetDataId()].comsec.has_value())
return QStringLiteral("-");
return m_freqSetData[rc->frequencySetDataId()].comsec().get();
return m_freqSetData[rc->frequencySetDataId()].comsec.get();
}
case RADIO_CIRCUIT: {
if (!rc)
return QString::fromStdString(setData.radioCircuit());
return QString::fromStdString(setData.radioCircuit);
return id.name();
}
@@ -373,7 +375,7 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
if (rc->radioStationId == 0)
return tr("Automatic");
else
return QString::fromStdString(m_ismDtc->mainStructureElement(rc->radioStationId).name());
return QString::fromStdString(m_ismDtc->mainStructureElement(rc->radioStationId).name);
}
case PILOTTON: {
if (!rc)
@@ -396,8 +398,8 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
return toString(rcVhf->operatingMode);
}
case CHANNEL: {
CnrChannel channel = m_avmDtc->cnrChannel(setData.cnrChannelId());
return QString::fromStdString(channel.name());
CnrChannel channel = m_avmDtc->cnrChannel(setData.cnrChannelId);
return QString::fromStdString(channel.name);
}
case PROPERTIES: {
if (!rc)
@@ -462,14 +464,14 @@ QVariant LoadFrequencyPlanningDialogModel::data(const QModelIndex& index, int ro
}
if (role == Qt::UserRole)
return setData.id();
return setData.id;
if (role == Qt::TextColorRole)
if (role == Qt::ForegroundRole)
{
for (int id : m_multipleAssignedCnrIds)
{
if (id == setData.id())
if (id == setData.id)
return QColor(Qt::red);
}
}
@@ -533,12 +535,12 @@ int LoadFrequencyPlanningDialogModel::findCnrConfigByChannelId(int32_t channelId
int id = -1;
std::function<bool(const CnrConfig&)> findByChannelIdInExercise = [this, channelId,
&id](const CnrConfig& cnrConfig) {
if (cnrConfig.exerciseId().is_set() && cnrConfig.exerciseId() != m_exerciseId)
if (cnrConfig.exerciseId.has_value() && cnrConfig.exerciseId != m_exerciseId)
return false;
if (cnrConfig.cnrChannelId() != channelId)
if (cnrConfig.cnrChannelId != channelId)
return false;
id = cnrConfig.id();
id = cnrConfig.id;
return true;
};
@@ -570,7 +572,7 @@ void LoadFrequencyPlanningDialogModel::checkConflicts()
{
ItemData itemData = treeItem->data().value<ItemData>();
if (!isCnrChannelInOwnConfig(itemData.cnrConfig.cnrChannelId()))
if (!isCnrChannelInOwnConfig(itemData.cnrConfig.cnrChannelId))
{
m_conflicts.insert(row, CHANNEL_NOT_IN_CNR_CONFIG);
emit dataChanged(rowIndex, rowIndex, {Qt::BackgroundRole, Qt::DisplayRole});
@@ -627,9 +629,9 @@ bool LoadFrequencyPlanningDialogModel::isCnrChannelInOwnConfig(int32_t channelId
for (auto it = m_existingCnrConfigs.constBegin(); it != m_existingCnrConfigs.constEnd(); ++it)
{
const CnrConfig cnrConfig = it.value();
const int32_t exerciseId = cnrConfig.exerciseId().is_set() ? cnrConfig.exerciseId().get() : 0;
const int32_t exerciseId = cnrConfig.exerciseId.has_value() ? cnrConfig.exerciseId.get() : 0;
if (exerciseId == m_exerciseId && cnrConfig.cnrChannelId() == channelId)
if (exerciseId == m_exerciseId && cnrConfig.cnrChannelId == channelId)
return true;
}
@@ -647,14 +649,14 @@ bool LoadFrequencyPlanningDialogModel::isFrequencySetDataTakenInOtherExercise(in
{
const FrequencyPlanning frequencyPlanning = it.value();
const int32_t currentExerciseId =
frequencyPlanning.exerciseId().is_set() ? frequencyPlanning.exerciseId().get() : 0;
frequencyPlanning.exerciseId.has_value() ? frequencyPlanning.exerciseId.get() : 0;
if (currentExerciseId == m_exerciseId)
continue;
for (const FrequencyPlanningData& data : frequencyPlanning.data())
for (const FrequencyPlanningData& data : frequencyPlanning.data)
{
QSet<int> frequencySetDataIds = AudioVideoManagement::frequencySetDataIds(data.properties());
QSet<int> frequencySetDataIds = AudioVideoManagement::frequencySetDataIds(data.properties);
if (frequencySetDataIds.contains(frequencySetDataId))
return true;
@@ -666,12 +668,12 @@ bool LoadFrequencyPlanningDialogModel::isFrequencySetDataTakenInOtherExercise(in
int32_t LoadFrequencyPlanningDialogModel::parentCnrConfigIdByFrequencySetDataId(int32_t frequencySetDataId) const
{
for (const FrequencyPlanningData& currentPlanning : m_parentPlan.data())
for (const FrequencyPlanningData& currentPlanning : m_parentPlan.data)
{
QSet<int> parentFrequencySetDataIds = AudioVideoManagement::frequencySetDataIds(currentPlanning.properties());
QSet<int> parentFrequencySetDataIds = AudioVideoManagement::frequencySetDataIds(currentPlanning.properties);
if (parentFrequencySetDataIds.contains(frequencySetDataId))
return currentPlanning.cnrConfigId();
return currentPlanning.cnrConfigId;
}
return -1;
@@ -714,10 +716,10 @@ bool LoadFrequencyPlanningDialogModel::isSolvableConflict(LoadFrequencyPlanningD
QSet<int> LoadFrequencyPlanningDialogModel::getOwnTakenFrequencySetIds() const
{
QSet<int> ownTakenFrequencySetIds;
ownTakenFrequencySetIds.reserve(m_parentPlan.data().size() * 2);
ownTakenFrequencySetIds.reserve(m_parentPlan.data.size() * 2);
for (const FrequencyPlanningData& data : m_parentPlan.data())
ownTakenFrequencySetIds += AudioVideoManagement::frequencySetDataIds(data.properties());
for (const FrequencyPlanningData& data : m_parentPlan.data)
ownTakenFrequencySetIds += AudioVideoManagement::frequencySetDataIds(data.properties);
return ownTakenFrequencySetIds;
}
@@ -733,10 +735,10 @@ void LoadFrequencyPlanningDialogModel::addUnassignmentForRow(int32_t unassignmen
void LoadFrequencyPlanningDialogModel::setFrequencyPlanningData(const FrequencyPlanningData& fpd)
{
beginResetModel();
ConfigTreeItem* item = searchCnrConfig(m_rootItem, fpd.cnrConfigId());
ConfigTreeItem* item = searchCnrConfig(m_rootItem, fpd.cnrConfigId);
if (!item)
return;
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties());
QVector<RadioCircuit*> circuits = AudioVideoManagement::fromJson(fpd.properties);
ItemData data = item->data().value<ItemData>();
item->removeAllChildren();
@@ -744,7 +746,7 @@ void LoadFrequencyPlanningDialogModel::setFrequencyPlanningData(const FrequencyP
{
data.radioCircuit = circuits[0];
item->setData(QVariant::fromValue(data));
m_frequencyPlanningData.insert(fpd.cnrConfigId(), fpd);
m_frequencyPlanningData.insert(fpd.cnrConfigId, fpd);
}
if (circuits.size() <= 1)
return;
@@ -755,7 +757,7 @@ void LoadFrequencyPlanningDialogModel::setFrequencyPlanningData(const FrequencyP
ConfigTreeItem* childItem = new ConfigTreeItem(QVariant::fromValue(data));
insertRow(item->childCount(), indexFromItem(item), childItem);
}
m_frequencyPlanningData.insert(fpd.cnrConfigId(), fpd);
m_frequencyPlanningData.insert(fpd.cnrConfigId, fpd);
endResetModel();
}
@@ -819,7 +821,7 @@ QVector<FrequencyPlanningData> LoadFrequencyPlanningDialogModel::planningData()
ItemData itemData = item->data().value<ItemData>();
planningDataVec.append(m_frequencyPlanningData.value(itemData.cnrConfig.id()));
planningDataVec.append(m_frequencyPlanningData.value(itemData.cnrConfig.id));
}
return planningDataVec;
@@ -847,7 +849,7 @@ LoadFrequencyPlanningDialogModel::searchCnrConfig(const NGLTreeItem* parentItem,
for (int r = 0; r < rowCount; ++r)
{
ConfigTreeItem* child = static_cast<ConfigTreeItem*>(parentItem->child(r));
if (child->data().value<ItemData>().cnrConfig.id() == cnrConfigId)
if (child->data().value<ItemData>().cnrConfig.id == cnrConfigId)
return child;
child = searchCnrConfig(child, cnrConfigId);
if (child)
@@ -857,7 +859,7 @@ LoadFrequencyPlanningDialogModel::searchCnrConfig(const NGLTreeItem* parentItem,
}
DrawDelegate::DrawDelegate(QObject* parent)
: QStyledItemDelegate(parent), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
: QStyledItemDelegate(parent)
{
}
@@ -3,6 +3,7 @@
#pragma once
#include <AudioVideoManagement/avm_qmetatypes.h>
#include <nglwidgets/ngltreeitem.h>
#include <AudioVideoManagement/logger.h>
#include "avm_frequency_planning_helper.h"
@@ -25,7 +25,7 @@ RadioSpecificaHfWidget::RadioSpecificaHfWidget(QWidget *parent)
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacingHF::CS_100_Hz), ChannelSpacingHF::CS_100_Hz);
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacingHF::CS_100_Hz), static_cast<int>(ChannelSpacingHF::CS_100_Hz));
@@ -57,7 +57,7 @@ bool RadioSpecificaHfWidget::setValues(RadioCircuit *rc)
int idx = m_ui->cobChannelSpacing->findData(static_cast<int>(spec->channelSpacing.underlying()));
int idx = m_ui->cobChannelSpacing->findData(static_cast<int>(spec->channelSpacing));
m_ui->cobChannelSpacing->setCurrentIndex(idx);
succ &= (idx >= 0);
@@ -21,9 +21,9 @@ RadioSpecificaUhfWidget::RadioSpecificaUhfWidget(QWidget *parent)
m_ui->rbMtAm->setProperty("myIcon", QStringLiteral(":/style/AM.svg"));
m_ui->rbMtAm->setProperty("enum", ModulationType::AM);
m_ui->rbMtAm->setProperty("enum", static_cast<int>(ModulationType::AM));
m_ui->rbMtFm->setProperty("myIcon", QStringLiteral(":/style/FM.svg"));
m_ui->rbMtFm->setProperty("enum", ModulationType::FM);
m_ui->rbMtFm->setProperty("enum", static_cast<int>(ModulationType::FM));
m_ui->rbMtAm->setChecked(true);
connect(m_ui->bgModulationType, QOverload<QAbstractButton *, bool>::of(&QButtonGroup::buttonToggled), this, [this](QAbstractButton *btn, bool checked)
@@ -36,9 +36,9 @@ RadioSpecificaUhfWidget::RadioSpecificaUhfWidget(QWidget *parent)
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacing::CS_25_00_kHz), ChannelSpacing::CS_25_00_kHz);
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacing::CS_12_50_kHz), ChannelSpacing::CS_12_50_kHz);
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacing::CS_8_33_kHz), ChannelSpacing::CS_8_33_kHz);
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacing::CS_25_00_kHz), static_cast<int>(ChannelSpacing::CS_25_00_kHz));
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacing::CS_12_50_kHz), static_cast<int>(ChannelSpacing::CS_12_50_kHz));
m_ui->cobChannelSpacing->addItem(toString(ChannelSpacing::CS_8_33_kHz), static_cast<int>(ChannelSpacing::CS_8_33_kHz));
LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance();
@@ -86,7 +86,7 @@ bool RadioSpecificaUhfWidget::setValues(RadioCircuit* rc)
bool succ = true;
switch(spec->modulationType.underlying())
switch(spec->modulationType)
{
case ModulationType::FM:
m_ui->rbMtFm->setChecked(true);
@@ -100,7 +100,7 @@ bool RadioSpecificaUhfWidget::setValues(RadioCircuit* rc)
}
int idx = m_ui->cobChannelSpacing->findData(static_cast<int>(spec->channelSpacing.underlying()));
int idx = m_ui->cobChannelSpacing->findData(static_cast<int>(spec->channelSpacing));
m_ui->cobChannelSpacing->setCurrentIndex(idx);
succ &= (idx >= 0);
@@ -22,11 +22,11 @@ RadioSpecificaVhfWidget::RadioSpecificaVhfWidget(QSet<int> &assignedFrequencySet
m_ui->setupUi(this);
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::FixedFreqEncNone), RcOperatingMode::FixedFreqEncNone);
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::FixedFreqEncHwKr), RcOperatingMode::FixedFreqEncHwKr);
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::FixedFreqEncHwKrKl), RcOperatingMode::FixedFreqEncHwKrKl);
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::AkwEncNone), RcOperatingMode::AkwEncNone);
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::AkwEncEccm), RcOperatingMode::AkwEncEccm);
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::FixedFreqEncNone), static_cast<int>(RcOperatingMode::FixedFreqEncNone));
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::FixedFreqEncHwKr), static_cast<int>(RcOperatingMode::FixedFreqEncHwKr));
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::FixedFreqEncHwKrKl), static_cast<int>(RcOperatingMode::FixedFreqEncHwKrKl));
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::AkwEncNone), static_cast<int>(RcOperatingMode::AkwEncNone));
m_ui->cobOperatingMode->addItem(toString(RcOperatingMode::AkwEncEccm), static_cast<int>(RcOperatingMode::AkwEncEccm));
m_ui->leFrequencySet->setEnabled(false);
@@ -62,12 +62,12 @@ bool RadioSpecificaVhfWidget::setFrequencySetData(int frequencySetDataId)
m_frequencySetDataId = frequencySetDataId;
m_ui->leFrequencySet->clear();
bool found = false;
std::vector<FrequencySetDataWithId> dataVec = m_avmDtc->frequencySet(m_frequencySetId).data();
std::vector<FrequencySetDataWithId> dataVec = m_avmDtc->frequencySet(m_frequencySetId).data;
for (const auto &it : dataVec)
{
if(it.id() == m_frequencySetDataId)
if(it.id == m_frequencySetDataId)
{
m_ui->leFrequencySet->setText(QString::fromStdString(it.function()));
m_ui->leFrequencySet->setText(QString::fromStdString(it.function));
found = true;
break;
}
@@ -85,7 +85,7 @@ bool RadioSpecificaVhfWidget::setValues(RadioCircuit* rc)
bool succ = true;
m_operatingMode = spec->operatingMode;
int idx = m_ui->cobOperatingMode->findData(static_cast<int>(spec->operatingMode.underlying()));
int idx = m_ui->cobOperatingMode->findData(static_cast<int>(spec->operatingMode));
m_ui->cobOperatingMode->setCurrentIndex(idx);
succ &= (idx >= 0);
@@ -127,7 +127,7 @@ LtsWidgets::LtsDialog *InterfaceImpl::onShowFrequencyPlanningDialog(QWidget *par
for(const FrequencyPlanning &planning : std::as_const(plannings))
{
if(planning.exerciseId().is_set())
if(planning.exerciseId.has_value())
continue;
EditFrequencyPlanningDialog *dialog = new EditFrequencyPlanningDialog(m_session,
@@ -5,6 +5,7 @@
#include <AudioVideoManagement/logger.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
#include <PluginInterfaces/gui_plugin_interface.h>
@@ -23,7 +23,7 @@ ElokaDialog::ElokaDialog(LtsSession::LtsSession* session, AvaSession* avaSession
m_elokaListCollector(m_avaSession->control()->comm(),
[this](QVector<AvaEloka>&& eloka) { onQueryElokaResponse(std::move(eloka)); }),
m_streamNameMapping(streamNameMapping), m_avmDtc(avmDtc), m_avaSessionEstablished(false), m_usedCnr(),
m_usedTvc(), m_usedAnnouncement()
m_usedTvc(), m_usedAnnouncement(), m_logger(getLogger("ElokaDialog"))
{
Q_ASSERT(session);
Q_ASSERT(avaSession);
@@ -172,14 +172,14 @@ void ElokaDialog::onQueryElokaResponse(const QVector<AvaEloka>&& eloka)
for (const auto& cnrTvcProfile : cnrTvcProfiles)
{
if (cnrTvcProfile.exerciseId() == exerciseId && cnrTvcProfile.operatorId() == operatorId)
if (cnrTvcProfile.exerciseId == exerciseId && cnrTvcProfile.operatorId == operatorId)
{
for (const auto& cnrTvcProfileData : cnrTvcProfile.data())
for (const auto& cnrTvcProfileData : cnrTvcProfile.data)
{
if (cnrTvcProfileData.radioSystemId() == RadioSystem::Cnr)
userProfile.insert(cnrTvcProfileData.radioCircuitId(), ElokaCircuitType::Cnr);
if (cnrTvcProfileData.radioSystemId == RadioSystem::Cnr)
userProfile.insert(cnrTvcProfileData.radioCircuitId, ElokaCircuitType::Cnr);
else
userProfile.insert(cnrTvcProfileData.radioCircuitId(), ElokaCircuitType::Tvc);
userProfile.insert(cnrTvcProfileData.radioCircuitId, ElokaCircuitType::Tvc);
}
break;
@@ -212,12 +212,12 @@ bool ElokaDialog::isCnr(ElokaData& data, const QMultiMap<qint32, ElokaCircuitTyp
for (const auto& cnr : cnrs)
{
if ((QString::fromStdString(cnr.radioCircuit()) == data.internalName) &&
(userProfile.contains(cnr.id(), ElokaCircuitType::Cnr)))
if ((QString::fromStdString(cnr.radioCircuit) == data.internalName) &&
(userProfile.contains(cnr.id, ElokaCircuitType::Cnr)))
{
data.circuitType = ElokaCircuitType::Cnr;
data.party = cnr.partyId();
data.id = cnr.id();
data.party = cnr.partyId;
data.id = cnr.id;
return true;
}
}
@@ -230,14 +230,14 @@ bool ElokaDialog::isTvc(ElokaData& data, const QMultiMap<qint32, ElokaCircuitTyp
for (const auto& tvc : tvcs)
{
if (tvc.exerciseId() != m_session->exerciseId())
if (tvc.exerciseId.value() != m_session->exerciseId())
continue;
if ((QString::fromStdString(tvc.radioCircuit()) == data.internalName) &&
(userProfile.contains(tvc.id(), ElokaCircuitType::Tvc)))
if ((QString::fromStdString(tvc.radioCircuit) == data.internalName) &&
(userProfile.contains(tvc.id, ElokaCircuitType::Tvc)))
{
data.circuitType = ElokaCircuitType::Tvc;
data.party = 0;
data.id = tvc.id();
data.id = tvc.id;
return true;
}
}
@@ -250,17 +250,17 @@ bool ElokaDialog::isAnnouncement(ElokaData& data)
QMap<qint32, Stream> streams = m_avmDtc->streams();
for (const Stream& stream : std::as_const(streams))
{
if ((stream.type() == StreamType::AudioOut) || (stream.type() == StreamType::AudioInOut))
announcements.insert(stream.id(), stream);
if ((stream.type == StreamType::AudioOut) || (stream.type == StreamType::AudioInOut))
announcements.insert(stream.id, stream);
}
for (const auto& announcement : announcements)
{
if (QString::fromStdString(announcement.name()) == data.internalName)
if (QString::fromStdString(announcement.name) == data.internalName)
{
data.circuitType = ElokaCircuitType::Announcement;
data.party = -1;
data.id = announcement.id();
data.id = announcement.id;
data.exerciseId = m_session->exerciseId();
data.displayName = m_streamNameMapping->displayName(data.internalName);
return true;
@@ -92,7 +92,8 @@ ElokaEditDialog::ElokaEditDialog(LtsSession::LtsSession* session, AvaSession* av
StreamNameMapping* streamNameMapping, const ElokaData& data, QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), m_ui(new Ui::ElokaEditDialog),
m_session(session), m_streamNameMapping(streamNameMapping), m_avaCtrl(avaSession->control()), m_avmDtc(avmDtc),
m_elokaData(data), m_cnrConfigMap(), m_tvcConfigMap(), m_announcementMap(), m_userProfile()
m_elokaData(data), m_cnrConfigMap(), m_tvcConfigMap(), m_announcementMap(), m_userProfile(),
m_logger(getLogger("ElokaEditDialog"))
{
Q_ASSERT(session);
Q_ASSERT(avaSession);
@@ -160,8 +161,8 @@ bool ElokaEditDialog::init(const std::vector<qint32>& usedCnr, const std::vector
const QMap<qint32, Stream> streams = m_avmDtc->streams();
for (const Stream& stream : streams)
{
if ((stream.type() == StreamType::AudioOut) || (stream.type() == StreamType::AudioInOut))
m_announcementMap.insert(stream.id(), stream);
if ((stream.type == StreamType::AudioOut) || (stream.type == StreamType::AudioInOut))
m_announcementMap.insert(stream.id, stream);
}
if (m_elokaData.internalName.isEmpty())
@@ -266,7 +267,7 @@ bool ElokaEditDialog::apply()
data.startTime = m_session->partitionTime();
if (userData.circuitType == ElokaCircuitType::Cnr)
data.party = m_cnrConfigMap.value(userData.id).partyId();
data.party = m_cnrConfigMap.value(userData.id).partyId;
if (m_elokaData.internalName.isEmpty())
m_avaCtrl->chooseEloka(data.internalName, data.action, data.mode);
@@ -310,8 +311,8 @@ void ElokaEditDialog::getActiveCnrs()
const QMap<qint32, CnrConfig> cnrs = m_avmDtc->cnrConfigs();
for (const CnrConfig& cnr : cnrs)
{
if (cnr.isActive() == true)
m_cnrConfigMap.insert(cnr.id(), cnr);
if (cnr.isActive == true)
m_cnrConfigMap.insert(cnr.id, cnr);
}
}
@@ -322,11 +323,11 @@ void ElokaEditDialog::onCnrConfigChanged(const CnrConfig& data, DataModification
{
case DataModification::eAdded:
case DataModification::eModified: {
m_cnrConfigMap.insert(data.id(), data);
m_cnrConfigMap.insert(data.id, data);
break;
}
case DataModification::eRemoved: {
m_cnrConfigMap.remove(data.id());
m_cnrConfigMap.remove(data.id);
break;
}
}
@@ -343,11 +344,11 @@ void ElokaEditDialog::onTvcConfigChanged(const TvcConfig& data, DataModification
{
case DataModification::eAdded:
case DataModification::eModified: {
m_tvcConfigMap.insert(data.id(), data);
m_tvcConfigMap.insert(data.id, data);
break;
}
case DataModification::eRemoved: {
m_tvcConfigMap.remove(data.id());
m_tvcConfigMap.remove(data.id);
break;
}
}
@@ -360,18 +361,18 @@ void ElokaEditDialog::onStreamChanged(const Stream& data, DataModification modTy
{
DEBUG_LOG(m_logger) << "onStreamChanged";
if ((data.type() != StreamType::AudioOut) && (data.type() != StreamType::AudioInOut))
if ((data.type != StreamType::AudioOut) && (data.type != StreamType::AudioInOut))
return;
switch (modType)
{
case DataModification::eAdded:
case DataModification::eModified: {
m_announcementMap.insert(data.id(), data);
m_announcementMap.insert(data.id, data);
break;
}
case DataModification::eRemoved: {
m_announcementMap.remove(data.id());
m_announcementMap.remove(data.id);
break;
}
}
@@ -385,8 +386,8 @@ void ElokaEditDialog::onCnrTvcProfileChanged(const CnrTvcProfile& data, DataModi
Q_UNUSED(modType);
DEBUG_LOG(m_logger) << "onCnrTvcProfileChanged";
if (data.exerciseId() != m_session->exerciseId() ||
data.operatorId() != LtsSessionData::LtsSessionData::getInstance()->getOperatorId())
if (data.exerciseId != m_session->exerciseId() ||
data.operatorId != LtsSessionData::LtsSessionData::getInstance()->getOperatorId())
return;
getUserProfile();
@@ -407,13 +408,13 @@ void ElokaEditDialog::getUserProfile()
for (const auto& cnrTvcProfile : cnrTvcProfiles)
{
if (cnrTvcProfile.exerciseId() == exerciseId && cnrTvcProfile.operatorId() == operatorId)
if (cnrTvcProfile.exerciseId == exerciseId && cnrTvcProfile.operatorId == operatorId)
{
for (const auto& cnrTvcProfileData : cnrTvcProfile.data())
if (cnrTvcProfileData.radioSystemId() == RadioSystem::Cnr)
m_userProfile.insert(cnrTvcProfileData.radioCircuitId(), ElokaCircuitType::Cnr);
for (const auto& cnrTvcProfileData : cnrTvcProfile.data)
if (cnrTvcProfileData.radioSystemId == RadioSystem::Cnr)
m_userProfile.insert(cnrTvcProfileData.radioCircuitId, ElokaCircuitType::Cnr);
else
m_userProfile.insert(cnrTvcProfileData.radioCircuitId(), ElokaCircuitType::Tvc);
m_userProfile.insert(cnrTvcProfileData.radioCircuitId, ElokaCircuitType::Tvc);
break;
}
@@ -430,12 +431,12 @@ void ElokaEditDialog::fillComboBoxCircuit(ElokaCircuitType type)
case ElokaCircuitType::Cnr: {
for (const CnrConfig& cnr : std::as_const(m_cnrConfigMap))
{
if (!m_userProfile.contains(cnr.id(), ElokaCircuitType::Cnr))
if (!m_userProfile.contains(cnr.id, ElokaCircuitType::Cnr))
continue;
QString internalName = QString::fromStdString(cnr.radioCircuit());
QString internalName = QString::fromStdString(cnr.radioCircuit);
QVariant userData =
QVariant::fromValue(ComboBoxUserData{internalName, ElokaCircuitType::Cnr, cnr.id()});
QVariant::fromValue(ComboBoxUserData{internalName, ElokaCircuitType::Cnr, cnr.id});
m_ui->cmbCircuit->addItem(internalName, userData);
}
break;
@@ -443,12 +444,12 @@ void ElokaEditDialog::fillComboBoxCircuit(ElokaCircuitType type)
case ElokaCircuitType::Tvc: {
for (const TvcConfig& tvc : std::as_const(m_tvcConfigMap))
{
if (!m_userProfile.contains(tvc.id(), ElokaCircuitType::Tvc))
if (!m_userProfile.contains(tvc.id, ElokaCircuitType::Tvc))
continue;
QString internalName = QString::fromStdString(tvc.radioCircuit());
QString internalName = QString::fromStdString(tvc.radioCircuit);
QVariant userData =
QVariant::fromValue(ComboBoxUserData{internalName, ElokaCircuitType::Tvc, tvc.id()});
QVariant::fromValue(ComboBoxUserData{internalName, ElokaCircuitType::Tvc, tvc.id});
m_ui->cmbCircuit->addItem(internalName, userData);
}
break;
@@ -456,10 +457,10 @@ void ElokaEditDialog::fillComboBoxCircuit(ElokaCircuitType type)
case ElokaCircuitType::Announcement: {
for (const Stream& stream : std::as_const(m_announcementMap))
{
QString internalName = QString::fromStdString(stream.name());
QString internalName = QString::fromStdString(stream.name);
QString displayName = m_streamNameMapping->displayName(internalName);
QVariant userData =
QVariant::fromValue(ComboBoxUserData{internalName, ElokaCircuitType::Announcement, stream.id()});
QVariant::fromValue(ComboBoxUserData{internalName, ElokaCircuitType::Announcement, stream.id});
m_ui->cmbCircuit->addItem(displayName, userData);
}
break;
@@ -19,10 +19,11 @@ ElokaModel::ElokaModel(LtsSession::LtsSession *session, QObject *parent)
tr("Endless Playback"),
tr("Start Time")
},
parent)
parent),
m_logger(getLogger("ElokaModel"))
{
Q_ASSERT(session);
session->getDtc<ParticipantManagement::DataInterface>(m_ppmDtc);
}
@@ -42,7 +43,7 @@ QVariant ElokaModel::data(const QModelIndex &index,
return QString::number(data.party);
if (data.party >= 0)
return ParticipantManagement::trPartyName(m_ppmDtc->party(data.party).name());
return ParticipantManagement::trPartyName(m_ppmDtc->party(data.party).name);
return QVariant(QLatin1Char('-'));
}
case RadioCircuit:
@@ -9,7 +9,7 @@
#include <AudioVideoManagement/avm_data_plugin_interface.h>
#include <AudioVideoManagement/logger.h>
#include <AudioVideoManagement/ava_types.h>
#include <ParticipantManagement/ppm.hpp>
#include <ParticipantManagement/ppm_dtc.h>
namespace AudioVideoManagement
{
@@ -16,7 +16,8 @@ namespace AudioVideoManagement
{
MvsDialog::MvsDialog(const QString& menuGroup, LtsSession::LtsSession* session, QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_session(session),
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_logger(getLogger("MvsDialog")),
m_session(session),
m_ui(new Ui::MvsDialog), m_menuGroup(menuGroup), m_model(nullptr),
m_requestHelper(new LtsUtils::RequestHelper(this)), m_avmDtc(nullptr), m_avmFtc(nullptr)
{
@@ -105,7 +106,7 @@ void MvsDialog::onEditClicked()
return;
AudioVideoManagement::VideoTeam config = m_model->getRowData(currentIndex.row());
EditVideoTeamDialog* dialog = new EditVideoTeamDialog(config.id(), m_avmDtc, m_session->exerciseId(), config, this);
EditVideoTeamDialog* dialog = new EditVideoTeamDialog(config.id, m_avmDtc, m_session->exerciseId(), config, this);
connect(dialog, &EditVideoTeamDialog::modifyRequest, this,
[this](const AudioVideoManagement::VideoTeamModifyRequest& request) {
@@ -113,7 +114,7 @@ void MvsDialog::onEditClicked()
[this, request]() { return m_avmFtc->videoTeamModifyRequest(request, this); });
});
addDialog(dialog, m_menuGroup, QStringLiteral("EditVideoTeam%1").arg(config.id()),
addDialog(dialog, m_menuGroup, QStringLiteral("EditVideoTeam%1").arg(config.id),
LtsWidgets::LayoutArea::eDialogTab);
}
@@ -126,12 +127,12 @@ void MvsDialog::onRemoveClicked()
AudioVideoManagement::VideoTeamModifyRequest request;
const VideoTeam team = m_model->getRowData(currentIndex.row());
request.id(team.id());
request.name(team.name());
request.ssrc(team.ssrc());
request.streamName(team.streamName());
request.vtPort(team.vtPort());
request.exerciseId(0);
request.id = team.id;
request.name = team.name;
request.ssrc = team.ssrc;
request.streamName = team.streamName;
request.vtPort = team.vtPort;
request.exerciseId = 0;
m_requestHelper->startSingleRequest([this, request]() { return m_avmFtc->videoTeamModifyRequest(request, this); });
m_model->removeRow(currentIndex.row());
@@ -23,7 +23,7 @@ EditVideoTeamDialog::EditVideoTeamDialog(int32_t id, const std::shared_ptr<Audio
: EditVideoTeamDialog(id, avmDtc, exerciseId, parent)
{
m_videoTeam = team;
QString name = QString::fromStdString(m_videoTeam.name());
QString name = QString::fromStdString(m_videoTeam.name);
if (!m_teamsToIndex.contains(name))
{
m_teamsToIndex.insert(name, m_ui->cbIdentifier->count());
@@ -33,11 +33,12 @@ EditVideoTeamDialog::EditVideoTeamDialog(int32_t id, const std::shared_ptr<Audio
m_ui->cbIdentifier->setCurrentIndex(m_teamsToIndex.value(name, 0));
m_uiRequirements->addRequirement({m_ui->lblStreamName, [this]() { return (m_ui->leStreamName->text().size() > 0); }});
m_ui->leStreamName->setText(QString::fromStdString((m_videoTeam.streamName())));
m_ui->leStreamName->setText(QString::fromStdString((m_videoTeam.streamName)));
}
EditVideoTeamDialog::EditVideoTeamDialog(int32_t id, const std::shared_ptr<AudioVideoManagement::Interface::Dtc> &avmDtc, int32_t exerciseId, QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel)
, m_logger(getLogger("EditVideoTeamDialog"))
, m_ui(new Ui::EditVideoTeamDialog)
, m_exerciseId(exerciseId)
, m_id(id)
@@ -62,13 +63,13 @@ void EditVideoTeamDialog::retranslate()
bool EditVideoTeamDialog::apply()
{
AudioVideoManagement::VideoTeamModifyRequest request;
m_id = m_videoTeam.id();
request.id(m_videoTeam.id());
request.name(m_videoTeam.name());
request.ssrc(m_videoTeam.ssrc());
request.vtPort(m_videoTeam.vtPort());
request.streamName() = m_ui->leStreamName->text().toStdString();
request.exerciseId(m_exerciseId);
m_id = m_videoTeam.id;
request.id = m_videoTeam.id;
request.name = m_videoTeam.name;
request.ssrc = m_videoTeam.ssrc;
request.vtPort = m_videoTeam.vtPort;
request.streamName = m_ui->leStreamName->text().toStdString();
request.exerciseId = m_exerciseId;
emit modifyRequest(request);
return true;
}
@@ -76,7 +77,7 @@ bool EditVideoTeamDialog::apply()
void EditVideoTeamDialog::init()
{
onCheckTakenTeams();
if (m_videoTeam.id() > 0)
if (m_videoTeam.id > 0)
m_ui->cbIdentifier->setEnabled(false);
connect(m_avmDtc.get(), &AudioVideoManagement::Interface::Dtc::videoTeamChanged, this, &EditVideoTeamDialog::onCheckTakenTeams);
@@ -100,7 +101,7 @@ void EditVideoTeamDialog::onCheckTakenTeams()
for (auto it = teams.constBegin(); it != teams.constEnd(); ++it)
{
QString team = QString::fromStdString(it.value().name());
QString team = QString::fromStdString(it.value().name);
if (m_avmDtc->isFreeVideoTeam(m_exerciseId, it.key()))
{
@@ -108,7 +109,7 @@ void EditVideoTeamDialog::onCheckTakenTeams()
index = m_ui->cbIdentifier->count();
m_teamsToIndex.insert(team, m_ui->cbIdentifier->count());
m_ui->cbIdentifier->addItem(team, QVariant::fromValue(it.value().id()));
m_ui->cbIdentifier->addItem(team, QVariant::fromValue(it.value().id));
}
else
m_takenTeams.insert(team, it.key());
@@ -12,6 +12,7 @@ namespace AudioVideoManagement
MvsModel::MvsModel(QObject* parent)
: LtsAbstractTableModel<AudioVideoManagement::VideoTeam>({tr("Video Team Name"), tr("Stream Name")}, parent),
m_logger(getLogger("MvsModel")),
m_exerciseId(-1)
{
}
@@ -26,9 +27,9 @@ QVariant MvsModel::data(const QModelIndex& index, int role) const
switch (index.column())
{
case CHANNEL:
return QString::fromStdString(m_videoTeams.value(config.id()).name());
return QString::fromStdString(m_videoTeams.value(config.id).name);
case STREAM_NAME:
return QString::fromStdString(config.streamName());
return QString::fromStdString(config.streamName);
}
return QVariant();
@@ -45,7 +46,7 @@ bool MvsModel::init(int32_t exerciseId, const std::shared_ptr<AudioVideoManageme
[this](const AudioVideoManagement::VideoTeam& data, DataModification modType) {
Q_UNUSED(modType);
if (data.exerciseId() == m_exerciseId)
if (data.exerciseId == m_exerciseId)
onDataChanged(data, DataModification::eAdded);
else
onDataChanged(data, DataModification::eRemoved);
@@ -55,7 +56,7 @@ bool MvsModel::init(int32_t exerciseId, const std::shared_ptr<AudioVideoManageme
const QMap<int, AudioVideoManagement::VideoTeam> configMap = m_avmDtc->videoTeams();
for (auto it = configMap.begin(); it != configMap.end(); ++it)
{
if (it.value().exerciseId() == m_exerciseId)
if (it.value().exerciseId == m_exerciseId)
configs.append(it.value());
}
setData(configs);
@@ -74,10 +75,10 @@ QByteArray MvsModel::modelToJson()
DEBUG_LOG(m_logger) << "row =" << ": " << row;
QJsonObject inner;
const VideoTeam& config = m_vecData.at(row);
inner[QStringLiteral("id")] = config.id();
inner[QStringLiteral("exerciseId")] = config.exerciseId();
inner[QStringLiteral("name")] = QString::fromStdString(config.name());
inner[QStringLiteral("streamName")] = QString::fromStdString(config.streamName());
inner[QStringLiteral("id")] = config.id;
inner[QStringLiteral("exerciseId")] = config.exerciseId;
inner[QStringLiteral("name")] = QString::fromStdString(config.name);
inner[QStringLiteral("streamName")] = QString::fromStdString(config.streamName);
arr += inner;
}
@@ -105,14 +106,14 @@ QVector<VideoTeamModifyRequest> MvsModel::jsonToVideoTeamVector(const QByteArray
continue;
VideoTeamModifyRequest config;
config.id(id);
config.name(team.name());
config.ssrc(team.ssrc());
config.vtPort(team.vtPort());
config.exerciseId(m_exerciseId);
config.streamName(obj[QStringLiteral("streamName")].toString().toStdString());
config.id = id;
config.name = team.name;
config.ssrc = team.ssrc;
config.vtPort = team.vtPort;
config.exerciseId = m_exerciseId;
config.streamName = obj[QStringLiteral("streamName")].toString().toStdString();
INFO_LOG(m_logger) << "insertRow: " << config.name() << " VideoTeamId=" << config.id();
INFO_LOG(m_logger) << "insertRow: " << config.name << " VideoTeamId=" << config.id;
result.append(std::move(config));
}
return result;
@@ -122,7 +123,7 @@ bool MvsModel::isFiltered(const VideoTeam& data, DataModification modType) const
{
Q_UNUSED(modType)
if (data.exerciseId() != m_exerciseId)
if (data.exerciseId != m_exerciseId)
return true;
return false;
}
@@ -14,7 +14,8 @@ namespace AudioVideoManagement
{
MvsVideoTeamDialog::MvsVideoTeamDialog(QWidget* parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), m_ui(new Ui::MvsVideoTeamDialog),
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), m_logger(getLogger("MvsVideoTeamDialog")),
m_ui(new Ui::MvsVideoTeamDialog),
m_session(nullptr), m_dtc(nullptr), m_ftc(nullptr), m_flmGui(nullptr),
m_requestHelper(new LtsUtils::RequestHelper(this))
{
@@ -64,11 +65,11 @@ bool MvsVideoTeamDialog::init(LtsSession::LtsSession* session,
QMap<std::string, VideoTeam> teamMap;
auto cbVt = [this, &row, &teamMap](const AudioVideoManagement::VideoTeam& vt) {
if (vt.exerciseId() != m_session->exerciseId())
if (vt.exerciseId != m_session->exerciseId())
return;
m_teamToRow.insert(vt.programId() == 3 ? 2 : 1, vt.programId() == 3 ? 2 : 1);
teamMap.insert(vt.name(), vt);
m_teamToRow.insert(vt.programId == 3 ? 2 : 1, vt.programId == 3 ? 2 : 1);
teamMap.insert(vt.name, vt);
};
m_dtc->videoTeams(cbVt);
@@ -76,8 +77,8 @@ bool MvsVideoTeamDialog::init(LtsSession::LtsSession* session,
QSet<int> teamId;
for (auto rec : vts)
{
if (teamMap.value(rec.streamName()).id() > 0)
teamId.insert(rec.teamId());
if (teamMap.value(rec.streamName).id > 0)
teamId.insert(rec.teamId);
}
for (auto team : teamId)
{
@@ -86,14 +87,14 @@ bool MvsVideoTeamDialog::init(LtsSession::LtsSession* session,
}
auto cbMs = [this, &column](const InfrastructureManagement::MainStructureElement& mse) {
if (mse.structureElementTypeId() == InfrastructureManagement::StructureElementType::RadioStation &&
!mse.isDeleted() && mse.id() > 0)
if (mse.structureElementTypeId == InfrastructureManagement::StructureElementType::RadioStation &&
!mse.isDeleted && mse.id > 0)
{
m_stationToColumn.insert(mse.id(), column);
QLabel* lblStation = new QLabel(QString::fromStdString(mse.name()), this);
m_stationToColumn.insert(mse.id, column);
QLabel* lblStation = new QLabel(QString::fromStdString(mse.name), this);
lblStation->setProperty("RadioStation", true);
lblStation->setProperty("column", column);
lblStation->setProperty("name", QString::fromStdString(mse.name()));
lblStation->setProperty("name", QString::fromStdString(mse.name));
m_ui->glMvs->addWidget(lblStation, 0, column++);
lblStation->hide();
}
@@ -101,17 +102,17 @@ bool MvsVideoTeamDialog::init(LtsSession::LtsSession* session,
m_ismDtc->mainStructureElements(cbMs);
auto cbRec = [this, teamMap](const AudioVideoManagement::VideoReceiver& rec) {
if (m_teamToRow.value(rec.teamId()) <= 0)
if (m_teamToRow.value(rec.teamId) <= 0)
return;
if (!teamMap.contains(rec.streamName()))
if (!teamMap.contains(rec.streamName))
return;
m_receiverMap.insert(rec.id(), rec);
if (m_stationToColumn.value(rec.mainStructureElementId()) > 0 && m_teamToRow.value(rec.teamId()) > 0)
m_receiverMap.insert(rec.id, rec);
if (m_stationToColumn.value(rec.mainStructureElementId) > 0 && m_teamToRow.value(rec.teamId) > 0)
{
ReceiverElement* btn = createReceiverElement(rec);
int row = m_teamToRow.value(rec.teamId());
int column = m_stationToColumn.value(rec.mainStructureElementId());
int row = m_teamToRow.value(rec.teamId);
int column = m_stationToColumn.value(rec.mainStructureElementId);
if (!m_videoTeamButtonGroup.contains(row))
{
QRadioButton* none = new QRadioButton(tr("None"), this);
@@ -121,10 +122,10 @@ bool MvsVideoTeamDialog::init(LtsSession::LtsSession* session,
m_videoTeamButtonGroup.insert(row, new QButtonGroup(this));
m_videoTeamButtonGroup[row]->addButton(none, 0);
}
m_videoTeamButtonGroup[row]->addButton(btn->radioButton(), rec.mainStructureElementId());
m_videoTeamButtonGroup[row]->setProperty("teamId", rec.teamId());
m_receiverIds.insert(QPair<int, int>(rec.mainStructureElementId(), rec.teamId()), rec.id());
bool isActive = rec.isActive();
m_videoTeamButtonGroup[row]->addButton(btn->radioButton(), rec.mainStructureElementId);
m_videoTeamButtonGroup[row]->setProperty("teamId", rec.teamId);
m_receiverIds.insert(QPair<int, int>(rec.mainStructureElementId, rec.teamId), rec.id);
bool isActive = rec.isActive;
btn->setButtonChecked(isActive);
btn->radioButton()->setChecked(isActive);
m_ui->glMvs->addWidget(btn, row, column);
@@ -167,32 +168,32 @@ bool MvsVideoTeamDialog::apply()
if (itBg.value()->checkedId() == 0)
{
req.isActive(false);
req.id(0);
req.isActive = false;
req.id = 0;
QMapIterator<qint32, AudioVideoManagement::VideoReceiver> i(m_receiverMap);
while (i.hasNext())
{
i.next();
if ((i.value().isActive()) && i.value().teamId() == teamId)
req.id(i.value().id());
if ((i.value().isActive) && i.value().teamId == teamId)
req.id = i.value().id;
}
}
else
{
req.isActive(true);
req.id(m_receiverIds.value(QPair<int, int>(mainStructureElementId, teamId)));
req.isActive = true;
req.id = m_receiverIds.value(QPair<int, int>(mainStructureElementId, teamId));
}
DEBUG_LOG(m_logger) << "itBg.key=" << itBg.key() << " mainStructureElementId=" << mainStructureElementId
<< " teamId=" << teamId << " id=" << req.id() << " isActive=" << req.isActive();
<< " teamId=" << teamId << " id=" << req.id << " isActive=" << req.isActive;
if ((m_receiverMap.value(req.id()).isActive() != req.isActive()) && req.id() > 0)
if ((m_receiverMap.value(req.id).isActive != req.isActive) && req.id > 0)
{
if (oldActiveId > 0)
{
VideoReceiverModifyActiveRequest reqInactive;
reqInactive.id(oldActiveId);
reqInactive.isActive(false);
reqInactive.id = oldActiveId;
reqInactive.isActive = false;
m_requestHelper->addRequest(
[this, reqInactive]() { return m_ftc->videoReceiverModifyActiveRequest(reqInactive, this); });
}
@@ -207,30 +208,30 @@ ReceiverElement* MvsVideoTeamDialog::createReceiverElement(const VideoReceiver&
{
ReceiverElement* re = new ReceiverElement(this);
re->init(rec);
if (rec.isActive())
m_oldActiveTeamToRec.insert(rec.teamId(), rec.id());
m_elementList.insert(rec.teamId(), re);
if (rec.isActive)
m_oldActiveTeamToRec.insert(rec.teamId, rec.id);
m_elementList.insert(rec.teamId, re);
return re;
}
void MvsVideoTeamDialog::updateReceiverButton(const AudioVideoManagement::VideoReceiver& rec, DataModification modType)
{
Q_UNUSED(modType);
m_receiverMap.insert(rec.id(), rec);
for (auto it = m_elementList.lowerBound(rec.teamId()); it != m_elementList.end(); ++it)
m_receiverMap.insert(rec.id, rec);
for (auto it = m_elementList.lowerBound(rec.teamId); it != m_elementList.end(); ++it)
{
if (it.key() != rec.teamId())
if (it.key() != rec.teamId)
break;
auto* receiverElement = it.value();
if (receiverElement->property("recId").toInt() != rec.id())
if (receiverElement->property("recId").toInt() != rec.id)
continue;
receiverElement->setButtonChecked(rec.isActive());
receiverElement->setSnr(rec.snr());
receiverElement->setDbm(rec.dbm());
receiverElement->setStreamName(QString::fromStdString(rec.streamName()));
receiverElement->setFrequency(rec.frequency());
receiverElement->setIsLocked(rec.isLocked());
receiverElement->setButtonChecked(rec.isActive);
receiverElement->setSnr(rec.snr);
receiverElement->setDbm(rec.dbm);
receiverElement->setStreamName(QString::fromStdString(rec.streamName));
receiverElement->setFrequency(rec.frequency);
receiverElement->setIsLocked(rec.isLocked);
}
}
@@ -36,12 +36,12 @@ QRadioButton *ReceiverElement::radioButton()
bool ReceiverElement::init(const AudioVideoManagement::VideoReceiver &rec)
{
setProperty("teamId", rec.teamId());
setProperty("recId", rec.id());
setProperty("teamId", rec.teamId);
setProperty("recId", rec.id);
setSnr(rec.snr());
setDbm(rec.dbm());
setButtonChecked(rec.isActive());
setSnr(rec.snr);
setDbm(rec.dbm);
setButtonChecked(rec.isActive);
return true;
}
@@ -2,6 +2,7 @@
#include "avm_edit_training_voice_communication_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <utility>
#include "ui_avm_edit_training_voice_communication_dialog.h"
#include <AudioVideoManagement/avm_dtc.h>
@@ -45,18 +46,18 @@ EditTrainingVoiceCommunicationDialog::EditTrainingVoiceCommunicationDialog(const
EditTrainingVoiceCommunicationDialog::EditTrainingVoiceCommunicationDialog(const TvcConfig &config, const std::shared_ptr<Interface::Dtc> &avmDtc, const std::shared_ptr<Interface::Ftc> &avmFtc,
ExerciseManagement::Interface::Dtc *exmDtc, int32_t exerciseId, QWidget *parent)
: EditTrainingVoiceCommunicationDialog(config.id(), avmDtc, avmFtc, exmDtc, exerciseId, parent)
: EditTrainingVoiceCommunicationDialog(config.id, avmDtc, avmFtc, exmDtc, exerciseId, parent)
{
m_ui->leInfo->setText(QString::fromStdString(config.info()));
m_ui->chkRecording->setChecked(config.recording());
m_ui->leInfo->setText(QString::fromStdString(config.info));
m_ui->chkRecording->setChecked(config.recording);
{
QSignalBlocker blockSignals(m_ui->chkIsGlobal);
m_ui->chkIsGlobal->setChecked(!config.exerciseId().is_set());
m_ui->chkIsGlobal->setChecked(!config.exerciseId.has_value());
}
m_ui->leRadioCircuit->setText(QString::fromStdString(config.radioCircuit()));
initCbChannelsForEdit(config.tetraChannelId());
m_ui->leRadioCircuit->setText(QString::fromStdString(config.radioCircuit));
initCbChannelsForEdit(config.tetraChannelId);
}
EditTrainingVoiceCommunicationDialog::EditTrainingVoiceCommunicationDialog(int32_t id, const std::shared_ptr<Interface::Dtc> &avmDtc, const std::shared_ptr<Interface::Ftc> &avmFtc,
@@ -69,6 +70,7 @@ EditTrainingVoiceCommunicationDialog::EditTrainingVoiceCommunicationDialog(int32
, m_avmFtc(avmFtc)
, m_exmDtc(exmDtc)
, m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
Q_ASSERT(id >= 0);
Q_ASSERT(exmDtc);
@@ -99,16 +101,16 @@ bool EditTrainingVoiceCommunicationDialog::apply()
{
ModifyTvcConfigRequest request;
request.tetraChannelId(m_ui->cbChannel->currentData().toInt());
Q_ASSERT(request.tetraChannelId() > 0);
request.radioCircuit(m_ui->leRadioCircuit->text().toStdString());
request.recording(m_ui->chkRecording->isChecked());
request.info(m_ui->leInfo->text().toStdString());
request.id(m_id);
request.tetraChannelId = m_ui->cbChannel->currentData().toInt();
Q_ASSERT(request.tetraChannelId > 0);
request.radioCircuit = m_ui->leRadioCircuit->text().toStdString();
request.recording = m_ui->chkRecording->isChecked();
request.info = m_ui->leInfo->text().toStdString();
request.id = m_id;
bool isLocal = !m_ui->chkIsGlobal->isChecked();
if (isLocal)
request.exerciseId(m_exerciseId);
request.exerciseId = m_exerciseId;
return m_requestHelper->startSingleRequest([this, request] () { return m_avmFtc->modifyTvcConfigRequest(request, this); });
}
@@ -142,18 +144,18 @@ void EditTrainingVoiceCommunicationDialog::updateFreeChannelsAndTakenNames()
const auto allTvcConfigs = m_avmDtc->tvcConfigs();
for (const auto &tvcConfig : allTvcConfigs)
{
if (m_id > 0 && m_id == tvcConfig.id())
if (m_id > 0 && m_id == tvcConfig.id)
continue;
if (!isGlobal)
{
if (tvcConfig.exerciseId().is_set() && !exercises.contains(tvcConfig.exerciseId().get()))
if (tvcConfig.exerciseId.has_value() && !exercises.contains(tvcConfig.exerciseId.get()))
continue;
}
if (tvcConfig.exerciseId().is_set() && exercisesIgnore.contains(tvcConfig.exerciseId().get()))
if (tvcConfig.exerciseId.has_value() && exercisesIgnore.contains(tvcConfig.exerciseId.get()))
continue;
m_takenNames.push_back(QString::fromStdString(tvcConfig.radioCircuit()));
freeChannels.removeOne(tvcConfig.tetraChannelId());
m_takenNames.push_back(QString::fromStdString(tvcConfig.radioCircuit));
freeChannels.removeOne(tvcConfig.tetraChannelId);
}
updateCbChannels(std::move(freeChannels));
@@ -167,7 +169,7 @@ void EditTrainingVoiceCommunicationDialog::updateCbChannels(QVector<int> &&freeC
const auto allChannels = m_avmDtc->tvcChannels();
const auto byName = [&allChannels] (int leftChannelId, int rightChannelId) { return QLatin1String(allChannels[leftChannelId].name().c_str()) < QLatin1String(allChannels[rightChannelId].name().c_str()); };
const auto byName = [&allChannels] (int leftChannelId, int rightChannelId) { return QLatin1String(allChannels[leftChannelId].name.c_str()) < QLatin1String(allChannels[rightChannelId].name.c_str()); };
std::sort(freeChannels.begin(), freeChannels.end(), byName);
int currentlySelctedChannelId = m_ui->cbChannel->currentData().toInt();
@@ -179,7 +181,7 @@ void EditTrainingVoiceCommunicationDialog::updateCbChannels(QVector<int> &&freeC
m_ui->cbChannel->clear();
m_ui->cbChannel->addItem(NO_CHANNEL(), -1);
for (const auto &channelId : freeChannels)
m_ui->cbChannel->addItem(QString::fromStdString(allChannels[channelId].name()), channelId);
m_ui->cbChannel->addItem(QString::fromStdString(allChannels[channelId].name), channelId);
m_ui->cbChannel->setCurrentIndex(newlySelectedIndex);
}
@@ -189,18 +191,18 @@ QVector<int> EditTrainingVoiceCommunicationDialog::exercisesToConsider() const
{
const auto allExercises_ = m_exmDtc->exercises();
if (!isActive(allExercises_[m_exerciseId].state()))
if (!isActive(allExercises_[m_exerciseId].state))
return {m_exerciseId};
auto allExercises = allExercises_.values();
auto newEnd = std::remove_if(allExercises.begin(), allExercises.end(), [] (const ExerciseManagement::Exercise &ex) { return ex.isDeleted(); });
auto newEnd = std::remove_if(allExercises.begin(), allExercises.end(), [] (const ExerciseManagement::Exercise &ex) { return ex.isDeleted; });
allExercises.erase(newEnd, allExercises.end());
QVector<int> toBeConsidered;
for (const auto &exercise : std::as_const(allExercises))
{
if (::isActive(exercise.state()))
toBeConsidered.append(exercise.id());
if (::isActive(exercise.state))
toBeConsidered.append(exercise.id);
}
return toBeConsidered;
}
@@ -211,16 +213,16 @@ QVector<int> EditTrainingVoiceCommunicationDialog::exercisesToIgnore() const
auto canBeIgnored = [] (const ExerciseManagement::Exercise &ex) -> bool
{
return (ex.state() == ExerciseManagement::ExerciseState::Stopped ||
ex.state() == ExerciseManagement::ExerciseState::Terminated ||
ex.isDeleted());
return (ex.state == ExerciseManagement::ExerciseState::Stopped ||
ex.state == ExerciseManagement::ExerciseState::Terminated ||
ex.isDeleted);
};
QVector<int> exercisesToIgnore;
for (const auto &ex : allExercises)
{
if (canBeIgnored(ex))
exercisesToIgnore += ex.id();
exercisesToIgnore += ex.id;
}
return exercisesToIgnore;
}
@@ -1,6 +1,7 @@
#include "avm_training_voice_communication_dialog.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include "avm_edit_training_voice_communication_dialog.h"
#include "avm_training_voice_communication_dialog_model.h"
@@ -21,6 +22,7 @@ TrainingVoiceCommunicationDialog::TrainingVoiceCommunicationDialog(const QString
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_session(session),
m_ui(new Ui::TrainingVoiceCommunicationDialog), m_menuGroup(menuGroup),
m_requestHelper(new LtsUtils::RequestHelper(this)), m_avmDtc(nullptr), m_avmFtc(nullptr)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
m_ui->setupUi(this);
@@ -125,7 +127,7 @@ void TrainingVoiceCommunicationDialog::onEditClicked()
EditTrainingVoiceCommunicationDialog* dialog =
new EditTrainingVoiceCommunicationDialog(config, m_avmDtc, m_avmFtc, m_exmDtc, m_session->exerciseId(), this);
addDialog(dialog, m_menuGroup, QStringLiteral("EditTVCConfig%1").arg(config.id()),
addDialog(dialog, m_menuGroup, QStringLiteral("EditTVCConfig%1").arg(config.id),
LtsWidgets::LayoutArea::eDialogTab);
}
@@ -136,7 +138,7 @@ void TrainingVoiceCommunicationDialog::onRemoveClicked()
if (!currentIndex.isValid())
return;
Core::RemoveElementRequest request(m_model->getRowData(currentIndex.row()).id());
Core::RemoveElementRequest request(m_model->getRowData(currentIndex.row()).id);
m_requestHelper->startSingleRequest([this, request]() { return m_avmFtc->removeTvcConfigRequest(request, this); });
}
@@ -1,6 +1,7 @@
#include "avm_training_voice_communication_dialog_model.h"
#include <NGLLogger/NGLLoggerBootstrap.h>
#include <FileManagement/flm_translation.h>
#include <QtCore/QJsonArray>
@@ -14,6 +15,7 @@ TrainingVoiceCommunicationDialogModel::TrainingVoiceCommunicationDialogModel(QOb
: LtsAbstractTableModel<AudioVideoManagement::TvcConfig>(
{tr("Channel Number"), tr("Radio Circuit"), tr("Recording"), tr("Info"), tr("Global")}, parent),
m_exerciseId(-1)
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
{
}
@@ -27,15 +29,15 @@ QVariant TrainingVoiceCommunicationDialogModel::data(const QModelIndex& index, i
switch (index.column())
{
case CHANNEL:
return QString::fromStdString(m_tetraChannels.value(config.tetraChannelId()).name());
return QString::fromStdString(m_tetraChannels.value(config.tetraChannelId).name);
case RADIO_CIRCUIT:
return QString::fromStdString(config.radioCircuit());
return QString::fromStdString(config.radioCircuit);
case RECORDING:
return config.recording() ? tr("On") : tr("Off");
return config.recording ? tr("On") : tr("Off");
case INFO:
return QString::fromStdString(config.info());
return QString::fromStdString(config.info);
case GLOBAL:
return config.exerciseId().is_set() ? tr("No") : tr("Yes");
return config.exerciseId.has_value() ? tr("No") : tr("Yes");
}
return QVariant();
@@ -70,11 +72,11 @@ QByteArray TrainingVoiceCommunicationDialogFilter::modelToJson() const
QJsonObject inner;
const TvcConfig& config = m_sourceModel->getRowData(sourceRow);
inner[QLatin1String("isGlobal")] = !config.exerciseId().is_set();
inner[QLatin1String("info")] = QString::fromStdString(config.info());
inner[QLatin1String("radioCircuit")] = QString::fromStdString(config.radioCircuit());
inner[QLatin1String("recording")] = config.recording();
inner[QLatin1String("tetraChannelId")] = config.tetraChannelId();
inner[QLatin1String("isGlobal")] = !config.exerciseId.has_value();
inner[QLatin1String("info")] = QString::fromStdString(config.info);
inner[QLatin1String("radioCircuit")] = QString::fromStdString(config.radioCircuit);
inner[QLatin1String("recording")] = config.recording;
inner[QLatin1String("tetraChannelId")] = config.tetraChannelId;
arr += inner;
}
@@ -98,14 +100,14 @@ TrainingVoiceCommunicationDialogModel::jsonToTvcConfigVector(const QByteArray& c
ModifyTvcConfigRequest config;
if (!obj.contains(QLatin1String("isGlobal")) || !obj[QLatin1String("isGlobal")].toBool())
config.exerciseId(m_exerciseId);
config.id(0);
config.info(obj[QLatin1String("info")].toString().toStdString());
config.radioCircuit(obj[QLatin1String("radioCircuit")].toString().toStdString());
config.recording(obj[QLatin1String("recording")].toBool());
config.tetraChannelId(obj[QLatin1String("tetraChannelId")].toInt());
config.exerciseId = m_exerciseId;
config.id = 0;
config.info = obj[QLatin1String("info")].toString().toStdString();
config.radioCircuit = obj[QLatin1String("radioCircuit")].toString().toStdString();
config.recording = obj[QLatin1String("recording")].toBool();
config.tetraChannelId = obj[QLatin1String("tetraChannelId")].toInt();
INFO_LOG(m_logger) << "insertRow: " << config.radioCircuit() << " tvcChannelId=" << config.tetraChannelId();
INFO_LOG(m_logger) << "insertRow: " << config.radioCircuit << " tvcChannelId=" << config.tetraChannelId;
result.push_back(std::move(config));
}
return result;
@@ -123,7 +125,7 @@ bool TrainingVoiceCommunicationDialogFilter::filterAcceptsRow(int sourceRow, con
{
TvcConfig tvcConfig = m_sourceModel->getRowData(sourceRow);
if (tvcConfig.exerciseId().is_set() && tvcConfig.exerciseId().get() != m_exerciseId)
if (tvcConfig.exerciseId.has_value() && tvcConfig.exerciseId.get() != m_exerciseId)
return false;
return LtsColumnFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);