Files
qt5-legatus-legacy/Lts/Plugins/GuezNasat/Gui/AssignNasat/assign_gna_dialog.cpp
T
2026-08-13 18:33:10 +02:00

117 lines
3.7 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Beschreibung des Dialogs
* $Id$
* $HeadURL$
* $Author$
* Created by Mike Wille, SLSE, 2017-11-01
*/
#include "assign_gna_dialog.h"
#include "ui_assign_gna_dialog.h"
#include <LtsWidgets/lts_dialog.h>
#include <Plugins/GuezNasat/Gui/Common/gna_nasat_aircraft_part_model.h>
namespace GuezNasat
{
AssignGuezNasatPartDialog::AssignGuezNasatPartDialog(int exerciseId, QWidget *parent)
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel)
, m_ftc(nullptr)
, m_nasatAircraftParticipantModel(nullptr)
, m_exerciseId(exerciseId)
, m_ui(new Ui::AssignGuezNasatPartDialog)
, m_requestHelper(new LtsUtils::RequestHelper(this))
, m_logger(getLogger("Dialog"))
{
m_ui->setupUi(this);
}
AssignGuezNasatPartDialog::~AssignGuezNasatPartDialog()
{
delete m_ui;
}
bool AssignGuezNasatPartDialog::init(const std::shared_ptr<GuezNasat::Interface::Ftc> &ftc,
NasatAircraftParticipantModel *nasatAircraftParticipantModel,
const NasatAircraftParticipant &nap)
{
m_ftc = ftc;
m_nasatAircraftParticipantModel = nasatAircraftParticipantModel;
m_nap = nap;
initCmbNasats();
initCmbParticipants();
connect(m_nasatAircraftParticipantModel, &NasatAircraftParticipantModel::signalNasatNamesChanged,
this, &AssignGuezNasatPartDialog::initCmbNasats);
connect(m_nasatAircraftParticipantModel, &NasatAircraftParticipantModel::signalParticipantNamesChanged,
this, &AssignGuezNasatPartDialog::initCmbParticipants);
m_buttonBox->setButtonVisible(LtsWidgets::DialogButton::Apply, false);
setOnlineHelpFilename(QStringLiteral("Administrator-Airplanes"));
if (nap.id() <= 0)
slotChangesMade();
return true;
}
void AssignGuezNasatPartDialog::initCmbNasats()
{
m_ui->cmbNasats->clear();
const auto names(m_nasatAircraftParticipantModel->getNasatNames());
for (auto it = names.begin(); it != names.end(); ++it)
{
if (!m_nasatAircraftParticipantModel->getAssociatedNasatIds().contains(it.key()) || m_nap.nasatAircraftId() == it.key())
m_ui->cmbNasats->addItem(it.value(), it.key());
}
int newIdx = m_ui->cmbNasats->findData(m_nap.nasatAircraftId());
if (newIdx >= 0)
m_ui->cmbNasats->setCurrentIndex(newIdx);
m_ui->cmbNasats->model()->sort(0);
}
void AssignGuezNasatPartDialog::initCmbParticipants()
{
m_ui->cmbParticipants->clear();
const auto hierarchies(m_nasatAircraftParticipantModel->getParticipantHierarchies());
const auto decorations(m_nasatAircraftParticipantModel->getParticipantDecorations());
for (auto it = hierarchies.begin(); it != hierarchies.end(); ++it)
{
if (!m_nasatAircraftParticipantModel->getAssociatedParticipantIds().contains(it.key()) || m_nap.participantId() == it.key())
m_ui->cmbParticipants->addItem(QIcon(decorations.value(it.key())), it.value(), it.key());
}
int newIdx = m_ui->cmbParticipants->findData(m_nap.participantId());
if (newIdx >= 0)
m_ui->cmbParticipants->setCurrentIndex(newIdx);
m_ui->cmbParticipants->model()->sort(0);
}
void AssignGuezNasatPartDialog::retranslate()
{
translate(m_ui, m_nap.id() <= 0 ? tr("Add Assign Aircraft") : tr("Edit Assign Aircraft"));
}
bool AssignGuezNasatPartDialog::apply()
{
INFO_LOG(m_logger) << "AssignGuezNasatPartDialog::apply()";
int32_t participantId = m_ui->cmbParticipants->currentData().toInt();
int32_t nasatAircraftId = m_ui->cmbNasats->currentData().toInt();
const NasatAircraftParticipant req(m_nap.id(), nasatAircraftId, m_exerciseId, participantId);
return m_requestHelper->startSingleRequest([req, this]()
{
return m_ftc->modifyNasatAircraftParticipantRequest(req, this);
});
} // end of apply
} // namespace GuezNasat