Apply clang-format to Lts/Common and DTC/enum headers

- Formatted all CodeGen module files (9 files)
- Formatted LtsAppDescriptor module files
- Formatted LtsAppManager/AppChooser files
- Applied clang-format to all DTC and enum headers across modules
- Removed coordTransTests from CommonUnitTestsPlaceholder (moved to tests/)

Cosmetic changes only, no functional modifications.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
torstenandCopilot committed 2026-08-19 14:46:29 +02:00
1 parent 1881d68aef
commit d6b6ffce7c
848 files changed
+89305 -100020

No files matched your search

@@ -1,16 +1,13 @@
#pragma once
#include <LtsWidgets/lts_dialog.h>
#include <AudioVideoManagement/logger.h>
#include <AudioVideoManagement/avm_ftc.h>
#include <AudioVideoManagement/avm.hpp>
#include <QVector>
#include <AudioVideoManagement/avm_ftc.h>
#include <AudioVideoManagement/logger.h>
#include <LtsWidgets/lts_dialog.h>
#include <QString>
#include <QVector>
class QCheckBox;
@@ -25,7 +22,7 @@ namespace Interface
{
class Dtc;
}
}
} // namespace AudioVideoManagement
namespace ExerciseManagement
{
@@ -33,80 +30,70 @@ namespace Interface
{
class Dtc;
}
}
} // namespace ExerciseManagement
namespace LtsUtils
{
class RequestHelper;
}
namespace AudioVideoManagement
{
class EditTrainingVoiceCommunicationDialog
: public LtsWidgets::LtsDialog
, protected Interface::Ftc::ModifyTvcConfigReplyHandler
class EditTrainingVoiceCommunicationDialog : public LtsWidgets::LtsDialog,
protected Interface::Ftc::ModifyTvcConfigReplyHandler
{
Q_OBJECT
public:
Q_OBJECT
public:
explicit EditTrainingVoiceCommunicationDialog(const std::shared_ptr<Interface::Dtc>& avmDtc,
const std::shared_ptr<Interface::Ftc>& avmFtc,
ExerciseManagement::Interface::Dtc* exmDtc, int32_t exerciseId,
QWidget* parent = nullptr);
explicit EditTrainingVoiceCommunicationDialog(const std::shared_ptr<Interface::Dtc> &avmDtc,
const std::shared_ptr<Interface::Ftc> &avmFtc,
ExerciseManagement::Interface::Dtc *exmDtc,
int32_t exerciseId,
QWidget *parent = nullptr);
explicit 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);
explicit 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();
~EditTrainingVoiceCommunicationDialog();
void retranslate() override;
void retranslate() override;
protected:
NGL::INGLLogger& m_logger;
bool apply() override;
void onModifyTvcConfigReply(const Core::FunctionReplyObject& reply) override;
protected:
private:
EditTrainingVoiceCommunicationDialog(int32_t id, const std::shared_ptr<Interface::Dtc>& avmDtc,
const std::shared_ptr<Interface::Ftc>& avmFtc,
ExerciseManagement::Interface::Dtc* exmDtc, int32_t exerciseId,
QWidget* parent);
NGL::INGLLogger &m_logger;
bool apply() override;
void onModifyTvcConfigReply(const Core::FunctionReplyObject &reply) override;
void init();
void checkToDisableChkRecording();
private:
EditTrainingVoiceCommunicationDialog(int32_t id,
const std::shared_ptr<Interface::Dtc> &avmDtc,
const std::shared_ptr<Interface::Ftc> &avmFtc,
ExerciseManagement::Interface::Dtc *exmDtc,
int32_t exerciseId,
QWidget *parent);
private slots:
void updateFreeChannelsAndTakenNames();
void init();
void checkToDisableChkRecording();
private:
void updateCbChannels(QVector<int>&& freeChannels);
QVector<int> exercisesToConsider() const;
QVector<int> exercisesToIgnore() const;
private slots:
void updateFreeChannelsAndTakenNames();
void initCbChannelsForCreate();
void initCbChannelsForEdit(int channelId);
private:
void updateCbChannels(QVector<int> &&freeChannels);
QVector<int> exercisesToConsider() const;
QVector<int> exercisesToIgnore() const;
bool isNameValid(const QString& name) const;
void initCbChannelsForCreate();
void initCbChannelsForEdit(int channelId);
bool isNameValid(const QString &name) const;
private:
std::unique_ptr<Ui::EditTrainingVoiceCommunicationDialog> m_ui;
int32_t m_id;
int32_t m_exerciseId;
std::shared_ptr<Interface::Dtc> m_avmDtc;
std::shared_ptr<Interface::Ftc> m_avmFtc;
ExerciseManagement::Interface::Dtc *m_exmDtc;
QVector<QString> m_takenNames;
std::unique_ptr<LtsUtils::RequestHelper> m_requestHelper;
};
}
private:
std::unique_ptr<Ui::EditTrainingVoiceCommunicationDialog> m_ui;
int32_t m_id;
int32_t m_exerciseId;
std::shared_ptr<Interface::Dtc> m_avmDtc;
std::shared_ptr<Interface::Ftc> m_avmFtc;
ExerciseManagement::Interface::Dtc* m_exmDtc;
QVector<QString> m_takenNames;
std::unique_ptr<LtsUtils::RequestHelper> m_requestHelper;
};
} // namespace AudioVideoManagement
@@ -1,209 +1,198 @@
#include "avm_training_voice_communication_dialog.h"
#include "ui_avm_training_voice_communication_dialog.h"
#include "avm_training_voice_communication_dialog_model.h"
#include "avm_edit_training_voice_communication_dialog.h"
#include <PluginInterfaces/gui_plugin_interface.h>
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
#include <FileManagement/flm_translation.h>
#include <LtsSession/lts_session.h>
#include "avm_edit_training_voice_communication_dialog.h"
#include "avm_training_voice_communication_dialog_model.h"
#include "ui_avm_training_voice_communication_dialog.h"
#include <FileManagement/flm_translation.h>
#include <LtsPrinting/printing.h>
#include <LtsSession/lts_session.h>
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
#include <PluginInterfaces/gui_plugin_interface.h>
#include <QTreeView>
namespace AudioVideoManagement
{
TrainingVoiceCommunicationDialog::TrainingVoiceCommunicationDialog(const QString &menuGroup, LtsSession::LtsSession *session, QWidget *parent)
: 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)
TrainingVoiceCommunicationDialog::TrainingVoiceCommunicationDialog(const QString& menuGroup,
LtsSession::LtsSession* session, QWidget* parent)
: 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_ui->setupUi(this);
m_ui->setupUi(this);
setOnlineHelpFilename(QStringLiteral("Situation-Training_Voice_Communication"));
setOnlineHelpFilename(QStringLiteral("Situation-Training_Voice_Communication"));
}
TrainingVoiceCommunicationDialog::~TrainingVoiceCommunicationDialog() = default;
void TrainingVoiceCommunicationDialog::retranslate()
{
translate(m_ui.get(), tr("Training Voice Communication"));
translate(m_ui.get(), tr("Training Voice Communication"));
}
void TrainingVoiceCommunicationDialog::tableColumnOrganiserSetting()
{
m_ui->dataView->setColumnsOrganiserEnabled(identifier(), true);
m_ui->dataView->setColumnsOrganiserEnabled(identifier(), true);
}
bool TrainingVoiceCommunicationDialog::init(const std::shared_ptr<Interface::Dtc> &avmDtc, const std::shared_ptr<Interface::Ftc> &avmFtc, ExerciseManagement::Interface::Dtc *exmDtc)
bool TrainingVoiceCommunicationDialog::init(const std::shared_ptr<Interface::Dtc>& avmDtc,
const std::shared_ptr<Interface::Ftc>& avmFtc,
ExerciseManagement::Interface::Dtc* exmDtc)
{
Q_ASSERT(exmDtc);
Q_ASSERT(exmDtc);
if (!(avmDtc->enableTvcChannel() &&
avmDtc->enableTvcConfig() &&
avmFtc->enableModifyTvcConfig() &&
avmFtc->enableRemoveTvcConfig()))
{
ERROR_LOG(m_logger) << "Could not enable topics";
return false;
}
if (!(avmDtc->enableTvcChannel() && avmDtc->enableTvcConfig() && avmFtc->enableModifyTvcConfig() &&
avmFtc->enableRemoveTvcConfig()))
{
ERROR_LOG(m_logger) << "Could not enable topics";
return false;
}
m_model.reset(new TrainingVoiceCommunicationDialogModel(this));
m_filter.reset(new TrainingVoiceCommunicationDialogFilter(m_session->exerciseId(), m_model.get()));
m_model.reset(new TrainingVoiceCommunicationDialogModel(this));
m_filter.reset(new TrainingVoiceCommunicationDialogFilter(m_session->exerciseId(), m_model.get()));
m_avmDtc = avmDtc;
m_avmFtc = avmFtc;
m_exmDtc = exmDtc;
m_avmDtc = avmDtc;
m_avmFtc = avmFtc;
m_exmDtc = exmDtc;
if (!m_model->init(m_session->exerciseId(), avmDtc))
{
m_filter.reset();
m_model.reset();
ERROR_LOG(m_logger) << "Could not init model";
return false;
}
if (!m_model->init(m_session->exerciseId(), avmDtc))
{
m_filter.reset();
m_model.reset();
ERROR_LOG(m_logger) << "Could not init model";
return false;
}
m_ui->dataView->setModel(m_filter.get());
m_ui->dataView->setModel(m_filter.get());
m_buttonBox->connectButton(LtsWidgets::DialogButton::Add, this, &TrainingVoiceCommunicationDialog::onAddClicked);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Edit, this, &TrainingVoiceCommunicationDialog::onEditClicked);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Remove, this,
&TrainingVoiceCommunicationDialog::onRemoveClicked);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Print, this, &TrainingVoiceCommunicationDialog::onPrint);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Add, this, &TrainingVoiceCommunicationDialog::onAddClicked);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Edit, this, &TrainingVoiceCommunicationDialog::onEditClicked);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Remove, this, &TrainingVoiceCommunicationDialog::onRemoveClicked);
m_buttonBox->connectButton(LtsWidgets::DialogButton::Print, this, &TrainingVoiceCommunicationDialog::onPrint);
connect(m_ui->dataView, &LtsDataView::LtsDataView::signalSelectionChanged, this,
&TrainingVoiceCommunicationDialog::onSelectionChanged);
connect(m_ui->dataView, &LtsDataView::LtsDataView::signalSelectionChanged,
this, &TrainingVoiceCommunicationDialog::onSelectionChanged);
onSelectionChanged();
onSelectionChanged();
connect(m_ui->dataView, &LtsDataView::LtsDataView::signalDoubleClicked, this,
&TrainingVoiceCommunicationDialog::onEditClicked);
connect(m_ui->dataView, &LtsDataView::LtsDataView::signalDoubleClicked,
this, &TrainingVoiceCommunicationDialog::onEditClicked);
m_buttonBox->connectLibraryButton(this, &TrainingVoiceCommunicationDialog::onImportButtonClicked,
&TrainingVoiceCommunicationDialog::onExportButtonClicked);
m_buttonBox->connectLibraryButton(this,
&TrainingVoiceCommunicationDialog::onImportButtonClicked,
&TrainingVoiceCommunicationDialog::onExportButtonClicked);
if (!m_session->getForeignGuiInterface<FileManagement::ForeignGuiInterface>(m_flmGui))
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Library, false);
if (!m_session->getForeignGuiInterface<FileManagement::ForeignGuiInterface>(m_flmGui))
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Library, false);
#ifndef LTS_DEBUG
m_ui->dataView->hideColumn(TrainingVoiceCommunicationDialogModel::RECORDING);
m_ui->dataView->hideColumn(TrainingVoiceCommunicationDialogModel::RECORDING);
#endif
return true;
return true;
}
void TrainingVoiceCommunicationDialog::onModifyTvcConfigReply(const Core::FunctionReplyObject &replyObject)
void TrainingVoiceCommunicationDialog::onModifyTvcConfigReply(const Core::FunctionReplyObject& replyObject)
{
m_requestHelper->requestReply(replyObject);
m_requestHelper->requestReply(replyObject);
}
void TrainingVoiceCommunicationDialog::onRemoveTvcConfigReply(const Core::FunctionReplyObject &replyObject)
void TrainingVoiceCommunicationDialog::onRemoveTvcConfigReply(const Core::FunctionReplyObject& replyObject)
{
m_requestHelper->requestReply(replyObject);
m_requestHelper->requestReply(replyObject);
}
void TrainingVoiceCommunicationDialog::onAddClicked()
{
EditTrainingVoiceCommunicationDialog *dialog = new EditTrainingVoiceCommunicationDialog(m_avmDtc, m_avmFtc, m_exmDtc, m_session->exerciseId(), this);
addDialog(dialog, m_menuGroup, QStringLiteral("NewTVCConfig"), LtsWidgets::LayoutArea::eDialogTab);
EditTrainingVoiceCommunicationDialog* dialog =
new EditTrainingVoiceCommunicationDialog(m_avmDtc, m_avmFtc, m_exmDtc, m_session->exerciseId(), this);
addDialog(dialog, m_menuGroup, QStringLiteral("NewTVCConfig"), LtsWidgets::LayoutArea::eDialogTab);
}
void TrainingVoiceCommunicationDialog::onEditClicked()
{
QModelIndex currentIndex = m_ui->dataView->currentIndex();
QModelIndex currentIndex = m_ui->dataView->currentIndex();
if (!currentIndex.isValid())
return;
if (!currentIndex.isValid())
return;
TvcConfig config = m_model->getRowData(currentIndex.row());
TvcConfig config = m_model->getRowData(currentIndex.row());
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()), LtsWidgets::LayoutArea::eDialogTab);
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()),
LtsWidgets::LayoutArea::eDialogTab);
}
void TrainingVoiceCommunicationDialog::onRemoveClicked()
{
QModelIndex currentIndex = m_ui->dataView->currentIndex();
QModelIndex currentIndex = m_ui->dataView->currentIndex();
if (!currentIndex.isValid())
return;
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);
});
m_requestHelper->startSingleRequest([this, request]() { return m_avmFtc->removeTvcConfigRequest(request, this); });
}
void TrainingVoiceCommunicationDialog::onSelectionChanged()
{
QModelIndex currentIndex = m_ui->dataView->currentIndex();
QModelIndex currentIndex = m_ui->dataView->currentIndex();
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, currentIndex.isValid());
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, currentIndex.isValid());
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Edit, currentIndex.isValid());
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Remove, currentIndex.isValid());
}
void TrainingVoiceCommunicationDialog::onPrint()
{
LtsPrinting::printView(m_session, this, m_ui->dataView->treeView());
LtsPrinting::printView(m_session, this, m_ui->dataView->treeView());
}
void TrainingVoiceCommunicationDialog::onExportButtonClicked()
{
QByteArray byteArray = m_filter->modelToJson();
QByteArray byteArray = m_filter->modelToJson();
int fileId = m_flmGui->saveFileContent(this, FileManagement::FileType::Xml, m_session->exerciseId(), byteArray);
if (fileId > 0)
DEBUG_LOG(m_logger) << "Saved file with id = " << fileId;
else
ERROR_LOG(m_logger) << "Could not save file in library ";
int fileId = m_flmGui->saveFileContent(this, FileManagement::FileType::Xml, m_session->exerciseId(), byteArray);
if (fileId > 0)
DEBUG_LOG(m_logger) << "Saved file with id = " << fileId;
else
ERROR_LOG(m_logger) << "Could not save file in library ";
}
void TrainingVoiceCommunicationDialog::onImportButtonClicked()
{
DEBUG_LOG(m_logger) << " onImportButtonClicked() ";
DEBUG_LOG(m_logger) << " onImportButtonClicked() ";
QByteArray content;
int fileId = m_flmGui->loadFileContent(this, content, {FileManagement::FileType::Xml}, m_session->exerciseId(), FileManagement::toString(FileManagement::XmlType::AVMTrainingVoiceCommunication));
if (fileId > 0)
{
if (!m_flmGui->isXmlType(content, FileManagement::toString(FileManagement::XmlType::AVMTrainingVoiceCommunication)))
QByteArray content;
int fileId =
m_flmGui->loadFileContent(this, content, {FileManagement::FileType::Xml}, m_session->exerciseId(),
FileManagement::toString(FileManagement::XmlType::AVMTrainingVoiceCommunication));
if (fileId > 0)
{
QHash<LtsWidgets::Button, QString> texts({{LtsWidgets::Button::Yes, tr("Ok")}});
LtsWidgets::LtsMessageDialog::showMessage(this,
tr("Invalid xml file content"),
windowTitle(),
LtsWidgets::Behaviour::Modal,
LtsWidgets::Button::Yes,
texts);
}
else
{
const QVector<ModifyTvcConfigRequest> requests = m_model->jsonToTvcConfigVector(content);
for (const auto &request : requests)
{
m_requestHelper->addRequest([this, request]()
if (!m_flmGui->isXmlType(content,
FileManagement::toString(FileManagement::XmlType::AVMTrainingVoiceCommunication)))
{
return m_avmFtc->modifyTvcConfigRequest(request, this);
});
}
(void) m_requestHelper->startRequests();
INFO_LOG(m_logger) << "--- onImportButtonClicked() ";
QHash<LtsWidgets::Button, QString> texts({{LtsWidgets::Button::Yes, tr("Ok")}});
LtsWidgets::LtsMessageDialog::showMessage(this, tr("Invalid xml file content"), windowTitle(),
LtsWidgets::Behaviour::Modal, LtsWidgets::Button::Yes, texts);
}
else
{
const QVector<ModifyTvcConfigRequest> requests = m_model->jsonToTvcConfigVector(content);
for (const auto& request : requests)
{
m_requestHelper->addRequest(
[this, request]() { return m_avmFtc->modifyTvcConfigRequest(request, this); });
}
(void)m_requestHelper->startRequests();
INFO_LOG(m_logger) << "--- onImportButtonClicked() ";
}
}
}
}
}
} // namespace AudioVideoManagement
@@ -1,14 +1,11 @@
#pragma once
#include <LtsWidgets/lts_dialog.h>
#include <AudioVideoManagement/logger.h>
#include <AudioVideoManagement/avm_ftc.h>
#include <AudioVideoManagement/logger.h>
#include <LtsWidgets/lts_dialog.h>
#include <Plugins/FileManagement/flm_explorer_gui_plugin_interface.h>
#include <memory>
namespace Ui
@@ -32,7 +29,7 @@ namespace Interface
{
class Dtc;
}
}
} // namespace AudioVideoManagement
namespace ExerciseManagement
{
@@ -40,53 +37,53 @@ namespace Interface
{
class Dtc;
}
}
} // namespace ExerciseManagement
namespace AudioVideoManagement
{
class TrainingVoiceCommunicationDialogModel;
class TrainingVoiceCommunicationDialogFilter;
class TrainingVoiceCommunicationDialog
: public LtsWidgets::LtsDialog
, protected Interface::Ftc::ModifyTvcConfigReplyHandler
, protected Interface::Ftc::RemoveTvcConfigReplyHandler
class TrainingVoiceCommunicationDialog : public LtsWidgets::LtsDialog,
protected Interface::Ftc::ModifyTvcConfigReplyHandler,
protected Interface::Ftc::RemoveTvcConfigReplyHandler
{
Q_OBJECT
public:
explicit TrainingVoiceCommunicationDialog(const QString &menuGroup, LtsSession::LtsSession *session, QWidget *parent = nullptr);
~TrainingVoiceCommunicationDialog();
Q_OBJECT
public:
explicit TrainingVoiceCommunicationDialog(const QString& menuGroup, LtsSession::LtsSession* session,
QWidget* parent = nullptr);
~TrainingVoiceCommunicationDialog();
bool init(const std::shared_ptr<Interface::Dtc> &avmDtc, const std::shared_ptr<Interface::Ftc> &avmFtc, ExerciseManagement::Interface::Dtc *exmDtc);
bool init(const std::shared_ptr<Interface::Dtc>& avmDtc, const std::shared_ptr<Interface::Ftc>& avmFtc,
ExerciseManagement::Interface::Dtc* exmDtc);
void onModifyTvcConfigReply(const Core::FunctionReplyObject &replyObject) override final;
void onRemoveTvcConfigReply(const Core::FunctionReplyObject &replyObject) override final;
void onModifyTvcConfigReply(const Core::FunctionReplyObject& replyObject) override final;
void onRemoveTvcConfigReply(const Core::FunctionReplyObject& replyObject) override final;
private Q_SLOTS:
void onAddClicked();
void onEditClicked();
void onRemoveClicked();
void onSelectionChanged();
void onPrint();
void onExportButtonClicked();
void onImportButtonClicked();
private Q_SLOTS:
void onAddClicked();
void onEditClicked();
void onRemoveClicked();
void onSelectionChanged();
void onPrint();
void onExportButtonClicked();
void onImportButtonClicked();
private:
private:
NGL::INGLLogger& m_logger;
void retranslate() override;
void tableColumnOrganiserSetting() override;
NGL::INGLLogger &m_logger;
void retranslate() override;
void tableColumnOrganiserSetting() override;
private:
LtsSession::LtsSession *m_session;
std::unique_ptr<TrainingVoiceCommunicationDialogModel> m_model;
std::unique_ptr<TrainingVoiceCommunicationDialogFilter> m_filter;
std::unique_ptr<Ui::TrainingVoiceCommunicationDialog> m_ui;
QString m_menuGroup;
std::unique_ptr<LtsUtils::RequestHelper> m_requestHelper;
std::shared_ptr<Interface::Dtc> m_avmDtc;
std::shared_ptr<Interface::Ftc> m_avmFtc;
std::shared_ptr<FileManagement::ForeignGuiInterface> m_flmGui;
ExerciseManagement::Interface::Dtc *m_exmDtc{nullptr};
};
}
private:
LtsSession::LtsSession* m_session;
std::unique_ptr<TrainingVoiceCommunicationDialogModel> m_model;
std::unique_ptr<TrainingVoiceCommunicationDialogFilter> m_filter;
std::unique_ptr<Ui::TrainingVoiceCommunicationDialog> m_ui;
QString m_menuGroup;
std::unique_ptr<LtsUtils::RequestHelper> m_requestHelper;
std::shared_ptr<Interface::Dtc> m_avmDtc;
std::shared_ptr<Interface::Ftc> m_avmFtc;
std::shared_ptr<FileManagement::ForeignGuiInterface> m_flmGui;
ExerciseManagement::Interface::Dtc* m_exmDtc{nullptr};
};
} // namespace AudioVideoManagement
@@ -1,142 +1,132 @@
#include "avm_training_voice_communication_dialog_model.h"
#include <FileManagement/flm_translation.h>
#include <FileManagement/flm_translation.h>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonObject>
namespace AudioVideoManagement
{
TrainingVoiceCommunicationDialogModel::TrainingVoiceCommunicationDialogModel(QObject *parent)
: LtsAbstractTableModel<AudioVideoManagement::TvcConfig>(
{
tr("Channel Number"),
tr("Radio Circuit"),
tr("Recording"),
tr("Info"),
tr("Global")
}, parent)
, m_exerciseId(-1)
TrainingVoiceCommunicationDialogModel::TrainingVoiceCommunicationDialogModel(QObject* parent)
: LtsAbstractTableModel<AudioVideoManagement::TvcConfig>(
{tr("Channel Number"), tr("Radio Circuit"), tr("Recording"), tr("Info"), tr("Global")}, parent),
m_exerciseId(-1)
{
}
QVariant TrainingVoiceCommunicationDialogModel::data(const QModelIndex &index, int role) const
QVariant TrainingVoiceCommunicationDialogModel::data(const QModelIndex& index, int role) const
{
if (role != Qt::DisplayRole || !indexIsValid(index))
if (role != Qt::DisplayRole || !indexIsValid(index))
return QVariant();
const AudioVideoManagement::TvcConfig& config = m_vecData.at(index.row());
switch (index.column())
{
case CHANNEL:
return QString::fromStdString(m_tetraChannels.value(config.tetraChannelId()).name());
case RADIO_CIRCUIT:
return QString::fromStdString(config.radioCircuit());
case RECORDING:
return config.recording() ? tr("On") : tr("Off");
case INFO:
return QString::fromStdString(config.info());
case GLOBAL:
return config.exerciseId().is_set() ? tr("No") : tr("Yes");
}
return QVariant();
const AudioVideoManagement::TvcConfig &config = m_vecData.at(index.row());
switch (index.column())
{
case CHANNEL:
return QString::fromStdString(m_tetraChannels.value(config.tetraChannelId()).name());
case RADIO_CIRCUIT:
return QString::fromStdString(config.radioCircuit());
case RECORDING:
return config.recording() ? tr("On") : tr("Off");
case INFO:
return QString::fromStdString(config.info());
case GLOBAL:
return config.exerciseId().is_set() ? tr("No") : tr("Yes");
}
return QVariant();
}
bool TrainingVoiceCommunicationDialogModel::init(int32_t exerciseId, const std::shared_ptr<AudioVideoManagement::Interface::Dtc> &avmDtc)
bool TrainingVoiceCommunicationDialogModel::init(int32_t exerciseId,
const std::shared_ptr<AudioVideoManagement::Interface::Dtc>& avmDtc)
{
m_avmDtc = avmDtc;
m_exerciseId = exerciseId;
m_avmDtc = avmDtc;
m_exerciseId = exerciseId;
avmDtc->waitForHistoricalDataTvcChannel(5000);
m_tetraChannels = avmDtc->tvcChannels();
avmDtc->waitForHistoricalDataTvcChannel(5000);
m_tetraChannels = avmDtc->tvcChannels();
connect(m_avmDtc.get(), &AudioVideoManagement::Interface::Dtc::tvcConfigChanged, this, &TrainingVoiceCommunicationDialogModel::onDataChanged);
m_avmDtc->tvcConfigs([this](const TvcConfig &config) { insertRow(config); });
connect(m_avmDtc.get(), &AudioVideoManagement::Interface::Dtc::tvcConfigChanged, this,
&TrainingVoiceCommunicationDialogModel::onDataChanged);
m_avmDtc->tvcConfigs([this](const TvcConfig& config) { insertRow(config); });
return true;
return true;
}
QByteArray TrainingVoiceCommunicationDialogFilter::modelToJson() const
{
QJsonObject obj;
QJsonArray arr;
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::AVMTrainingVoiceCommunication);
QJsonObject obj;
QJsonArray arr;
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::AVMTrainingVoiceCommunication);
for (int row = 0; row < rowCount(); row++)
{
int sourceRow = mapToSource(index(row, 0)).row();
for (int row = 0; row < rowCount(); row++)
{
int sourceRow = mapToSource(index(row, 0)).row();
QJsonObject inner;
const TvcConfig &config = m_sourceModel->getRowData(sourceRow);
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();
arr += inner;
}
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();
arr += inner;
}
obj[QLatin1String("tvcConfiguration")] = arr;
QJsonDocument doc(obj);
return doc.toJson(QJsonDocument::Compact);
obj[QLatin1String("tvcConfiguration")] = arr;
QJsonDocument doc(obj);
return doc.toJson(QJsonDocument::Compact);
}
QVector<ModifyTvcConfigRequest> TrainingVoiceCommunicationDialogModel::jsonToTvcConfigVector(const QByteArray &content) const
QVector<ModifyTvcConfigRequest>
TrainingVoiceCommunicationDialogModel::jsonToTvcConfigVector(const QByteArray& content) const
{
const QJsonDocument doc(QJsonDocument::fromJson(content));
const QJsonObject toplevelObj(doc.object());
const QJsonArray arr(toplevelObj.value(QLatin1String("tvcConfiguration")).toArray());
QVector<ModifyTvcConfigRequest> result;
result.reserve(arr.size());
for (const auto &ele : arr)
{
const QJsonObject obj(ele.toObject());
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());
const QJsonDocument doc(QJsonDocument::fromJson(content));
const QJsonObject toplevelObj(doc.object());
const QJsonArray arr(toplevelObj.value(QLatin1String("tvcConfiguration")).toArray());
QVector<ModifyTvcConfigRequest> result;
result.reserve(arr.size());
for (const auto& ele : arr)
{
const QJsonObject obj(ele.toObject());
ModifyTvcConfigRequest config;
INFO_LOG(m_logger) << "insertRow: " << config.radioCircuit()
<< " tvcChannelId=" << config.tetraChannelId();
result.push_back(std::move(config));
}
return result;
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());
INFO_LOG(m_logger) << "insertRow: " << config.radioCircuit() << " tvcChannelId=" << config.tetraChannelId();
result.push_back(std::move(config));
}
return result;
}
TrainingVoiceCommunicationDialogFilter::TrainingVoiceCommunicationDialogFilter(int32_t exerciseId, TrainingVoiceCommunicationDialogModel *sourceModel)
: m_exerciseId(exerciseId)
, m_sourceModel(sourceModel)
TrainingVoiceCommunicationDialogFilter::TrainingVoiceCommunicationDialogFilter(
int32_t exerciseId, TrainingVoiceCommunicationDialogModel* sourceModel)
: m_exerciseId(exerciseId), m_sourceModel(sourceModel)
{
Q_ASSERT(sourceModel);
setSourceModel(sourceModel);
Q_ASSERT(sourceModel);
setSourceModel(sourceModel);
}
bool TrainingVoiceCommunicationDialogFilter::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
bool TrainingVoiceCommunicationDialogFilter::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const
{
TvcConfig tvcConfig = m_sourceModel->getRowData(sourceRow);
TvcConfig tvcConfig = m_sourceModel->getRowData(sourceRow);
if (tvcConfig.exerciseId().is_set() && tvcConfig.exerciseId().get() != m_exerciseId)
return false;
if (tvcConfig.exerciseId().is_set() && tvcConfig.exerciseId().get() != m_exerciseId)
return false;
return LtsColumnFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
return LtsColumnFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
}
}
} // namespace AudioVideoManagement
@@ -1,67 +1,56 @@
#pragma once
#include <AudioVideoManagement/avm_dtc.h>
#include <AudioVideoManagement/logger.h>
#include <LtsWidgets/lts_abstract_table_model.h>
#include <LtsWidgets/lts_column_filter_proxy_model.h>
#include <AudioVideoManagement/logger.h>
#include <AudioVideoManagement/avm_dtc.h>
namespace AudioVideoManagement
{
class TrainingVoiceCommunicationDialogModel final
: public LtsWidgets::LtsAbstractTableModel<AudioVideoManagement::TvcConfig>
: public LtsWidgets::LtsAbstractTableModel<AudioVideoManagement::TvcConfig>
{
Q_OBJECT
Q_OBJECT
public:
enum Columns
{
CHANNEL,
RADIO_CIRCUIT,
RECORDING,
INFO,
GLOBAL
};
public:
enum Columns { CHANNEL, RADIO_CIRCUIT, RECORDING, INFO, GLOBAL };
explicit TrainingVoiceCommunicationDialogModel(QObject *parent = nullptr);
explicit TrainingVoiceCommunicationDialogModel(QObject* parent = nullptr);
QVariant data(const QModelIndex &index, int role) const override final;
QVariant data(const QModelIndex& index, int role) const override final;
bool init(int32_t exerciseId, const std::shared_ptr<AudioVideoManagement::Interface::Dtc> &avmDtc);
QVector<ModifyTvcConfigRequest> jsonToTvcConfigVector(const QByteArray &content) const;
bool init(int32_t exerciseId, const std::shared_ptr<AudioVideoManagement::Interface::Dtc>& avmDtc);
QVector<ModifyTvcConfigRequest> jsonToTvcConfigVector(const QByteArray& content) const;
private:
private:
NGL::INGLLogger& m_logger;
std::shared_ptr<AudioVideoManagement::Interface::Dtc> m_avmDtc;
int32_t m_exerciseId;
NGL::INGLLogger &m_logger;
std::shared_ptr<AudioVideoManagement::Interface::Dtc> m_avmDtc;
int32_t m_exerciseId;
QMap<int32_t, AudioVideoManagement::TvcChannel> m_tetraChannels;
QMap<int32_t, AudioVideoManagement::TvcChannel> m_tetraChannels;
};
class TrainingVoiceCommunicationDialogFilter : public LtsWidgets::LtsColumnFilterProxyModel
{
public:
explicit TrainingVoiceCommunicationDialogFilter(int32_t exerciseId, TrainingVoiceCommunicationDialogModel *sourceModel);
public:
explicit TrainingVoiceCommunicationDialogFilter(int32_t exerciseId,
TrainingVoiceCommunicationDialogModel* sourceModel);
QByteArray modelToJson() const;
QByteArray modelToJson() const;
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override;
protected:
bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override;
private:
using LtsWidgets::LtsColumnFilterProxyModel::setSourceModel;
private:
using LtsWidgets::LtsColumnFilterProxyModel::setSourceModel;
int32_t m_exerciseId;
TrainingVoiceCommunicationDialogModel *m_sourceModel;
int32_t m_exerciseId;
TrainingVoiceCommunicationDialogModel* m_sourceModel;
};
}
} // namespace AudioVideoManagement
Q_DECLARE_METATYPE(AudioVideoManagement::TvcConfig)