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:
1718 files changed
+126739
-18495
No files matched your search
+1
-1
@@ -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())
|
||||
|
||||
+8
-8
@@ -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:
|
||||
|
||||
+14
-14
@@ -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;
|
||||
|
||||
+4
-5
@@ -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: {
|
||||
|
||||
+35
-35
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -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());
|
||||
}
|
||||
|
||||
+4
-4
@@ -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)
|
||||
{}
|
||||
|
||||
|
||||
+2
-1
@@ -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)
|
||||
|
||||
+4
-2
@@ -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);
|
||||
|
||||
+25
-26
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -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;
|
||||
|
||||
+6
-4
@@ -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); });
|
||||
|
||||
|
||||
+8
-6
@@ -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)
|
||||
|
||||
+31
-29
@@ -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
@@ -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();
|
||||
|
||||
+24
-22
@@ -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); });
|
||||
}
|
||||
|
||||
+1
@@ -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;
|
||||
|
||||
+2
@@ -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)
|
||||
|
||||
+27
-24
@@ -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();
|
||||
|
||||
+2
@@ -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);
|
||||
|
||||
+13
-13
@@ -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;
|
||||
}
|
||||
|
||||
+5
-3
@@ -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);
|
||||
}
|
||||
|
||||
+20
-18
@@ -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);
|
||||
|
||||
+1
@@ -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>
|
||||
|
||||
+91
-89
@@ -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;
|
||||
}
|
||||
|
||||
+1
@@ -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
@@ -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);
|
||||
|
||||
+35
-33
@@ -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;
|
||||
|
||||
+28
-25
@@ -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;
|
||||
}
|
||||
|
||||
+1
@@ -3,6 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AudioVideoManagement/avm_qmetatypes.h>
|
||||
#include <LtsWidgets/lts_dialog.h>
|
||||
|
||||
#include <AudioVideoManagement/logger.h>
|
||||
|
||||
+110
-107
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -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;
|
||||
|
||||
+19
-17
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+24
-21
@@ -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);
|
||||
|
||||
+8
-6
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
+33
-30
@@ -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)
|
||||
|
||||
+1
@@ -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>
|
||||
|
||||
+31
-29
@@ -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:
|
||||
|
||||
+2
-1
@@ -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)
|
||||
+17
-16
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-6
@@ -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);
|
||||
|
||||
|
||||
+1
@@ -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
@@ -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);
|
||||
|
||||
|
||||
+71
-69
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -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"
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
|
||||
+7
-7
@@ -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);
|
||||
|
||||
|
||||
+9
-9
@@ -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);
|
||||
|
||||
|
||||
+1
-1
@@ -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,
|
||||
|
||||
+1
@@ -5,6 +5,7 @@
|
||||
|
||||
#include <AudioVideoManagement/logger.h>
|
||||
#include <ParticipantManagement/ppm.hpp>
|
||||
#include <ParticipantManagement/ppm_dtc.h>
|
||||
|
||||
|
||||
#include <PluginInterfaces/gui_plugin_interface.h>
|
||||
|
||||
+18
-18
@@ -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;
|
||||
|
||||
+29
-28
@@ -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;
|
||||
|
||||
+4
-3
@@ -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:
|
||||
|
||||
+1
-1
@@ -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
|
||||
{
|
||||
|
||||
+10
-9
@@ -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());
|
||||
|
||||
+13
-12
@@ -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());
|
||||
|
||||
+17
-16
@@ -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;
|
||||
}
|
||||
|
||||
+45
-44
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -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;
|
||||
}
|
||||
|
||||
+30
-28
@@ -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;
|
||||
}
|
||||
|
||||
+4
-2
@@ -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); });
|
||||
}
|
||||
|
||||
+20
-18
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user