221 lines
9.6 KiB
C++
Executable File
221 lines
9.6 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* MeteoDataManagement - Static Meteo Data Edit Dialog
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by hjl, SLSE, 2016-10-17
|
|
*/
|
|
|
|
#include "esc_order_edit.h"
|
|
#include "ui_esc_order_edit.h"
|
|
|
|
#include <EffectShowManagement/esm_translation.h>
|
|
|
|
|
|
namespace EffectShowClient
|
|
{
|
|
//=============================================================================
|
|
OrderEdit::OrderEdit(const Order &order, bool fireReadinessAvailable, QWidget *parent)
|
|
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkCancel)
|
|
, m_ftc(nullptr)
|
|
, m_ui(new Ui::OrderEdit)
|
|
, m_requestHelper(new LtsUtils::RequestHelper(this))
|
|
, m_order(order)
|
|
, m_fireReadinessAvailable(fireReadinessAvailable)
|
|
, m_logger(getLogger("OrderEdit"))
|
|
{
|
|
m_ui->setupUi(this);
|
|
}
|
|
//=============================================================================
|
|
OrderEdit::~OrderEdit()
|
|
{
|
|
delete m_ui;
|
|
}
|
|
//=============================================================================
|
|
bool OrderEdit::init(const std::shared_ptr<EffectShowClient::Interface::Ftc> &ftc, EffectShowManagement::OrderConfirmation_e order)
|
|
{
|
|
DEBUG_LOG(m_logger) << "OrderEdit::init()";
|
|
|
|
if (!ftc)
|
|
{
|
|
ERROR_LOG(m_logger) << "OrderEdit::init() Invalid shared_ptr!";
|
|
return false;
|
|
}
|
|
|
|
m_ftc = ftc;
|
|
|
|
// Set a consistent font size for the comboBox
|
|
QFont cbFont = m_ui->cbOrderConfirmation->font();
|
|
#ifdef TABLET_MODE
|
|
m_ui->cbxAnswer->setMinimumHeight(50);
|
|
cbFont.setPointSizeF(cbFont.pointSizeF()*1.5);
|
|
#endif
|
|
m_ui->cbOrderConfirmation->setFont(cbFont);
|
|
m_ui->cbxAnswer->setFont(cbFont);
|
|
|
|
createOrderList();
|
|
if (order == EffectShowManagement::OrderConfirmation_e::WaitingForAcceptance)
|
|
showOrder();
|
|
else
|
|
{
|
|
m_ui->cbOrderConfirmation->addItem(m_orderList[order.underlying()]);
|
|
m_ui->cbOrderConfirmation->setEnabled(false);
|
|
slotChangesMade();
|
|
setUnchangeable(true);
|
|
}
|
|
|
|
if (m_ui->cbxAnswer->lineEdit())
|
|
{
|
|
m_ui->cbxAnswer->lineEdit()->setFont(cbFont);
|
|
m_ui->cbxAnswer->lineEdit()->setMaxLength(39);
|
|
}
|
|
m_ui->cbxAnswer->addItem(QString());
|
|
m_ui->cbxAnswer->addItem(tr("Remaining time not sufficient"));
|
|
m_ui->cbxAnswer->addItem(tr("Not enough ammunition for order"));
|
|
m_ui->cbxAnswer->addItem(tr("Presentation vehicle has got stuck"));
|
|
m_ui->cbxAnswer->addItem(tr("Commanding a fixed restricted area"));
|
|
m_ui->cbxAnswer->addItem(tr("Command into a variable restricted area"));
|
|
m_ui->cbxAnswer->addItem(tr("Maximum permissible working time exceeded"));
|
|
m_ui->cbxAnswer->addItem(tr("Order executed, no confirmation"));
|
|
|
|
m_uiRequirements->addRequirement({m_ui->lblOrderConfirmation, [this]() { return (m_ui->cbOrderConfirmation->currentIndex() != -1); }});
|
|
m_uiRequirements->addRequirement({m_ui->lblAnswer, [this]() { return checkForAnswerUiRequirement(); }});
|
|
|
|
return true;
|
|
}
|
|
//=============================================================================
|
|
bool OrderEdit::apply()
|
|
{
|
|
// Send modified data via FTC call
|
|
return m_requestHelper->startSingleRequest([this]()
|
|
{
|
|
OrderModifyRequest orderModifyRequest;
|
|
|
|
int key = m_orderList.key(m_ui->cbOrderConfirmation->currentText());
|
|
EffectShowManagement::OrderConfirmation_e oc = EffectShowManagement::OrderConfirmation_e::inner_enum(key);
|
|
orderModifyRequest.orderConfirmation(oc);
|
|
|
|
orderModifyRequest.answerText(m_ui->cbxAnswer->currentText().toStdString());
|
|
|
|
orderModifyRequest.id(m_order.id());
|
|
|
|
return m_ftc->orderModifyRequest(orderModifyRequest, this);
|
|
});
|
|
}
|
|
//-----------------------------------------------------------------------------
|
|
void OrderEdit::retranslate()
|
|
{
|
|
if (m_order.typeOfOrder() == 0)
|
|
translate(m_ui, tr("Edit relocation order"));
|
|
else
|
|
translate(m_ui, tr("Edit Effectshow Order"));
|
|
}
|
|
//-----------------------------------------------------------------------------
|
|
bool OrderEdit::checkForAnswerUiRequirement() const
|
|
{
|
|
if (m_ui->cbOrderConfirmation->currentIndex() == -1)
|
|
return true;
|
|
|
|
int key = m_orderList.key(m_ui->cbOrderConfirmation->currentText());
|
|
return !(((key == EffectShowManagement::OrderConfirmation_e_def::Nonacceptance) ||
|
|
(key == EffectShowManagement::OrderConfirmation_e_def::Abort)) &&
|
|
m_ui->cbxAnswer->currentText().isEmpty());
|
|
}
|
|
//-----------------------------------------------------------------------------
|
|
void OrderEdit::showOrder()
|
|
{
|
|
QStringList orderList;
|
|
|
|
switch (m_order.orderConfirmation().underlying())
|
|
{
|
|
case EffectShowManagement::OrderConfirmation_e_def::WaitingForAcceptance:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::OrderAcceptance]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::DriveOff]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::PositionReached];
|
|
|
|
if (m_order.typeOfOrder() != 0 && m_fireReadinessAvailable)
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::FiringReadiness];
|
|
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Nonacceptance];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::OrderAcceptance:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::DriveOff]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::InterruptRelocation]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::PositionReached];
|
|
|
|
if (m_order.typeOfOrder() != 0 && m_fireReadinessAvailable)
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::FiringReadiness];
|
|
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::DriveOff:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::InterruptRelocation]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::PositionReached];
|
|
|
|
if (m_order.typeOfOrder() != 0 && m_fireReadinessAvailable)
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::FiringReadiness];
|
|
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::PositionReached:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::InterruptRelocation];
|
|
if (m_fireReadinessAvailable)
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::FiringReadiness];
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::FiringReadiness:
|
|
// orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::InterruptExecution]
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::Execution:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::InterruptRelocation:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::DriveOff]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::PositionReached];
|
|
if (m_order.typeOfOrder() != 0 && m_fireReadinessAvailable)
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::FiringReadiness];
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
case EffectShowManagement::OrderConfirmation_e_def::InterruptExecution:
|
|
//orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::FiringReadiness]
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::OrderCarriedOut]
|
|
<< m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
default:
|
|
orderList << m_orderList[EffectShowManagement::OrderConfirmation_e_def::Abort];
|
|
break;
|
|
}
|
|
m_ui->cbOrderConfirmation->addItems(orderList);
|
|
m_ui->cbOrderConfirmation->setCurrentIndex(-1);
|
|
}
|
|
//-----------------------------------------------------------------------------
|
|
void OrderEdit::createOrderList()
|
|
{
|
|
EffectShowManagement::OrderConfirmation_e oc = EffectShowManagement::OrderConfirmation_e_def::WaitingForAcceptance;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::OrderAcceptance;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::DriveOff;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::PositionReached;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::FiringReadiness;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::Execution;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::InterruptExecution;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::OrderCarriedOut;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::Abort;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::Nonacceptance;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
oc = EffectShowManagement::OrderConfirmation_e_def::InterruptRelocation;
|
|
m_orderList[oc.underlying()] = EffectShowManagement::toString(oc);
|
|
}
|
|
|
|
} // namespace EffectShowClient
|