117 lines
3.7 KiB
C++
Executable File
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
|