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
+44
-44
@@ -8,16 +8,16 @@
|
||||
#include <ChargeEffect/aes_charge_effect_gui_plugin_interface.h>
|
||||
#include <LtsCoordTrans/lts_coord_trans.h>
|
||||
#include <PluginInterfaces/gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/BCContamination/aes_bccontamination_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/Borderline/aes_borderline_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/DangerArea/aes_danger_area_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/Explosion/aes_explosion_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/FunctionalArea/aes_functional_area_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/GasPipe/aes_gas_pipe_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/MineArea/aes_mine_area_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/MineCorridor/aes_mine_corridor_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/MineSingleVirtual/aes_mine_single_virtual_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/NContamination/aes_ncontamination_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/BCContamination/aes_bccontamination_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Borderline/aes_borderline_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/DangerArea/aes_danger_area_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Explosion/aes_explosion_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/FunctionalArea/aes_functional_area_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/GasPipe/aes_gas_pipe_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/MineArea/aes_mine_area_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/MineCorridor/aes_mine_corridor_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/MineSingleVirtual/aes_mine_single_virtual_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/NContamination/aes_ncontamination_gui_plugin_interface.h>
|
||||
#include <SituationMapPlugin/situation_map_gui_plugin_interface.h>
|
||||
#include <ngltools/ngltools_dtg.h>
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace AreaEffectSimulation
|
||||
|
||||
AesChargeEffectItemInfo::AesChargeEffectItemInfo(int chargeEffectId, QWidget* parent)
|
||||
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_session(nullptr),
|
||||
m_ChargeEffectId(chargeEffectId), m_ui(new Ui::AesChargeEffectItemInfo)
|
||||
m_ChargeEffectId(chargeEffectId), m_ui(new Ui::AesChargeEffectItemInfo), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
@@ -77,8 +77,8 @@ bool AesChargeEffectItemInfo::init(LtsSession::LtsSession* session)
|
||||
m_ui->lblOriginatorType->hide();
|
||||
#endif
|
||||
|
||||
m_ui->lblOriginatorId->setText(QString::number(data.originatorId()));
|
||||
m_ui->lblOriginatorType->setText(QString::number(data.originatorTypeId().underlying()));
|
||||
m_ui->lblOriginatorId->setText(QString::number(data.originatorId));
|
||||
m_ui->lblOriginatorType->setText(QString::number(static_cast<int>(data.originatorTypeId)));
|
||||
|
||||
setOnlineHelpFilename(QStringLiteral("Info_Dialog-Charge_Effect"));
|
||||
|
||||
@@ -93,7 +93,7 @@ bool AesChargeEffectItemInfo::init(LtsSession::LtsSession* session)
|
||||
void AesChargeEffectItemInfo::retranslate()
|
||||
{
|
||||
const ChargeEffect item = m_aesDtc->chargeEffect(m_ChargeEffectId);
|
||||
translate(m_ui, tr("ChargeEffect: \"%1\"").arg(QString::fromStdString(item.name()), 1, QLatin1Char('?')));
|
||||
translate(m_ui, tr("ChargeEffect: \"%1\"").arg(QString::fromStdString(item.name), 1, QLatin1Char('?')));
|
||||
}
|
||||
|
||||
void AesChargeEffectItemInfo::onFindOnMap() const
|
||||
@@ -111,7 +111,7 @@ template <typename InterfaceType> bool AesChargeEffectItemInfo::tryShowStandardE
|
||||
std::shared_ptr<InterfaceType> ifc;
|
||||
if (m_session->getForeignGuiInterface<InterfaceType>(ifc))
|
||||
{
|
||||
AreaEffectSimulation::BaseEdit* dialog = ifc->showEditWindow(aiv.aesItemId(), this);
|
||||
AreaEffectSimulation::BaseEdit* dialog = ifc->showEditWindow(aiv.aesItemId, this);
|
||||
if (dialog)
|
||||
{
|
||||
addDialog(dialog, dialog->menuGroup(), dialog->dialogIdentifier(), LtsWidgets::LayoutArea::eDialogTab);
|
||||
@@ -129,11 +129,11 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
|
||||
const ChargeEffect item = m_aesDtc->chargeEffect(m_ChargeEffectId);
|
||||
|
||||
if (item.originatorTypeId() == ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation)
|
||||
if (item.originatorTypeId == ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation)
|
||||
{
|
||||
AesItemView aiv;
|
||||
m_aesDtc->aesItemViewFromEntityId(item.originatorId(), AreaEffectSimulation::AesType::AtUnknown, aiv);
|
||||
DEBUG_LOG(m_logger) << "aiv.id():" << aiv.id() << ", aesType: " << aiv.aesTypeId();
|
||||
m_aesDtc->aesItemViewFromEntityId(item.originatorId, AreaEffectSimulation::AesType::AtUnknown, aiv);
|
||||
DEBUG_LOG(m_logger) << "aiv.id():" << aiv.id << ", aesType: " << aiv.aesTypeId;
|
||||
|
||||
auto registerDialog = [this](AreaEffectSimulation::BaseEdit* dialog) {
|
||||
if (dialog)
|
||||
@@ -142,7 +142,7 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
}
|
||||
};
|
||||
|
||||
switch (aiv.aesTypeId().underlying())
|
||||
switch (aiv.aesTypeId)
|
||||
{
|
||||
case AreaEffectSimulation::AesType::AtNContamination: {
|
||||
tryShowStandardEditDialog<AesNContamination::ForeignGuiInterface>(aiv);
|
||||
@@ -179,11 +179,11 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
std::shared_ptr<AesBCContamination::ForeignGuiInterface> ifc;
|
||||
if (m_session->getForeignGuiInterface<AesBCContamination::ForeignGuiInterface>(ifc))
|
||||
{
|
||||
const auto gearClass = m_pdmDtc->gearClassFromChargeTypeId(aiv.chargeStruct().chargeTypeId());
|
||||
if (gearClass == ProjectDataManagement::GearClass::Biological)
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId(), false, this));
|
||||
else if (gearClass == ProjectDataManagement::GearClass::Chemical)
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId(), true, this));
|
||||
const auto gearClass = m_pdmDtc->gearClassFromChargeTypeId(aiv.chargeStruct.chargeTypeId);
|
||||
if (gearClass == ProjectDataManagement::GearClass::GearClass_Biological)
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId, false, this));
|
||||
else if (gearClass == ProjectDataManagement::GearClass::GearClass_Chemical)
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId, true, this));
|
||||
}
|
||||
else
|
||||
WARNING_LOG(m_logger)
|
||||
@@ -194,7 +194,7 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
case AreaEffectSimulation::AesType::AtBoobyTrapSecondary: {
|
||||
std::shared_ptr<AesMineSingleVirtual::ForeignGuiInterface> ifc;
|
||||
if (m_session->getForeignGuiInterface<AesMineSingleVirtual::ForeignGuiInterface>(ifc))
|
||||
registerDialog(ifc->showBoobyTrapEditWindow(aiv.aesItemId(), this));
|
||||
registerDialog(ifc->showBoobyTrapEditWindow(aiv.aesItemId, this));
|
||||
else
|
||||
WARNING_LOG(m_logger)
|
||||
<< Q_FUNC_INFO << " getForeignGuiInterface<AesMineSingleVirtual::ForeignGuiInterface> failed!";
|
||||
@@ -204,7 +204,7 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
case AreaEffectSimulation::AesType::AtOffRouteMineSecondary: {
|
||||
std::shared_ptr<AesMineSingleVirtual::ForeignGuiInterface> ifc;
|
||||
if (m_session->getForeignGuiInterface<AesMineSingleVirtual::ForeignGuiInterface>(ifc))
|
||||
registerDialog(ifc->showOffRouteMineEditWindow(aiv.aesItemId(), this));
|
||||
registerDialog(ifc->showOffRouteMineEditWindow(aiv.aesItemId, this));
|
||||
else
|
||||
WARNING_LOG(m_logger)
|
||||
<< Q_FUNC_INFO << " getForeignGuiInterface<AesMineSingleVirtual::ForeignGuiInterface> failed!";
|
||||
@@ -216,8 +216,8 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
if (m_session->getForeignGuiInterface<AesExplosion::ForeignGuiInterface>(ifc))
|
||||
{
|
||||
const bool isExplosionSingle =
|
||||
(aiv.aesTypeId().underlying() == AreaEffectSimulation::AesType::AtExplosionSingle);
|
||||
const auto gearClass = m_pdmDtc->gearClassFromChargeTypeId(aiv.chargeStruct().chargeTypeId());
|
||||
(aiv.aesTypeId == AreaEffectSimulation::AesType::AtExplosionSingle);
|
||||
const auto gearClass = m_pdmDtc->gearClassFromChargeTypeId(aiv.chargeStruct.chargeTypeId);
|
||||
|
||||
for (auto gc :
|
||||
{ProjectDataManagement::GearClass::GearClass_Artillery, ProjectDataManagement::GearClass::GearClass_Mortar,
|
||||
@@ -228,7 +228,7 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
|
||||
if (gearClass == gc)
|
||||
{
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId(), isExplosionSingle, false, gc, this));
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId, isExplosionSingle, false, gc, this));
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -246,8 +246,8 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
{
|
||||
|
||||
AesItem ai;
|
||||
m_aesDtc->aesItemFromId(aiv.aesItemId(), ai);
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId(), ai.effectSourceId(), this));
|
||||
m_aesDtc->aesItemFromId(aiv.aesItemId, ai);
|
||||
registerDialog(ifc->showEditWindow(aiv.aesItemId, ai.effectSourceId, this));
|
||||
}
|
||||
else
|
||||
WARNING_LOG(m_logger)
|
||||
@@ -274,7 +274,7 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
break;
|
||||
case AreaEffectSimulation::AesType::AtUnknown:
|
||||
Q_ASSERT(false);
|
||||
WARNING_LOG(m_logger) << "Unknown AesType found for aesEntityId: " << aiv.aesTypeId();
|
||||
WARNING_LOG(m_logger) << "Unknown AesType found for aesEntityId: " << aiv.aesTypeId;
|
||||
break;
|
||||
default:
|
||||
DEBUG_LOG(m_logger) << "Couldn't find AesItem to ChargeEffect (any more). Hiding the button";
|
||||
@@ -298,33 +298,33 @@ void AesChargeEffectItemInfo::onShowDetails()
|
||||
|
||||
void AesChargeEffectItemInfo::onChargeEffectChanged(const ChargeEffect& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << " [onChargeEffectChanged] id: " << data.id();
|
||||
if (data.id() == m_ChargeEffectId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << " [onChargeEffectChanged] id: " << data.id;
|
||||
if (data.id == m_ChargeEffectId && modType != DataModification::eRemoved)
|
||||
handleChargeEffect(data);
|
||||
}
|
||||
|
||||
void AesChargeEffectItemInfo::handleChargeEffect(const ChargeEffect& data)
|
||||
{
|
||||
|
||||
m_ui->lblChargeEffectName->setText(QString::fromStdString(data.name()));
|
||||
m_ui->lblChargeEffectName->setText(QString::fromStdString(data.name));
|
||||
|
||||
m_ui->lblEffectStart->setText(DTG::toStringMSec(data.effectStart()));
|
||||
m_ui->lblEffectStart->setText(DTG::toStringMSec(data.effectStart));
|
||||
|
||||
m_ui->lblEffectDuration->setVisible(data.effectDuration() > 0);
|
||||
m_ui->lbxEffectDuration->setVisible(data.effectDuration() > 0);
|
||||
m_ui->lblEffectDuration->setVisible(data.effectDuration > 0);
|
||||
m_ui->lbxEffectDuration->setVisible(data.effectDuration > 0);
|
||||
|
||||
m_ui->lblEffectDuration->setText(LtsWidgets::readableDuration(data.effectDuration()));
|
||||
m_ui->lblEffectDuration->setText(LtsWidgets::readableDuration(data.effectDuration));
|
||||
|
||||
AreaEffectSimulation::AesEffectState st = data.state();
|
||||
AreaEffectSimulation::AesEffectState st = data.state;
|
||||
m_ui->lblStatus->setText(AreaEffectSimulation::toString(st));
|
||||
|
||||
m_ui->lblChargeTypeId->setText(QString::number(data.chargeTypeId()));
|
||||
m_ui->lblChargeTypeId->setText(QString::number(data.chargeTypeId));
|
||||
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(data.chargeTypeId()));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(data.chargeTypeId()));
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(data.chargeTypeId));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(data.chargeTypeId));
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.position().lon(), data.position().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.position.lon, data.position.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -18,7 +18,7 @@ namespace AreaEffectSimulation
|
||||
|
||||
DangerAreaAesItemInfo::DangerAreaAesItemInfo(QWidget* parent)
|
||||
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_dtc(nullptr), m_session(nullptr),
|
||||
m_ui(new Ui::DangerAreaAesItemInfo), m_aesItemId(-1)
|
||||
m_ui(new Ui::DangerAreaAesItemInfo), m_aesItemId(-1), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
}
|
||||
@@ -34,35 +34,35 @@ void DangerAreaAesItemInfo::retranslate()
|
||||
{
|
||||
|
||||
std::unique_ptr<AesItem> item(new BCContamination(m_dtc->bCContamination(m_aesItemId)));
|
||||
if (item->id() > 0)
|
||||
if (item->id > 0)
|
||||
{
|
||||
translate(m_ui, m_dtc->bCContamination(m_aesItemId), tr("B/C-Contamination"));
|
||||
return;
|
||||
}
|
||||
|
||||
item.reset(new NContamination(m_dtc->nContamination(m_aesItemId)));
|
||||
if (item->id() > 0)
|
||||
if (item->id > 0)
|
||||
{
|
||||
translate(m_ui, m_dtc->nContamination(m_aesItemId), tr("N-Contamination"));
|
||||
return;
|
||||
}
|
||||
|
||||
item.reset(new ExplosionArea(m_dtc->explosionArea(m_aesItemId)));
|
||||
if (item->id() > 0)
|
||||
if (item->id > 0)
|
||||
{
|
||||
translate(m_ui, m_dtc->explosionArea(m_aesItemId), tr("Explosion Area"));
|
||||
return;
|
||||
}
|
||||
|
||||
item.reset(new ExplosionSingle(m_dtc->explosionSingle(m_aesItemId)));
|
||||
if (item->id() > 0)
|
||||
if (item->id > 0)
|
||||
{
|
||||
translate(m_ui, m_dtc->explosionSingle(m_aesItemId), tr("Single Explosion"));
|
||||
return;
|
||||
}
|
||||
|
||||
item.reset(new MineArea(m_dtc->mineArea(m_aesItemId)));
|
||||
if (item->id() > 0)
|
||||
if (item->id > 0)
|
||||
{
|
||||
translate(m_ui, m_dtc->mineArea(m_aesItemId), tr("Mine Area"));
|
||||
return;
|
||||
@@ -114,7 +114,7 @@ void DangerAreaAesItemInfo::insertAesItem(int aesItemId)
|
||||
{
|
||||
AesItem* item;
|
||||
item = new BCContamination(m_dtc->bCContamination(aesItemId));
|
||||
if (item->id() > 0)
|
||||
if (item->id > 0)
|
||||
{
|
||||
m_aesItems.insert(aesItemId, AesStruct(AesType::AtBCContamination, item));
|
||||
return;
|
||||
@@ -131,7 +131,7 @@ void DangerAreaAesItemInfo::setText()
|
||||
|
||||
for (const AesStruct& aesStruct : std::as_const(m_aesItems))
|
||||
{
|
||||
if (aesStruct.item->effectStateId() == AreaEffectSimulation::AesEffectState::EsActivated)
|
||||
if (aesStruct.item->effectStateId == AreaEffectSimulation::AesEffectState::EsActivated)
|
||||
aesItemInfo(aesStruct.item);
|
||||
}
|
||||
}
|
||||
|
||||
+154
-154
@@ -11,18 +11,18 @@
|
||||
#include <LtsSession/lts_session_data.h>
|
||||
#include <LtsUtilsSettings/settings.h>
|
||||
#include <PluginInterfaces/gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/BCContamination/aes_bccontamination_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <AreaEffectSimulation/Borderline/aes_borderline_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/DangerArea/aes_danger_area_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/Explosion/aes_explosion_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/FunctionalArea/aes_functional_area_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/GasPipe/aes_gas_pipe_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/MineArea/aes_mine_area_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/MineCorridor/aes_mine_corridor_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/MineSingleVirtual/aes_mine_single_virtual_gui_plugin_interface.h>
|
||||
#include <AreaEffectSimulation/NContamination/aes_ncontamination_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/BCContamination/aes_bccontamination_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Borderline/aes_borderline_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/DangerArea/aes_danger_area_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Explosion/aes_explosion_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/FunctionalArea/aes_functional_area_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/GasPipe/aes_gas_pipe_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/MineArea/aes_mine_area_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/MineCorridor/aes_mine_corridor_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/MineSingleVirtual/aes_mine_single_virtual_gui_plugin_interface.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/NContamination/aes_ncontamination_gui_plugin_interface.h>
|
||||
#include <SituationMapPlugin/situation_map_gui_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm.hpp>
|
||||
#include <ProjectDataManagement/pdm_translation.h>
|
||||
@@ -34,7 +34,7 @@ AesInfoDialog::AesInfoDialog(int aesEntityId, AesType aesType, QWidget* parent)
|
||||
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_aesEntityId(aesEntityId),
|
||||
m_aesType(aesType), m_bcChargeTypeId(-1), m_singleExpChargeTypeId(-1), m_areaExpChargeTypeId(-1),
|
||||
m_session(nullptr), m_dtc(nullptr), m_ftc(nullptr), m_pdmDtc(nullptr), m_ui(new Ui::AesInfoDialog),
|
||||
m_requestHelper(new LtsUtils::RequestHelper(this))
|
||||
m_requestHelper(new LtsUtils::RequestHelper(this)), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "ctor AesInfoDialog() ";
|
||||
m_ui->setupUi(this);
|
||||
@@ -64,18 +64,18 @@ void AesInfoDialog::retranslate()
|
||||
|
||||
bool AesInfoDialog::cbFunc(const AreaEffectSimulation::AesItemView& aesItemView)
|
||||
{
|
||||
if (aesItemView.aesItemId() != m_aesEntityId)
|
||||
if (aesItemView.aesItemId != m_aesEntityId)
|
||||
return false;
|
||||
|
||||
DEBUG_LOG(m_logger) << "AesItemView found for aesEntityId: " << m_aesEntityId
|
||||
<< " AesItemView.aesTypeId(): " << aesItemView.aesTypeId();
|
||||
<< " AesItemView.aesTypeId(): " << aesItemView.aesTypeId;
|
||||
|
||||
if (aesItemView.aesTypeId() != m_aesType)
|
||||
if (aesItemView.aesTypeId != m_aesType)
|
||||
{
|
||||
|
||||
return false;
|
||||
}
|
||||
switch (aesItemView.aesTypeId().underlying())
|
||||
switch (aesItemView.aesTypeId)
|
||||
{
|
||||
case AreaEffectSimulation::AesType::AtNContamination: {
|
||||
handleNContamination(aesItemView);
|
||||
@@ -245,7 +245,7 @@ bool AesInfoDialog::cbFunc(const AreaEffectSimulation::AesItemView& aesItemView)
|
||||
break;
|
||||
case AreaEffectSimulation::AesType::AtUnknown:
|
||||
WARNING_LOG(m_logger) << "Unknown AesType found for aesEntityId " << m_aesEntityId << ": "
|
||||
<< aesItemView.aesTypeId();
|
||||
<< aesItemView.aesTypeId;
|
||||
Q_ASSERT(false);
|
||||
break;
|
||||
}
|
||||
@@ -311,7 +311,7 @@ bool AesInfoDialog::init(LtsSession::LtsSession* session, const std::shared_ptr<
|
||||
void AesInfoDialog::handleNContamination(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
|
||||
handleNContamination(m_dtc->nContamination(m_aesEntityId));
|
||||
}
|
||||
@@ -319,19 +319,19 @@ void AesInfoDialog::handleNContamination(const AesItemView& aesItemView)
|
||||
void AesInfoDialog::handleNContamination(const AreaEffectSimulation::NContamination& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::NContamination)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtNContamination);
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition().lon(), data.impactPosition().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition.lon, data.impactPosition.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleBCContamination(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
|
||||
handleBCContamination(m_dtc->bCContamination(m_aesEntityId));
|
||||
}
|
||||
@@ -339,21 +339,21 @@ void AesInfoDialog::handleBCContamination(const AesItemView& aesItemView)
|
||||
void AesInfoDialog::handleBCContamination(const AreaEffectSimulation::BCContamination& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::BCContamination)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtBCContamination);
|
||||
|
||||
m_bcChargeTypeId = data.chargeStruct().chargeTypeId();
|
||||
m_bcChargeTypeId = data.chargeStruct.chargeTypeId;
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition().lon(), data.impactPosition().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition.lon, data.impactPosition.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleBoobyTrap(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
|
||||
handleBoobyTrap(m_dtc->boobyTrap(m_aesEntityId));
|
||||
}
|
||||
@@ -361,11 +361,11 @@ void AesInfoDialog::handleBoobyTrap(const AesItemView& aesItemView)
|
||||
void AesInfoDialog::handleBoobyTrap(const AreaEffectSimulation::BoobyTrap& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::BoobyTrap)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtBoobyTrap);
|
||||
|
||||
m_bcChargeTypeId = data.chargeStruct().chargeTypeId();
|
||||
m_bcChargeTypeId = data.chargeStruct.chargeTypeId;
|
||||
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(m_bcChargeTypeId, true));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(m_bcChargeTypeId, true));
|
||||
@@ -373,14 +373,14 @@ void AesInfoDialog::handleBoobyTrap(const AreaEffectSimulation::BoobyTrap& data)
|
||||
m_ui->lblChargeTypeId->setText(QString::number(m_bcChargeTypeId));
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition().lon(), data.impactPosition().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition.lon, data.impactPosition.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleOffRouteMine(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
|
||||
handleOffRouteMine(m_dtc->offRouteMine(m_aesEntityId));
|
||||
}
|
||||
@@ -388,11 +388,11 @@ void AesInfoDialog::handleOffRouteMine(const AesItemView& aesItemView)
|
||||
void AesInfoDialog::handleOffRouteMine(const AreaEffectSimulation::OffRouteMine& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::OffRouteMine)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtOffRouteMine);
|
||||
|
||||
m_bcChargeTypeId = data.chargeStruct().chargeTypeId();
|
||||
m_bcChargeTypeId = data.chargeStruct.chargeTypeId;
|
||||
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(m_bcChargeTypeId, true));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(m_bcChargeTypeId, true));
|
||||
@@ -401,14 +401,14 @@ void AesInfoDialog::handleOffRouteMine(const AreaEffectSimulation::OffRouteMine&
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs =
|
||||
LtsCoordTrans::mgrsFromGeographic(data.area().cornerBottomLeft().lon(), data.area().cornerBottomLeft().lat());
|
||||
LtsCoordTrans::mgrsFromGeographic(data.area.cornerBottomLeft.lon, data.area.cornerBottomLeft.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleExplosionArea(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
|
||||
handleExplosionArea(m_dtc->explosionArea(m_aesEntityId));
|
||||
}
|
||||
@@ -416,19 +416,19 @@ void AesInfoDialog::handleExplosionArea(const AesItemView& aesItemView)
|
||||
void AesInfoDialog::handleExplosionArea(const AreaEffectSimulation::ExplosionArea& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::ExplosionArea)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtExplosionArea);
|
||||
|
||||
m_areaExpChargeTypeId = data.chargeStruct().chargeTypeId();
|
||||
m_areaExpChargeTypeId = data.chargeStruct.chargeTypeId;
|
||||
|
||||
const Area& area = data.area();
|
||||
if (!qFuzzyCompare(area.cornerBottomLeft().lon(), 0) || !qFuzzyCompare(area.cornerBottomLeft().lat(), 0))
|
||||
const Area& area = data.area;
|
||||
if (!qFuzzyCompare(area.cornerBottomLeft.lon, 0) || !qFuzzyCompare(area.cornerBottomLeft.lat, 0))
|
||||
{
|
||||
m_ui->lblPosition->show();
|
||||
QPointF bottomLeft(area.cornerBottomLeft().lon(), area.cornerBottomLeft().lat());
|
||||
QPointF bottomLeft(area.cornerBottomLeft.lon, area.cornerBottomLeft.lat);
|
||||
const QPointF& center =
|
||||
Polygons::bottomLeft2CenterPoint(bottomLeft, area.width(), area.height(), area.rotation());
|
||||
Polygons::bottomLeft2CenterPoint(bottomLeft, area.width, area.height, area.rotation);
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(center.x(), center.y());
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
@@ -437,66 +437,66 @@ void AesInfoDialog::handleExplosionArea(const AreaEffectSimulation::ExplosionAre
|
||||
void AesInfoDialog::handleExplosionSingle(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleExplosionSingle(m_dtc->explosionSingle(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleExplosionSingle(const AreaEffectSimulation::ExplosionSingle& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::ExplosionSingle)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtExplosionSingle);
|
||||
|
||||
m_singleExpChargeTypeId = data.chargeStruct().chargeTypeId();
|
||||
m_singleExpChargeTypeId = data.chargeStruct.chargeTypeId;
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition().lon(), data.impactPosition().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition.lon, data.impactPosition.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleMineArea(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleMineArea(m_dtc->mineArea(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleMineArea(const AreaEffectSimulation::MineArea& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::MineArea)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtMineArea);
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.boundingRectCorner().lon(), data.boundingRectCorner().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.boundingRectCorner.lon, data.boundingRectCorner.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
|
||||
bool bResetVisbile =
|
||||
(data.isDus() || data.isConcrete()) &&
|
||||
(data.isDus || data.isConcrete) &&
|
||||
|
||||
LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::MineAreasResetDusMines) &&
|
||||
((m_session->app() == LtsAppDescriptor::App::Situation ||
|
||||
m_session->app() == LtsAppDescriptor::App::SituationTablet) &&
|
||||
(!m_session->isReplayPartition()));
|
||||
m_ui->pbResetDusMines->setVisible(bResetVisbile);
|
||||
m_mineIsReactivatable = data.isReactivatable();
|
||||
m_ui->pbResetDusMines->setToolTip(data.isDus() ? tr("Reset DUS Mines matched to this Minearea")
|
||||
m_mineIsReactivatable = data.isReactivatable;
|
||||
m_ui->pbResetDusMines->setToolTip(data.isDus ? tr("Reset DUS Mines matched to this Minearea")
|
||||
: tr("Reset Concrete Mines matched to this Minearea"));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleMineCorridor(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleMineCorridor(m_dtc->mineCorridor(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleMineCorridor(const AreaEffectSimulation::MineCorridor& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::MineArea)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtMineCorridor);
|
||||
|
||||
@@ -510,14 +510,14 @@ void AesInfoDialog::handleMineCorridor(const AreaEffectSimulation::MineCorridor&
|
||||
void AesInfoDialog::handleGasPipe(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " handleGasPipe: aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " handleGasPipe: aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleGasPipe(m_dtc->gasPipe(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleGasPipe(const AreaEffectSimulation::GasPipe& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::GasPipe)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtGasPipe);
|
||||
|
||||
@@ -531,23 +531,23 @@ void AesInfoDialog::handleGasPipe(const AreaEffectSimulation::GasPipe& data)
|
||||
void AesInfoDialog::handleDangerArea(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleDangerArea(m_dtc->dangerArea(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleDangerArea(const AreaEffectSimulation::DangerArea& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::DangerArea)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtDangerArea);
|
||||
|
||||
const auto& qv = data.segments();
|
||||
const auto& qv = data.segments;
|
||||
if (qv.size() > 0)
|
||||
{
|
||||
m_ui->lblPosition->show();
|
||||
const Core::GeoPosition2D& pos = qv.at(0);
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(pos.lon(), pos.lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(pos.lon, pos.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
|
||||
@@ -558,23 +558,23 @@ void AesInfoDialog::handleDangerArea(const AreaEffectSimulation::DangerArea& dat
|
||||
void AesInfoDialog::handleBorderline(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleBorderline(m_dtc->borderline(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleBorderline(const AreaEffectSimulation::Borderline& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::Borderline)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtBorderline);
|
||||
|
||||
const auto& qv = data.segments();
|
||||
const auto& qv = data.segments;
|
||||
if (qv.size() > 0)
|
||||
{
|
||||
m_ui->lblPosition->show();
|
||||
const Core::GeoPosition2D& pos = qv.at(0);
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(pos.lon(), pos.lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(pos.lon, pos.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
}
|
||||
@@ -582,30 +582,30 @@ void AesInfoDialog::handleBorderline(const AreaEffectSimulation::Borderline& dat
|
||||
void AesInfoDialog::handleFunctionalArea(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleFunctionalArea(m_dtc->functionalArea(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleFunctionalArea(const FunctionalArea& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::FunctionalArea)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtFunctionalArea);
|
||||
|
||||
QStringList chargeTypesNames;
|
||||
QStringList chargeTypesShortNames;
|
||||
if (data.medicMode() != AesOperatingMode::OmNotUsed)
|
||||
if (data.medicMode != AesOperatingMode::OmNotUsed)
|
||||
{
|
||||
chargeTypesNames << m_pdmDtc->trChargeTypeName(411, true);
|
||||
chargeTypesShortNames << m_pdmDtc->trChargeTypeShortName(411, true);
|
||||
}
|
||||
if (data.maintMode() != AesOperatingMode::OmNotUsed)
|
||||
if (data.maintMode != AesOperatingMode::OmNotUsed)
|
||||
{
|
||||
chargeTypesNames << m_pdmDtc->trChargeTypeName(412, true);
|
||||
chargeTypesShortNames << m_pdmDtc->trChargeTypeShortName(412, true);
|
||||
}
|
||||
if (data.deconMode() != AesOperatingMode::OmNotUsed)
|
||||
if (data.deconMode != AesOperatingMode::OmNotUsed)
|
||||
{
|
||||
chargeTypesNames << m_pdmDtc->trChargeTypeName(413, true);
|
||||
chargeTypesShortNames << m_pdmDtc->trChargeTypeShortName(413, true);
|
||||
@@ -614,9 +614,9 @@ void AesInfoDialog::handleFunctionalArea(const FunctionalArea& data)
|
||||
m_ui->lblChargeType->setToolTip(chargeTypesShortNames.join(QLatin1String(", ")));
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
const QPointF bottomLeft(data.area().cornerBottomLeft().lon(), data.area().cornerBottomLeft().lat());
|
||||
const QPointF bottomLeft(data.area.cornerBottomLeft.lon, data.area.cornerBottomLeft.lat);
|
||||
const QPointF centerpoint =
|
||||
Polygons::bottomLeft2CenterPoint(bottomLeft, data.area().width(), data.area().height(), 0.0);
|
||||
Polygons::bottomLeft2CenterPoint(bottomLeft, data.area.width, data.area.height, 0.0);
|
||||
const QString mgrs = LtsCoordTrans::mgrsFromGeographic(centerpoint.x(), centerpoint.y());
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
}
|
||||
@@ -624,25 +624,25 @@ void AesInfoDialog::handleFunctionalArea(const FunctionalArea& data)
|
||||
void AesInfoDialog::handleAirSupportImpact(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleAirSupportImpact(m_dtc->airSupportImpact(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleAirSupportImpact(const AirSupportImpact& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::FunctionalArea)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtAirSupportImpact);
|
||||
|
||||
m_ui->lblPosition->show();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition().lon(), data.impactPosition().lat());
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(data.impactPosition.lon, data.impactPosition.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
|
||||
m_ui->lbFlightTime->show();
|
||||
m_ui->lblFlightTime->show();
|
||||
|
||||
m_ui->lblFlightTime->setText(LtsWidgets::readableDuration(data.flightTime()));
|
||||
m_ui->lblFlightTime->setText(LtsWidgets::readableDuration(data.flightTime));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleMineAraeSingleMine()
|
||||
@@ -651,14 +651,14 @@ void AesInfoDialog::handleMineAraeSingleMine()
|
||||
if (!m_dtc->aesItemViewFromEntityId(0, m_aesType, itemView))
|
||||
return;
|
||||
const DusMineState dms = m_dtc->dusMineState(0);
|
||||
for (size_t i = 0; i < dms.mines().size(); ++i)
|
||||
for (size_t i = 0; i < dms.mines.size(); ++i)
|
||||
{
|
||||
const DusMine& mine = dms.mines().at(i);
|
||||
if (mine.eqId() == m_aesEntityId)
|
||||
const DusMine& mine = dms.mines.at(i);
|
||||
if (mine.eqId == m_aesEntityId)
|
||||
{
|
||||
if (itemView.form().size() <= i)
|
||||
if (itemView.form.size() <= i)
|
||||
return;
|
||||
handleMineAraeSingleMine(itemView.form().at(i), mine);
|
||||
handleMineAraeSingleMine(itemView.form.at(i), mine);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -679,12 +679,12 @@ void AesInfoDialog::handleMineAraeSingleMine(const Core::GeoPosition2D& position
|
||||
m_ui->lblAesDuration->hide();
|
||||
m_ui->pbDetails->hide();
|
||||
|
||||
m_aesEntityName = QString::number(mine.eqId());
|
||||
m_aesEntityName = QString::number(mine.eqId);
|
||||
|
||||
m_ui->lblAesTypeId->setText(QString::number(m_aesType.underlying()));
|
||||
m_ui->lblAesTypeId->setText(QString::number(static_cast<int>(m_aesType)));
|
||||
m_ui->lblAesType->setText(toString(m_aesType));
|
||||
|
||||
const int ctId = mine.chargeTypeId();
|
||||
const int ctId = mine.chargeTypeId;
|
||||
if (ctId != 0)
|
||||
{
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(ctId, true));
|
||||
@@ -699,11 +699,11 @@ void AesInfoDialog::handleMineAraeSingleMine(const Core::GeoPosition2D& position
|
||||
else
|
||||
m_ui->lbAesId->setText(tr("Mine Id:"));
|
||||
|
||||
m_ui->lblAesId->setText(QString::number(mine.eqId()));
|
||||
m_ui->lblAesId->setText(QString::number(mine.eqId));
|
||||
|
||||
bool bResetVisible = false;
|
||||
|
||||
if (mine.triggered() && isDus)
|
||||
if (mine.triggered && isDus)
|
||||
{
|
||||
m_ui->lblStatus->setText(tr("Inactive"));
|
||||
if (LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::MineAreasResetDusMines)
|
||||
@@ -723,7 +723,7 @@ void AesInfoDialog::handleMineAraeSingleMine(const Core::GeoPosition2D& position
|
||||
m_ui->pbResetDusMines->setToolTip(isDus ? tr("Reset DUS Mines matched to this Minearea")
|
||||
: tr("Reset Concrete Mines matched to this Minearea"));
|
||||
|
||||
const QString mgrs = LtsCoordTrans::mgrsFromGeographic(position.lon(), position.lat());
|
||||
const QString mgrs = LtsCoordTrans::mgrsFromGeographic(position.lon, position.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
m_ui->lblPosition->show();
|
||||
|
||||
@@ -747,21 +747,21 @@ void AesInfoDialog::handleSingleDusMine()
|
||||
m_ui->lblAesDuration->hide();
|
||||
m_ui->pbDetails->hide();
|
||||
|
||||
m_aesEntityName = QString::number(dsm.id());
|
||||
m_aesEntityName = QString::number(dsm.id);
|
||||
|
||||
m_ui->lblAesTypeId->setText(QString::number(m_aesType.underlying()));
|
||||
m_ui->lblAesTypeId->setText(QString::number(static_cast<int>(m_aesType)));
|
||||
m_ui->lblAesType->setText(toString(m_aesType));
|
||||
|
||||
const int ctId = dsm.chargeStruct().chargeTypeId();
|
||||
const int ctId = dsm.chargeStruct.chargeTypeId;
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(ctId));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(ctId));
|
||||
m_ui->lblChargeType->show();
|
||||
m_ui->lblChargeTypeId->setText(QString::number(ctId));
|
||||
|
||||
m_ui->lbAesId->setText(tr("DUS Mine Id:"));
|
||||
m_ui->lblAesId->setText(QString::number(dsm.id()));
|
||||
m_ui->lblAesId->setText(QString::number(dsm.id));
|
||||
|
||||
switch (dsm.effectStateId().underlying())
|
||||
switch (dsm.effectStateId)
|
||||
{
|
||||
case AesEffectState::EsExpired:
|
||||
m_ui->lblStatus->setText(tr("Inactive"));
|
||||
@@ -792,7 +792,7 @@ void AesInfoDialog::handleSingleDusMine()
|
||||
break;
|
||||
}
|
||||
|
||||
const QString mgrs = LtsCoordTrans::mgrsFromGeographic(dsm.position().lon(), dsm.position().lat());
|
||||
const QString mgrs = LtsCoordTrans::mgrsFromGeographic(dsm.position.lon, dsm.position.lat);
|
||||
m_ui->lblPosition->setText(tr("Position: %1").arg(mgrs));
|
||||
m_ui->lblPosition->show();
|
||||
|
||||
@@ -802,18 +802,18 @@ void AesInfoDialog::handleSingleDusMine()
|
||||
void AesInfoDialog::handleExplosionCluster(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleExplosionCluster(m_dtc->explosionCluster(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleExplosionCluster(const ExplosionCluster& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::ExplosionCluster)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtExplosionCluster);
|
||||
|
||||
const int m_explosionClusterChargeTypeId = data.chargeStruct().chargeTypeId();
|
||||
const int m_explosionClusterChargeTypeId = data.chargeStruct.chargeTypeId;
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(m_explosionClusterChargeTypeId, true));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(m_explosionClusterChargeTypeId, true));
|
||||
m_ui->lblChargeType->show();
|
||||
@@ -823,32 +823,32 @@ void AesInfoDialog::handleExplosionCluster(const ExplosionCluster& data)
|
||||
void AesInfoDialog::handleEffectCluster(const AesItemView& aesItemView)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AesItemView)"
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId();
|
||||
<< " aesItemView.aesItemId(): " << aesItemView.aesItemId;
|
||||
handleEffectCluster(m_dtc->effectCluster(m_aesEntityId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleEffectCluster(const EffectCluster& data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << "(AreaEffectSimulation::EffectCluster)"
|
||||
<< " data.id(): " << data.id();
|
||||
<< " data.id(): " << data.id;
|
||||
|
||||
handleAesItem(data, AesType::AtEffectCluster);
|
||||
}
|
||||
|
||||
void AesInfoDialog::handleAesItem(const AesItem& aesData, AesType aesTypeId)
|
||||
{
|
||||
m_aesEntityName = QString::fromStdString(aesData.name());
|
||||
m_aesEffectSource = aesData.effectSourceId();
|
||||
m_aesEntityName = QString::fromStdString(aesData.name);
|
||||
m_aesEffectSource = aesData.effectSourceId;
|
||||
|
||||
m_ui->lblAesItemId->setText(QString::number(aesData.id()));
|
||||
m_ui->lblAesItemId->setText(QString::number(aesData.id));
|
||||
|
||||
m_ui->lblAesTypeId->setText(QString::number(aesTypeId.underlying()));
|
||||
m_ui->lblAesTypeId->setText(QString::number(static_cast<int>(aesTypeId)));
|
||||
const ProjectDataManagement::GearClass gearClass =
|
||||
m_pdmDtc->gearClassFromChargeTypeId(aesData.chargeStruct().chargeTypeId());
|
||||
switch (gearClass.underlying())
|
||||
m_pdmDtc->gearClassFromChargeTypeId(aesData.chargeStruct.chargeTypeId);
|
||||
switch (gearClass)
|
||||
{
|
||||
case ProjectDataManagement::GearClass::Biological:
|
||||
case ProjectDataManagement::GearClass::Chemical:
|
||||
case ProjectDataManagement::GearClass::GearClass_Biological:
|
||||
case ProjectDataManagement::GearClass::GearClass_Chemical:
|
||||
m_ui->lblAesType->setText(ProjectDataManagement::toString(gearClass));
|
||||
break;
|
||||
default:
|
||||
@@ -857,28 +857,28 @@ void AesInfoDialog::handleAesItem(const AesItem& aesData, AesType aesTypeId)
|
||||
|
||||
m_ui->lblAesName->setText(m_aesEntityName);
|
||||
|
||||
if (aesData.effectStart().is_set())
|
||||
m_ui->lblAesStart->setText(DTG::toStringMSec(aesData.effectStart().get()));
|
||||
if (aesData.effectStart.has_value())
|
||||
m_ui->lblAesStart->setText(DTG::toStringMSec(aesData.effectStart.get()));
|
||||
else
|
||||
m_ui->lblAesStart->setText(tr("None"));
|
||||
|
||||
if (aesData.effectDuration() == 0)
|
||||
if (aesData.effectDuration == 0)
|
||||
{
|
||||
m_ui->lbAesDuration->hide();
|
||||
m_ui->lblAesDuration->hide();
|
||||
}
|
||||
if (aesTypeId == AesType::AtEffectCluster && aesData.effectDuration() == DEFAULT_EFFECT_DURATION)
|
||||
if (aesTypeId == AesType::AtEffectCluster && aesData.effectDuration == DEFAULT_EFFECT_DURATION)
|
||||
m_ui->lblAesDuration->setText(QStringLiteral("---"));
|
||||
else
|
||||
m_ui->lblAesDuration->setText(LtsWidgets::readableDuration(aesData.effectDuration()));
|
||||
m_ui->lblAesDuration->setText(LtsWidgets::readableDuration(aesData.effectDuration));
|
||||
|
||||
AreaEffectSimulation::AesEffectState st = aesData.effectStateId();
|
||||
AreaEffectSimulation::AesEffectState st = aesData.effectStateId;
|
||||
m_ui->lblStatus->setText(toString(st));
|
||||
|
||||
m_ui->lblChargeTypeId->setText(QString::number(aesData.chargeStruct().chargeTypeId()));
|
||||
m_ui->lblChargeTypeId->setText(QString::number(aesData.chargeStruct.chargeTypeId));
|
||||
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(aesData.chargeStruct().chargeTypeId()));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(aesData.chargeStruct().chargeTypeId()));
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->trChargeTypeShortName(aesData.chargeStruct.chargeTypeId));
|
||||
m_ui->lblChargeType->setToolTip(m_pdmDtc->trChargeTypeName(aesData.chargeStruct.chargeTypeId));
|
||||
}
|
||||
|
||||
void AesInfoDialog::onFindOnMap()
|
||||
@@ -895,7 +895,7 @@ void AesInfoDialog::onShowDetails()
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO;
|
||||
|
||||
switch (m_aesType.underlying())
|
||||
switch (m_aesType)
|
||||
{
|
||||
case AreaEffectSimulation::AesType::AtNContamination: {
|
||||
std::shared_ptr<AesNContamination::ForeignGuiInterface> ifc;
|
||||
@@ -916,7 +916,7 @@ void AesInfoDialog::onShowDetails()
|
||||
if (m_session->getForeignGuiInterface<AesBCContamination::ForeignGuiInterface>(ifc))
|
||||
{
|
||||
const auto gearClass = m_pdmDtc->gearClassFromChargeTypeId(m_bcChargeTypeId);
|
||||
if (gearClass == ProjectDataManagement::GearClass::Biological)
|
||||
if (gearClass == ProjectDataManagement::GearClass::GearClass_Biological)
|
||||
{
|
||||
AreaEffectSimulation::BaseEdit* dialog = ifc->showEditWindow(m_aesEntityId, false, this);
|
||||
if (dialog)
|
||||
@@ -925,7 +925,7 @@ void AesInfoDialog::onShowDetails()
|
||||
break;
|
||||
}
|
||||
|
||||
if (gearClass == ProjectDataManagement::GearClass::Chemical)
|
||||
if (gearClass == ProjectDataManagement::GearClass::GearClass_Chemical)
|
||||
{
|
||||
AreaEffectSimulation::BaseEdit* dialog = ifc->showEditWindow(m_aesEntityId, true, this);
|
||||
if (dialog)
|
||||
@@ -1162,118 +1162,118 @@ bool AesInfoDialog::onResetDusMines()
|
||||
|
||||
void AesInfoDialog::onNContaminationChanged(const AreaEffectSimulation::NContamination& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleNContamination(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onBCContaminationChanged(const AreaEffectSimulation::BCContamination& data,
|
||||
DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleBCContamination(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onBoobyTrapChanged(const AreaEffectSimulation::BoobyTrap& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleBoobyTrap(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onOffRouteMineChanged(const AreaEffectSimulation::OffRouteMine& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleOffRouteMine(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onExplosionAreaChanged(const AreaEffectSimulation::ExplosionArea& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleExplosionArea(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onExplosionSingleChanged(const AreaEffectSimulation::ExplosionSingle& data,
|
||||
DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleExplosionSingle(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onMineAreaChanged(const AreaEffectSimulation::MineArea& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleMineArea(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onMineCorridorChanged(const MineCorridor& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleMineCorridor(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onGasPipeChanged(const GasPipe& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleGasPipe(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onDangerAreaChanged(const AreaEffectSimulation::DangerArea& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleDangerArea(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onBorderlineChanged(const AreaEffectSimulation::Borderline& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleBorderline(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onFunctionalAreaChanged(const FunctionalArea& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleFunctionalArea(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onAirSupportImpactChanged(const AirSupportImpact& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleAirSupportImpact(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onDusMineStateChanged(const DusMineState& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
|
||||
if (modType == DataModification::eRemoved)
|
||||
return;
|
||||
if (data.id() != 0)
|
||||
if (data.id != 0)
|
||||
return;
|
||||
|
||||
AesItemView itemView;
|
||||
if (!m_dtc->aesItemViewFromEntityId(0, m_aesType, itemView))
|
||||
return;
|
||||
|
||||
for (size_t i = 0; i < data.mines().size(); ++i)
|
||||
for (size_t i = 0; i < data.mines.size(); ++i)
|
||||
{
|
||||
const DusMine& mine = data.mines().at(i);
|
||||
if (mine.eqId() == m_aesEntityId)
|
||||
const DusMine& mine = data.mines.at(i);
|
||||
if (mine.eqId == m_aesEntityId)
|
||||
{
|
||||
if (itemView.form().size() <= i)
|
||||
if (itemView.form.size() <= i)
|
||||
return;
|
||||
handleMineAraeSingleMine(itemView.form().at(i), mine);
|
||||
handleMineAraeSingleMine(itemView.form.at(i), mine);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -1281,22 +1281,22 @@ void AesInfoDialog::onDusMineStateChanged(const DusMineState& data, DataModifica
|
||||
|
||||
void AesInfoDialog::onDusSingleMineChanged(const DusSingleMine& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleSingleDusMine();
|
||||
}
|
||||
|
||||
void AesInfoDialog::onExplosionClusterChanged(const ExplosionCluster& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleExplosionCluster(data);
|
||||
}
|
||||
|
||||
void AesInfoDialog::onEffectClusterChanged(const EffectCluster& data, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id();
|
||||
if (data.id() == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
DEBUG_LOG(m_logger) << Q_FUNC_INFO << " id: " << data.id;
|
||||
if (data.id == m_aesEntityId && modType != DataModification::eRemoved)
|
||||
handleEffectCluster(data);
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -61,17 +61,17 @@ bool CustomViewAirSupportImpact::init(const QModelIndex &idx)
|
||||
bool CustomViewAirSupportImpact::calculateIcon(const AirSupportImpact &asi, const QColor &color)
|
||||
{
|
||||
Database::AesAirSupportImpact dbAsi;
|
||||
dbAsi.impactPosition = QPointF(asi.impactPosition().lon(), asi.impactPosition().lat());
|
||||
dbAsi.impactPosition = QPointF(asi.impactPosition.lon, asi.impactPosition.lat);
|
||||
|
||||
std::shared_ptr<ProjectDataManagement::Interface::Dtc> pdmDtc;
|
||||
if (!m_session->getDtc<ProjectDataManagement::DataInterface>(pdmDtc))
|
||||
return false;
|
||||
|
||||
double radius = pdmDtc->impactRadius(asi.chargeStruct().chargeTypeId(),
|
||||
asi.chargeStruct().igniterTypeId(),
|
||||
asi.chargeStruct().igniterFunctionId());
|
||||
double radius = pdmDtc->impactRadius(asi.chargeStruct.chargeTypeId,
|
||||
asi.chargeStruct.igniterTypeId,
|
||||
asi.chargeStruct.igniterFunctionId);
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::airSupportImpact(dbAsi, radius);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(asi.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(asi.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include "aes_air_support_9liner_model.h"
|
||||
|
||||
namespace Ui
|
||||
|
||||
+27
-27
@@ -48,36 +48,36 @@ QVariant AirSupport9LinerModel::data(const QModelIndex &index, int role) const
|
||||
switch (index.column())
|
||||
{
|
||||
case ParticipantId:
|
||||
return item.participantId();
|
||||
return item.participantId;
|
||||
case Participant:
|
||||
{
|
||||
if (!m_ppmDtc)
|
||||
return QString();
|
||||
return m_ppmDtc->hierarchyFromParticipant(item.participantId());
|
||||
return m_ppmDtc->hierarchyFromParticipant(item.participantId);
|
||||
}
|
||||
case Timestamp:
|
||||
return QDateTime::fromMSecsSinceEpoch(item.sampleTime());
|
||||
return QDateTime::fromMSecsSinceEpoch(item.sampleTime);
|
||||
case AttackHeading:
|
||||
{
|
||||
if (item.finalAttackHeading() < 0)
|
||||
if (item.finalAttackHeading < 0)
|
||||
return QVariant();
|
||||
if (item.finalAttackHeadingHigh() < 0)
|
||||
if (item.finalAttackHeadingHigh < 0)
|
||||
return tr("%1 degree")
|
||||
.arg(item.finalAttackHeading());
|
||||
.arg(item.finalAttackHeading);
|
||||
return tr("%1 degree (low: %2 degree, high: %3 degreee)", "degree as symbol!")
|
||||
.arg(item.finalAttackHeading())
|
||||
.arg(item.finalAttackHeadingLow())
|
||||
.arg(item.finalAttackHeadingHigh());
|
||||
.arg(item.finalAttackHeading)
|
||||
.arg(item.finalAttackHeadingLow)
|
||||
.arg(item.finalAttackHeadingHigh);
|
||||
}
|
||||
case TargetPosition:
|
||||
{
|
||||
if (std::isnan(item.targetPosition().lat()))
|
||||
if (std::isnan(item.targetPosition.lat))
|
||||
return tr("---");
|
||||
LtsCoordTrans::UtmCoordinate coord(LtsCoordTrans::UtmCoordinate::fromGeographic(item.targetPosition().lon(),
|
||||
item.targetPosition().lat()));
|
||||
LtsCoordTrans::UtmCoordinate coord(LtsCoordTrans::UtmCoordinate::fromGeographic(item.targetPosition.lon,
|
||||
item.targetPosition.lat));
|
||||
QString ret = coord.mgrs();
|
||||
if (item.targetPosition().z() > 0)
|
||||
ret += QLatin1Char(' ') + QString::number(qRound(item.targetPosition().z()));
|
||||
if (item.targetPosition.z > 0)
|
||||
ret += QLatin1Char(' ') + QString::number(qRound(item.targetPosition.z));
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -131,7 +131,7 @@ bool AirSupport9LinerProxyModel::filterAcceptsRow(int source_row, const QModelIn
|
||||
return true;
|
||||
|
||||
const qint64 m_offset = 5 * 60 * 1000;
|
||||
if ((data.sampleTime() + m_offset) > m_session->partitionTime())
|
||||
if ((data.sampleTime + m_offset) > m_session->partitionTime())
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
@@ -150,27 +150,27 @@ bool AirSupport9LinerProxyModel::lessThan(const QModelIndex &source_left, const
|
||||
switch (source_left.column())
|
||||
{
|
||||
case AirSupport9LinerModel::ParticipantId:
|
||||
if (left.participantId() != right.participantId())
|
||||
return left.participantId() < right.participantId();
|
||||
return left.sampleTime() < right.sampleTime();
|
||||
if (left.participantId != right.participantId)
|
||||
return left.participantId < right.participantId;
|
||||
return left.sampleTime < right.sampleTime;
|
||||
case AirSupport9LinerModel::Participant:
|
||||
{
|
||||
const auto l = source_left.data();
|
||||
const auto r = source_right.data();
|
||||
if (l != r)
|
||||
return LtsUtils::lessThan(l, r);
|
||||
return left.sampleTime() < right.sampleTime();
|
||||
return left.sampleTime < right.sampleTime;
|
||||
}
|
||||
case AirSupport9LinerModel::Timestamp:
|
||||
return left.sampleTime() < right.sampleTime();
|
||||
return left.sampleTime < right.sampleTime;
|
||||
case AirSupport9LinerModel::AttackHeading:
|
||||
if (left.finalAttackHeading() != right.finalAttackHeading())
|
||||
return left.finalAttackHeading() < right.finalAttackHeading();
|
||||
if (left.finalAttackHeadingLow() != right.finalAttackHeadingLow())
|
||||
return left.finalAttackHeadingLow() < right.finalAttackHeadingLow();
|
||||
if (left.finalAttackHeadingHigh() != right.finalAttackHeadingHigh())
|
||||
return left.finalAttackHeadingHigh() < right.finalAttackHeadingHigh();
|
||||
return left.sampleTime() < right.sampleTime();
|
||||
if (left.finalAttackHeading != right.finalAttackHeading)
|
||||
return left.finalAttackHeading < right.finalAttackHeading;
|
||||
if (left.finalAttackHeadingLow != right.finalAttackHeadingLow)
|
||||
return left.finalAttackHeadingLow < right.finalAttackHeadingLow;
|
||||
if (left.finalAttackHeadingHigh != right.finalAttackHeadingHigh)
|
||||
return left.finalAttackHeadingHigh < right.finalAttackHeadingHigh;
|
||||
return left.sampleTime < right.sampleTime;
|
||||
}
|
||||
return LtsWidgets::LtsColumnFilterProxyModel::lessThan(source_left, source_right);
|
||||
}
|
||||
|
||||
+1
@@ -7,6 +7,7 @@
|
||||
#include <LtsWidgets/lts_column_filter_proxy_model.h>
|
||||
#include <GuezNasat/gna_dtc.h>
|
||||
#include <ParticipantManagement/ppm.hpp>
|
||||
#include <ParticipantManagement/ppm_dtc.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <QtCore/QSortFilterProxyModel>
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include <GuezNasat/gna_data_plugin_interface.h>
|
||||
#include "aes_air_support_gui_plugin_interface.h"
|
||||
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ void AirSupportExplosionClusterImpactList::createModel()
|
||||
{
|
||||
m_model = new AesItemSortFilterProxyModelTmpl<EffectCluster>(m_session, this);
|
||||
|
||||
m_effectClusterModel = new EffectClusterModel({ProjectDataManagement::GearClass::AirSupport}, this);
|
||||
m_effectClusterModel = new EffectClusterModel({ProjectDataManagement::GearClass::GearClass_AirSupport}, this);
|
||||
m_effectClusterModel->initModel(m_session);
|
||||
m_model->setSourceModel(m_effectClusterModel);
|
||||
}
|
||||
|
||||
+3
-3
@@ -3,9 +3,9 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <AreaEffectSimulation/Explosion/aes_effect_cluster_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Explosion/aes_effect_cluster_model.h>
|
||||
#include "aes_air_support_impact_model.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+9
-9
@@ -66,19 +66,19 @@ bool CustomViewBCContamination::init(const QModelIndex &idx)
|
||||
bool CustomViewBCContamination::calculateIcon(const BCContamination &bcContamination, const QColor &color)
|
||||
{
|
||||
Database::AesBCContamination bcContaOut;
|
||||
bcContaOut.id = bcContamination.id();
|
||||
bcContaOut.chargeTypeId = bcContamination.chargeStruct().chargeTypeId();
|
||||
bcContaOut.effectStart = QDateTime::fromMSecsSinceEpoch(bcContamination.effectStart().is_set() ? bcContamination.effectStart().get() : 0);
|
||||
bcContaOut.impactPosition = QPointF(bcContamination.impactPosition().lon(), bcContamination.impactPosition().lat());
|
||||
bcContaOut.impactRadius = bcContamination.impactRadius();
|
||||
bcContaOut.propagationDirection = bcContamination.propagationDirection();
|
||||
bcContaOut.id = bcContamination.id;
|
||||
bcContaOut.chargeTypeId = bcContamination.chargeStruct.chargeTypeId;
|
||||
bcContaOut.effectStart = QDateTime::fromMSecsSinceEpoch(bcContamination.effectStart.has_value() ? bcContamination.effectStart.get() : 0);
|
||||
bcContaOut.impactPosition = QPointF(bcContamination.impactPosition.lon, bcContamination.impactPosition.lat);
|
||||
bcContaOut.impactRadius = bcContamination.impactRadius;
|
||||
bcContaOut.propagationDirection = bcContamination.propagationDirection;
|
||||
|
||||
const QPolygonF poly = AreaEffectSimulation::Polygons::bcContamination(bcContaOut,
|
||||
ProjectDataManagement::VolatilityType::get_default(),
|
||||
bcContamination.impactRadius(),
|
||||
ProjectDataManagement::VolatilityType::Unknown,
|
||||
bcContamination.impactRadius,
|
||||
QDateTime::currentDateTime());
|
||||
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(bcContamination.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(bcContamination.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+8
-8
@@ -4,7 +4,7 @@
|
||||
#include "aes_bccontamination_info.h"
|
||||
#include "ui_aes_bccontamination_info.h"
|
||||
|
||||
#include <AreaEffectSimulation/Base/InfoView/aes_base_info.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/InfoView/aes_base_info.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <LtsCoordTrans/lts_coord_trans.h>
|
||||
#include <QtCore/QDateTime>
|
||||
@@ -33,13 +33,13 @@ bool BCContaminationInfo::setData(const BCContamination *item)
|
||||
{
|
||||
m_ui->wBaseData->setData(item);
|
||||
|
||||
m_ui->lblImpactRadius->setText(QString::number(item->impactRadius()));
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->impactPosition().lon(), item->impactPosition().lat()));
|
||||
m_ui->lblPropagationDirection->setText(tr("%1° = %2 mil").arg(item->propagationDirection(), 0, 'f', 2)
|
||||
.arg(item->propagationDirection() * 6400 / 360.0, 0, 'f', 0));
|
||||
m_ui->lblWindSpeed->setText(QString::number(item->windSpeed(), 'f', 2));
|
||||
m_ui->lblWeatherTimestamp->setText(QDateTime::fromMSecsSinceEpoch(item->weatherTimestamp()).toString());
|
||||
m_ui->lblWeatherPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->weatherPosition().lon(), item->weatherPosition().lat()));
|
||||
m_ui->lblImpactRadius->setText(QString::number(item->impactRadius));
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->impactPosition.lon, item->impactPosition.lat));
|
||||
m_ui->lblPropagationDirection->setText(tr("%1° = %2 mil").arg(item->propagationDirection, 0, 'f', 2)
|
||||
.arg(item->propagationDirection * 6400 / 360.0, 0, 'f', 0));
|
||||
m_ui->lblWindSpeed->setText(QString::number(item->windSpeed, 'f', 2));
|
||||
m_ui->lblWeatherTimestamp->setText(QDateTime::fromMSecsSinceEpoch(item->weatherTimestamp).toString());
|
||||
m_ui->lblWeatherPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->weatherPosition.lon, item->weatherPosition.lat));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+33
-33
@@ -69,8 +69,8 @@ BCContaminationEdit::BCContaminationEdit(const QString &menuGroup, bool isChemic
|
||||
|
||||
|
||||
|
||||
m_ui->cbWeather->addItem(toString(AesWeatherSource::AwsDynamic), AesWeatherSource::AwsDynamic);
|
||||
m_ui->cbWeather->addItem(toString(AesWeatherSource::AwsStatic), AesWeatherSource::AwsStatic);
|
||||
m_ui->cbWeather->addItem(toString(AesWeatherSource::AwsDynamic), static_cast<int>(AesWeatherSource::AwsDynamic));
|
||||
m_ui->cbWeather->addItem(toString(AesWeatherSource::AwsStatic), static_cast<int>(AesWeatherSource::AwsStatic));
|
||||
|
||||
LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance();
|
||||
const bool enableShowMeteoDataStations = ps->value(QStringLiteral("mdm"),
|
||||
@@ -132,15 +132,15 @@ void BCContaminationEdit::enableUiElements(bool enable)
|
||||
|
||||
m_ui->cbWeather->setEnabled(enable);
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->bCContamination(m_aesItem.id());
|
||||
auto baseData = m_dtc->bCContamination(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -193,8 +193,8 @@ bool BCContaminationEdit::init(int aesItemId, bool copy,
|
||||
|
||||
auto cb = [this](const DangerAreaCorrelatedAesItem &item)
|
||||
{
|
||||
if (item.aesItemId() == m_aesItem.id())
|
||||
m_dangerAreaIds << item.dangerAreaId();
|
||||
if (item.aesItemId == m_aesItem.id)
|
||||
m_dangerAreaIds << item.dangerAreaId;
|
||||
};
|
||||
m_dtc->dangerAreaCorrelatedAesItems(cb);
|
||||
setPbDangerAreaText();
|
||||
@@ -211,8 +211,8 @@ bool BCContaminationEdit::init(int aesItemId, bool copy,
|
||||
|
||||
auto cbDangerArea = [this](const DangerArea &data)
|
||||
{
|
||||
if (data.effectStateId() != AesEffectState::EsRemoved && data.associatedAesId() == m_aesItem.id())
|
||||
m_associatedDangerId = data.id();
|
||||
if (data.effectStateId != AesEffectState::EsRemoved && data.associatedAesId == m_aesItem.id)
|
||||
m_associatedDangerId = data.id;
|
||||
};
|
||||
m_dtc->dangerAreas(cbDangerArea);
|
||||
if (m_associatedDangerId)
|
||||
@@ -229,7 +229,7 @@ void BCContaminationEdit::setPbDangerAreaText()
|
||||
sl.reserve(m_dangerAreaIds.size());
|
||||
for (int idx : std::as_const(m_dangerAreaIds))
|
||||
{
|
||||
sl << QString::fromStdString(m_dtc->dangerArea(idx).name());
|
||||
sl << QString::fromStdString(m_dtc->dangerArea(idx).name);
|
||||
}
|
||||
m_ui->pbDangerArea->setEnabled(sl.size());
|
||||
m_ui->pbDangerArea->setText(sl.join(QStringLiteral(", ")));
|
||||
@@ -237,14 +237,14 @@ void BCContaminationEdit::setPbDangerAreaText()
|
||||
|
||||
void BCContaminationEdit::onDangerAreaChanged(const DangerAreaCorrelatedAesItem &data, DataModification modType)
|
||||
{
|
||||
if (data.aesItemId() != m_aesItem.id())
|
||||
if (data.aesItemId != m_aesItem.id)
|
||||
return;
|
||||
|
||||
if (modType == DataModification::eAdded)
|
||||
m_dangerAreaIds += data.dangerAreaId();
|
||||
m_dangerAreaIds += data.dangerAreaId;
|
||||
|
||||
if (modType == DataModification::eRemoved)
|
||||
m_dangerAreaIds -= data.dangerAreaId();
|
||||
m_dangerAreaIds -= data.dangerAreaId;
|
||||
|
||||
|
||||
setPbDangerAreaText();
|
||||
@@ -259,7 +259,7 @@ void BCContaminationEdit::onPbDangerAreaClicked()
|
||||
if (!m_session->getForeignGuiInterface<ForeignInfoGuiInterface>(infoGuiInterface))
|
||||
return;
|
||||
|
||||
LtsWidgets::LtsDialog *dialog = infoGuiInterface->showDangerAreaAesItemInfo(m_dangerAreaIds, {m_aesItem.id()});
|
||||
LtsWidgets::LtsDialog *dialog = infoGuiInterface->showDangerAreaAesItemInfo(m_dangerAreaIds, {m_aesItem.id});
|
||||
|
||||
addDialog(dialog, m_menuGroup, tr("Danger Areas for %1 %2").arg(m_isChemical ? tr("C-Contamination") : tr("B-Contamination"), m_ui->leIdentifier->text()), LtsWidgets::LayoutArea::eInfoTab);
|
||||
}
|
||||
@@ -269,23 +269,23 @@ void BCContaminationEdit::setData(const BCContamination &contamination, bool cop
|
||||
m_aesItem = contamination;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(contamination.name()));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(contamination.effectStart().is_set() ? contamination.effectStart().get() : 0);
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(contamination.chargeStruct().chargeTypeId()));
|
||||
m_ui->sbDurationHours->setValue(contamination.effectDuration() / 1000 / 60/ 60);
|
||||
m_ui->sbRadius->setValue(contamination.impactRadius());
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(contamination.partyId().is_set() ? contamination.partyId().get() : 0));
|
||||
m_ui->cbWeather->setCurrentIndex(contamination.weatherSource().underlying());
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(contamination.name));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(contamination.effectStart.has_value() ? contamination.effectStart.get() : 0);
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(contamination.chargeStruct.chargeTypeId));
|
||||
m_ui->sbDurationHours->setValue(contamination.effectDuration / 1000 / 60/ 60);
|
||||
m_ui->sbRadius->setValue(contamination.impactRadius);
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(contamination.partyId.has_value() ? contamination.partyId.get() : 0));
|
||||
m_ui->cbWeather->setCurrentIndex(static_cast<int>(contamination.weatherSource));
|
||||
|
||||
QPointF impactPosition(contamination.impactPosition().lon(), contamination.impactPosition().lat());
|
||||
QPointF impactPosition(contamination.impactPosition.lon, contamination.impactPosition.lat);
|
||||
if (!impactPosition.isNull())
|
||||
m_ui->positionEdit->setCoordinate(impactPosition);
|
||||
|
||||
m_ui->sbAltitude->setValue(contamination.upperOffset());
|
||||
m_ui->cbLowerLimit->setChecked(qFuzzyIsNull(contamination.lowerOffset()));
|
||||
m_ui->sbAltitude->setValue(contamination.upperOffset);
|
||||
m_ui->cbLowerLimit->setChecked(qFuzzyIsNull(contamination.lowerOffset));
|
||||
|
||||
}
|
||||
|
||||
@@ -341,9 +341,9 @@ bool BCContaminationEdit::apply()
|
||||
const Core::GeoPosition2D pos(p.x(), p.y());
|
||||
|
||||
|
||||
const BCContaminationModifyRequest req(m_aesItem.id(),
|
||||
const BCContaminationModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
duration,
|
||||
chargeType,
|
||||
pos,
|
||||
@@ -354,18 +354,18 @@ bool BCContaminationEdit::apply()
|
||||
dds::core::optional<double>(),
|
||||
dds::core::optional<double>(),
|
||||
dds::core::optional<Core::GeoPosition2D>(),
|
||||
dds::core::optional<rti::core::int64>(),
|
||||
dds::core::optional<rti::core::int64>(),
|
||||
dds::core::optional<int64_t>(),
|
||||
dds::core::optional<int64_t>(),
|
||||
extrusionHeight,
|
||||
lowerOffset,
|
||||
m_ui->chbDangerArea->isChecked());
|
||||
|
||||
INFO_LOG(m_logger) << "apply "
|
||||
<< " extrusionHeight=" << extrusionHeight
|
||||
<< " req.upperOffset=" << req.upperOffset()
|
||||
<< " req.upperOffset=" << req.upperOffset
|
||||
<< " lowerOf"
|
||||
"fset=" << lowerOffset
|
||||
<< " req.lowerOffset=" << req.lowerOffset();
|
||||
<< " req.lowerOffset=" << req.lowerOffset;
|
||||
|
||||
m_requestHelper->addRequest([this,req]()
|
||||
{
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <ProjectDataManagement/pdm_gui_plugin_interface.h>
|
||||
|
||||
|
||||
@@ -29,8 +29,8 @@ public:
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
if (m_isChemical)
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddCContamination") : QStringLiteral("EditCContamination%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddBContamination") : QStringLiteral("EditBContamination%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddCContamination") : QStringLiteral("EditCContamination%1").arg(m_aesItem.id);
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddBContamination") : QStringLiteral("EditBContamination%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_bccontamination_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <QtCore/QSet>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <ProjectDataManagement/pdm_enums.hpp>
|
||||
|
||||
namespace LtsSession
|
||||
|
||||
+5
@@ -36,6 +36,11 @@ NGL_WRAP_UI(aes_base_gui_SRCS
|
||||
)
|
||||
|
||||
NGL_ADD_LIBRARY2(WS AesBaseGui SHARED ${aes_base_gui_SRCS})
|
||||
# aes_base_edit.h includes LtsWidgets/ui_requirement.h (a handwritten header, not a
|
||||
# UI file). Qt6's strict AUTOUIC auto-scan then demands a requirement.ui that does not
|
||||
# exist and fails the autogen step. The real .ui files are wrapped explicitly above via
|
||||
# NGL_WRAP_UI (qt6_wrap_ui), so disable the auto-scan (same approach as LtsWidgets).
|
||||
set_target_properties(AesBaseGui PROPERTIES AUTOUIC OFF)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(AesBaseGui
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../../Services/
|
||||
|
||||
+14
-14
@@ -71,23 +71,23 @@ bool BaseInfo::setData(const AesItem *item)
|
||||
if (!m_session->getDtc<ProjectDataManagement::DataInterface>(pdmDtc) || !pdmDtc )
|
||||
return false;
|
||||
|
||||
setEffectDuration(item->effectDuration());
|
||||
m_ui->lblIdentifier->setText(QString::fromStdString(item->name().c_str()));
|
||||
m_ui->lblChargeType->setText(pdmDtc->trChargeTypeShortName(item->chargeStruct().chargeTypeId(), true));
|
||||
m_ui->lblChargeType->setToolTip(pdmDtc->trChargeTypeName(item->chargeStruct().chargeTypeId(), true));
|
||||
m_ui->lblEffectState->setText(AreaEffectSimulation::toString(item->effectStateId()));
|
||||
setEffectDuration(item->effectDuration);
|
||||
m_ui->lblIdentifier->setText(QString::fromStdString(item->name.c_str()));
|
||||
m_ui->lblChargeType->setText(pdmDtc->trChargeTypeShortName(item->chargeStruct.chargeTypeId, true));
|
||||
m_ui->lblChargeType->setToolTip(pdmDtc->trChargeTypeName(item->chargeStruct.chargeTypeId, true));
|
||||
m_ui->lblEffectState->setText(AreaEffectSimulation::toString(item->effectStateId));
|
||||
|
||||
|
||||
setEffectStart(item->effectStart().is_set() ? item->effectStart().get() : 0);
|
||||
setEffectStart(item->effectStart.has_value() ? item->effectStart.get() : 0);
|
||||
|
||||
if (item->participantId().is_set())
|
||||
if (item->participantId.has_value())
|
||||
{
|
||||
if (!ppmDtc)
|
||||
m_ui->lblParticipant->setText(tr("ID: %1").arg(item->participantId().get()));
|
||||
m_ui->lblParticipant->setText(tr("ID: %1").arg(item->participantId.get()));
|
||||
else
|
||||
{
|
||||
ParticipantManagement::Participant participant = ppmDtc->participant(item->partyId().get());
|
||||
m_ui->lblParticipant->setText(QString::fromStdString(participant.name()));
|
||||
ParticipantManagement::Participant participant = ppmDtc->participant(item->partyId.get());
|
||||
m_ui->lblParticipant->setText(QString::fromStdString(participant.name));
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -96,14 +96,14 @@ bool BaseInfo::setData(const AesItem *item)
|
||||
m_ui->lbxParticipant->hide();
|
||||
}
|
||||
|
||||
if (item->partyId().is_set())
|
||||
if (item->partyId.has_value())
|
||||
{
|
||||
if (!ppmDtc)
|
||||
m_ui->lblParty->setText(tr("ID: %1").arg(item->partyId().get()));
|
||||
m_ui->lblParty->setText(tr("ID: %1").arg(item->partyId.get()));
|
||||
else
|
||||
{
|
||||
ParticipantManagement::Party party = ppmDtc->party(item->partyId().get());
|
||||
m_ui->lblParty->setText(ParticipantManagement::trPartyName(party.name()));
|
||||
ParticipantManagement::Party party = ppmDtc->party(item->partyId.get());
|
||||
m_ui->lblParty->setText(ParticipantManagement::trPartyName(party.name));
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+13
-13
@@ -22,7 +22,7 @@ BaseEdit::BaseEdit(const QString& menuGroup, const QString& loggerName, QWidget*
|
||||
m_sitMapGuiIfc(nullptr), m_ppmGuiCbxIfc(nullptr), m_session(nullptr), m_menuGroup(menuGroup),
|
||||
m_requestHelper(new LtsUtils::RequestHelper(this)), m_logger(getLogger(loggerName))
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.id = 0;
|
||||
connect(this, &BaseEdit::visibilityChanged, this, &BaseEdit::onVisibilityChanged);
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ void BaseEdit::onAesItemModifyReply(const Core::FunctionReplyObject& replyObject
|
||||
|
||||
bool BaseEdit::isModifiable() const
|
||||
{
|
||||
AesEffectState effectState = m_aesItem.effectStateId();
|
||||
AesEffectState effectState = m_aesItem.effectStateId;
|
||||
return (effectState == AreaEffectSimulation::AesEffectState::EsPaused ||
|
||||
effectState == AreaEffectSimulation::AesEffectState::EsActivated ||
|
||||
effectState == AreaEffectSimulation::AesEffectState::EsPrepared ||
|
||||
@@ -62,7 +62,7 @@ bool BaseEdit::isModifiable() const
|
||||
|
||||
bool BaseEdit::isOnlyNameModifiable() const
|
||||
{
|
||||
AesEffectState effectState = m_aesItem.effectStateId();
|
||||
AesEffectState effectState = m_aesItem.effectStateId;
|
||||
return (effectState == AreaEffectSimulation::AesEffectState::EsPaused ||
|
||||
effectState == AreaEffectSimulation::AesEffectState::EsActivated) &&
|
||||
(!m_session->isReplayPartition()) && (m_session->app() != LtsAppDescriptor::App::OC);
|
||||
@@ -166,10 +166,10 @@ void BaseEdit::setEffectStartEnabled(LtsWidgets::LtsDateTimeEdit* dte, bool enab
|
||||
m_session->getDtc<ExerciseManagement::DataInterface>(exmDtc);
|
||||
ExerciseManagement::Exercise exercise = exmDtc->exercise(exerciseId);
|
||||
|
||||
enable = (exercise.state() == ExerciseManagement::ExerciseState::Started ||
|
||||
exercise.state() == ExerciseManagement::ExerciseState::Paused);
|
||||
enable = (exercise.state == ExerciseManagement::ExerciseState::Started ||
|
||||
exercise.state == ExerciseManagement::ExerciseState::Paused);
|
||||
|
||||
if (exercise.state() == ExerciseManagement::ExerciseState::Created)
|
||||
if (exercise.state == ExerciseManagement::ExerciseState::Created)
|
||||
dte->setChecked(false);
|
||||
else
|
||||
dte->setChecked(dte->msecsSinceEpoch() > 0);
|
||||
@@ -217,7 +217,7 @@ void BaseEdit::setCoordinates(const std::vector<Core::GeoPosition2D>& coords)
|
||||
clearCoordinates();
|
||||
const auto cWidgets(coordWidgets());
|
||||
for (size_t i = 0; i < cWidgets.size() && i < static_cast<size_t>(coords.size()); ++i)
|
||||
cWidgets.at(i)->setCoordinate(coords.at(i).lon(), coords.at(i).lat());
|
||||
cWidgets.at(i)->setCoordinate(coords.at(i).lon, coords.at(i).lat);
|
||||
}
|
||||
|
||||
std::vector<Core::GeoPosition2D> BaseEdit::getCoordinates() const
|
||||
@@ -265,10 +265,10 @@ void BaseEdit::enabledCoordinates(bool enable)
|
||||
void BaseEdit::onAreaChanged(const AesItem& data, DataModification modType)
|
||||
{
|
||||
|
||||
if (data.id() != m_aesItem.id())
|
||||
if (data.id != m_aesItem.id)
|
||||
return;
|
||||
|
||||
if (modType == DataModification::eRemoved || data.effectStateId() == AesEffectState::EsRemoved)
|
||||
if (modType == DataModification::eRemoved || data.effectStateId == AesEffectState::EsRemoved)
|
||||
{
|
||||
|
||||
__unchange__();
|
||||
@@ -287,7 +287,7 @@ bool BaseEdit::init(int aesItemId, LtsSession::LtsSession* session)
|
||||
return false;
|
||||
}
|
||||
m_session = session;
|
||||
m_aesItem.id(aesItemId);
|
||||
m_aesItem.id = aesItemId;
|
||||
|
||||
if (!m_session->getDtc<AreaEffectSimulation::DataInterface>(m_dtc))
|
||||
return false;
|
||||
@@ -302,7 +302,7 @@ bool BaseEdit::init(int aesItemId, LtsSession::LtsSession* session)
|
||||
|
||||
if (aesItemId == 0)
|
||||
{
|
||||
m_aesItem.effectSourceId(ProjectDataManagement::EffectSource::ES_Internal);
|
||||
m_aesItem.effectSourceId = ProjectDataManagement::EffectSource::ES_Internal;
|
||||
m_buttonBox->setText(LtsWidgets::DialogButton::Ok, tr("Add"));
|
||||
}
|
||||
|
||||
@@ -311,8 +311,8 @@ bool BaseEdit::init(int aesItemId, LtsSession::LtsSession* session)
|
||||
|
||||
double BaseEdit::distance(const Core::GeoPosition2D& p1, const Core::GeoPosition2D& p2)
|
||||
{
|
||||
LtsCoordTrans::UtmCoordinate start = LtsCoordTrans::UtmCoordinate::fromGeographic(p1.lon(), p1.lat());
|
||||
LtsCoordTrans::UtmCoordinate end = LtsCoordTrans::UtmCoordinate::fromGeographic(p2.lon(), p2.lat(), start.zone);
|
||||
LtsCoordTrans::UtmCoordinate start = LtsCoordTrans::UtmCoordinate::fromGeographic(p1.lon, p1.lat);
|
||||
LtsCoordTrans::UtmCoordinate end = LtsCoordTrans::UtmCoordinate::fromGeographic(p2.lon, p2.lat, start.zone);
|
||||
double dx = start.x - end.x;
|
||||
double dy = start.y - end.y;
|
||||
return std::sqrt(dx * dx + dy * dy);
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
#include <AreaEffectSimulation/logger.h>
|
||||
#include <AreaEffectSimulation/aes.hpp>
|
||||
#include <LtsWidgets/lts_dialog.h>
|
||||
#include <LtsWidgets/requirement_widget.h>
|
||||
#include <LtsWidgets/ui_requirement.h>
|
||||
|
||||
|
||||
#include <LtsUtils/LtsUtilsGui/LtsUtilsGuiDds/request_helper.h>
|
||||
|
||||
+20
-16
@@ -1,6 +1,7 @@
|
||||
|
||||
|
||||
#include "aes_base_model.h"
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <LtsSession/lts_session_data.h>
|
||||
@@ -15,7 +16,8 @@
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
AesGuiBasHelpers::AesGuiBasHelpers() : m_aesDtc(nullptr), m_pdmDtc(nullptr), m_ppmDtc(nullptr) {}
|
||||
AesGuiBasHelpers::AesGuiBasHelpers() : m_aesDtc(nullptr), m_pdmDtc(nullptr), m_ppmDtc(nullptr) , m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{}
|
||||
|
||||
bool AesGuiBasHelpers::initModel(LtsSession::LtsSession* session)
|
||||
{
|
||||
@@ -38,24 +40,24 @@ bool AesGuiBasHelpers::initModel(LtsSession::LtsSession* session)
|
||||
|
||||
QVariant AesGuiBasHelpers::stringFromPartyId(const dds::core::optional<int>& id) const
|
||||
{
|
||||
if (!id.is_set())
|
||||
if (!id.has_value())
|
||||
return QObject::tr("---");
|
||||
auto it = m_partyNames.find(id.get());
|
||||
if (it != m_partyNames.end())
|
||||
return it.value();
|
||||
const QString name = ParticipantManagement::trPartyName(m_ppmDtc->party(id.get()).name());
|
||||
const QString name = ParticipantManagement::trPartyName(m_ppmDtc->party(id.get()).name);
|
||||
m_partyNames.insert(id.get(), name);
|
||||
return name;
|
||||
}
|
||||
|
||||
QIcon AesGuiBasHelpers::iconFromPartyId(const dds::core::optional<int>& id) const
|
||||
{
|
||||
if (!id.is_set() || !m_ppmGuiCbxIfc)
|
||||
if (!id.has_value() || !m_ppmGuiCbxIfc)
|
||||
return QIcon();
|
||||
auto it = m_partyIcons.find(id.get());
|
||||
if (it != m_partyIcons.end())
|
||||
return it.value();
|
||||
const QRgb col = QRgb(m_ppmDtc->party(id.get()).color());
|
||||
const QRgb col = QRgb(m_ppmDtc->party(id.get()).color);
|
||||
const QIcon icon = m_ppmGuiCbxIfc->pixmapFromParty(col);
|
||||
m_partyIcons.insert(id.get(), icon);
|
||||
return icon;
|
||||
@@ -63,7 +65,7 @@ QIcon AesGuiBasHelpers::iconFromPartyId(const dds::core::optional<int>& id) cons
|
||||
|
||||
QVariant AesGuiBasHelpers::hierarchyFromParticipantId(const dds::core::optional<int>& id) const
|
||||
{
|
||||
if (!id.is_set())
|
||||
if (!id.has_value())
|
||||
return QObject::tr("---");
|
||||
auto it = m_participantHierarchy.find(id.get());
|
||||
if (it != m_participantHierarchy.end())
|
||||
@@ -109,7 +111,9 @@ void AesGuiBasHelpers::updateEffectStateComboboxFilterData(bool bWithPause)
|
||||
{
|
||||
if (!bWithPause && es == AesEffectState::EsPaused)
|
||||
continue;
|
||||
cfd.data = es;
|
||||
// Qt6 removed Qt5's QVariant template operator=, so store the enum via setValue
|
||||
// (requires the Q_DECLARE_METATYPE added to aes_base_model.h).
|
||||
cfd.data.setValue(es);
|
||||
cfd.text = AreaEffectSimulation::toString(es);
|
||||
cfc.data.push_back(cfd);
|
||||
}
|
||||
@@ -134,7 +138,7 @@ void AesGuiBasHelpers::updateComboboxFilterData(const QSet<int>& availablePartyI
|
||||
for (const int i : std::as_const(availablePartyIds))
|
||||
{
|
||||
cfd.data = i;
|
||||
cfd.text = ParticipantManagement::trPartyName(m_ppmDtc->party(i).name());
|
||||
cfd.text = ParticipantManagement::trPartyName(m_ppmDtc->party(i).name);
|
||||
cfd.icon = iconFromPartyId(i);
|
||||
cfc.data.push_back(cfd);
|
||||
}
|
||||
@@ -164,7 +168,7 @@ void AesGuiBasHelpers::fillAvailableChargeIds(ProjectDataManagement::GearClass g
|
||||
m_availableChargeIds.clear();
|
||||
const QVector<ProjectDataManagement::ChargeType> availableCharges = m_pdmDtc->chargesForGearClass(gc);
|
||||
for (const auto& charge : availableCharges)
|
||||
m_availableChargeIds += charge.id();
|
||||
m_availableChargeIds += charge.id;
|
||||
|
||||
if (m_availableChargeIds.isEmpty())
|
||||
m_availableChargeIds += 0;
|
||||
@@ -178,7 +182,7 @@ void AesGuiBasHelpers::fillAvailableChargeIds(const QVector<ProjectDataManagemen
|
||||
{
|
||||
const QVector<ProjectDataManagement::ChargeType>& availableCharges = m_pdmDtc->chargesForGearClass(gc);
|
||||
for (const auto& charge : std::as_const(availableCharges))
|
||||
m_availableChargeIds += charge.id();
|
||||
m_availableChargeIds += charge.id;
|
||||
}
|
||||
|
||||
if (m_availableChargeIds.isEmpty())
|
||||
@@ -192,7 +196,7 @@ AesItemSortFilterProxyModel::AesItemSortFilterProxyModel(LtsSession::LtsSession*
|
||||
if (m_session->getDtc<ParticipantManagement::DataInterface>(ppmDtc))
|
||||
{
|
||||
auto cb = [this](const ParticipantManagement::Party& party) {
|
||||
m_partyColors[party.id()] = QColor::fromRgb(QRgb(party.color()));
|
||||
m_partyColors[party.id] = QColor::fromRgb(QRgb(party.color));
|
||||
};
|
||||
ppmDtc->partys(cb);
|
||||
}
|
||||
@@ -236,11 +240,11 @@ bool AesItemSortFilterProxyModel::lessThan(const QModelIndex& source_left, const
|
||||
case AesGuiBasHelpers::BcEffectStart: {
|
||||
const auto effectStartLeft = aesEffectStart(source_left.row());
|
||||
const auto effectStartRight = aesEffectStart(source_right.row());
|
||||
if (effectStartLeft.is_set() && effectStartRight.is_set())
|
||||
if (effectStartLeft.has_value() && effectStartRight.has_value())
|
||||
return effectStartLeft.get() < effectStartRight.get();
|
||||
if (effectStartRight.is_set())
|
||||
if (effectStartRight.has_value())
|
||||
return true;
|
||||
if (effectStartLeft.is_set())
|
||||
if (effectStartLeft.has_value())
|
||||
return false;
|
||||
return aesId(source_left.row()) < aesId(source_right.row());
|
||||
}
|
||||
@@ -307,10 +311,10 @@ bool AesItemSortFilterProxyModel::checkFilter(int source_row) const
|
||||
|
||||
const auto effectStart = aesEffectStart(source_row);
|
||||
qint64 effectEnd = 0;
|
||||
if (effectStart.is_set())
|
||||
if (effectStart.has_value())
|
||||
effectEnd = effectStart.get() + aesEffectDuration(source_row);
|
||||
|
||||
if (effectStart.is_set() && effectEnd + m_offset > m_session->partitionTime())
|
||||
if (effectStart.has_value() && effectEnd + m_offset > m_session->partitionTime())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
+45
-35
@@ -22,6 +22,12 @@
|
||||
#include <AreaEffectSimulation/aes_data_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm_enums.hpp>
|
||||
|
||||
// Qt6's QVariant no longer has Qt5's permissive template operator, so a scoped
|
||||
// enum must be registered to be stored in / retrieved from a QVariant. The effect-state
|
||||
// combobox filter (ComboboxFilterData::data) and the model's ComboboxFilterRole both
|
||||
// hold AesEffectState in a QVariant for filtering, so register the meta-type here.
|
||||
Q_DECLARE_METATYPE(AreaEffectSimulation::AesEffectState)
|
||||
|
||||
const static int DEFAULT_EFFECT_DURATION = 777777;
|
||||
|
||||
namespace LtsSession
|
||||
@@ -141,9 +147,9 @@ protected:
|
||||
QSet<int> availablePartyIds;
|
||||
for (const T &data : std::as_const(AesGuiBaseModel::m_vecData))
|
||||
{
|
||||
availabelChargeIds.insert(data.chargeStruct().chargeTypeId());
|
||||
if (data.partyId().is_set())
|
||||
availablePartyIds.insert(data.partyId().get());
|
||||
availabelChargeIds.insert(data.chargeStruct.chargeTypeId);
|
||||
if (data.partyId.has_value())
|
||||
availablePartyIds.insert(data.partyId.get());
|
||||
}
|
||||
updateComboboxFilterData(availablePartyIds, availabelChargeIds);
|
||||
}
|
||||
@@ -195,22 +201,22 @@ protected:
|
||||
case BcIsCentral:
|
||||
return QVariant();
|
||||
case BcChargeType:
|
||||
return QObject::tr("Id: %1").arg(item.chargeStruct().chargeTypeId());
|
||||
return QObject::tr("Id: %1").arg(item.chargeStruct.chargeTypeId);
|
||||
case BcEffectDuration:
|
||||
{
|
||||
if (item.effectDuration() == DEFAULT_EFFECT_DURATION)
|
||||
if (item.effectDuration == DEFAULT_EFFECT_DURATION)
|
||||
return QStringLiteral("---");
|
||||
else
|
||||
return QObject::tr("%1 secs").arg(QString::number(item.effectDuration() / 1000.0, 'f', 3));
|
||||
return QObject::tr("%1 secs").arg(QString::number(item.effectDuration / 1000.0, 'f', 3));
|
||||
}
|
||||
case BcEffectState:
|
||||
return QObject::tr("Id: %1").arg(item.effectStateId().underlying());
|
||||
return QObject::tr("Id: %1").arg(static_cast<int>(item.effectStateId));
|
||||
case BcEffectSource:
|
||||
return QObject::tr("Id: %1").arg(item.effectSourceId().underlying());
|
||||
return QObject::tr("Id: %1").arg(static_cast<int>(item.effectSourceId));
|
||||
case BcParty:
|
||||
return QObject::tr("Id: %1").arg(item.partyId().is_set() ? item.partyId().get() : -1);
|
||||
return QObject::tr("Id: %1").arg(item.partyId.has_value() ? item.partyId.get() : -1);
|
||||
case BcParticipant:
|
||||
return QObject::tr("Id: %1").arg(item.participantId().is_set() ? item.participantId().get() : -1);
|
||||
return QObject::tr("Id: %1").arg(item.participantId.has_value() ? item.participantId.get() : -1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,28 +225,28 @@ protected:
|
||||
switch (column)
|
||||
{
|
||||
case BcId:
|
||||
return item.id();
|
||||
return item.id;
|
||||
case BcName:
|
||||
return QString::fromUtf8(item.name().c_str());
|
||||
return QString::fromUtf8(item.name.c_str());
|
||||
case BcChargeType:
|
||||
return chargeTypeName(item.chargeStruct().chargeTypeId());
|
||||
return chargeTypeName(item.chargeStruct.chargeTypeId);
|
||||
case BcEffectDuration:
|
||||
if (item.effectDuration() == DEFAULT_EFFECT_DURATION)
|
||||
if (item.effectDuration == DEFAULT_EFFECT_DURATION)
|
||||
return QStringLiteral("---");
|
||||
else
|
||||
return LtsWidgets::readableDuration(item.effectDuration());
|
||||
return LtsWidgets::readableDuration(item.effectDuration);
|
||||
case BcEffectStart:
|
||||
return item.effectStart().is_set() ? DTG::toStringMSec(item.effectStart().get()) : QObject::tr("---");
|
||||
return item.effectStart.has_value() ? DTG::toStringMSec(item.effectStart.get()) : QObject::tr("---");
|
||||
case BcEffectState:
|
||||
return AreaEffectSimulation::toString(item.effectStateId());
|
||||
return AreaEffectSimulation::toString(item.effectStateId);
|
||||
case BcEffectSource:
|
||||
return ProjectDataManagement::toString(item.effectSourceId());
|
||||
return ProjectDataManagement::toString(item.effectSourceId);
|
||||
case BcParty:
|
||||
return stringFromPartyId(item.partyId());
|
||||
return stringFromPartyId(item.partyId);
|
||||
case BcParticipant:
|
||||
return hierarchyFromParticipantId(item.participantId());
|
||||
return hierarchyFromParticipantId(item.participantId);
|
||||
case BcIsCentral:
|
||||
return simulationTypeText(item.isCentral());
|
||||
return simulationTypeText(item.isCentral);
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
@@ -250,7 +256,7 @@ protected:
|
||||
switch (column)
|
||||
{
|
||||
case BcParty:
|
||||
return iconFromPartyId(item.partyId());
|
||||
return iconFromPartyId(item.partyId);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -262,13 +268,17 @@ protected:
|
||||
switch (column)
|
||||
{
|
||||
case BcChargeType:
|
||||
return item.chargeStruct().chargeTypeId();
|
||||
return item.chargeStruct.chargeTypeId;
|
||||
case BcEffectState:
|
||||
return item.effectStateId().underlying();
|
||||
// Qt6 cannot implicitly construct a QVariant from a scoped enum; use the
|
||||
// meta-type-aware helper (needs the Q_DECLARE_METATYPE above). A free
|
||||
// qVariantFromValue is not visible at this template's definition point, so
|
||||
// use the QVariant::fromValue member instead.
|
||||
return QVariant::fromValue(item.effectStateId);
|
||||
case BcParty:
|
||||
return item.partyId().is_set() ? item.partyId().get() : -1;
|
||||
return item.partyId.has_value() ? item.partyId.get() : -1;
|
||||
case BcIsCentral:
|
||||
return simulationTypeText(item.isCentral());
|
||||
return simulationTypeText(item.isCentral);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -284,7 +294,7 @@ public:
|
||||
protected:
|
||||
bool isFiltered(const T &data, DataModification modType) const override
|
||||
{
|
||||
if (!m_availableChargeIds.isEmpty() && !m_availableChargeIds.contains(data.chargeStruct().chargeTypeId()))
|
||||
if (!m_availableChargeIds.isEmpty() && !m_availableChargeIds.contains(data.chargeStruct.chargeTypeId))
|
||||
return true;
|
||||
return LtsWidgets::LtsAbstractTableModel<T>::isFiltered(data, modType);
|
||||
}
|
||||
@@ -342,10 +352,10 @@ public:
|
||||
}
|
||||
T aesItem(int row) const { return m_sourceModel->aesItem(row); }
|
||||
|
||||
int aesId(int row) const override { return aesItem(row).id(); }
|
||||
int aesId(int row) const override { return aesItem(row).id; }
|
||||
bool isExpired(int row) const override
|
||||
{
|
||||
const auto es = aesItem(row).effectStateId();
|
||||
const auto es = aesItem(row).effectStateId;
|
||||
|
||||
return es != AreaEffectSimulation::AesEffectState::EsCreated &&
|
||||
es != AreaEffectSimulation::AesEffectState::EsPrepared &&
|
||||
@@ -355,14 +365,14 @@ public:
|
||||
}
|
||||
bool isExternal(int row) const override
|
||||
{
|
||||
return aesItem(row).externalId() > 0;
|
||||
return aesItem(row).externalId > 0;
|
||||
}
|
||||
protected:
|
||||
AesEffectState aesEffectStateId(int row) const override { return aesItem(row).effectStateId(); }
|
||||
ProjectDataManagement::EffectSource aesEffectSourceId(int row) const override { return aesItem(row).effectSourceId(); }
|
||||
dds::core::optional<rti::core::int64> aesEffectStart(int row) const override { return aesItem(row).effectStart(); }
|
||||
int32_t aesEffectDuration(int row) const override { return aesItem(row).effectDuration(); }
|
||||
virtual int32_t partyId(int row) const override { return aesItem(row).partyId().is_set()?aesItem(row).partyId().get():-1; }
|
||||
AesEffectState aesEffectStateId(int row) const override { return aesItem(row).effectStateId; }
|
||||
ProjectDataManagement::EffectSource aesEffectSourceId(int row) const override { return aesItem(row).effectSourceId; }
|
||||
dds::core::optional<rti::core::int64> aesEffectStart(int row) const override { return aesItem(row).effectStart; }
|
||||
int32_t aesEffectDuration(int row) const override { return aesItem(row).effectDuration; }
|
||||
virtual int32_t partyId(int row) const override { return aesItem(row).partyId.has_value()?aesItem(row).partyId.get():-1; }
|
||||
|
||||
AesGuiBaseModel<T> *m_sourceModel = nullptr;
|
||||
};
|
||||
|
||||
+14
-12
@@ -1,6 +1,7 @@
|
||||
|
||||
|
||||
#include "aes_itemlist.h"
|
||||
#include <NGLLogger/NGLLoggerBootstrap.h>
|
||||
|
||||
#include "aes_base_model.h"
|
||||
#include "ui_aes_itemlist.h"
|
||||
@@ -27,6 +28,7 @@ AesItemList::AesItemList(const QString& menuGroup, QWidget* parent)
|
||||
m_menuGroup(menuGroup), m_requestHelper(new LtsUtils::RequestHelper(this)), m_showExpired(false),
|
||||
m_bHasAddEditOperatorRights(true), m_bHasAddAdlerOperatorRights(false), m_session(nullptr),
|
||||
m_ui(new Ui::AesItemList)
|
||||
, m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
@@ -174,15 +176,15 @@ void AesItemList::onAdlerBtn()
|
||||
|
||||
DEBUG_LOG(m_logger) << "onAdlerBtn aesEffectState=" << aesEffectState;
|
||||
|
||||
switch (aesEffectState.underlying())
|
||||
switch (aesEffectState)
|
||||
{
|
||||
case AreaEffectSimulation::AesEffectState::EsReceived: {
|
||||
switch (effectSource.underlying())
|
||||
switch (effectSource)
|
||||
{
|
||||
case ProjectDataManagement::EffectSource::ES_ADLER: {
|
||||
AcknowledgeExternalAesItemRequest req;
|
||||
int aesId = model()->aesId(currentRow());
|
||||
req.aesId(aesId);
|
||||
req.aesId = aesId;
|
||||
m_requestHelper->startSingleRequest(
|
||||
[req, this]() { return m_ftc->acknowledgeExternalAesItemRequest(req, this); });
|
||||
|
||||
@@ -191,7 +193,7 @@ void AesItemList::onAdlerBtn()
|
||||
default: {
|
||||
ExplosionClusterReleaseReceivedRequest req;
|
||||
int aesId = model()->aesId(currentRow());
|
||||
req.id(aesId);
|
||||
req.id = aesId;
|
||||
m_requestHelper->startSingleRequest(
|
||||
[req, this]() { return m_ftc->explosionClusterReleaseReceivedRequest(req, this); });
|
||||
break;
|
||||
@@ -206,10 +208,10 @@ void AesItemList::onAdlerBtn()
|
||||
effectSource == ProjectDataManagement::EffectSource::ES_ADLER_STANDALONE)
|
||||
{
|
||||
AreaEffectSimulation::SetAesItemEffectorStateRequest req;
|
||||
req.aesId(model()->aesId(currentRow()));
|
||||
req.newEffectorState(AesEffectorState::EsReadyToFire);
|
||||
DEBUG_LOG(m_logger) << "Send setAesItemEffectorStateRequest with aesId: " << req.aesId()
|
||||
<< ", AesEffectorState: " << req.newEffectorState();
|
||||
req.aesId = model()->aesId(currentRow());
|
||||
req.newEffectorState = AesEffectorState::EsReadyToFire;
|
||||
DEBUG_LOG(m_logger) << "Send setAesItemEffectorStateRequest with aesId: " << req.aesId
|
||||
<< ", AesEffectorState: " << req.newEffectorState;
|
||||
|
||||
m_requestHelper->startSingleRequest(
|
||||
[req, this]() { return m_ftc->setAesItemEffectorStateRequest(req, this); });
|
||||
@@ -227,7 +229,7 @@ void AesItemList::onHandleAdler()
|
||||
DEBUG_LOG(m_logger) << "onHandleAdler aesEffectState=" << aesEffectState;
|
||||
auto* adlerBtn = m_buttonBox->getButton(ADLER_BTN);
|
||||
|
||||
switch (aesEffectState.underlying())
|
||||
switch (aesEffectState)
|
||||
{
|
||||
case AreaEffectSimulation::AesEffectState::EsReceived: {
|
||||
adlerBtn->setText(tr("Mark received"));
|
||||
@@ -238,11 +240,11 @@ void AesItemList::onHandleAdler()
|
||||
case AreaEffectSimulation::AesEffectState::EsCreated:
|
||||
case AreaEffectSimulation::AesEffectState::EsPrepared: {
|
||||
ProjectDataManagement::EffectSource effectSource = model()->aesEffectSourceId(currentRow());
|
||||
if (effectSource.underlying() == ProjectDataManagement::EffectSource::ES_ADLER ||
|
||||
effectSource.underlying() == ProjectDataManagement::EffectSource::ES_ADLER_STANDALONE)
|
||||
if (effectSource == ProjectDataManagement::EffectSource::ES_ADLER ||
|
||||
effectSource == ProjectDataManagement::EffectSource::ES_ADLER_STANDALONE)
|
||||
{
|
||||
const EffectCluster& ecData = m_dtc->effectCluster(model()->aesId(currentRow()));
|
||||
if (ecData.effectorState() == AreaEffectSimulation::AesEffectorState::EsNotReadyToFire)
|
||||
if (ecData.effectorState == AreaEffectSimulation::AesEffectorState::EsNotReadyToFire)
|
||||
{
|
||||
adlerBtn->setText(tr("Ready To Fire"));
|
||||
adlerBtn->show();
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ QPixmap PixmapLabel::scaledPixmap(const QSize &size, const Qt::AspectRatioMode &
|
||||
|
||||
Qt::BrushStyle PixmapLabel::checkForBrushStyle(const AesEffectState &state)
|
||||
{
|
||||
switch(state.underlying())
|
||||
switch(state)
|
||||
{
|
||||
case AesEffectState::EsUnknown:
|
||||
return Qt::BrushStyle::NoBrush;
|
||||
|
||||
+4
-4
@@ -45,15 +45,15 @@ bool CustomViewBorderline::init(const QModelIndex &idx)
|
||||
|
||||
bool CustomViewBorderline::calculateIcon(const AreaEffectSimulation::Borderline &line, const QColor &color)
|
||||
{
|
||||
if (line.segments().size() == 0)
|
||||
if (line.segments.size() == 0)
|
||||
return false;
|
||||
|
||||
QVector<QPointF> segments;
|
||||
segments.reserve(line.segments().size());
|
||||
segments.reserve(line.segments.size());
|
||||
int setZone = -1;
|
||||
for (const Core::GeoPosition2D &s : line.segments())
|
||||
for (const Core::GeoPosition2D &s : line.segments)
|
||||
{
|
||||
const LtsCoordTrans::UtmCoordinate coord(LtsCoordTrans::UtmCoordinate::fromGeographic(s.lon(), s.lat(), setZone));
|
||||
const LtsCoordTrans::UtmCoordinate coord(LtsCoordTrans::UtmCoordinate::fromGeographic(s.lon, s.lat, setZone));
|
||||
if (setZone < 0)
|
||||
setZone = coord.zone;
|
||||
segments.append(QPointF(coord.x, coord.y));
|
||||
|
||||
+34
-34
@@ -83,15 +83,15 @@ void BorderlineEdit::enableUiElements(bool enable)
|
||||
|
||||
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->borderline(m_aesItem.id());
|
||||
auto baseData = m_dtc->borderline(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -148,26 +148,26 @@ bool BorderlineEdit::init(int aesItemId, bool copy, LtsSession::LtsSession *sess
|
||||
|
||||
void BorderlineEdit::setData(const Borderline &borderline, bool copy)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << "borderlineId: " << borderline.id()
|
||||
<< " operatorId: " << borderline.operatorId();
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << "borderlineId: " << borderline.id
|
||||
<< " operatorId: " << borderline.operatorId;
|
||||
|
||||
m_aesItem = borderline;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(borderline.name()));
|
||||
if ( borderline.partyId().is_set())
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(borderline.partyId().get()));
|
||||
m_ui->lbBorderlineId->setText(QString::number(borderline.id()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(borderline.name));
|
||||
if ( borderline.partyId.has_value())
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(borderline.partyId.get()));
|
||||
m_ui->lbBorderlineId->setText(QString::number(borderline.id));
|
||||
|
||||
if (borderline.operatorId() > 0)
|
||||
if (borderline.operatorId > 0)
|
||||
m_ui->cbLocalBorderline->setChecked(true);
|
||||
else
|
||||
m_ui->cbLocalBorderline->setChecked(false);
|
||||
|
||||
setCoordinates(borderline.segments());
|
||||
setCoordinates(borderline.segments);
|
||||
}
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ bool BorderlineEdit::apply()
|
||||
LtsSessionData::LtsSessionData::getInstance()->getOperatorId() :
|
||||
0);
|
||||
|
||||
const BorderlineModifyRequest req(m_aesItem.id(),
|
||||
const BorderlineModifyRequest req(m_aesItem.id,
|
||||
operatorId,
|
||||
m_ui->cbParty->currentData().toInt(),
|
||||
m_ui->leIdentifier->text().toStdString(),
|
||||
@@ -252,7 +252,7 @@ QByteArray BorderlineEdit::borderlineToJson()
|
||||
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("XmlType")] = FileManagement::toString(FileManagement::XmlType::AESBorderlineEdit);
|
||||
obj[QStringLiteral("id")] = m_aesItem.id();
|
||||
obj[QStringLiteral("id")] = m_aesItem.id;
|
||||
obj[QStringLiteral("operatorId")] = operatorId;
|
||||
obj[QStringLiteral("cbParty")] = m_ui->cbParty->currentData().toInt();
|
||||
obj[QStringLiteral("leIdentifier")] = m_ui->leIdentifier->text();
|
||||
@@ -262,8 +262,8 @@ QByteArray BorderlineEdit::borderlineToJson()
|
||||
for (const Core::GeoPosition2D &segment : segments)
|
||||
{
|
||||
QJsonObject innerSeg;
|
||||
innerSeg[QStringLiteral("lat")] = segment.lat();
|
||||
innerSeg[QStringLiteral("lon")] = segment.lon();
|
||||
innerSeg[QStringLiteral("lat")] = segment.lat;
|
||||
innerSeg[QStringLiteral("lon")] = segment.lon;
|
||||
|
||||
arrSeg += innerSeg;
|
||||
}
|
||||
@@ -280,31 +280,31 @@ Borderline BorderlineEdit::jsonToBorderline(const QByteArray &content)
|
||||
const QJsonDocument doc(QJsonDocument::fromJson(content));
|
||||
const QJsonObject obj(doc.object());
|
||||
|
||||
borderline.chargeStruct().chargeTypeId(obj[QStringLiteral("chargeTypeId")].toInt());
|
||||
borderline.effectDuration(obj[QStringLiteral("effectDuration")].toDouble());
|
||||
borderline.effectMarkingInTa(obj[QStringLiteral("effectMarkingInTa")].toInt());
|
||||
borderline.effectStart(obj[QStringLiteral("effectStart")].toDouble());
|
||||
borderline.chargeStruct.chargeTypeId = obj[QStringLiteral("chargeTypeId")].toInt();
|
||||
borderline.effectDuration = obj[QStringLiteral("effectDuration")].toDouble();
|
||||
borderline.effectMarkingInTa = obj[QStringLiteral("effectMarkingInTa")].toInt();
|
||||
borderline.effectStart = obj[QStringLiteral("effectStart")].toDouble();
|
||||
int effectStateId = obj[QStringLiteral("effectStateId")].toInt();
|
||||
borderline.effectStateId(static_cast<AreaEffectSimulation::AesEffectState>(effectStateId));
|
||||
borderline.operatorId(obj[QStringLiteral("operatorId")].toInt());
|
||||
borderline.id(0);
|
||||
borderline.name(obj[QStringLiteral("leIdentifier")].toString().toStdString());
|
||||
borderline.effectStateId = static_cast<AreaEffectSimulation::AesEffectState>(effectStateId);
|
||||
borderline.operatorId = obj[QStringLiteral("operatorId")].toInt();
|
||||
borderline.id = 0;
|
||||
borderline.name = obj[QStringLiteral("leIdentifier")].toString().toStdString();
|
||||
if (obj.contains(QStringLiteral("participantId")) )
|
||||
borderline.participantId(obj[QStringLiteral("participantId")].toDouble());
|
||||
borderline.participantId = obj[QStringLiteral("participantId")].toDouble();
|
||||
if (obj.contains(QStringLiteral("partyId")) )
|
||||
borderline.partyId(obj[QStringLiteral("partyId")].toDouble());
|
||||
borderline.sampleTime(obj[QStringLiteral("sampleTime")].toDouble());
|
||||
borderline.partyId = obj[QStringLiteral("partyId")].toDouble();
|
||||
borderline.sampleTime = obj[QStringLiteral("sampleTime")].toDouble();
|
||||
|
||||
|
||||
const QJsonArray arrSeg = (obj.value(QStringLiteral("segments")).toArray());
|
||||
borderline.segments().reserve(arrSeg.size());
|
||||
borderline.segments.reserve(arrSeg.size());
|
||||
for (const auto &ele : arrSeg)
|
||||
{
|
||||
const QJsonObject objSeg(ele.toObject());
|
||||
Core::GeoPosition2D segment;
|
||||
segment.lat(objSeg[QStringLiteral("lat")].toDouble());
|
||||
segment.lon(objSeg[QStringLiteral("lon")].toDouble());
|
||||
borderline.segments().push_back(std::move(segment));
|
||||
segment.lat = objSeg[QStringLiteral("lat")].toDouble();
|
||||
segment.lon = objSeg[QStringLiteral("lon")].toDouble();
|
||||
borderline.segments.push_back(std::move(segment));
|
||||
}
|
||||
|
||||
|
||||
@@ -343,7 +343,7 @@ void BorderlineEdit::onImportButtonClicked()
|
||||
{
|
||||
Borderline borderline = jsonToBorderline(content);
|
||||
setData( borderline, true);
|
||||
setCoordinates(borderline.segments());
|
||||
setCoordinates(borderline.segments);
|
||||
QPolygonF coordinates = getCoordinatesQPointF();
|
||||
|
||||
onPolylineData(coordinates);
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
#include <PluginInterfaces/gui_plugin_interface.h>
|
||||
#include <FileManagement/flm_explorer_gui_plugin_interface.h>
|
||||
@@ -37,7 +37,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddBorderline") : QStringLiteral("EditBorderline%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddBorderline") : QStringLiteral("EditBorderline%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_borderline_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+7
-7
@@ -156,13 +156,13 @@ void BorderlineList::onImportButtonClicked()
|
||||
for(const auto &borderline : requests)
|
||||
{
|
||||
BorderlineModifyRequest request;
|
||||
request.id(0);
|
||||
request.name(borderline.name());
|
||||
request.operatorId(borderline.operatorId());
|
||||
if (borderline.partyId().is_set())
|
||||
request.partyId(borderline.partyId().get());
|
||||
request.name(borderline.name());
|
||||
request.segments(borderline.segments());
|
||||
request.id = 0;
|
||||
request.name = borderline.name;
|
||||
request.operatorId = borderline.operatorId;
|
||||
if (borderline.partyId.has_value())
|
||||
request.partyId = borderline.partyId.get();
|
||||
request.name = borderline.name;
|
||||
request.segments = borderline.segments;
|
||||
m_requestHelper->startSingleRequest([this, request]()
|
||||
{
|
||||
return m_ftc->borderlineModifyRequest(request, this);
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <FileManagement/flm_explorer_gui_plugin_interface.h>
|
||||
#include "aes_borderlines_model.h"
|
||||
|
||||
|
||||
+35
-35
@@ -59,7 +59,7 @@ QVariant BorderlinesModel::data(const QModelIndex &index, int role) const
|
||||
switch (index.column())
|
||||
{
|
||||
case ColOperatorId:
|
||||
if (item.operatorId() == 0)
|
||||
if (item.operatorId == 0)
|
||||
return tr("Global");
|
||||
return tr("Local");
|
||||
default:
|
||||
@@ -72,8 +72,8 @@ QVariant BorderlinesModel::data(const QModelIndex &index, int role) const
|
||||
bool BorderlinesModel::isFiltered(const Borderline &data, DataModification modType) const
|
||||
{
|
||||
|
||||
if ((data.operatorId() != LtsSessionData::LtsSessionData::getInstance()->getOperatorId()) &&
|
||||
(data.operatorId() != 0))
|
||||
if ((data.operatorId != LtsSessionData::LtsSessionData::getInstance()->getOperatorId()) &&
|
||||
(data.operatorId != 0))
|
||||
return true;
|
||||
return AesGuiBaseModel::isFiltered(data, modType);
|
||||
|
||||
@@ -92,29 +92,29 @@ QByteArray BorderlinesModel::borderlinesToJson()
|
||||
QJsonObject inner;
|
||||
const Borderline &borderline = m_vecData.at(row);
|
||||
|
||||
inner[QStringLiteral("chargeTypeId")] = borderline.chargeStruct().chargeTypeId();
|
||||
inner[QStringLiteral("effectDuration")] = borderline.effectDuration();
|
||||
inner[QStringLiteral("effectMarkingInTa")] = borderline.effectMarkingInTa();
|
||||
inner[QStringLiteral("chargeTypeId")] = borderline.chargeStruct.chargeTypeId;
|
||||
inner[QStringLiteral("effectDuration")] = borderline.effectDuration;
|
||||
inner[QStringLiteral("effectMarkingInTa")] = borderline.effectMarkingInTa;
|
||||
|
||||
inner[QStringLiteral("effectStateId")] = borderline.effectStateId().underlying();
|
||||
inner[QStringLiteral("id")] = borderline.id();
|
||||
inner[QStringLiteral("isDeleted")] = borderline.isDeleted();
|
||||
inner[QStringLiteral("isUsed")] = borderline.isUsed();
|
||||
inner[QStringLiteral("name")] = QString::fromStdString(borderline.name());
|
||||
inner[QStringLiteral("operatorId")] = borderline.operatorId();
|
||||
if ( borderline.participantId().is_set())
|
||||
inner[QStringLiteral("participantId")] = borderline.participantId().get();
|
||||
if ( borderline.partyId().is_set())
|
||||
inner[QStringLiteral("partyId")] = borderline.partyId().get();
|
||||
inner[QStringLiteral("sampleTime")] = borderline.sampleTime();
|
||||
inner[QStringLiteral("effectStateId")] = static_cast<int>(borderline.effectStateId);
|
||||
inner[QStringLiteral("id")] = borderline.id;
|
||||
inner[QStringLiteral("isDeleted")] = borderline.isDeleted;
|
||||
inner[QStringLiteral("isUsed")] = borderline.isUsed;
|
||||
inner[QStringLiteral("name")] = QString::fromStdString(borderline.name);
|
||||
inner[QStringLiteral("operatorId")] = borderline.operatorId;
|
||||
if ( borderline.participantId.has_value())
|
||||
inner[QStringLiteral("participantId")] = borderline.participantId.get();
|
||||
if ( borderline.partyId.has_value())
|
||||
inner[QStringLiteral("partyId")] = borderline.partyId.get();
|
||||
inner[QStringLiteral("sampleTime")] = static_cast<double>(borderline.sampleTime);
|
||||
|
||||
arrSeg = {};
|
||||
for (const Core::GeoPosition2D &segment : borderline.segments())
|
||||
for (const Core::GeoPosition2D &segment : borderline.segments)
|
||||
{
|
||||
QJsonObject innerSeg;
|
||||
|
||||
innerSeg[QStringLiteral("lat")] = segment.lat();
|
||||
innerSeg[QStringLiteral("lon")] = segment.lon();
|
||||
innerSeg[QStringLiteral("lat")] = segment.lat;
|
||||
innerSeg[QStringLiteral("lon")] = segment.lon;
|
||||
|
||||
arrSeg += innerSeg;
|
||||
}
|
||||
@@ -139,31 +139,31 @@ QVector<Borderline> BorderlinesModel::jsonToBorderlineVector(const QByteArray &c
|
||||
{
|
||||
const QJsonObject objArr(ele.toObject());
|
||||
Borderline borderline;
|
||||
borderline.chargeStruct().chargeTypeId(objArr[QStringLiteral("chargeTypeId")].toInt());
|
||||
borderline.effectDuration(objArr[QStringLiteral("effectDuration")].toDouble());
|
||||
borderline.effectMarkingInTa(objArr[QStringLiteral("effectMarkingInTa")].toInt());
|
||||
borderline.effectStart(objArr[QStringLiteral("effectStart")].toDouble());
|
||||
borderline.chargeStruct.chargeTypeId = objArr[QStringLiteral("chargeTypeId")].toInt();
|
||||
borderline.effectDuration = objArr[QStringLiteral("effectDuration")].toDouble();
|
||||
borderline.effectMarkingInTa = objArr[QStringLiteral("effectMarkingInTa")].toInt();
|
||||
borderline.effectStart = objArr[QStringLiteral("effectStart")].toDouble();
|
||||
int effectStateId = objArr[QStringLiteral("effectStateId")].toInt();
|
||||
borderline.effectStateId(static_cast<AreaEffectSimulation::AesEffectState>(effectStateId));
|
||||
borderline.operatorId(objArr[QStringLiteral("operatorId")].toInt());
|
||||
borderline.id(0);
|
||||
borderline.name(objArr[QStringLiteral("name")].toString().toStdString());
|
||||
borderline.effectStateId = static_cast<AreaEffectSimulation::AesEffectState>(effectStateId);
|
||||
borderline.operatorId = objArr[QStringLiteral("operatorId")].toInt();
|
||||
borderline.id = 0;
|
||||
borderline.name = objArr[QStringLiteral("name")].toString().toStdString();
|
||||
if (objArr.contains(QStringLiteral("participantId")) )
|
||||
borderline.participantId(objArr[QStringLiteral("participantId")].toDouble());
|
||||
borderline.participantId = objArr[QStringLiteral("participantId")].toDouble();
|
||||
if (objArr.contains(QStringLiteral("partyId")) )
|
||||
borderline.partyId(objArr[QStringLiteral("partyId")].toDouble());
|
||||
borderline.sampleTime(objArr[QStringLiteral("sampleTime")].toDouble());
|
||||
borderline.partyId = objArr[QStringLiteral("partyId")].toDouble();
|
||||
borderline.sampleTime = objArr[QStringLiteral("sampleTime")].toDouble();
|
||||
|
||||
|
||||
const QJsonArray arrSeg = (objArr.value(QStringLiteral("segments")).toArray());
|
||||
borderline.segments().reserve(arrSeg.size());
|
||||
borderline.segments.reserve(arrSeg.size());
|
||||
for (const auto &seg : arrSeg)
|
||||
{
|
||||
const QJsonObject objSeg(seg.toObject());
|
||||
Core::GeoPosition2D segment;
|
||||
segment.lat(objSeg[QStringLiteral("lat")].toDouble());
|
||||
segment.lon(objSeg[QStringLiteral("lon")].toDouble());
|
||||
borderline.segments().push_back(std::move(segment));
|
||||
segment.lat = objSeg[QStringLiteral("lat")].toDouble();
|
||||
segment.lon = objSeg[QStringLiteral("lon")].toDouble();
|
||||
borderline.segments.push_back(std::move(segment));
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ namespace AreaEffectSimulation
|
||||
|
||||
ChargeAdministrationAdlerList::ChargeAdministrationAdlerList(QWidget* parent)
|
||||
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_model(nullptr), m_sourceModel(nullptr),
|
||||
m_session(nullptr), m_requestHelper(new LtsUtils::RequestHelper(this)), m_ui(new Ui::ChargeAdministrationList)
|
||||
m_session(nullptr), m_requestHelper(new LtsUtils::RequestHelper(this)), m_ui(new Ui::ChargeAdministrationList), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
|
||||
+20
-20
@@ -48,7 +48,7 @@ void ChargeAdministrationAdlerSortFilterProxyModel::setParty(int party)
|
||||
ChargeAdministrationAdlerModel::ChargeAdministrationAdlerModel(QObject* parent)
|
||||
: LtsWidgets::LtsAbstractTableModel<ChargeAdministrationAdler>(
|
||||
{tr("Id"), tr("Charge Type Id"), tr("Changed"), tr("Charge Type Name"), tr("Total Stock"), tr("Gear Class")},
|
||||
parent)
|
||||
parent), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ bool ChargeAdministrationAdlerModel::initModel(LtsSession::LtsSession* session)
|
||||
|
||||
for (const ParticipantManagement::Party& p : std::as_const(parties))
|
||||
{
|
||||
updateItem(p.id());
|
||||
updateItem(p.id);
|
||||
}
|
||||
|
||||
connect(m_ppmDtc.get(), &ParticipantManagement::Interface::Dtc::dynamicParticipantDataChanged, this,
|
||||
@@ -99,7 +99,7 @@ void ChargeAdministrationAdlerModel::onStateChanged(const ParticipantManagement:
|
||||
DEBUG_LOG(m_logger) << "+++++++++ DataModification --> " << modType;
|
||||
updateParticipantChargeTypeMap(data);
|
||||
|
||||
updateItem(m_ppmDtc->participant(data.participantId()).partyId());
|
||||
updateItem(m_ppmDtc->participant(data.participantId).partyId);
|
||||
break;
|
||||
}
|
||||
case DataModification::eRemoved: {
|
||||
@@ -112,10 +112,10 @@ void ChargeAdministrationAdlerModel::onParticipantChanged(const ParticipantManag
|
||||
DataModification modType)
|
||||
{
|
||||
Q_UNUSED(modType)
|
||||
qint32 typeId = data.typeId();
|
||||
qint32 participantId = data.id();
|
||||
qint32 typeId = data.typeId;
|
||||
qint32 participantId = data.id;
|
||||
|
||||
if (!data.isDeleted() || (!m_ppmDtc->isAdlerType(typeId) && (m_ppmDtc->type(typeId).typeClass().underlying() !=
|
||||
if (!data.isDeleted || (!m_ppmDtc->isAdlerType(typeId) && (m_ppmDtc->type(typeId).typeClass !=
|
||||
ParticipantManagement::TypeClass::Unit)))
|
||||
return;
|
||||
|
||||
@@ -133,39 +133,39 @@ void ChargeAdministrationAdlerModel::onParticipantChanged(const ParticipantManag
|
||||
m_participantChargeTypeMap.remove(participantId);
|
||||
}
|
||||
|
||||
updateItem(data.partyId());
|
||||
updateItem(data.partyId);
|
||||
}
|
||||
|
||||
void ChargeAdministrationAdlerModel::updateParticipantChargeTypeMap(
|
||||
const ParticipantManagement::DynamicParticipantData& data)
|
||||
{
|
||||
qint32 participantId = data.participantId();
|
||||
qint64 sampleTime = data.sampleTime();
|
||||
qint32 typeId = m_ppmDtc->participant(participantId).typeId();
|
||||
bool isDeleted = m_ppmDtc->participant(participantId).isDeleted();
|
||||
qint32 participantId = data.participantId;
|
||||
qint64 sampleTime = data.sampleTime;
|
||||
qint32 typeId = m_ppmDtc->participant(participantId).typeId;
|
||||
bool isDeleted = m_ppmDtc->participant(participantId).isDeleted;
|
||||
|
||||
if (isDeleted || (!m_ppmDtc->isAdlerType(typeId) &&
|
||||
(m_ppmDtc->type(typeId).typeClass().underlying() != ParticipantManagement::TypeClass::Unit)))
|
||||
(m_ppmDtc->type(typeId).typeClass != ParticipantManagement::TypeClass::Unit)))
|
||||
return;
|
||||
|
||||
QMap<qint32, GearData> chargeTypeGearData;
|
||||
for (const ParticipantManagement::GearInformation& ct : data.gear())
|
||||
for (const ParticipantManagement::GearInformation& ct : data.gear)
|
||||
{
|
||||
if (m_pdmDtc->adlerChargeTypeName(ct.chargeTypeId()).isEmpty())
|
||||
if (m_pdmDtc->adlerChargeTypeName(ct.chargeTypeId).isEmpty())
|
||||
continue;
|
||||
|
||||
GearData gearData;
|
||||
gearData.remain = ct.remain();
|
||||
gearData.lastUpdate = ct.lastUpdate();
|
||||
if (chargeTypeGearData.contains(ct.chargeTypeId()))
|
||||
gearData.remain = ct.remain;
|
||||
gearData.lastUpdate = ct.lastUpdate;
|
||||
if (chargeTypeGearData.contains(ct.chargeTypeId))
|
||||
{
|
||||
gearData.remain += chargeTypeGearData.value(ct.chargeTypeId()).remain;
|
||||
gearData.remain += chargeTypeGearData.value(ct.chargeTypeId).remain;
|
||||
}
|
||||
chargeTypeGearData.insert(ct.chargeTypeId(), gearData);
|
||||
chargeTypeGearData.insert(ct.chargeTypeId, gearData);
|
||||
}
|
||||
m_participantChargeTypeMap.insert(
|
||||
participantId,
|
||||
ChargeStruct(participantId, m_ppmDtc->participant(participantId).partyId(), sampleTime, chargeTypeGearData));
|
||||
ChargeStruct(participantId, m_ppmDtc->participant(participantId).partyId, sampleTime, chargeTypeGearData));
|
||||
}
|
||||
|
||||
void ChargeAdministrationAdlerModel::updateItem(int partyId)
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+9
-9
@@ -25,7 +25,7 @@ namespace AreaEffectSimulation
|
||||
ChargeAdministrationList::ChargeAdministrationList(QWidget* parent)
|
||||
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly), m_model(nullptr), m_sourceModel(nullptr),
|
||||
m_session(nullptr), m_ftc(nullptr), m_requestHelper(new LtsUtils::RequestHelper(this)),
|
||||
m_ui(new Ui::ChargeAdministrationList)
|
||||
m_ui(new Ui::ChargeAdministrationList), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
@@ -154,15 +154,15 @@ void ChargeAdministrationList::onEditCharge()
|
||||
{
|
||||
ChargeAdministration item = m_sourceModel->getRowData(m_ui->widget->currentIndex().row());
|
||||
|
||||
if (item.id() < 0)
|
||||
if (item.id < 0)
|
||||
return;
|
||||
|
||||
ProjectDataManagement::ChargeType ct = m_sourceModel->chargeType(item.chargeTypeId());
|
||||
ProjectDataManagement::ChargeType ct = m_sourceModel->chargeType(item.chargeTypeId);
|
||||
|
||||
const QModelIndex temp = m_ui->widget->currentIndex();
|
||||
|
||||
const QModelIndex mi = temp.sibling(temp.row(), ChargeAdministrationModel::ColTypeName);
|
||||
auto ce = new ChargeEdit(ct.id(), m_sourceModel->data(mi).toString(), item.amount(), this);
|
||||
auto ce = new ChargeEdit(ct.id, m_sourceModel->data(mi).toString(), item.amount, this);
|
||||
connect(ce, &ChargeEdit::newStock, this, &ChargeAdministrationList::onChargeEditFinished);
|
||||
connect(ce, &ChargeEdit::newStock, ce, &ChargeEdit::deleteLater);
|
||||
ce->show();
|
||||
@@ -172,16 +172,16 @@ void ChargeAdministrationList::onChargeEditFinished(int chargeId, int newStock)
|
||||
{
|
||||
ChargeAdministration item = m_sourceModel->getRowData(m_ui->widget->currentIndex().row());
|
||||
|
||||
if (item.chargeTypeId() != chargeId)
|
||||
if (item.chargeTypeId != chargeId)
|
||||
return;
|
||||
|
||||
if (item.amount() == newStock)
|
||||
if (item.amount == newStock)
|
||||
return;
|
||||
item.amount(newStock);
|
||||
item.amount = newStock;
|
||||
|
||||
bool amountChangedByOperator = true;
|
||||
const ChargeAdministrationModifyRequest req(item.id(), item.chargeTypeId(), item.partyId(), item.effectSourceId(),
|
||||
item.amount(), amountChangedByOperator);
|
||||
const ChargeAdministrationModifyRequest req(item.id, item.chargeTypeId, item.partyId, item.effectSourceId,
|
||||
item.amount, amountChangedByOperator);
|
||||
|
||||
m_requestHelper->addRequest([this, req]() { return m_ftc->chargeAdministrationModifyRequest(req, this); });
|
||||
m_requestHelper->startRequests();
|
||||
|
||||
+21
-21
@@ -28,7 +28,7 @@ bool ChargeAdministrationSortFilterProxyModel::filterAcceptsRow(int source_row,
|
||||
return LtsWidgets::LtsColumnFilterProxyModel::filterAcceptsRow(source_row, source_parent);
|
||||
|
||||
const ChargeAdministration& item = m_sourceModel->m_vecData.at(source_row);
|
||||
if (item.partyId() != m_party)
|
||||
if (item.partyId != m_party)
|
||||
return false;
|
||||
return LtsWidgets::LtsColumnFilterProxyModel::filterAcceptsRow(source_row, source_parent);
|
||||
}
|
||||
@@ -49,7 +49,7 @@ ChargeAdministrationModel::ChargeAdministrationModel(QObject* parent)
|
||||
: LtsWidgets::LtsAbstractTableModel<ChargeAdministration>({tr("Id"), tr("Charge Type Id"), tr("Changed"),
|
||||
tr("Charge Type Name"), tr("Total Stock"), tr("Planned"),
|
||||
tr("Available"), tr("Used"), tr("Gear Class")},
|
||||
parent)
|
||||
parent), m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger())
|
||||
{
|
||||
}
|
||||
|
||||
@@ -80,12 +80,12 @@ bool ChargeAdministrationModel::initModel(LtsSession::LtsSession* session,
|
||||
|
||||
QVector<QPair<int, int>> chargesInserted;
|
||||
auto cb = [this, &chargesInserted](const ChargeAdministration& item) {
|
||||
const int chargeTypeId = item.chargeTypeId();
|
||||
const int chargeTypeId = item.chargeTypeId;
|
||||
if (m_pdmDtc->isAdlerChargeType(chargeTypeId))
|
||||
return;
|
||||
|
||||
insertRow(item);
|
||||
chargesInserted.append(qMakePair<int, int>(item.chargeTypeId(), item.partyId()));
|
||||
chargesInserted.append(QPair<int, int>(item.chargeTypeId, item.partyId));
|
||||
};
|
||||
m_aesDtc->chargeAdministrations(cb);
|
||||
|
||||
@@ -98,22 +98,22 @@ bool ChargeAdministrationModel::initModel(LtsSession::LtsSession* session,
|
||||
}
|
||||
|
||||
QVector<ProjectDataManagement::ChargeType> chargesForGearClass =
|
||||
m_pdmDtc->chargesForGearClass(ProjectDataManagement::GearClass::Artillery) +
|
||||
m_pdmDtc->chargesForGearClass(ProjectDataManagement::GearClass::Mortar);
|
||||
m_pdmDtc->chargesForGearClass(ProjectDataManagement::GearClass::GearClass_Artillery) +
|
||||
m_pdmDtc->chargesForGearClass(ProjectDataManagement::GearClass::GearClass_Mortar);
|
||||
|
||||
LtsUtils::ProjectSettings* ps = LtsUtils::ProjectSettings::getInstance();
|
||||
const bool enableRocket = ps->value(QStringLiteral("aes"), QStringLiteral("enableRocket"), false).toBool();
|
||||
if (enableRocket)
|
||||
chargesForGearClass += m_pdmDtc->chargesForGearClass(ProjectDataManagement::GearClass::Rocket);
|
||||
chargesForGearClass += m_pdmDtc->chargesForGearClass(ProjectDataManagement::GearClass::GearClass_Rocket);
|
||||
for (const ParticipantManagement::Party& p : std::as_const(parties))
|
||||
{
|
||||
for (const ProjectDataManagement::ChargeType& ct : std::as_const(chargesForGearClass))
|
||||
{
|
||||
if (chargesInserted.contains(qMakePair(ct.id(), p.id())) || isDummy(ct) ||
|
||||
m_pdmDtc->isAdlerChargeType(ct.id()))
|
||||
if (chargesInserted.contains(qMakePair(ct.id, p.id)) || isDummy(ct) ||
|
||||
m_pdmDtc->isAdlerChargeType(ct.id))
|
||||
continue;
|
||||
|
||||
reqs << ChargeAdministrationModifyRequest(0, ct.id(), p.id(),
|
||||
reqs << ChargeAdministrationModifyRequest(0, ct.id, p.id,
|
||||
ProjectDataManagement::EffectSource::ES_Internal, 0, true);
|
||||
}
|
||||
}
|
||||
@@ -122,7 +122,7 @@ bool ChargeAdministrationModel::initModel(LtsSession::LtsSession* session,
|
||||
|
||||
bool ChargeAdministrationModel::isDummy(const ProjectDataManagement::ChargeType& ct)
|
||||
{
|
||||
return LtsUtils::JsonObject::fromJson(ct.properties()).valueOr<bool>("isDummy", false);
|
||||
return LtsUtils::JsonObject::fromJson(ct.properties).valueOr<bool>("isDummy", false);
|
||||
}
|
||||
|
||||
QVariant ChargeAdministrationModel::data(const QModelIndex& index, int role) const
|
||||
@@ -135,23 +135,23 @@ QVariant ChargeAdministrationModel::data(const QModelIndex& index, int role) con
|
||||
switch (index.column())
|
||||
{
|
||||
case ColId:
|
||||
return item.id();
|
||||
return item.id;
|
||||
case ColTypeId:
|
||||
return item.chargeTypeId();
|
||||
return item.chargeTypeId;
|
||||
case ColChanged:
|
||||
return QDateTime::fromMSecsSinceEpoch(item.sampleTime());
|
||||
return QDateTime::fromMSecsSinceEpoch(item.sampleTime);
|
||||
case ColTypeName:
|
||||
return m_pdmDtc->trChargeTypeShortName(item.chargeTypeId(), true);
|
||||
return m_pdmDtc->trChargeTypeShortName(item.chargeTypeId, true);
|
||||
case ColStock:
|
||||
return item.amount();
|
||||
return item.amount;
|
||||
case ColAvailable:
|
||||
return item.amount() - item.planned();
|
||||
return item.amount - item.planned;
|
||||
case ColPlanned:
|
||||
return item.planned();
|
||||
return item.planned;
|
||||
case ColUsed:
|
||||
return item.used();
|
||||
return item.used;
|
||||
case ColGearClass:
|
||||
return ProjectDataManagement::toString(m_pdmDtc->gearClassFromChargeTypeId(item.chargeTypeId()));
|
||||
return ProjectDataManagement::toString(m_pdmDtc->gearClassFromChargeTypeId(item.chargeTypeId));
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
@@ -160,7 +160,7 @@ void ChargeAdministrationModel::onChargeAdministrationChanged(const ChargeAdmini
|
||||
DataModification modType)
|
||||
{
|
||||
|
||||
if (m_pdmDtc->isAdlerChargeType(data.chargeTypeId()))
|
||||
if (m_pdmDtc->isAdlerChargeType(data.chargeTypeId))
|
||||
return;
|
||||
onDataChanged(data, modType);
|
||||
}
|
||||
|
||||
+23
-23
@@ -163,15 +163,15 @@ void ChargeEffectEdit::onSelectionChanged()
|
||||
return;
|
||||
|
||||
const ParticipantManagement::ParticipantData data(m_participantModel->getParticipantData(m_ui->dvParticipants->selectedRows().first()));
|
||||
DEBUG_LOG(m_logger) << "ParticipantId: " << data.id();
|
||||
DEBUG_LOG(m_logger) << "ParticipantId: " << data.id;
|
||||
|
||||
if (m_ppmDtc->type(data.typeId()).typeClass() == ParticipantManagement::TypeClass::Unit)
|
||||
if (m_ppmDtc->type(data.typeId).typeClass == ParticipantManagement::TypeClass::Unit)
|
||||
return;
|
||||
|
||||
DEBUG_LOG(m_logger) << "typeClass: " << m_ppmDtc->type(data.typeId()).typeClass()
|
||||
<< " eqNr.isSet(): " << data.equipmentNumber().is_set();
|
||||
DEBUG_LOG(m_logger) << "typeClass: " << m_ppmDtc->type(data.typeId).typeClass
|
||||
<< " eqNr.isSet(): " << data.equipmentNumber.has_value();
|
||||
|
||||
if (data.equipmentNumber().is_set())
|
||||
if (data.equipmentNumber.has_value())
|
||||
{
|
||||
if (m_ui->cbChargeType->count())
|
||||
m_ui->pbPosition->setEnabled(true);
|
||||
@@ -216,8 +216,8 @@ void ChargeEffectEdit::onGetCoordinate(const QPointF &coordinate)
|
||||
|
||||
const int chargeTypeId = m_ui->cbChargeType->currentData().toInt();
|
||||
const int partyId = m_ui->cbParty->currentData().toInt();
|
||||
DEBUG_LOG(m_logger) << "ParticipantId=" << participantData.id()
|
||||
<< " EquipmentNr=" << participantData.equipmentNumber()
|
||||
DEBUG_LOG(m_logger) << "ParticipantId=" << participantData.id
|
||||
<< " EquipmentNr=" << participantData.equipmentNumber
|
||||
<< " partyId=" << partyId
|
||||
<< " chargeType=" << chargeTypeId
|
||||
<< " onGetCoordinate x=" << coordinate.x() << " y=" << coordinate.y();
|
||||
@@ -227,8 +227,8 @@ void ChargeEffectEdit::onGetCoordinate(const QPointF &coordinate)
|
||||
int gearType = 0;
|
||||
for (const auto >c : m_pdmDtc->gearTypeChargeTypes())
|
||||
{
|
||||
if (gtc.chargeTypeId() == chargeTypeId)
|
||||
gearType = gtc.gearTypeId();
|
||||
if (gtc.chargeTypeId == chargeTypeId)
|
||||
gearType = gtc.gearTypeId;
|
||||
}
|
||||
|
||||
const auto chargeType = m_pdmDtc->chargeType(chargeTypeId);
|
||||
@@ -240,25 +240,25 @@ void ChargeEffectEdit::onGetCoordinate(const QPointF &coordinate)
|
||||
ProjectDataManagement::StateChangeOriginator originatorTypeId;
|
||||
if (m_ui->cbPlayer->isChecked())
|
||||
{
|
||||
id = participantData.id();
|
||||
originatorTypeId = ProjectDataManagement::StateChangeOriginator::Participant;
|
||||
id = participantData.id;
|
||||
originatorTypeId = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Participant;
|
||||
}
|
||||
else
|
||||
{
|
||||
id = partyId;
|
||||
originatorTypeId = ProjectDataManagement::StateChangeOriginator::Party;
|
||||
originatorTypeId = ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_Party;
|
||||
}
|
||||
|
||||
|
||||
request.name(chargeType.shortName());
|
||||
request.chargeTypeId(chargeTypeId);
|
||||
request.igniterTypeId(0);
|
||||
request.gearTypeId(gearType);
|
||||
request.originatorId(id);
|
||||
request.originatorTypeId(originatorTypeId);
|
||||
request.effectDuration(1000);
|
||||
request.effectStart(m_session->partitionTime() + 6000);
|
||||
request.position(Core::GeoPosition(coordinate.x(), coordinate.y(), 0.0));
|
||||
request.name = chargeType.shortName;
|
||||
request.chargeTypeId = chargeTypeId;
|
||||
request.igniterTypeId = 0;
|
||||
request.gearTypeId = gearType;
|
||||
request.originatorId = id;
|
||||
request.originatorTypeId = originatorTypeId;
|
||||
request.effectDuration = 1000;
|
||||
request.effectStart = m_session->partitionTime() + 6000;
|
||||
request.position = Core::GeoPosition(coordinate.x(), coordinate.y(), 0.0);
|
||||
|
||||
m_requestHelper->addRequest([this,request]()
|
||||
{
|
||||
@@ -288,10 +288,10 @@ void ChargeEffectEdit::fillCharges()
|
||||
|
||||
for (const auto &charge : m_pdmDtc->chargeTypes())
|
||||
{
|
||||
if(!m_pdmDtc->isVirtuallyFireable(charge.id()))
|
||||
if(!m_pdmDtc->isVirtuallyFireable(charge.id))
|
||||
continue;
|
||||
|
||||
m_ui->cbChargeType->addItem(QString::fromStdString(charge.name()), charge.id());
|
||||
m_ui->cbChargeType->addItem(QString::fromStdString(charge.name), charge.id);
|
||||
}
|
||||
m_ui->cbChargeType->setEnabled(m_ui->cbChargeType->count() > 1);
|
||||
}
|
||||
|
||||
+3
-2
@@ -3,9 +3,10 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
#include <ParticipantManagement/ppm.hpp>
|
||||
#include <ParticipantManagement/ppm_dtc.h>
|
||||
#include <AdvancedSymbology/asb_data_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_gui_combobox_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
@@ -36,7 +37,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddChargeEffect") : QStringLiteral("EditChargeEffect%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddChargeEffect") : QStringLiteral("EditChargeEffect%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int areaId, bool copy, LtsSession::LtsSession *session);
|
||||
void onChargeEffectModifyReply(const Core::FunctionReplyObject &replyObject) override final { onAesItemModifyReply(replyObject); }
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_charge_effect_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+5
-5
@@ -47,22 +47,22 @@ bool CustomViewDangerArea::init(const QModelIndex &idx)
|
||||
|
||||
bool CustomViewDangerArea::calculateIcon(const AreaEffectSimulation::DangerArea &area, const QColor &color)
|
||||
{
|
||||
if (area.segments().size() == 0)
|
||||
if (area.segments.size() == 0)
|
||||
return false;
|
||||
|
||||
QVector<QPointF> segments;
|
||||
segments.reserve(area.segments().size());
|
||||
segments.reserve(area.segments.size());
|
||||
int setZone = -1;
|
||||
for (const Core::GeoPosition2D &s : area.segments())
|
||||
for (const Core::GeoPosition2D &s : area.segments)
|
||||
{
|
||||
const LtsCoordTrans::UtmCoordinate coord(LtsCoordTrans::UtmCoordinate::fromGeographic(s.lon(), s.lat(), setZone));
|
||||
const LtsCoordTrans::UtmCoordinate coord(LtsCoordTrans::UtmCoordinate::fromGeographic(s.lon, s.lat, setZone));
|
||||
if (setZone < 0)
|
||||
setZone = coord.zone;
|
||||
segments.append(QPointF(coord.x, coord.y));
|
||||
}
|
||||
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::dangerArea(segments);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(area.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(area.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(poly, color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+20
-20
@@ -66,15 +66,15 @@ void DangerAreaEdit::enableUiElements(bool enable)
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
setEffectStartEnabled(m_ui->dteEffectStart, enable);
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->dangerArea(m_aesItem.id());
|
||||
auto baseData = m_dtc->dangerArea(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -112,8 +112,8 @@ bool DangerAreaEdit::init(int aesItemId, bool copy,
|
||||
|
||||
auto cb = [this](const DangerAreaCorrelatedAesItem &item)
|
||||
{
|
||||
if (item.dangerAreaId() == m_aesItem.id())
|
||||
m_otherAesItemIds << item.aesItemId();
|
||||
if (item.dangerAreaId == m_aesItem.id)
|
||||
m_otherAesItemIds << item.aesItemId;
|
||||
};
|
||||
m_dtc->dangerAreaCorrelatedAesItems(cb);
|
||||
setPbAesItemsText();
|
||||
@@ -136,12 +136,12 @@ void DangerAreaEdit::setPbAesItemsText()
|
||||
{
|
||||
AesItem item;
|
||||
m_dtc->aesItemFromId(idx, item);
|
||||
if (item.id() <= 0)
|
||||
if (item.id <= 0)
|
||||
continue;
|
||||
|
||||
if (item.effectStateId() != AesEffectState::EsActivated)
|
||||
if (item.effectStateId != AesEffectState::EsActivated)
|
||||
continue;
|
||||
sl << QString::fromStdString(item.name().c_str());
|
||||
sl << QString::fromStdString(item.name.c_str());
|
||||
}
|
||||
m_ui->pbAesItems->setEnabled(sl.size());
|
||||
m_ui->pbAesItems->setText(sl.join(QStringLiteral(", ")));
|
||||
@@ -152,12 +152,12 @@ void DangerAreaEdit::setData(const DangerArea &aesItem, bool copy)
|
||||
m_aesItem = aesItem;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(aesItem.name()));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(aesItem.effectStart().is_set() ? aesItem.effectStart().get() : 0);
|
||||
setCoordinates(aesItem.segments());
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(aesItem.name));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(aesItem.effectStart.has_value() ? aesItem.effectStart.get() : 0);
|
||||
setCoordinates(aesItem.segments);
|
||||
}
|
||||
|
||||
void DangerAreaEdit::getPolygon()
|
||||
@@ -194,11 +194,11 @@ bool DangerAreaEdit::apply()
|
||||
{
|
||||
std::string name = m_ui->leIdentifier->text().toStdString();
|
||||
qint64 effectStart = m_ui->dteEffectStart->msecsSinceEpoch();
|
||||
const DangerAreaModifyRequest req(m_aesItem.id(),
|
||||
const DangerAreaModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
0,
|
||||
311,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
getCoordinates(),
|
||||
dds::core::optional<int32_t>(),
|
||||
dds::core::optional<int32_t>(),
|
||||
@@ -213,14 +213,14 @@ bool DangerAreaEdit::apply()
|
||||
|
||||
void DangerAreaEdit::onCorrelatedItemsChanged(const DangerAreaCorrelatedAesItem &data, DataModification modType)
|
||||
{
|
||||
if (data.dangerAreaId() != m_aesItem.id())
|
||||
if (data.dangerAreaId != m_aesItem.id)
|
||||
return;
|
||||
|
||||
if (modType == DataModification::eAdded)
|
||||
m_otherAesItemIds += data.aesItemId();
|
||||
m_otherAesItemIds += data.aesItemId;
|
||||
|
||||
if (modType == DataModification::eRemoved)
|
||||
m_otherAesItemIds -= data.aesItemId();
|
||||
m_otherAesItemIds -= data.aesItemId;
|
||||
|
||||
|
||||
setPbAesItemsText();
|
||||
@@ -235,7 +235,7 @@ void DangerAreaEdit::onPbAesItemsClicked()
|
||||
if (!m_session->getForeignGuiInterface<ForeignInfoGuiInterface>(infoGuiInterface))
|
||||
return;
|
||||
|
||||
LtsWidgets::LtsDialog *dialog = infoGuiInterface->showDangerAreaAesItemInfo({m_aesItem.id()}, m_otherAesItemIds);
|
||||
LtsWidgets::LtsDialog *dialog = infoGuiInterface->showDangerAreaAesItemInfo({m_aesItem.id}, m_otherAesItemIds);
|
||||
|
||||
addDialog(dialog, m_menuGroup, tr("Danger Areas for BC Contamination %1").arg(m_ui->leIdentifier->text()), LtsWidgets::LayoutArea::eInfoTab);
|
||||
}
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
|
||||
class QDoubleSpinBox;
|
||||
@@ -28,7 +28,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddDangerArea") : QStringLiteral("EditDangerArea%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddDangerArea") : QStringLiteral("EditDangerArea%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_danger_area_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
|
||||
+9
@@ -8,6 +8,15 @@
|
||||
#
|
||||
# LIBRARY for AesEffectClusterModel (which is used at AirSupportPlugin)
|
||||
#
|
||||
# Build the targets in this directory as separate translation units (NOT a unity
|
||||
# build). aes_explosions_edit_adler.cpp and
|
||||
# aes_explosions_edit_adler_standalone.cpp each define the same file-scope statics
|
||||
# (VALUE_VALID_PROPERTY_NAME / LAST_VALUE / s_timeUntilMinimumSec, internal linkage,
|
||||
# both in namespace AreaEffectSimulation). Separate TUs keep the copies independent
|
||||
# (legacy structure); a unity TU sees two definitions in one scope and fails with
|
||||
# "redefinition of '... AreaEffectSimulation::...'" (behavior-neutral to disable).
|
||||
set(CMAKE_UNITY_BUILD FALSE)
|
||||
|
||||
# Make ${Qt6_Widgets} optional
|
||||
if(QT6_GUI_AVAILABLE AND TARGET Qt6::Widgets)
|
||||
set(Qt6_Widgets ${Qt6_Widgets})
|
||||
|
||||
+11
-11
@@ -74,14 +74,14 @@ bool CustomViewExplosion::init(const QModelIndex &idx)
|
||||
bool CustomViewExplosion::calculateIcon(const ExplosionArea &area, const QColor &color)
|
||||
{
|
||||
Database::AesExplosionArea ea;
|
||||
ea.impactPosition = QPointF(area.area().cornerBottomLeft().lon(),
|
||||
area.area().cornerBottomLeft().lat());
|
||||
ea.rotationAngle = area.area().rotation();
|
||||
ea.impactWidth = area.area().width();
|
||||
ea.impactLength = area.area().height();
|
||||
ea.impactPosition = QPointF(area.area.cornerBottomLeft.lon,
|
||||
area.area.cornerBottomLeft.lat);
|
||||
ea.rotationAngle = area.area.rotation;
|
||||
ea.impactWidth = area.area.width;
|
||||
ea.impactLength = area.area.height;
|
||||
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::explosionArea(ea);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(area.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(area.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
@@ -91,17 +91,17 @@ bool CustomViewExplosion::calculateIcon(const ExplosionArea &area, const QColor
|
||||
bool CustomViewExplosion::calculateIcon(const ExplosionSingle &single, const QColor &color)
|
||||
{
|
||||
Database::AesExplosionSingle es;
|
||||
es.impactPosition = QPointF(single.impactPosition().lon(), single.impactPosition().lat());
|
||||
es.impactPosition = QPointF(single.impactPosition.lon, single.impactPosition.lat);
|
||||
|
||||
std::shared_ptr<ProjectDataManagement::Interface::Dtc> pdmDtc;
|
||||
if (!m_session->getDtc<ProjectDataManagement::DataInterface>(pdmDtc))
|
||||
return false;
|
||||
|
||||
double radius = pdmDtc->impactRadius(single.chargeStruct().chargeTypeId(),
|
||||
single.chargeStruct().igniterTypeId(),
|
||||
single.chargeStruct().igniterFunctionId());
|
||||
double radius = pdmDtc->impactRadius(single.chargeStruct.chargeTypeId,
|
||||
single.chargeStruct.igniterTypeId,
|
||||
single.chargeStruct.igniterFunctionId);
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::explosionSingle(es, radius);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(single.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(single.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+39
-39
@@ -61,32 +61,32 @@ bool EffectClusterModel::initModel(LtsSession::LtsSession *session)
|
||||
EffectCluster EffectClusterModel::toEffectCluster(const ExplosionCluster &data)
|
||||
{
|
||||
EffectCluster ec;
|
||||
ec.id(data.id());
|
||||
ec.name(data.name());
|
||||
ec.effectSourceId(data.effectSourceId());
|
||||
ec.effectStateId(data.effectStateId());
|
||||
ec.chargeStruct(data.chargeStruct());
|
||||
ec.effectDuration(data.effectDuration());
|
||||
ec.effectStart(data.effectStart());
|
||||
ec.area(data.area());
|
||||
ec.esmParticipantIds(data.esmParticipantIds());
|
||||
ec.explosionGeometry(data.explosionGeometry());
|
||||
ec.element(data.element());
|
||||
ec.firePurposeId(data.firePurposeId());
|
||||
ec.firingPosition(data.firingPosition());
|
||||
ec.fireRequestTime(data.fireRequestTime());
|
||||
ec.tla(data.tla());
|
||||
ec.sampleTime(data.sampleTime());
|
||||
ec.effectMarkingInTa(data.effectMarkingInTa());
|
||||
ec.externalId(data.externalId());
|
||||
ec.remainExplosionNumber(data.remainExplosionNumber());
|
||||
ec.participantId(data.participantId());
|
||||
ec.partyId(data.partyId());
|
||||
ec.properties(data.properties());
|
||||
ec.id = data.id;
|
||||
ec.name = data.name;
|
||||
ec.effectSourceId = data.effectSourceId;
|
||||
ec.effectStateId = data.effectStateId;
|
||||
ec.chargeStruct = data.chargeStruct;
|
||||
ec.effectDuration = data.effectDuration;
|
||||
ec.effectStart = data.effectStart;
|
||||
ec.area = data.area;
|
||||
ec.esmParticipantIds = data.esmParticipantIds;
|
||||
ec.explosionGeometry = data.explosionGeometry;
|
||||
ec.element = data.element;
|
||||
ec.firePurposeId = data.firePurposeId;
|
||||
ec.firingPosition = data.firingPosition;
|
||||
ec.fireRequestTime = data.fireRequestTime;
|
||||
ec.tla = data.tla;
|
||||
ec.sampleTime = data.sampleTime;
|
||||
ec.effectMarkingInTa = data.effectMarkingInTa;
|
||||
ec.externalId = data.externalId;
|
||||
ec.remainExplosionNumber = data.remainExplosionNumber;
|
||||
ec.participantId = data.participantId;
|
||||
ec.partyId = data.partyId;
|
||||
ec.properties = data.properties;
|
||||
|
||||
ec.isCentral(data.isCentral());
|
||||
ec.isDeleted(data.isDeleted());
|
||||
ec.isUsed(data.isUsed());
|
||||
ec.isCentral = data.isCentral;
|
||||
ec.isDeleted = data.isDeleted;
|
||||
ec.isUsed = data.isUsed;
|
||||
|
||||
return ec;
|
||||
}
|
||||
@@ -115,29 +115,29 @@ QVariant EffectClusterModel::data(const QModelIndex &idx, int role) const
|
||||
{
|
||||
case ColGearType:
|
||||
{
|
||||
const int chargeTypeId = ec.chargeStruct().chargeTypeId();
|
||||
const int chargeTypeId = ec.chargeStruct.chargeTypeId;
|
||||
|
||||
const int gearTypeId = m_pdmDtc->gearTypeIdFromChargeTypeId(chargeTypeId).value(0, 0);
|
||||
return m_pdmDtc->trGearTypeName(gearTypeId);
|
||||
}
|
||||
break;
|
||||
case ColIgniterType:
|
||||
return m_pdmDtc->trIgniterTypeShortName(ec.chargeStruct().igniterTypeId());
|
||||
return m_pdmDtc->trIgniterTypeShortName(ec.chargeStruct.igniterTypeId);
|
||||
break;
|
||||
case ColFiringPosition:
|
||||
{
|
||||
const Core::GeoPosition &firingPositionRef = ec.firingPosition();
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(firingPositionRef.lon(), firingPositionRef.lat());
|
||||
if (!qFuzzyIsNull(firingPositionRef.z()))
|
||||
mgrs.append(QStringLiteral(" ") + QString::number(firingPositionRef.z(), 'f', 2));
|
||||
const Core::GeoPosition &firingPositionRef = ec.firingPosition;
|
||||
QString mgrs = LtsCoordTrans::mgrsFromGeographic(firingPositionRef.lon, firingPositionRef.lat);
|
||||
if (!qFuzzyIsNull(firingPositionRef.z))
|
||||
mgrs.append(QStringLiteral(" ") + QString::number(firingPositionRef.z, 'f', 2));
|
||||
return mgrs;
|
||||
}
|
||||
break;
|
||||
case ColExplosionGeometry:
|
||||
return AreaEffectSimulation::toString(ec.explosionGeometry());
|
||||
return AreaEffectSimulation::toString(ec.explosionGeometry);
|
||||
break;
|
||||
case ColTlaZog:
|
||||
return ec.tla();
|
||||
return ec.tla;
|
||||
break;
|
||||
|
||||
|
||||
@@ -149,11 +149,11 @@ QVariant EffectClusterModel::data(const QModelIndex &idx, int role) const
|
||||
|
||||
|
||||
case ColAnnotationString:
|
||||
return QString::fromStdString(ec.annotationString());
|
||||
return QString::fromStdString(ec.annotationString);
|
||||
break;
|
||||
|
||||
case ColZpElement:
|
||||
return QString::fromStdString(ec.element());
|
||||
return QString::fromStdString(ec.element);
|
||||
break;
|
||||
|
||||
|
||||
@@ -174,11 +174,11 @@ QVariant EffectClusterModel::data(const QModelIndex &idx, int role) const
|
||||
QString tooltip(QStringLiteral("<html>"));
|
||||
|
||||
const QString &hdr = this->headerData(BcName, Qt::Horizontal, Qt::DisplayRole).toString();
|
||||
tooltip.append(QStringLiteral("<p>%1: %2</p>").arg(hdr, QString::fromStdString(ec.name())));
|
||||
tooltip.append(QStringLiteral("<p>%1: %2</p>").arg(hdr, QString::fromStdString(ec.name)));
|
||||
|
||||
bool bIsArtilleryOrMortar = m_gearClasses.contains(ProjectDataManagement::GearClass::Artillery)
|
||||
|| m_gearClasses.contains(ProjectDataManagement::GearClass::Mortar)
|
||||
|| m_gearClasses.contains(ProjectDataManagement::GearClass::Rocket);
|
||||
bool bIsArtilleryOrMortar = m_gearClasses.contains(ProjectDataManagement::GearClass::GearClass_Artillery)
|
||||
|| m_gearClasses.contains(ProjectDataManagement::GearClass::GearClass_Mortar)
|
||||
|| m_gearClasses.contains(ProjectDataManagement::GearClass::GearClass_Rocket);
|
||||
|
||||
toolTipHelper(this, idx, ColGearType, tooltip);
|
||||
if (bIsArtilleryOrMortar)
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <aeseffectclustermodel_export.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -46,7 +46,7 @@ void AesEffector::setState(const AreaEffectSimulation::AesEffectorState &newStat
|
||||
{
|
||||
m_state = newState;
|
||||
|
||||
switch(newState.underlying())
|
||||
switch(newState)
|
||||
{
|
||||
case AreaEffectSimulation::AesEffectorState::EsNotReadyToFire:
|
||||
m_ui->lblState->setText(tr("Not ready to fire"));
|
||||
@@ -76,7 +76,7 @@ void AesEffector::setState(const AreaEffectSimulation::AesEffectorState &newStat
|
||||
|
||||
void AesEffector::onPbNextStateClicked()
|
||||
{
|
||||
switch (m_state.underlying()) {
|
||||
switch (m_state) {
|
||||
case AreaEffectSimulation::AesEffectorState::EsFired:
|
||||
emit reportFired();
|
||||
break;
|
||||
|
||||
+98
-98
@@ -137,7 +137,7 @@ ExplosionEdit::ExplosionEdit(const QString &menuGroup, ExplosionType type, Proje
|
||||
m_ui->cbParty->setEnabled(false);
|
||||
}
|
||||
else
|
||||
m_uiRequirements->addRequirement({m_ui->lbxParticipant, [this]() { return (m_participant.id() != 0); }});
|
||||
m_uiRequirements->addRequirement({m_ui->lbxParticipant, [this]() { return (m_participant.id != 0); }});
|
||||
|
||||
enaDisa();
|
||||
|
||||
@@ -181,7 +181,7 @@ void ExplosionEdit::retranslate()
|
||||
{
|
||||
QString title;
|
||||
|
||||
switch (m_gearClass.underlying())
|
||||
switch (m_gearClass)
|
||||
{
|
||||
case ProjectDataManagement::GearClass::GearClass_Artillery:
|
||||
if (m_type == etSingle)
|
||||
@@ -217,7 +217,7 @@ void ExplosionEdit::retranslate()
|
||||
m_ui->lblDimension->setText(tr("Dimension [m]:"));
|
||||
}
|
||||
|
||||
setFireButton(m_aesItem.effectStateId());
|
||||
setFireButton(m_aesItem.effectStateId);
|
||||
|
||||
updateMaxLabel(false);
|
||||
}
|
||||
@@ -274,40 +274,40 @@ void ExplosionEdit::enableUiElements(bool enable)
|
||||
if (!enable)
|
||||
{
|
||||
bool hasChanges = hasUnsavedChanges();
|
||||
m_ui->sbDurationSeconds->setValue(m_aesItem.effectDuration() / 1000);
|
||||
m_ui->sbDurationSeconds->setValue(m_aesItem.effectDuration / 1000);
|
||||
if (!hasChanges)
|
||||
__unchange__();
|
||||
}
|
||||
|
||||
setFireButton(m_aesItem.effectStateId());
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
setFireButton(m_aesItem.effectStateId);
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
AesItem baseData;
|
||||
if (m_type == etSingle)
|
||||
{
|
||||
ExplosionSingle singleData = m_dtc->explosionSingle(m_aesItem.id());
|
||||
ExplosionSingle singleData = m_dtc->explosionSingle(m_aesItem.id);
|
||||
setSingleData(singleData);
|
||||
baseData = singleData;
|
||||
}
|
||||
else if (m_type == etArea)
|
||||
{
|
||||
ExplosionArea areaData = m_dtc->explosionArea(m_aesItem.id());
|
||||
ExplosionArea areaData = m_dtc->explosionArea(m_aesItem.id);
|
||||
setAreaData(areaData);
|
||||
baseData = areaData;
|
||||
}
|
||||
setBaseData(baseData, false);
|
||||
setFireButton(baseData.effectStateId());
|
||||
setFireButton(baseData.effectStateId);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
m_ui->leIdentifier->setText(name);
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsPaused)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsPaused)
|
||||
__unchange__();
|
||||
}
|
||||
|
||||
@@ -322,23 +322,23 @@ void ExplosionEdit::setBaseData(const AesItem &baseData, bool copy)
|
||||
m_aesItem = baseData;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromUtf8(baseData.name().c_str()));
|
||||
int idx = m_ui->cbChargeType->findData(baseData.chargeStruct().chargeTypeId());
|
||||
m_ui->leIdentifier->setText(QString::fromUtf8(baseData.name.c_str()));
|
||||
int idx = m_ui->cbChargeType->findData(baseData.chargeStruct.chargeTypeId);
|
||||
if (idx < 0)
|
||||
{
|
||||
auto ct = m_chargeTypeMap[baseData.chargeStruct().chargeTypeId()].chargeType;
|
||||
m_ui->cbChargeType->addItem(m_pdmDtc->trChargeTypeShortName(ct.id(), true), ct.id());
|
||||
idx = m_ui->cbChargeType->findData(ct.id());
|
||||
auto ct = m_chargeTypeMap[baseData.chargeStruct.chargeTypeId].chargeType;
|
||||
m_ui->cbChargeType->addItem(m_pdmDtc->trChargeTypeShortName(ct.id, true), ct.id);
|
||||
idx = m_ui->cbChargeType->findData(ct.id);
|
||||
}
|
||||
m_ui->cbChargeType->setCurrentIndex(idx);
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(baseData.effectStart().is_set() ? baseData.effectStart().get() : 0);
|
||||
m_ui->sbDurationSeconds->setValue(baseData.effectDuration() / 1000);
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(baseData.effectStart.has_value() ? baseData.effectStart.get() : 0);
|
||||
m_ui->sbDurationSeconds->setValue(baseData.effectDuration / 1000);
|
||||
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(partyForItem(baseData)));
|
||||
m_ui->cbEffectMarkingInTa->setChecked(baseData.effectMarkingInTa());
|
||||
m_ui->cbEffectMarkingInTa->setChecked(baseData.effectMarkingInTa);
|
||||
m_editable = m_editable && isModifiable() && !isOnlyNameModifiable() && m_session->app() != LtsAppDescriptor::App::OC;
|
||||
|
||||
}
|
||||
@@ -362,7 +362,7 @@ bool ExplosionEdit::init(int aesItemId, bool copy,
|
||||
return false;
|
||||
|
||||
bool readable = false;
|
||||
switch (m_gearClass.underlying())
|
||||
switch (m_gearClass)
|
||||
{
|
||||
case ProjectDataManagement::GearClass::GearClass_Artillery:
|
||||
m_editable = (LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::SingleExplosionsEditArtillery) && m_type == etSingle) ||
|
||||
@@ -427,18 +427,18 @@ bool ExplosionEdit::init(int aesItemId, bool copy,
|
||||
|
||||
const auto firePurposes = m_pdmDtc->firePurposes();
|
||||
for (const auto &firePurpose : firePurposes)
|
||||
m_ui->cbPurpose->addItem(m_pdmDtc->trFirePurposeName(firePurpose.id()), firePurpose.id());
|
||||
m_ui->cbPurpose->addItem(m_pdmDtc->trFirePurposeName(firePurpose.id), firePurpose.id);
|
||||
|
||||
const auto chargesForGearClass =
|
||||
m_pdmDtc->chargesForGearClass(m_gearClass);
|
||||
for (const ProjectDataManagement::ChargeType &chargeType : chargesForGearClass)
|
||||
m_chargeTypeMap[chargeType.id()].chargeType = chargeType;
|
||||
m_chargeTypeMap[chargeType.id].chargeType = chargeType;
|
||||
const auto chargeAdmins = m_dtc->chargeAdministrations();
|
||||
for (const ChargeAdministration &val : chargeAdmins)
|
||||
{
|
||||
if (!m_chargeTypeMap.contains(val.chargeTypeId()))
|
||||
if (!m_chargeTypeMap.contains(val.chargeTypeId))
|
||||
continue;
|
||||
m_chargeTypeMap[val.chargeTypeId()].available.insert(val.partyId(), val.amount() - val.planned());
|
||||
m_chargeTypeMap[val.chargeTypeId].available.insert(val.partyId, val.amount - val.planned);
|
||||
}
|
||||
|
||||
m_ppmGuiCbxIfc->fillPartyComboBox(m_ui->cbParty);
|
||||
@@ -460,7 +460,7 @@ bool ExplosionEdit::init(int aesItemId, bool copy,
|
||||
baseData = areaData;
|
||||
}
|
||||
setBaseData(baseData, copy);
|
||||
setFireButton(baseData.effectStateId());
|
||||
setFireButton(baseData.effectStateId);
|
||||
}
|
||||
else
|
||||
setFireButton(AreaEffectSimulation::AesEffectState::EsUnknown);
|
||||
@@ -479,22 +479,22 @@ bool ExplosionEdit::init(int aesItemId, bool copy,
|
||||
|
||||
QString ExplosionEdit::dialogIdentifier() const
|
||||
{
|
||||
switch (m_gearClass.underlying())
|
||||
switch (m_gearClass)
|
||||
{
|
||||
case ProjectDataManagement::GearClass::GearClass_Artillery:
|
||||
if (m_type == etSingle)
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionSingleArtillery") : QStringLiteral("EditExplosionSingleArtillery%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionSingleArtillery") : QStringLiteral("EditExplosionSingleArtillery%1").arg(m_aesItem.id);
|
||||
else if (m_type == etArea)
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionAreaArtillery") : QStringLiteral("EditExplosionAreaArtillery%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionAreaArtillery") : QStringLiteral("EditExplosionAreaArtillery%1").arg(m_aesItem.id);
|
||||
else
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionSingleCentralArtillery") : QStringLiteral("EditExplosionSingleCentralArtillery%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionSingleCentralArtillery") : QStringLiteral("EditExplosionSingleCentralArtillery%1").arg(m_aesItem.id);
|
||||
case ProjectDataManagement::GearClass::GearClass_Mortar:
|
||||
if (m_type == etSingle)
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionSingleMortar") : QStringLiteral("EditExplosionSingleMortar%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionSingleMortar") : QStringLiteral("EditExplosionSingleMortar%1").arg(m_aesItem.id);
|
||||
else if (m_type == etArea)
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionAreaMortar") : QStringLiteral("EditExplosionAreaMortar%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionAreaMortar") : QStringLiteral("EditExplosionAreaMortar%1").arg(m_aesItem.id);
|
||||
else
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionSingleCentralMortar") : QStringLiteral("EditExplosionSingleCentralMortar%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionSingleCentralMortar") : QStringLiteral("EditExplosionSingleCentralMortar%1").arg(m_aesItem.id);
|
||||
default:
|
||||
Q_ASSERT(false);
|
||||
break;
|
||||
@@ -506,13 +506,13 @@ QString ExplosionEdit::dialogIdentifier() const
|
||||
void ExplosionEdit::onChargeCountChanged(const AreaEffectSimulation::ChargeAdministration &data, DataModification modType)
|
||||
{
|
||||
|
||||
if (!m_chargeTypeMap.contains(data.chargeTypeId()))
|
||||
if (!m_chargeTypeMap.contains(data.chargeTypeId))
|
||||
return;
|
||||
|
||||
if (modType == DataModification::eRemoved || data.amount() - data.planned() <= 0)
|
||||
m_chargeTypeMap[data.chargeTypeId()].available.remove(data.partyId());
|
||||
if (modType == DataModification::eRemoved || data.amount - data.planned <= 0)
|
||||
m_chargeTypeMap[data.chargeTypeId].available.remove(data.partyId);
|
||||
else
|
||||
m_chargeTypeMap[data.chargeTypeId()].available.insert(data.partyId(), data.amount() - data.planned());
|
||||
m_chargeTypeMap[data.chargeTypeId].available.insert(data.partyId, data.amount - data.planned);
|
||||
onPartyChanged();
|
||||
updateCannonsRounds(true);
|
||||
updateMaxLabel(true);
|
||||
@@ -549,7 +549,7 @@ void ExplosionEdit::setFireButton(AreaEffectSimulation::AesEffectState effectSta
|
||||
effectState == AesEffectState::EsPrepared ||
|
||||
effectState == AesEffectState::EsCreated ||
|
||||
effectState == AesEffectState::EsPaused)
|
||||
&& m_aesItem.id() > 0)
|
||||
&& m_aesItem.id > 0)
|
||||
m_ui->pbFire->setEnabled(true);
|
||||
else
|
||||
m_ui->pbFire->setEnabled(false);
|
||||
@@ -558,7 +558,7 @@ void ExplosionEdit::setFireButton(AreaEffectSimulation::AesEffectState effectSta
|
||||
void ExplosionEdit::updateCannonsRounds(bool modifiedFromExternal)
|
||||
{
|
||||
|
||||
if (m_ui->sbCannons->value() > maxAvailableRounds() && m_editable && m_aesItem.id() <= 0)
|
||||
if (m_ui->sbCannons->value() > maxAvailableRounds() && m_editable && m_aesItem.id <= 0)
|
||||
{
|
||||
m_ui->sbCannons->setValue(1);
|
||||
m_ui->sbRounds->setValue(1);
|
||||
@@ -586,64 +586,64 @@ void ExplosionEdit::updateMaxLabel(bool modifiedFromExternal)
|
||||
|
||||
quint32 ExplosionEdit::partyForItem(const AesItem &aesItem) const
|
||||
{
|
||||
if (aesItem.participantId().is_set())
|
||||
if (aesItem.participantId.has_value())
|
||||
{
|
||||
if (m_participant.id() == aesItem.participantId().get())
|
||||
return m_participant.partyId();
|
||||
if (m_participant.id == aesItem.participantId.get())
|
||||
return m_participant.partyId;
|
||||
else
|
||||
return m_ppmDtc->participant(aesItem.participantId().get()).partyId();
|
||||
return m_ppmDtc->participant(aesItem.participantId.get()).partyId;
|
||||
}
|
||||
else if (aesItem.partyId().is_set())
|
||||
return aesItem.partyId().get();
|
||||
else if (aesItem.partyId.has_value())
|
||||
return aesItem.partyId.get();
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
void ExplosionEdit::setSingleData(const ExplosionSingle &singleData)
|
||||
{
|
||||
QPointF impactPosition(singleData.impactPosition().lon(), singleData.impactPosition().lat());
|
||||
QPointF impactPosition(singleData.impactPosition.lon, singleData.impactPosition.lat);
|
||||
if (!impactPosition.isNull())
|
||||
m_ui->positionEdit->setCoordinate(impactPosition);
|
||||
|
||||
m_ui->dteRequestTime->setMsecsSinceEpoch(singleData.fireRequestTime());
|
||||
m_ui->cbPurpose->setCurrentText(QString::fromUtf8(singleData.purpose().c_str()));
|
||||
m_ui->sbAltitude->setValue(singleData.altitude());
|
||||
m_ui->dteRequestTime->setMsecsSinceEpoch(singleData.fireRequestTime);
|
||||
m_ui->cbPurpose->setCurrentText(QString::fromUtf8(singleData.purpose.c_str()));
|
||||
m_ui->sbAltitude->setValue(singleData.altitude);
|
||||
|
||||
if (m_aesItem.id() > 0)
|
||||
m_chargeTypeMap[singleData.chargeStruct().chargeTypeId()].available[partyForItem(singleData)] += 1;
|
||||
if (m_aesItem.id > 0)
|
||||
m_chargeTypeMap[singleData.chargeStruct.chargeTypeId].available[partyForItem(singleData)] += 1;
|
||||
|
||||
const double radius = m_pdmDtc->impactRadius(singleData.chargeStruct().chargeTypeId(),singleData.chargeStruct().igniterTypeId(), singleData.chargeStruct().igniterFunctionId());
|
||||
const double radius = m_pdmDtc->impactRadius(singleData.chargeStruct.chargeTypeId,singleData.chargeStruct.igniterTypeId, singleData.chargeStruct.igniterFunctionId);
|
||||
m_ui->sbDimensionX->setValue(2 * radius);
|
||||
}
|
||||
|
||||
void ExplosionEdit::setAreaData(const ExplosionArea &areaData, bool copy)
|
||||
{
|
||||
const Area &area = areaData.area();
|
||||
if (!qFuzzyCompare(area.cornerBottomLeft().lon(), 0) ||
|
||||
!qFuzzyCompare(area.cornerBottomLeft().lat(), 0))
|
||||
const Area &area = areaData.area;
|
||||
if (!qFuzzyCompare(area.cornerBottomLeft.lon, 0) ||
|
||||
!qFuzzyCompare(area.cornerBottomLeft.lat, 0))
|
||||
{
|
||||
QPointF bottomLeft(area.cornerBottomLeft().lon(), area.cornerBottomLeft().lat());
|
||||
m_ui->positionEdit->setCoordinate(Polygons::bottomLeft2CenterPoint(bottomLeft, area.width(), area.height(), area.rotation()));
|
||||
QPointF bottomLeft(area.cornerBottomLeft.lon, area.cornerBottomLeft.lat);
|
||||
m_ui->positionEdit->setCoordinate(Polygons::bottomLeft2CenterPoint(bottomLeft, area.width, area.height, area.rotation));
|
||||
}
|
||||
|
||||
m_ui->sbDimensionX->setValue(area.width());
|
||||
m_ui->sbDimensionY->setValue(area.height());
|
||||
m_ui->sbAimingAxis->setValue(fmod((90.0 + area.rotation()) * 6400 / 360, 6400));
|
||||
m_ui->sbCannons->setValue(areaData.cannonCount() == 0 ? 4 : areaData.cannonCount());
|
||||
m_ui->sbRounds->setValue(areaData.cannonRounds() == 0 ? 9 : areaData.cannonRounds());
|
||||
if (m_aesItem.id() > 0 && !copy)
|
||||
m_ui->sbDimensionX->setValue(area.width);
|
||||
m_ui->sbDimensionY->setValue(area.height);
|
||||
m_ui->sbAimingAxis->setValue(fmod((90.0 + area.rotation) * 6400 / 360, 6400));
|
||||
m_ui->sbCannons->setValue(areaData.cannonCount == 0 ? 4 : areaData.cannonCount);
|
||||
m_ui->sbRounds->setValue(areaData.cannonRounds == 0 ? 9 : areaData.cannonRounds);
|
||||
if (m_aesItem.id > 0 && !copy)
|
||||
{
|
||||
if (!m_chargeTypeMap.contains(areaData.chargeStruct().chargeTypeId()))
|
||||
ERROR_LOG(m_logger) << "SetAreaData called with a charge Type, that has doesn't match. Id " << areaData.chargeStruct().chargeTypeId() << "is not in m_chargeTypeMap";
|
||||
if (!areaData.partyId().is_set())
|
||||
if (!m_chargeTypeMap.contains(areaData.chargeStruct.chargeTypeId))
|
||||
ERROR_LOG(m_logger) << "SetAreaData called with a charge Type, that has doesn't match. Id " << areaData.chargeStruct.chargeTypeId << "is not in m_chargeTypeMap";
|
||||
if (!areaData.partyId.has_value())
|
||||
ERROR_LOG(m_logger) << "SetAreaData called without a party set. m_chargeTypeMap might be corrupted.";
|
||||
m_chargeTypeMap[areaData.chargeStruct().chargeTypeId()].available[areaData.partyId().get()] += areaData.cannonCount() * areaData.cannonRounds();
|
||||
m_chargeTypeMap[areaData.chargeStruct.chargeTypeId].available[areaData.partyId.get()] += areaData.cannonCount * areaData.cannonRounds;
|
||||
}
|
||||
|
||||
|
||||
m_ui->dteRequestTime->setMsecsSinceEpoch(areaData.fireRequestTime());
|
||||
m_ui->cbPurpose->setCurrentText(QString::fromUtf8(areaData.purpose().c_str()));
|
||||
m_ui->sbAltitude->setValue(areaData.altitude());
|
||||
m_ui->dteRequestTime->setMsecsSinceEpoch(areaData.fireRequestTime);
|
||||
m_ui->cbPurpose->setCurrentText(QString::fromUtf8(areaData.purpose.c_str()));
|
||||
m_ui->sbAltitude->setValue(areaData.altitude);
|
||||
}
|
||||
|
||||
|
||||
@@ -723,7 +723,7 @@ void ExplosionEdit::onPartyChanged()
|
||||
for (const Charges &charge : std::as_const(m_chargeTypeMap))
|
||||
{
|
||||
if (charge.available.contains(partyId) && charge.available[partyId] > 0)
|
||||
m_ui->cbChargeType->addItem(m_pdmDtc->trChargeTypeShortName(charge.chargeType.id(), true), charge.chargeType.id());
|
||||
m_ui->cbChargeType->addItem(m_pdmDtc->trChargeTypeShortName(charge.chargeType.id, true), charge.chargeType.id);
|
||||
}
|
||||
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(chargeTypeId) < 0 ? 0 : m_ui->cbChargeType->findData(chargeTypeId));
|
||||
@@ -761,19 +761,19 @@ bool ExplosionEdit::apply()
|
||||
|
||||
if (m_type == etSingle)
|
||||
{
|
||||
const ExplosionSingleModifyRequest req(m_aesItem.id(),
|
||||
const ExplosionSingleModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
m_aesItem.effectSourceId(),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
m_aesItem.effectSourceId,
|
||||
chargeType,
|
||||
pos,
|
||||
LtsUtils::toOptional(partyId),
|
||||
LtsUtils::toOptional(0),
|
||||
fireRequestTime,
|
||||
static_cast<int64_t>(fireRequestTime),
|
||||
altitude,
|
||||
purpose,
|
||||
m_ui->cbEffectMarkingInTa->isChecked(),
|
||||
dds::core::optional<rti::core::int64>());
|
||||
dds::core::optional<int64_t>());
|
||||
|
||||
m_requestHelper->addRequest([this, req]()
|
||||
{
|
||||
@@ -782,22 +782,22 @@ bool ExplosionEdit::apply()
|
||||
}
|
||||
else if (m_type == etArea)
|
||||
{
|
||||
const ExplosionAreaModifyRequest req(m_aesItem.id(),
|
||||
const ExplosionAreaModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
duration,
|
||||
m_aesItem.effectSourceId(),
|
||||
m_aesItem.effectSourceId,
|
||||
chargeType,
|
||||
area,
|
||||
LtsUtils::toOptional(partyId),
|
||||
LtsUtils::toOptional(0),
|
||||
cannons,
|
||||
rounds,
|
||||
fireRequestTime,
|
||||
static_cast<int64_t>(fireRequestTime),
|
||||
altitude,
|
||||
purpose,
|
||||
m_ui->cbEffectMarkingInTa->isChecked(),
|
||||
dds::core::optional<rti::core::int64>());
|
||||
dds::core::optional<int64_t>());
|
||||
m_requestHelper->addRequest([this, req]()
|
||||
{
|
||||
return m_ftc->explosionAreaModifyRequest(req, this);
|
||||
@@ -810,16 +810,16 @@ bool ExplosionEdit::apply()
|
||||
void ExplosionEdit::onFireClicked()
|
||||
{
|
||||
m_ui->pbFire->setEnabled(false);
|
||||
if ((m_aesItem.effectStateId() != AesEffectState::EsActivated &&
|
||||
m_aesItem.effectStateId() != AesEffectState::EsPaused &&
|
||||
m_aesItem.effectStateId() != AesEffectState::EsCreated &&
|
||||
m_aesItem.effectStateId() != AesEffectState::EsPrepared)
|
||||
|| m_aesItem.id() <= 0)
|
||||
if ((m_aesItem.effectStateId != AesEffectState::EsActivated &&
|
||||
m_aesItem.effectStateId != AesEffectState::EsPaused &&
|
||||
m_aesItem.effectStateId != AesEffectState::EsCreated &&
|
||||
m_aesItem.effectStateId != AesEffectState::EsPrepared)
|
||||
|| m_aesItem.id <= 0)
|
||||
return;
|
||||
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsCreated ||
|
||||
m_aesItem.effectStateId() == AesEffectState::EsPrepared)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsCreated ||
|
||||
m_aesItem.effectStateId == AesEffectState::EsPrepared)
|
||||
{
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(m_session->partitionTime() + 3000);
|
||||
m_ui->dteEffectStart->setChecked(true);
|
||||
@@ -835,9 +835,9 @@ void ExplosionEdit::onFireClicked()
|
||||
|
||||
m_requestHelper->addRequest([ = ]()
|
||||
{
|
||||
return m_ftc->explosionAreaPauseResumeRequest(ExplosionAreaPauseResumeRequest(m_aesItem.id(),
|
||||
m_aesItem.effectStateId() != AesEffectState::EsActivated,
|
||||
dds::core::optional<rti::core::int64>(),
|
||||
return m_ftc->explosionAreaPauseResumeRequest(ExplosionAreaPauseResumeRequest(m_aesItem.id,
|
||||
m_aesItem.effectStateId != AesEffectState::EsActivated,
|
||||
dds::core::optional<int64_t>(),
|
||||
dds::core::optional<int32_t>(),
|
||||
dds::core::optional<int32_t>())
|
||||
, this);
|
||||
@@ -849,7 +849,7 @@ void ExplosionEdit::onParticipantClicked()
|
||||
{
|
||||
ParticipantManagement::ParticipantSelection *ps = new ParticipantManagement::ParticipantSelection(m_session, this);
|
||||
ps->init();
|
||||
ps->setParticipantSelected(m_participant.partyId(), m_participant.id());
|
||||
ps->setParticipantSelected(m_participant.partyId, m_participant.id);
|
||||
|
||||
connect(ps, &ParticipantManagement::ParticipantSelection::selectedParticipants, this, &ExplosionEdit::onParticipant);
|
||||
ps->exec();
|
||||
@@ -860,16 +860,16 @@ void ExplosionEdit::onParticipant(const QVector<int> &participants)
|
||||
if (participants.isEmpty())
|
||||
return;
|
||||
|
||||
if (participants[0] == m_participant.id())
|
||||
if (participants[0] == m_participant.id)
|
||||
return;
|
||||
m_participant = m_ppmDtc->participant(participants[0]);
|
||||
|
||||
m_symbolWatcher->setSymbolResult(m_asbIfc->findImage(m_participant));
|
||||
m_ui->lblDesignator->setText(QString::fromStdString(m_participant.designator()));
|
||||
m_ui->lblTactIdentifier->setText(QString::fromStdString(m_participant.tacticalIdentifier()));
|
||||
m_ui->lblDesignator->setText(QString::fromStdString(m_participant.designator));
|
||||
m_ui->lblTactIdentifier->setText(QString::fromStdString(m_participant.tacticalIdentifier));
|
||||
|
||||
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(m_participant.partyId()));
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(m_participant.partyId));
|
||||
slotChangesMade();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <ProjectDataManagement/pdm_data_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm_gui_plugin_interface.h>
|
||||
|
||||
+4
-4
@@ -232,7 +232,7 @@ AreaEffectSimulation::BaseEdit *InterfaceImpl::showEditWindow(int aesEntityId, b
|
||||
|
||||
BaseEdit *InterfaceImpl::showEditWindow(int aesEntityId, ProjectDataManagement::EffectSource effectSource, QWidget *parent)
|
||||
{
|
||||
switch (effectSource.underlying())
|
||||
switch (effectSource)
|
||||
{
|
||||
case ProjectDataManagement::EffectSource::ES_ADLER_STANDALONE:
|
||||
{
|
||||
@@ -326,9 +326,9 @@ LtsWidgets::LtsDialog *InterfaceImpl::onShowExplosionClusterListDialog(QWidget *
|
||||
ExplosionList *listWidget;
|
||||
|
||||
listWidget = new ExplosionClusterList(menuGroup(),
|
||||
{ProjectDataManagement::GearClass::Artillery,
|
||||
ProjectDataManagement::GearClass::Mortar,
|
||||
ProjectDataManagement::GearClass::Rocket},
|
||||
{ProjectDataManagement::GearClass::GearClass_Artillery,
|
||||
ProjectDataManagement::GearClass::GearClass_Mortar,
|
||||
ProjectDataManagement::GearClass::GearClass_Rocket},
|
||||
parent);
|
||||
|
||||
if (listWidget->init(m_session))
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_explosion_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ bool ExplosionList::init(LtsSession::LtsSession *session)
|
||||
return false;
|
||||
|
||||
m_bHasAddEditOperatorRights = false;
|
||||
switch (m_gearClass.underlying())
|
||||
switch (m_gearClass)
|
||||
{
|
||||
case ProjectDataManagement::GearClass::GearClass_Artillery:
|
||||
|
||||
@@ -288,7 +288,7 @@ void ExplosionAreaList::createModel()
|
||||
|
||||
|
||||
ExplosionClusterList::ExplosionClusterList(const QString &menuGroup, const QVector<ProjectDataManagement::GearClass> &gcs, QWidget *parent)
|
||||
: ExplosionList(menuGroup, etExplosionCluster, ProjectDataManagement::GearClass::Artillery, parent), m_model(nullptr), m_gearClasses(gcs)
|
||||
: ExplosionList(menuGroup, etExplosionCluster, ProjectDataManagement::GearClass::GearClass_Artillery, parent), m_model(nullptr), m_gearClasses(gcs)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+185
-185
@@ -81,8 +81,8 @@ QPair<int, int> getMinMaxDistance(ProjectDataManagement::GearClass gearClass, in
|
||||
static QHash<int, QPair<int, int>> contraintsDistance;
|
||||
if (contraintsDistance.isEmpty())
|
||||
{
|
||||
contraintsDistance.insert(static_cast<int>(ProjectDataManagement::GearClass::Artillery), {3500, 40000});
|
||||
contraintsDistance.insert(static_cast<int>(ProjectDataManagement::GearClass::Mortar), {800, 7800});
|
||||
contraintsDistance.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Artillery), {3500, 40000});
|
||||
contraintsDistance.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Mortar), {800, 7800});
|
||||
|
||||
|
||||
}
|
||||
@@ -90,8 +90,8 @@ QPair<int, int> getMinMaxDistance(ProjectDataManagement::GearClass gearClass, in
|
||||
static QHash<int, QPair<int, int>> contraintsDistanceVulcano;
|
||||
if (contraintsDistanceVulcano.isEmpty())
|
||||
{
|
||||
contraintsDistanceVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::Artillery), {10000, 70000});
|
||||
contraintsDistanceVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::Rocket), {10000, 70000});
|
||||
contraintsDistanceVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Artillery), {10000, 70000});
|
||||
contraintsDistanceVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Rocket), {10000, 70000});
|
||||
}
|
||||
if (chargeTypeIdIsVulcano(chargeTypeId))
|
||||
{
|
||||
@@ -121,15 +121,15 @@ QPair<int, int> getMinMaxFlightDurationSec(ProjectDataManagement::GearClass gear
|
||||
static QHash<int, QPair<int, int>> contraintsFlightDuration;
|
||||
if (contraintsFlightDuration.isEmpty())
|
||||
{
|
||||
contraintsFlightDuration.insert(static_cast<int>(ProjectDataManagement::GearClass::Artillery), {6, 150});
|
||||
contraintsFlightDuration.insert(static_cast<int>(ProjectDataManagement::GearClass::Mortar), {20, 60});
|
||||
contraintsFlightDuration.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Artillery), {6, 150});
|
||||
contraintsFlightDuration.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Mortar), {20, 60});
|
||||
}
|
||||
|
||||
static QHash<int, QPair<int, int>> contraintsFlightDurationVulcano;
|
||||
if (contraintsFlightDurationVulcano.isEmpty())
|
||||
{
|
||||
contraintsFlightDurationVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::Artillery), {0, 999});
|
||||
contraintsFlightDurationVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::Rocket), {0, 999});
|
||||
contraintsFlightDurationVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Artillery), {0, 999});
|
||||
contraintsFlightDurationVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Rocket), {0, 999});
|
||||
}
|
||||
if (chargeTypeIdIsVulcano(chargeTypeId))
|
||||
{
|
||||
@@ -165,15 +165,15 @@ QPair<int, int> getMinMaxPeakHeight(ProjectDataManagement::GearClass gearClass,
|
||||
static QHash<int, QPair<int, int>> contraintsPeak;
|
||||
if (contraintsPeak.isEmpty())
|
||||
{
|
||||
contraintsPeak.insert(static_cast<int>(ProjectDataManagement::GearClass::Artillery), {250, 15000});
|
||||
contraintsPeak.insert(static_cast<int>(ProjectDataManagement::GearClass::Mortar), {500, 3000});
|
||||
contraintsPeak.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Artillery), {250, 15000});
|
||||
contraintsPeak.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Mortar), {500, 3000});
|
||||
}
|
||||
|
||||
static QHash<int, QPair<int, int>> contraintsPeakVulcano;
|
||||
if (contraintsPeakVulcano.isEmpty())
|
||||
{
|
||||
contraintsPeakVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::Artillery), {1000, 37500});
|
||||
contraintsPeakVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::Rocket), {1000, 37500});
|
||||
contraintsPeakVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Artillery), {1000, 37500});
|
||||
contraintsPeakVulcano.insert(static_cast<int>(ProjectDataManagement::GearClass::GearClass_Rocket), {1000, 37500});
|
||||
}
|
||||
if (chargeTypeIdIsVulcano(chargeTypeId))
|
||||
{
|
||||
@@ -278,7 +278,7 @@ ExplosionsEdit::ExplosionsEdit(const QString &menuGroup, QWidget *parent)
|
||||
|
||||
|
||||
|
||||
if (!m_explosionClusterData.isObjectModifiable())
|
||||
if (!m_explosionClusterData.isObjectModifiable)
|
||||
return true;
|
||||
|
||||
bool bEffectStartValid = true;
|
||||
@@ -416,7 +416,7 @@ bool ExplosionsEdit::init(int aesItemId, bool copy, LtsSession::LtsSession *sess
|
||||
}
|
||||
|
||||
|
||||
m_explosionClusterData.explosionGeometry(AreaEffectSimulation::AesExplosionGeometry::EgArea);
|
||||
m_explosionClusterData.explosionGeometry = AreaEffectSimulation::AesExplosionGeometry::EgArea;
|
||||
onGeometrySelected(static_cast<int>(AreaEffectSimulation::AesExplosionGeometry::EgArea));
|
||||
|
||||
|
||||
@@ -464,14 +464,14 @@ bool ExplosionsEdit::init(int aesItemId, bool copy, LtsSession::LtsSession *sess
|
||||
{
|
||||
const ExplosionCluster &exData = m_dtc->explosionCluster(aesItemId);
|
||||
setExplosionClusterData(exData);
|
||||
m_ui->gbEffectMarkingInTa->setChecked(exData.effectMarkingInTa());
|
||||
m_ui->gbEffectMarkingInTa->setChecked(exData.effectMarkingInTa);
|
||||
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_explosionClusterData.id(m_aesItem.id());
|
||||
m_explosionClusterData.effectStateId(m_aesItem.effectStateId());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
m_explosionClusterData.id = m_aesItem.id;
|
||||
m_explosionClusterData.effectStateId = m_aesItem.effectStateId;
|
||||
}
|
||||
}
|
||||
connect(m_ppmDtc.get(), &ParticipantManagement::Interface::Dtc::participantChanged, this, &ExplosionsEdit::onPartyChanged, Qt::UniqueConnection);
|
||||
@@ -514,7 +514,7 @@ bool ExplosionsEdit::init(int aesItemId, bool copy, LtsSession::LtsSession *sess
|
||||
|
||||
doCalculations();
|
||||
|
||||
RocketUtility::enaDisaWirkmittel(m_ui->cbGearClass, m_currentGeometry.underlying());
|
||||
RocketUtility::enaDisaWirkmittel(m_ui->cbGearClass, m_currentGeometry);
|
||||
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
|
||||
@@ -525,12 +525,12 @@ void ExplosionsEdit::setExplosionClusterData(const ExplosionCluster &ecData)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " START, ecData=" << ecData;
|
||||
|
||||
m_ui->leZpNumber->setText(QString::fromStdString(ecData.name()));
|
||||
m_ui->leElement->setText(QString::fromStdString(ecData.element()));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(ecData.effectStart().is_set() ? ecData.effectStart().get() : 0);
|
||||
m_ui->leZpNumber->setText(QString::fromStdString(ecData.name));
|
||||
m_ui->leElement->setText(QString::fromStdString(ecData.element));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(ecData.effectStart.has_value() ? ecData.effectStart.get() : 0);
|
||||
|
||||
|
||||
const AreaEffectSimulation::AesExplosionGeometry geometryType = static_cast<AreaEffectSimulation::AesExplosionGeometry>(ecData.explosionGeometry());
|
||||
const AreaEffectSimulation::AesExplosionGeometry geometryType = static_cast<AreaEffectSimulation::AesExplosionGeometry>(ecData.explosionGeometry);
|
||||
switch (geometryType)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgAimPoint:
|
||||
@@ -554,40 +554,40 @@ void ExplosionsEdit::setExplosionClusterData(const ExplosionCluster &ecData)
|
||||
}
|
||||
onGeometrySelected(static_cast<int>(geometryType));
|
||||
|
||||
m_ui->sbDurationSec->setValue(ecData.effectDuration() / 1000);
|
||||
m_ui->sbDurationSec->setValue(ecData.effectDuration / 1000);
|
||||
|
||||
|
||||
{
|
||||
QSignalBlocker locked(m_ui->cbGearClass);
|
||||
ProjectDataManagement::GearClass gc = m_pdmDtc->gearClassFromChargeTypeId(ecData.chargeStruct().chargeTypeId());
|
||||
m_ui->cbGearClass->setCurrentIndex(m_ui->cbGearClass->findData(static_cast<int>(gc.underlying())));
|
||||
ProjectDataManagement::GearClass gc = m_pdmDtc->gearClassFromChargeTypeId(ecData.chargeStruct.chargeTypeId);
|
||||
m_ui->cbGearClass->setCurrentIndex(m_ui->cbGearClass->findData(static_cast<int>(gc)));
|
||||
onGearClassChanged();
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
QSignalBlocker locked(m_ui->cbParty);
|
||||
if (ecData.partyId().is_set())
|
||||
if (ecData.partyId.has_value())
|
||||
{
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(ecData.partyId().get()));
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(ecData.partyId.get()));
|
||||
onPartyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
if (ecData.participantId().is_set())
|
||||
if (ecData.participantId.has_value())
|
||||
{
|
||||
m_ui->cbParticipantUnits->setCurrentIndex(m_ui->cbParticipantUnits->findData(ecData.participantId().get()));
|
||||
m_ui->cbParticipantUnits->setCurrentIndex(m_ui->cbParticipantUnits->findData(ecData.participantId.get()));
|
||||
onParticipantUnitChanged({});
|
||||
}
|
||||
}
|
||||
|
||||
FlightCurve fc(-1, -1, -1, -1, -1, -1, -1, -1);
|
||||
if (ecData.flightCurve().is_set())
|
||||
fc = ecData.flightCurve().get();
|
||||
if (ecData.flightCurve.has_value())
|
||||
fc = ecData.flightCurve.get();
|
||||
|
||||
if (fc.dropAngle() <= s_dropAngleDown)
|
||||
if (fc.dropAngle <= s_dropAngleDown)
|
||||
{
|
||||
m_ui->rbDropAngleDown->setChecked(true);
|
||||
m_ui->rbDropAngleUp->setChecked(false);
|
||||
@@ -598,65 +598,65 @@ void ExplosionsEdit::setExplosionClusterData(const ExplosionCluster &ecData)
|
||||
m_ui->rbDropAngleUp->setChecked(true);
|
||||
}
|
||||
|
||||
m_ui->sbCannons->setValue(ecData.impactCount());
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(ecData.chargeStruct().chargeTypeId()));
|
||||
m_ui->cbIgniterType->setCurrentIndex(m_ui->cbIgniterType->findData(ecData.chargeStruct().igniterTypeId()));
|
||||
m_ui->cbFirePurpose->setCurrentIndex(m_ui->cbFirePurpose->findData(ecData.firePurposeId()));
|
||||
m_ui->sbCannons->setValue(ecData.impactCount);
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(ecData.chargeStruct.chargeTypeId));
|
||||
m_ui->cbIgniterType->setCurrentIndex(m_ui->cbIgniterType->findData(ecData.chargeStruct.igniterTypeId));
|
||||
m_ui->cbFirePurpose->setCurrentIndex(m_ui->cbFirePurpose->findData(ecData.firePurposeId));
|
||||
|
||||
m_ui->sbZog->setValue(ecData.tla());
|
||||
m_ui->sbZog->setValue(ecData.tla);
|
||||
|
||||
const AreaEffectSimulation::Area &areaRef = ecData.area();
|
||||
const QPointF bottomLeft(areaRef.cornerBottomLeft().lon(), areaRef.cornerBottomLeft().lat());
|
||||
const QPointF centerpoint = Polygons::bottomLeft2CenterPoint(bottomLeft, areaRef.width(), areaRef.height(), areaRef.rotation());
|
||||
const AreaEffectSimulation::Area &areaRef = ecData.area;
|
||||
const QPointF bottomLeft(areaRef.cornerBottomLeft.lon, areaRef.cornerBottomLeft.lat);
|
||||
const QPointF centerpoint = Polygons::bottomLeft2CenterPoint(bottomLeft, areaRef.width, areaRef.height, areaRef.rotation);
|
||||
if (!bottomLeft.isNull())
|
||||
{
|
||||
m_ui->positionEdit->setCoordinate(centerpoint);
|
||||
setCoord(centerpoint);
|
||||
}
|
||||
|
||||
if (ecData.explosionGeometry().underlying() == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
|
||||
if (ecData.explosionGeometry == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
|
||||
{
|
||||
m_ui->sbDimensionY_Tiefe->setValue(areaRef.height() / 2);
|
||||
m_ui->sbDimensionX_BreiteRadius->setValue(areaRef.width() / 2);
|
||||
m_ui->sbDimensionY_Tiefe->setValue(areaRef.height / 2);
|
||||
m_ui->sbDimensionX_BreiteRadius->setValue(areaRef.width / 2);
|
||||
m_ui->sbAimingAxis->setValue(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->sbDimensionY_Tiefe->setValue(areaRef.height());
|
||||
m_ui->sbDimensionX_BreiteRadius->setValue(areaRef.width());
|
||||
m_ui->sbAimingAxis->setValue(fmod((90.0 + areaRef.rotation()) * 6400 / 360, 6400));
|
||||
m_ui->sbDimensionY_Tiefe->setValue(areaRef.height);
|
||||
m_ui->sbDimensionX_BreiteRadius->setValue(areaRef.width);
|
||||
m_ui->sbAimingAxis->setValue(fmod((90.0 + areaRef.rotation) * 6400 / 360, 6400));
|
||||
}
|
||||
|
||||
if (!ecData.esmParticipantIds().empty())
|
||||
if (!ecData.esmParticipantIds.empty())
|
||||
{
|
||||
m_ui->cbActors->setCurrentIndex(m_ui->cbActors->findData(ecData.esmParticipantIds().at(0)));
|
||||
if (ecData.esmParticipantIds().size() > 1)
|
||||
m_ui->cbActors_2->setCurrentIndex(m_ui->cbActors_2->findData(ecData.esmParticipantIds().at(1)));
|
||||
m_ui->cbActors->setCurrentIndex(m_ui->cbActors->findData(ecData.esmParticipantIds.at(0)));
|
||||
if (ecData.esmParticipantIds.size() > 1)
|
||||
m_ui->cbActors_2->setCurrentIndex(m_ui->cbActors_2->findData(ecData.esmParticipantIds.at(1)));
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
if (fc.requestedFlightDuration() > 0)
|
||||
if (fc.requestedFlightDuration > 0)
|
||||
{
|
||||
|
||||
switchTo(FlighDurationOrPeakHeight::FDPH_flightDuration);
|
||||
setValueAccordingContraints(fc.requestedFlightDuration() / 1000.0, FlighDurationOrPeakHeight::FDPH_flightDuration);
|
||||
setValueAccordingContraints(fc.requestedFlightDuration / 1000.0, FlighDurationOrPeakHeight::FDPH_flightDuration);
|
||||
}
|
||||
if (fc.requestedRelativePeakHeight() > 0)
|
||||
if (fc.requestedRelativePeakHeight > 0)
|
||||
{
|
||||
|
||||
switchTo(FlighDurationOrPeakHeight::FDPH_peakHeight);
|
||||
setValueAccordingContraints(fc.requestedRelativePeakHeight(), FlighDurationOrPeakHeight::FDPH_peakHeight);
|
||||
setValueAccordingContraints(fc.requestedRelativePeakHeight, FlighDurationOrPeakHeight::FDPH_peakHeight);
|
||||
}
|
||||
|
||||
LaserGuiding lg(0, 0, -1, std::numeric_limits<int>::min());
|
||||
if (ecData.laserGuiding().is_set())
|
||||
lg = ecData.laserGuiding().get();
|
||||
if (ecData.laserGuiding.has_value())
|
||||
lg = ecData.laserGuiding.get();
|
||||
|
||||
m_ui->sbLcAttack_Prf->setValue(lg.lcAttack());
|
||||
m_ui->sbLcTermination_Prf->setValue(lg.lcTermination());
|
||||
m_ui->sbLcAttack_Prf->setValue(lg.lcAttack);
|
||||
m_ui->sbLcTermination_Prf->setValue(lg.lcTermination);
|
||||
|
||||
m_ui->spCloudBase->setValue(lg.cloudBase());
|
||||
m_ui->spCloudBase->setValue(lg.cloudBase);
|
||||
|
||||
onExplosionClusterChanged(ecData, DataModification::eAdded);
|
||||
}
|
||||
@@ -700,7 +700,7 @@ void ExplosionsEdit::onChargeTypeChanged()
|
||||
setMinMaxConstraints(phfd, gearClassType, chargeTypeId);
|
||||
|
||||
|
||||
if (m_currentGeometry.underlying() == AreaEffectSimulation::AesExplosionGeometry::EgPoint)
|
||||
if (m_currentGeometry == AreaEffectSimulation::AesExplosionGeometry::EgPoint)
|
||||
{
|
||||
int igniterTypeId = m_ui->cbIgniterType->currentData().toInt();
|
||||
const double impactRadius = m_pdmDtc->impactRadius(chargeTypeId, igniterTypeId, 0);
|
||||
@@ -790,7 +790,7 @@ void ExplosionsEdit::getPosition()
|
||||
m_previewPolygon.clear();
|
||||
m_previewCircleRadius = 0.0;
|
||||
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgArea:
|
||||
{
|
||||
@@ -920,7 +920,7 @@ void ExplosionsEdit::onPolylineData(const QPolygonF &polyline)
|
||||
m_ui->sbDimensionX_BreiteRadius->setValue(distance);
|
||||
|
||||
const Core::GeoPosition coordGeo2(utm2.geographic().x(), utm2.geographic().y(), 0);
|
||||
const double height2 = getElevation(coordGeo2.lon(), coordGeo2.lat());
|
||||
const double height2 = getElevation(coordGeo2.lon, coordGeo2.lat);
|
||||
m_ui->sbHeight2SBox->setValue(height2);
|
||||
DEBUG_LOG(m_logger) << "sbHeight2SBox setValue=" << height2;
|
||||
|
||||
@@ -948,7 +948,7 @@ void ExplosionsEdit::setCoord(const QPointF &coord)
|
||||
const Core::GeoPosition coordGeo(coord.x(), coord.y(), 0);
|
||||
m_coordGeo = coordGeo;
|
||||
|
||||
const double height = getElevation(coordGeo.lon(), coordGeo.lat());
|
||||
const double height = getElevation(coordGeo.lon, coordGeo.lat);
|
||||
m_ui->sbHeight1SBox->setValue(height);
|
||||
|
||||
updateActorComboBox(coordGeo);
|
||||
@@ -986,8 +986,8 @@ void ExplosionsEdit::fillParticipantUnit()
|
||||
for (auto &superiorId : superiorIds)
|
||||
{
|
||||
const ParticipantManagement::Participant &part = m_ppmDtc->participant(superiorId);
|
||||
unitList.push_back(std::tuple<QString, int, int>(QString::fromStdString(part.designator()) + QStringLiteral(" (%1)").arg(units.value(superiorId).count()),
|
||||
part.id(),
|
||||
unitList.push_back(std::tuple<QString, int, int>(QString::fromStdString(part.designator) + QStringLiteral(" (%1)").arg(units.value(superiorId).count()),
|
||||
part.id,
|
||||
units.value(superiorId).count()));
|
||||
}
|
||||
std::sort(unitList.begin(), unitList.end());
|
||||
@@ -1065,7 +1065,7 @@ void ExplosionsEdit::onAimingAxisChanged(int aimingAxis)
|
||||
m_ui->positionEdit_2->setCoordinate(utm2New.geographic());
|
||||
|
||||
const Core::GeoPosition coordGeo(utm2New.geographic().x(), utm2New.geographic().y(), 0);
|
||||
const double height = getElevation(coordGeo.lon(), coordGeo.lat());
|
||||
const double height = getElevation(coordGeo.lon, coordGeo.lat);
|
||||
m_ui->sbHeight1SBox->setValue(height);
|
||||
}
|
||||
|
||||
@@ -1273,7 +1273,7 @@ void ExplosionsEdit::doCalculations(bool executeEnableUiElements)
|
||||
return;
|
||||
|
||||
|
||||
if ((m_explosionClusterData.effectStateId() == AesEffectState::EsPaused) || (m_explosionClusterData.effectStateId() == AesEffectState::EsExpired))
|
||||
if ((m_explosionClusterData.effectStateId == AesEffectState::EsPaused) || (m_explosionClusterData.effectStateId == AesEffectState::EsExpired))
|
||||
return;
|
||||
|
||||
DoCalculationsExitGuard exitGuard(this, executeEnableUiElements);
|
||||
@@ -1421,7 +1421,7 @@ void ExplosionsEdit::doCalculations(bool executeEnableUiElements)
|
||||
return;
|
||||
}
|
||||
|
||||
const qint64 calculatedFlightDurationMsec = trajectoryOut.back().relativeTime();
|
||||
const qint64 calculatedFlightDurationMsec = trajectoryOut.back().relativeTime;
|
||||
m_temporaryData.m_estimatedFlightDurationMsec = Polygons::explosionClusterEstimatedMaxFlightDuration2DMSec(calculatedFlightDurationMsec);
|
||||
m_temporaryData.m_idealTapAbsoluteGeoOut = idealTapAbsoluteGeoOut;
|
||||
|
||||
@@ -1435,7 +1435,7 @@ void ExplosionsEdit::doCalculations(bool executeEnableUiElements)
|
||||
.arg(std::round(betaRad * LtsCoordTrans::rad2deg() * 10) / 10)
|
||||
.arg(std::round(vOut))
|
||||
.arg(std::round(calculatedFlightDurationMsec / 1000.0))
|
||||
.arg(std::round(m_temporaryData.m_idealTapAbsoluteGeoOut.z()));
|
||||
.arg(std::round(m_temporaryData.m_idealTapAbsoluteGeoOut.z));
|
||||
|
||||
QSignalBlocker locked(m_ui->sBox_flightDuration);
|
||||
m_ui->sBox_flightDuration->setValue(std::round(calculatedFlightDurationMsec / 1000.0));
|
||||
@@ -1601,12 +1601,12 @@ void ExplosionsEdit::onPartitionTimeChanged(qint64 newPartitionTimeMsec)
|
||||
|
||||
QString ExplosionsEdit::dialogIdentifier() const
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionsArtillery") : QStringLiteral("EditExplosionsArtillery%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionsArtillery") : QStringLiteral("EditExplosionsArtillery%1").arg(m_aesItem.id);
|
||||
}
|
||||
|
||||
void ExplosionsEdit::onExplosionClusterChanged(const ExplosionCluster &ecData, DataModification modType)
|
||||
{
|
||||
if (ecData.id() != m_aesItem.id())
|
||||
if (ecData.id != m_aesItem.id)
|
||||
return;
|
||||
|
||||
BaseEdit::onAreaChanged(ecData, modType);
|
||||
@@ -1620,7 +1620,7 @@ void ExplosionsEdit::onExplosionClusterChanged(const ExplosionCluster &ecData, D
|
||||
|
||||
if (
|
||||
|
||||
(!ecData.isObjectModifiable()))
|
||||
(!ecData.isObjectModifiable))
|
||||
{
|
||||
INFO_LOG(m_logger) << " object becames not modifiable";
|
||||
enableUiFireButton();
|
||||
@@ -1635,13 +1635,13 @@ void ExplosionsEdit::onExplosionClusterChanged(const ExplosionCluster &ecData, D
|
||||
}
|
||||
|
||||
m_explosionClusterData = ecData;
|
||||
m_currentGeometry = m_explosionClusterData.explosionGeometry();
|
||||
m_currentGeometry = m_explosionClusterData.explosionGeometry;
|
||||
|
||||
if (ecData.flightCurve().is_set())
|
||||
if (ecData.flightCurve.has_value())
|
||||
{
|
||||
const FlightCurve &fc = ecData.flightCurve().get();
|
||||
m_ui->leCalcFlightDuration->setText(QString(QStringLiteral("%1 sec")).arg(fc.calculatedFlightDuration() / 1000.0));
|
||||
m_ui->leCalcPeakHeight->setText(QString(QStringLiteral("%1 m abs")).arg(fc.calculatedPeakHeightAbs()));
|
||||
const FlightCurve &fc = ecData.flightCurve.get();
|
||||
m_ui->leCalcFlightDuration->setText(QString(QStringLiteral("%1 sec")).arg(fc.calculatedFlightDuration / 1000.0));
|
||||
m_ui->leCalcPeakHeight->setText(QString(QStringLiteral("%1 m abs")).arg(fc.calculatedPeakHeightAbs));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1649,13 +1649,13 @@ void ExplosionsEdit::onExplosionClusterChanged(const ExplosionCluster &ecData, D
|
||||
m_ui->leCalcPeakHeight->setText(QString(QStringLiteral("- m abs")));
|
||||
}
|
||||
|
||||
m_ui->leDescription->setText(QString::fromStdString(ecData.annotationString()));
|
||||
m_ui->leDescription->setText(QString::fromStdString(ecData.annotationString));
|
||||
m_ui->leDescription->setToolTip(m_ui->leDescription->text());
|
||||
|
||||
if (!m_ui->sbDurationSec->isEnabled())
|
||||
{
|
||||
const bool hasChanges = hasUnsavedChanges();
|
||||
m_ui->sbDurationSec->setValue(m_explosionClusterData.effectDuration() / 1000);
|
||||
m_ui->sbDurationSec->setValue(m_explosionClusterData.effectDuration / 1000);
|
||||
if (!hasChanges)
|
||||
__unchange__();
|
||||
}
|
||||
@@ -1740,10 +1740,10 @@ void ExplosionsEdit::retranslate()
|
||||
void ExplosionsEdit::enableUiElements()
|
||||
{
|
||||
DEBUG_LOG(m_logger) << " enableUiElements()"
|
||||
<< ", m_explosionClusterData.id() = " << m_explosionClusterData.id() << ", isModifiable() = " << isModifiable()
|
||||
<< ", m_explosionClusterData.id() = " << m_explosionClusterData.id << ", isModifiable() = " << isModifiable()
|
||||
<< ", isOnlyNameModifiable() = " << isOnlyNameModifiable() << ", ena = " << (isModifiable() && !isOnlyNameModifiable());
|
||||
|
||||
if (m_explosionClusterData.id() == 0)
|
||||
if (m_explosionClusterData.id == 0)
|
||||
enableUiElements(true);
|
||||
else
|
||||
enableUiElements(isModifiable() && !isOnlyNameModifiable());
|
||||
@@ -1792,8 +1792,8 @@ void ExplosionsEdit::enableUiElements(bool enable)
|
||||
|
||||
|
||||
|
||||
m_ui->leZpNumber->setEnabled((enable || isOnlyNameModifiable()) && m_aesItem.effectStateId() != AesEffectState::EsActivated);
|
||||
m_ui->leElement->setEnabled((enable || isOnlyNameModifiable()) && m_aesItem.effectStateId() != AesEffectState::EsActivated);
|
||||
m_ui->leZpNumber->setEnabled((enable || isOnlyNameModifiable()) && m_aesItem.effectStateId != AesEffectState::EsActivated);
|
||||
m_ui->leElement->setEnabled((enable || isOnlyNameModifiable()) && m_aesItem.effectStateId != AesEffectState::EsActivated);
|
||||
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
|
||||
@@ -1804,15 +1804,15 @@ void ExplosionsEdit::enableUiElements(bool enable)
|
||||
|
||||
int numberTrajectoriesRef = 0;
|
||||
{
|
||||
const int simToRestrict = m_aesItem.id();
|
||||
const int simToRestrict = m_aesItem.id;
|
||||
|
||||
auto cb = [simToRestrict, &numberTrajectoriesRef](const AreaEffectSimulation::TrajectoryTimeAware &traj)
|
||||
{
|
||||
|
||||
|
||||
if (traj.originatorTypeId() != ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation)
|
||||
if (traj.originatorTypeId != ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation)
|
||||
return;
|
||||
const int aesItemId = traj.originatorId();
|
||||
const int aesItemId = traj.originatorId;
|
||||
if (simToRestrict == aesItemId)
|
||||
++numberTrajectoriesRef;
|
||||
};
|
||||
@@ -1821,7 +1821,7 @@ void ExplosionsEdit::enableUiElements(bool enable)
|
||||
|
||||
DEBUG_LOG(m_logger) << "************* enableUiElements numberTrajectoriesRef=" << numberTrajectoriesRef;
|
||||
|
||||
if ((numberTrajectoriesRef > 0) && !isPointSimilar(m_explosionClusterData.explosionGeometry()))
|
||||
if ((numberTrajectoriesRef > 0) && !isPointSimilar(m_explosionClusterData.explosionGeometry))
|
||||
{
|
||||
|
||||
enableUiFireButton();
|
||||
@@ -1829,7 +1829,7 @@ void ExplosionsEdit::enableUiElements(bool enable)
|
||||
else
|
||||
{
|
||||
|
||||
m_ui->pbFire->setEnabled(enable && m_aesItem.id() > 0);
|
||||
m_ui->pbFire->setEnabled(enable && m_aesItem.id > 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1871,7 +1871,7 @@ void ExplosionsEdit::enableUiFireButton()
|
||||
|
||||
|
||||
|
||||
bool enableBasics = (m_aesItem.id() > 0)
|
||||
bool enableBasics = (m_aesItem.id > 0)
|
||||
&& isDataSufficiant();
|
||||
|
||||
INFO_LOG(m_logger) << " enableBasics = " << enableBasics;
|
||||
@@ -1879,17 +1879,17 @@ void ExplosionsEdit::enableUiFireButton()
|
||||
if (!enableBasics)
|
||||
return;
|
||||
|
||||
if (m_explosionClusterData.effectStateId() == AreaEffectSimulation::AesEffectState::EsExpired)
|
||||
if (m_explosionClusterData.effectStateId == AreaEffectSimulation::AesEffectState::EsExpired)
|
||||
return;
|
||||
|
||||
int numberTrajectoriesRef = 0;
|
||||
{
|
||||
const int simToRestrict = m_aesItem.id();
|
||||
const int simToRestrict = m_aesItem.id;
|
||||
|
||||
auto cb = [simToRestrict, &numberTrajectoriesRef](const AreaEffectSimulation::TrajectoryTimeAware &traj)
|
||||
{
|
||||
|
||||
if ((traj.originatorTypeId() == ProjectDataManagement::StateChangeOriginator::AreaEffectSimulation) && (simToRestrict == traj.originatorId()))
|
||||
if ((traj.originatorTypeId == ProjectDataManagement::StateChangeOriginator::StateChangeOriginator_AreaEffectSimulation) && (simToRestrict == traj.originatorId))
|
||||
++numberTrajectoriesRef;
|
||||
};
|
||||
m_dtc->trajectoryTimeAwares(cb);
|
||||
@@ -1900,12 +1900,12 @@ void ExplosionsEdit::enableUiFireButton()
|
||||
|
||||
|
||||
|
||||
if ((numberTrajectoriesRef <= 0) && (m_explosionClusterData.effectDuration() == m_explosionClusterData.originalEffectDuration()))
|
||||
if ((numberTrajectoriesRef <= 0) && (m_explosionClusterData.effectDuration == m_explosionClusterData.originalEffectDuration))
|
||||
{
|
||||
INFO_LOG(m_logger) << " Firing has NOT started yet";
|
||||
return;
|
||||
}
|
||||
else if (numberTrajectoriesRef >= m_explosionClusterData.impactCount())
|
||||
else if (numberTrajectoriesRef >= m_explosionClusterData.impactCount)
|
||||
{
|
||||
INFO_LOG(m_logger) << " Firing has finished";
|
||||
return;
|
||||
@@ -1927,7 +1927,7 @@ void ExplosionsEdit::enableUiFireButton()
|
||||
else
|
||||
{
|
||||
|
||||
if (m_explosionClusterData.effectStateId() == AesEffectState::EsPaused)
|
||||
if (m_explosionClusterData.effectStateId == AesEffectState::EsPaused)
|
||||
bPause = false;
|
||||
}
|
||||
}
|
||||
@@ -1944,7 +1944,7 @@ void ExplosionsEdit::enableUiFireButton()
|
||||
{
|
||||
|
||||
|
||||
if ((m_explosionClusterData.impactCount() > 1) && (m_explosionClusterData.impactCount() >= m_explosionClusterData.remainExplosionNumber()))
|
||||
if ((m_explosionClusterData.impactCount > 1) && (m_explosionClusterData.impactCount >= m_explosionClusterData.remainExplosionNumber))
|
||||
{
|
||||
m_ui->pbFire->setEnabled(true);
|
||||
m_ui->pbFire->setText(tr("Start"));
|
||||
@@ -1964,7 +1964,7 @@ void ExplosionsEdit::showPreviewObject()
|
||||
if (!has2DMap(false))
|
||||
return;
|
||||
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgArea:
|
||||
if (m_previewPolygon.isEmpty())
|
||||
@@ -2011,7 +2011,7 @@ bool ExplosionsEdit::isDataSufficiant()
|
||||
|
||||
|
||||
bool bHasTargetArea = !m_coord.isNull();
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgArea:
|
||||
bHasTargetArea &= m_ui->sbDimensionX_BreiteRadius->value() > 0;
|
||||
@@ -2036,32 +2036,32 @@ bool ExplosionsEdit::isDataSufficiant()
|
||||
bool ExplosionsEdit::apply()
|
||||
{
|
||||
ExplosionClusterModifyRequest request;
|
||||
request.id(m_aesItem.id());
|
||||
request.element(m_ui->leElement->text().toStdString());
|
||||
request.name(m_ui->leZpNumber->text().toStdString());
|
||||
request.id = m_aesItem.id;
|
||||
request.element = m_ui->leElement->text().toStdString();
|
||||
request.name = m_ui->leZpNumber->text().toStdString();
|
||||
|
||||
if (m_ui->dteEffectStart->isChecked())
|
||||
request.effectStart().set(m_ui->dteEffectStart->msecsSinceEpoch());
|
||||
request.effectStart.set(m_ui->dteEffectStart->msecsSinceEpoch());
|
||||
if (m_ui->sbDurationSec->isVisible())
|
||||
request.effectDuration(m_ui->sbDurationSec->value() * 1000);
|
||||
request.effectDuration = m_ui->sbDurationSec->value() * 1000;
|
||||
|
||||
const bool bIsPoint = isPointSimilar(m_currentGeometry);
|
||||
|
||||
|
||||
request.explosionGeometry(m_currentGeometry);
|
||||
request.explosionGeometry = m_currentGeometry;
|
||||
|
||||
Core::GeoPosition2D bottomLeftGeo;
|
||||
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AesExplosionGeometry::EgRadial:
|
||||
{
|
||||
QPointF bottomLeft(Polygons::centerPoint2BottomLeft(m_coord, m_ui->sbDimensionX_BreiteRadius->value() * 2, m_ui->sbDimensionY_Tiefe->value() * 2, 0.0));
|
||||
bottomLeftGeo = Core::GeoPosition2D(bottomLeft.x(), bottomLeft.y());
|
||||
|
||||
request.area().cornerBottomLeft(bottomLeftGeo);
|
||||
request.area().height(m_ui->sbDimensionY_Tiefe->value() * 2);
|
||||
request.area().width(m_ui->sbDimensionX_BreiteRadius->value() * 2);
|
||||
request.area.cornerBottomLeft = bottomLeftGeo;
|
||||
request.area.height = m_ui->sbDimensionY_Tiefe->value() * 2;
|
||||
request.area.width = m_ui->sbDimensionX_BreiteRadius->value() * 2;
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2075,9 +2075,9 @@ bool ExplosionsEdit::apply()
|
||||
(m_ui->sbAimingAxis->value() - 1600) * 360.0 / 6400));
|
||||
bottomLeftGeo = Core::GeoPosition2D(bottomLeft.x(), bottomLeft.y());
|
||||
|
||||
request.area().cornerBottomLeft(bottomLeftGeo);
|
||||
request.area().height(m_ui->sbDimensionY_Tiefe->value());
|
||||
request.area().width(m_ui->sbDimensionX_BreiteRadius->value());
|
||||
request.area.cornerBottomLeft = bottomLeftGeo;
|
||||
request.area.height = m_ui->sbDimensionY_Tiefe->value();
|
||||
request.area.width = m_ui->sbDimensionX_BreiteRadius->value();
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2092,9 +2092,9 @@ bool ExplosionsEdit::apply()
|
||||
(m_ui->sbAimingAxis->value() - 1600) * 360.0 / 6400));
|
||||
bottomLeftGeo = Core::GeoPosition2D(bottomLeft.x(), bottomLeft.y());
|
||||
|
||||
request.area().cornerBottomLeft(bottomLeftGeo);
|
||||
request.area().height(m_ui->sbDimensionY_Tiefe->value());
|
||||
request.area().width(m_ui->sbDimensionX_BreiteRadius->value());
|
||||
request.area.cornerBottomLeft = bottomLeftGeo;
|
||||
request.area.height = m_ui->sbDimensionY_Tiefe->value();
|
||||
request.area.width = m_ui->sbDimensionX_BreiteRadius->value();
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -2111,24 +2111,24 @@ bool ExplosionsEdit::apply()
|
||||
|
||||
if (esmParticipantId1 > 0 || esmParticipantId2 > 0)
|
||||
{
|
||||
request.esmParticipantIds().reserve(2);
|
||||
request.esmParticipantIds.reserve(2);
|
||||
if (esmParticipantId1 > 0)
|
||||
request.esmParticipantIds().push_back(esmParticipantId1);
|
||||
request.esmParticipantIds.push_back(esmParticipantId1);
|
||||
if (esmParticipantId2 > 0 && esmParticipantId1 != esmParticipantId2 && m_ui->cbActors_2->isEnabled())
|
||||
request.esmParticipantIds().push_back(esmParticipantId2);
|
||||
request.esmParticipantIds.push_back(esmParticipantId2);
|
||||
}
|
||||
|
||||
if (bIsPoint || m_currentGeometry.underlying() == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
|
||||
request.area().rotation(0);
|
||||
if (bIsPoint || m_currentGeometry == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
|
||||
request.area.rotation = 0;
|
||||
else
|
||||
request.area().rotation((m_ui->sbAimingAxis->value() - 1600) * 360.0 / 6400);
|
||||
request.area.rotation = (m_ui->sbAimingAxis->value() - 1600) * 360.0 / 6400;
|
||||
|
||||
request.tla(m_ui->sbZog->value());
|
||||
request.tla = m_ui->sbZog->value();
|
||||
|
||||
|
||||
if (bIsPoint)
|
||||
{
|
||||
request.mhpCount(1);
|
||||
request.mhpCount = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2144,43 +2144,43 @@ bool ExplosionsEdit::apply()
|
||||
}
|
||||
|
||||
if (mtpCount > sbCannonsCount)
|
||||
request.mhpCount(sbCannonsCount);
|
||||
request.mhpCount = sbCannonsCount;
|
||||
else
|
||||
request.mhpCount(mtpCount);
|
||||
request.mhpCount = mtpCount;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
request.partyId().set(m_ui->cbParty->currentData().toInt());
|
||||
request.partyId.set(m_ui->cbParty->currentData().toInt());
|
||||
|
||||
bool bOk = false;
|
||||
request.participantId().set(m_ui->cbParticipantUnits->currentData(Qt::UserRole).toInt(&bOk));
|
||||
request.participantId.set(m_ui->cbParticipantUnits->currentData(Qt::UserRole).toInt(&bOk));
|
||||
if (!bOk)
|
||||
request.participantId(0);
|
||||
request.participantId = 0;
|
||||
|
||||
|
||||
request.impactCount(m_ui->sbCannons->value());
|
||||
request.impactCount = m_ui->sbCannons->value();
|
||||
|
||||
request.chargeStruct().chargeTypeId(m_ui->cbChargeType->currentData().toInt());
|
||||
request.chargeStruct().igniterTypeId(m_ui->cbIgniterType->currentData().toInt());
|
||||
request.firePurposeId(m_ui->cbFirePurpose->currentData().toInt());
|
||||
request.chargeStruct.chargeTypeId = m_ui->cbChargeType->currentData().toInt();
|
||||
request.chargeStruct.igniterTypeId = m_ui->cbIgniterType->currentData().toInt();
|
||||
request.firePurposeId = m_ui->cbFirePurpose->currentData().toInt();
|
||||
|
||||
|
||||
{
|
||||
request.peakHeight(-1);
|
||||
request.flightDuration(-1);
|
||||
request.peakHeight = -1;
|
||||
request.flightDuration = -1;
|
||||
|
||||
const bool usePeakHeight = m_ui->sBox_peakHeight->styleSheet().isEmpty();
|
||||
const bool useFlightDuration = m_ui->sBox_flightDuration->styleSheet().isEmpty();
|
||||
if (usePeakHeight == useFlightDuration)
|
||||
request.peakHeight(m_ui->sBox_peakHeight->value());
|
||||
request.peakHeight = m_ui->sBox_peakHeight->value();
|
||||
else if (useFlightDuration)
|
||||
request.flightDuration(m_ui->sBox_flightDuration->value() * 1000);
|
||||
request.flightDuration = m_ui->sBox_flightDuration->value() * 1000;
|
||||
else
|
||||
request.peakHeight(m_ui->sBox_peakHeight->value());
|
||||
request.peakHeight = m_ui->sBox_peakHeight->value();
|
||||
}
|
||||
|
||||
if (request.flightDuration() >= 600 * 1000)
|
||||
if (request.flightDuration >= 600 * 1000)
|
||||
{
|
||||
for (int i = 0; i < 10; ++i)
|
||||
FATAL_LOG(m_logger) << LOGFUNCTION << " !!!!!!!!!!!!!!"
|
||||
@@ -2188,29 +2188,29 @@ bool ExplosionsEdit::apply()
|
||||
<< " m_ui->sBox_flightDuration->value() " << m_ui->sBox_flightDuration->value();
|
||||
}
|
||||
|
||||
request.partyId().set(m_ui->cbParty->currentData().toInt());
|
||||
request.effectMarkingInTa(m_ui->gbEffectMarkingInTa->isChecked());
|
||||
request.effectSourceId(ProjectDataManagement::EffectSource::ES_Internal);
|
||||
request.partyId.set(m_ui->cbParty->currentData().toInt());
|
||||
request.effectMarkingInTa = m_ui->gbEffectMarkingInTa->isChecked();
|
||||
request.effectSourceId = ProjectDataManagement::EffectSource::ES_Internal;
|
||||
|
||||
if (isGuiVulcano())
|
||||
{
|
||||
request.launchVelocity(TrajectoryGeneratorVulcano::defaultv0());
|
||||
request.launchAngleDeg(0);
|
||||
request.dropAngle(currentDropAngleDegree());
|
||||
request.launchVelocity = TrajectoryGeneratorVulcano::defaultv0();
|
||||
request.launchAngleDeg = 0;
|
||||
request.dropAngle = currentDropAngleDegree();
|
||||
|
||||
if (request.effectStart().is_set())
|
||||
request.tapTime(request.effectStart().get() - (TrajectoryGeneratorVulcano::defaultTapTimeSec() * 1000));
|
||||
if (request.effectStart.has_value())
|
||||
request.tapTime = request.effectStart.get() - (TrajectoryGeneratorVulcano::defaultTapTimeSec() * 1000);
|
||||
|
||||
request.lcAttack(m_ui->sbLcAttack_Prf->value());
|
||||
request.lcTermination(m_ui->sbLcTermination_Prf->value());
|
||||
request.lcAttack = m_ui->sbLcAttack_Prf->value();
|
||||
request.lcTermination = m_ui->sbLcTermination_Prf->value();
|
||||
|
||||
const int cloudBaseValue = m_ui->spCloudBase->value();
|
||||
|
||||
|
||||
if (cloudBaseValue == m_ui->spCloudBase->minimum())
|
||||
request.cloudBase(std::numeric_limits<int>::min());
|
||||
request.cloudBase = std::numeric_limits<int>::min();
|
||||
else
|
||||
request.cloudBase(cloudBaseValue);
|
||||
request.cloudBase = cloudBaseValue;
|
||||
|
||||
}
|
||||
|
||||
@@ -2229,7 +2229,7 @@ void ExplosionsEdit::onGeometrySelected(int explosionGeometryInt)
|
||||
|
||||
m_currentGeometry = newGeometry;
|
||||
|
||||
RocketUtility::enaDisaWirkmittel(m_ui->cbGearClass, m_currentGeometry.underlying());
|
||||
RocketUtility::enaDisaWirkmittel(m_ui->cbGearClass, m_currentGeometry);
|
||||
|
||||
|
||||
if (m_sitMapGuiIfc)
|
||||
@@ -2247,7 +2247,7 @@ void ExplosionsEdit::onGeometrySelected(int explosionGeometryInt)
|
||||
if (m_sitMapGuiIfc)
|
||||
m_sitMapGuiIfc->removePreviewObject();
|
||||
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgAimPoint:
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgPoint:
|
||||
@@ -2351,13 +2351,13 @@ void ExplosionsEdit::onGeometrySelected(int explosionGeometryInt)
|
||||
void ExplosionsEdit::onFireClicked()
|
||||
{
|
||||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||||
if (((m_aesItem.effectStateId() == AesEffectState::EsUnknown) ||
|
||||
(m_aesItem.effectStateId() == AesEffectState::EsError) || (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
|| (m_aesItem.effectStateId() == AesEffectState::EsRemoved) || (m_aesItem.effectStateId() == AesEffectState::EsReceived)
|
||||
|| (m_aesItem.effectStateId() == AesEffectState::EsFired)
|
||||
if (((m_aesItem.effectStateId == AesEffectState::EsUnknown) ||
|
||||
(m_aesItem.effectStateId == AesEffectState::EsError) || (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
|| (m_aesItem.effectStateId == AesEffectState::EsRemoved) || (m_aesItem.effectStateId == AesEffectState::EsReceived)
|
||||
|| (m_aesItem.effectStateId == AesEffectState::EsFired)
|
||||
|
||||
)
|
||||
|| m_aesItem.id() <= 0)
|
||||
|| m_aesItem.id <= 0)
|
||||
return;
|
||||
|
||||
if (!isDataSufficiant())
|
||||
@@ -2373,9 +2373,9 @@ void ExplosionsEdit::onFireClicked()
|
||||
|
||||
m_ui->pbFire->setEnabled(false);
|
||||
|
||||
const bool bIsObjectModifiable = m_explosionClusterData.isObjectModifiable();
|
||||
const bool bIsObjectModifiable = m_explosionClusterData.isObjectModifiable;
|
||||
|
||||
if ((m_aesItem.effectStateId() == AesEffectState::EsCreated || m_aesItem.effectStateId() == AesEffectState::EsPrepared) && bIsObjectModifiable)
|
||||
if ((m_aesItem.effectStateId == AesEffectState::EsCreated || m_aesItem.effectStateId == AesEffectState::EsPrepared) && bIsObjectModifiable)
|
||||
{
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(m_session->partitionTime() + m_temporaryData.m_estimatedFlightDurationMsec + 5000);
|
||||
m_ui->dteEffectStart->setChecked(true);
|
||||
@@ -2415,9 +2415,9 @@ void ExplosionsEdit::onFireClicked()
|
||||
m_requestHelper->addRequest(
|
||||
[=]()
|
||||
{
|
||||
return m_ftc->explosionClusterPauseResumeRequest(ExplosionClusterPauseResumeRequest(m_aesItem.id(),
|
||||
return m_ftc->explosionClusterPauseResumeRequest(ExplosionClusterPauseResumeRequest(m_aesItem.id,
|
||||
resumeExecution,
|
||||
dds::core::optional<rti::core::int64>(),
|
||||
dds::core::optional<int64_t>(),
|
||||
dds::core::optional<int32_t>(),
|
||||
dds::core::optional<int32_t>()),
|
||||
this);
|
||||
@@ -2441,7 +2441,7 @@ void ExplosionsEdit::onGearClassChanged()
|
||||
fillParties();
|
||||
onPartyChanged();
|
||||
|
||||
ProjectDataManagement::GearClass lastGearClassType = ProjectDataManagement::GearClass::Mortar;
|
||||
ProjectDataManagement::GearClass lastGearClassType = ProjectDataManagement::GearClass::GearClass_Mortar;
|
||||
QVariant lastVal = m_ui->cbGearClass->property(LAST_VALUE);
|
||||
if (!lastVal.isNull())
|
||||
lastGearClassType = static_cast<ProjectDataManagement::GearClass>(lastVal.toInt());
|
||||
@@ -2482,7 +2482,7 @@ void ExplosionsEdit::onGearClassChanged()
|
||||
}
|
||||
|
||||
|
||||
m_ui->cbGearClass->setProperty(LAST_VALUE, newGearClassType);
|
||||
m_ui->cbGearClass->setProperty(LAST_VALUE, static_cast<int>(newGearClassType));
|
||||
|
||||
doCalculations();
|
||||
}
|
||||
@@ -2501,24 +2501,24 @@ void ExplosionsEdit::gatherParticipantUnits(const int &partyId, QHash<int, QSet<
|
||||
|
||||
auto cb = [this, &partyId, &units, gearClassId](const ParticipantManagement::Participant &part)
|
||||
{
|
||||
if (part.isDeleted() || part.partyId() != partyId)
|
||||
if (part.isDeleted || part.partyId != partyId)
|
||||
return;
|
||||
|
||||
const ParticipantManagement::ParticipantData &ppData = m_ppmDtc->convertParticipantToParticipantData(part);
|
||||
const ParticipantManagement::Type &ppType = m_ppmDtc->type(ppData.typeId());
|
||||
const ParticipantManagement::Type &ppType = m_ppmDtc->type(ppData.typeId);
|
||||
|
||||
if (m_ppmDtc->isAdlerVerbund(ppType.id()))
|
||||
if (m_ppmDtc->isAdlerVerbund(ppType.id))
|
||||
return;
|
||||
const QJsonObject typeProperties(QJsonDocument::fromJson(QByteArray::fromStdString(ppType.properties())).object());
|
||||
const QJsonObject typeProperties(QJsonDocument::fromJson(QByteArray::fromStdString(ppType.properties)).object());
|
||||
|
||||
|
||||
|
||||
|
||||
if (typeProperties.isEmpty() || ppType.typeClass() == ParticipantManagement::TypeClass::Unit ||
|
||||
if (typeProperties.isEmpty() || ppType.typeClass == ParticipantManagement::TypeClass::Unit ||
|
||||
!typeProperties[QStringLiteral("isArtillery")].toBool(false) || typeProperties[QStringLiteral("gearClassId")].toInt(-1) != gearClassId)
|
||||
return;
|
||||
|
||||
units[part.superiorId()] += part.id();
|
||||
units[part.superiorId] += part.id;
|
||||
};
|
||||
m_ppmDtc->participants(cb);
|
||||
|
||||
@@ -2526,9 +2526,9 @@ void ExplosionsEdit::gatherParticipantUnits(const int &partyId, QHash<int, QSet<
|
||||
for (auto it = units.begin(); it != units.end();)
|
||||
{
|
||||
const ParticipantManagement::Participant &pp = m_ppmDtc->participant(it.key());
|
||||
const ParticipantManagement::Type &typ = m_ppmDtc->type(pp.typeId());
|
||||
const QJsonObject typeProperties(QJsonDocument::fromJson(QByteArray::fromStdString(typ.properties())).object());
|
||||
if ((typ.typeClass() != ParticipantManagement::TypeClass::Unit && typ.typeClass() != ParticipantManagement::TypeClass::GroundVehicle)
|
||||
const ParticipantManagement::Type &typ = m_ppmDtc->type(pp.typeId);
|
||||
const QJsonObject typeProperties(QJsonDocument::fromJson(QByteArray::fromStdString(typ.properties)).object());
|
||||
if ((typ.typeClass != ParticipantManagement::TypeClass::Unit && typ.typeClass != ParticipantManagement::TypeClass::GroundVehicle)
|
||||
|| !typeProperties[QStringLiteral("isArtillery")].toBool(false))
|
||||
it = units.erase(it++);
|
||||
else
|
||||
@@ -2563,11 +2563,11 @@ bool ExplosionsEdit::isValidParty(qint32 partyId)
|
||||
return m_ppmDtc->participants(static_cast<std::function<bool(const ParticipantManagement::Participant &)>>(
|
||||
[this, partyId, gearClassId](const ParticipantManagement::Participant &participant)
|
||||
{
|
||||
if (participant.partyId() != partyId || participant.isDeleted())
|
||||
if (participant.partyId != partyId || participant.isDeleted)
|
||||
return false;
|
||||
|
||||
const ParticipantManagement::Type type = m_ppmDtc->type(participant.typeId());
|
||||
const QJsonObject typeProperties = QJsonDocument::fromJson(QByteArray::fromStdString(type.properties())).object();
|
||||
const ParticipantManagement::Type type = m_ppmDtc->type(participant.typeId);
|
||||
const QJsonObject typeProperties = QJsonDocument::fromJson(QByteArray::fromStdString(type.properties)).object();
|
||||
const qint32 typeGearClass = typeProperties.value(QStringLiteral("gearClassId")).toInt(-1);
|
||||
|
||||
return typeGearClass == gearClassId;
|
||||
@@ -2601,17 +2601,17 @@ void ExplosionsEdit::fillCharges()
|
||||
for (const ProjectDataManagement::ChargeType &chargeType : std::as_const(chargesForGearClass))
|
||||
{
|
||||
|
||||
const bool bIsVulcano = chargeTypeIdIsVulcano(chargeType.id());
|
||||
const bool bIsVulcano = chargeTypeIdIsVulcano(chargeType.id);
|
||||
|
||||
const double impactRadius4Debug = m_pdmDtc->impactRadius(chargeType.id(), 0, 0);
|
||||
bool isAdlerChargeType = m_pdmDtc->isAdlerChargeType(chargeType.id());
|
||||
const double impactRadius4Debug = m_pdmDtc->impactRadius(chargeType.id, 0, 0);
|
||||
bool isAdlerChargeType = m_pdmDtc->isAdlerChargeType(chargeType.id);
|
||||
|
||||
DEBUG_LOG(m_logger) << " fillCharges"
|
||||
<< ", id=" << chargeType.id() << ", name= " << chargeType.name() << ", bIsPoint " << bIsPoint << ", bIsVulcano " << bIsVulcano
|
||||
<< ", id=" << chargeType.id << ", name= " << chargeType.name << ", bIsPoint " << bIsPoint << ", bIsVulcano " << bIsVulcano
|
||||
<< ", impactRadius4Debug = " << impactRadius4Debug << ", isAdlerChargeType = " << isAdlerChargeType;
|
||||
if (isAdlerChargeType || (bIsVulcano && !bIsPoint && curGearClassType != ProjectDataManagement::GearClass::Artillery))
|
||||
if (isAdlerChargeType || (bIsVulcano && !bIsPoint && curGearClassType != ProjectDataManagement::GearClass::GearClass_Artillery))
|
||||
continue;
|
||||
m_ui->cbChargeType->addItem(QString::fromStdString(chargeType.name()), chargeType.id());
|
||||
m_ui->cbChargeType->addItem(QString::fromStdString(chargeType.name), chargeType.id);
|
||||
}
|
||||
|
||||
|
||||
@@ -2630,8 +2630,8 @@ void ExplosionsEdit::fillGearClasses()
|
||||
const auto &gearClasses = m_pdmDtc->gearTypes();
|
||||
for (auto type : std::as_const(gearClasses))
|
||||
{
|
||||
if (m_gearClassFilter.contains(type.gearClassId()) && m_pdmDtc->getAdlerWeaponSystemId(type.id()) <= 3)
|
||||
m_ui->cbGearClass->addItem(m_pdmDtc->trGearTypeName(type.id()), type.gearClassId().underlying());
|
||||
if (m_gearClassFilter.contains(type.gearClassId) && m_pdmDtc->getAdlerWeaponSystemId(type.id) <= 3)
|
||||
m_ui->cbGearClass->addItem(m_pdmDtc->trGearTypeName(type.id), static_cast<int>(type.gearClassId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2649,7 +2649,7 @@ bool ExplosionsEdit::isOnlyNameModifiable() const
|
||||
{
|
||||
|
||||
|
||||
const bool ret = BaseClass::isOnlyNameModifiable() || !m_explosionClusterData.isObjectModifiable();
|
||||
const bool ret = BaseClass::isOnlyNameModifiable() || !m_explosionClusterData.isObjectModifiable;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <ProjectDataManagement/pdm_data_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm_gui_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
|
||||
+79
-79
@@ -95,11 +95,11 @@ ExplosionsEditAdler::ExplosionsEditAdler(const QString &menuGroup, QWidget *pare
|
||||
m_geometrieButtonGroup->addButton(m_ui->geometrieRadialBtn, static_cast<int>(AreaEffectSimulation::AesExplosionGeometry::EgRadial));
|
||||
m_geometrieButtonGroup->setExclusive(true);
|
||||
|
||||
m_gearClassFilter = {ProjectDataManagement::GearClass::Artillery, ProjectDataManagement::GearClass::Mortar};
|
||||
m_gearClassFilter = {ProjectDataManagement::GearClass::GearClass_Artillery, ProjectDataManagement::GearClass::GearClass_Mortar};
|
||||
LtsUtils::ProjectSettings *ps = LtsUtils::ProjectSettings::getInstance();
|
||||
const bool enableRocket = ps->value(QStringLiteral("aes"), QStringLiteral("enableRocket"), false).toBool();
|
||||
if (enableRocket)
|
||||
m_gearClassFilter += ProjectDataManagement::GearClass::Rocket;
|
||||
m_gearClassFilter += ProjectDataManagement::GearClass::GearClass_Rocket;
|
||||
|
||||
m_uiRequirements->addRequirement(
|
||||
{m_ui->lbxActors,
|
||||
@@ -186,12 +186,12 @@ bool ExplosionsEditAdler::init(int aesItemId, bool copy, LtsSession::LtsSession
|
||||
if (aesItemId > 0)
|
||||
{
|
||||
const EffectCluster &ecData = m_dtc->effectCluster(aesItemId);
|
||||
DEBUG_LOG(m_logger) << "chargeTypeId: " << ecData.chargeStruct().chargeTypeId();
|
||||
DEBUG_LOG(m_logger) << "chargeTypeId: " << ecData.chargeStruct.chargeTypeId;
|
||||
m_effectClusterData = ecData;
|
||||
setEffectClusterData(ecData);
|
||||
|
||||
setPbStateChangeName();
|
||||
m_ui->gbEffectMarkingInTa->setChecked(m_aesItem.effectMarkingInTa()); // always true for explosion cluster
|
||||
m_ui->gbEffectMarkingInTa->setChecked(m_aesItem.effectMarkingInTa); // always true for explosion cluster
|
||||
}
|
||||
|
||||
connect(m_dtc.get(), &AreaEffectSimulation::Interface::Dtc::effectClusterChanged, this, &ExplosionsEditAdler::onEffectClusterChanged, Qt::UniqueConnection);
|
||||
@@ -218,7 +218,7 @@ void ExplosionsEditAdler::showPreviewObject()
|
||||
if (!has2DMap(false)) // showMsgBoxIfNot2D
|
||||
return;
|
||||
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgArea:
|
||||
if (m_previewPolygon.isEmpty())
|
||||
@@ -258,7 +258,7 @@ bool ExplosionsEditAdler::isDataSufficiant()
|
||||
|
||||
// target:
|
||||
bool bHasTargetArea = !m_coord.isNull();
|
||||
switch (m_currentGeometry.underlying())
|
||||
switch (m_currentGeometry)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgArea:
|
||||
bHasTargetArea &= m_ui->lblDimensionYDepth->text().toInt() > 0;
|
||||
@@ -283,25 +283,25 @@ void ExplosionsEditAdler::setEffectClusterData(const EffectCluster &ecData)
|
||||
m_aesItem = ecData;
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " START, ecData=" << ecData;
|
||||
|
||||
m_ui->lblZpNumber->setText(QString::fromStdString(ecData.name()));
|
||||
m_ui->lblZpNumber->setText(QString::fromStdString(ecData.name));
|
||||
|
||||
qint64 effectStart = 0;
|
||||
|
||||
if (ecData.effectStart().is_set())
|
||||
if (ecData.effectStart.has_value())
|
||||
{
|
||||
const QJsonObject propsObj(QJsonDocument::fromJson(QByteArray::fromStdString(ecData.properties())).object());
|
||||
const QJsonObject propsObj(QJsonDocument::fromJson(QByteArray::fromStdString(ecData.properties)).object());
|
||||
const FiringType firingType = static_cast<FiringType>(propsObj[AdlerJson::JsonKeys::ABFEUERUNGSART()].toInt());
|
||||
|
||||
effectStart = ecData.effectStart().get();
|
||||
effectStart = ecData.effectStart.get();
|
||||
|
||||
if (firingType == FiringType::FireWithIndicationTTF)
|
||||
effectStart -= ecData.effectors().size() ? ecData.effectors().at(0).flightTime() : 0;
|
||||
effectStart -= ecData.effectors.size() ? ecData.effectors.at(0).flightTime : 0;
|
||||
}
|
||||
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(effectStart);
|
||||
|
||||
// Geometry/Area
|
||||
const AreaEffectSimulation::AesExplosionGeometry geometryType = static_cast<AreaEffectSimulation::AesExplosionGeometry>(ecData.explosionGeometry());
|
||||
const AreaEffectSimulation::AesExplosionGeometry geometryType = static_cast<AreaEffectSimulation::AesExplosionGeometry>(ecData.explosionGeometry);
|
||||
switch (geometryType)
|
||||
{
|
||||
case AreaEffectSimulation::AesExplosionGeometry::EgAimPoint:
|
||||
@@ -324,26 +324,26 @@ void ExplosionsEditAdler::setEffectClusterData(const EffectCluster &ecData)
|
||||
break;
|
||||
} // switch
|
||||
|
||||
if (ecData.effectDuration() == DEFAULT_EFFECT_DURATION)
|
||||
if (ecData.effectDuration == DEFAULT_EFFECT_DURATION)
|
||||
m_ui->lblDuration->setText(QStringLiteral("---"));
|
||||
else
|
||||
m_ui->lblDuration->setText(QString::number(ecData.effectDuration() / 1000)); // msecs -> secs
|
||||
m_ui->lblDuration->setText(QString::number(ecData.effectDuration / 1000)); // msecs -> secs
|
||||
|
||||
// 1st GearClass
|
||||
ProjectDataManagement::GearClass gc = m_pdmDtc->gearClassFromChargeTypeId(ecData.chargeStruct().chargeTypeId());
|
||||
ProjectDataManagement::GearClass gc = m_pdmDtc->gearClassFromChargeTypeId(ecData.chargeStruct.chargeTypeId);
|
||||
m_ui->lblGearClass->setText(ProjectDataManagement::toString(gc));
|
||||
|
||||
// 2nd Party
|
||||
if (ecData.partyId().is_set())
|
||||
m_ui->lblParty->setText(ParticipantManagement::trPartyName(m_ppmDtc->party(ecData.partyId().get()).name()));
|
||||
if (ecData.partyId.has_value())
|
||||
m_ui->lblParty->setText(ParticipantManagement::trPartyName(m_ppmDtc->party(ecData.partyId.get()).name));
|
||||
|
||||
// 3rd Originator
|
||||
if (ecData.participantId().is_set())
|
||||
m_ui->lblParticipantUnits->setText(QString::fromStdString(m_ppmDtc->participant(ecData.participantId().get()).name()));
|
||||
if (ecData.participantId.has_value())
|
||||
m_ui->lblParticipantUnits->setText(QString::fromStdString(m_ppmDtc->participant(ecData.participantId.get()).name));
|
||||
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->adlerChargeTypeName(ecData.chargeStruct().chargeTypeId()));
|
||||
m_ui->lblIgniterType->setText(m_pdmDtc->adlerIgniterTypeName(ecData.chargeStruct().igniterTypeId()));
|
||||
m_ui->lblIgniterFunction->setText(m_pdmDtc->adlerIgniterFunctionName(ecData.chargeStruct().igniterFunctionId()));
|
||||
m_ui->lblChargeType->setText(m_pdmDtc->adlerChargeTypeName(ecData.chargeStruct.chargeTypeId));
|
||||
m_ui->lblIgniterType->setText(m_pdmDtc->adlerIgniterTypeName(ecData.chargeStruct.igniterTypeId));
|
||||
m_ui->lblIgniterFunction->setText(m_pdmDtc->adlerIgniterFunctionName(ecData.chargeStruct.igniterFunctionId));
|
||||
|
||||
int impactCount = 0;
|
||||
|
||||
@@ -355,55 +355,55 @@ void ExplosionsEditAdler::setEffectClusterData(const EffectCluster &ecData)
|
||||
delete item->widget();
|
||||
delete item;
|
||||
}
|
||||
for (const auto &effectorData : ecData.effectors())
|
||||
for (const auto &effectorData : ecData.effectors)
|
||||
{
|
||||
setEffector(effectorData.participantId(), m_dtc->effector(effectorData.participantId()).effectorState());
|
||||
impactCount += effectorData.chargeAmount();
|
||||
setEffector(effectorData.participantId, m_dtc->effector(effectorData.participantId).effectorState);
|
||||
impactCount += effectorData.chargeAmount;
|
||||
}
|
||||
|
||||
m_ui->layoutEffectors->setColumnStretch(m_effectorNumber + 1 % m_maxColumns, 1);
|
||||
m_ui->lblCannons->setText(QString::number(impactCount));
|
||||
m_ui->lblFirePurpose->setText(m_pdmDtc->trFirePurposeName(ecData.firePurposeId()));
|
||||
m_ui->lblFirePurpose->setText(m_pdmDtc->trFirePurposeName(ecData.firePurposeId));
|
||||
|
||||
m_ui->lblZog->setText(QString::number(ecData.tla())); // tla == zog
|
||||
m_ui->lblZog->setText(QString::number(ecData.tla)); // tla == zog
|
||||
|
||||
const AreaEffectSimulation::Area &areaRef = ecData.area();
|
||||
const QPointF bottomLeft(areaRef.cornerBottomLeft().lon(), areaRef.cornerBottomLeft().lat());
|
||||
const QPointF centerpoint = Polygons::bottomLeft2CenterPoint(bottomLeft, areaRef.width(), areaRef.height(), areaRef.rotation());
|
||||
const AreaEffectSimulation::Area &areaRef = ecData.area;
|
||||
const QPointF bottomLeft(areaRef.cornerBottomLeft.lon, areaRef.cornerBottomLeft.lat);
|
||||
const QPointF centerpoint = Polygons::bottomLeft2CenterPoint(bottomLeft, areaRef.width, areaRef.height, areaRef.rotation);
|
||||
if (!bottomLeft.isNull())
|
||||
{
|
||||
m_ui->positionEdit->setCoordinate(centerpoint);
|
||||
m_coord = centerpoint;
|
||||
const Core::GeoPosition coordGeo(centerpoint.x(), centerpoint.y(), 0);
|
||||
bool isSmoke = m_pdmDtc->isSmoke(ecData.chargeStruct().chargeTypeId(), ecData.chargeStruct().igniterTypeId(), ecData.chargeStruct().igniterFunctionId());
|
||||
bool isSmoke = m_pdmDtc->isSmoke(ecData.chargeStruct.chargeTypeId, ecData.chargeStruct.igniterTypeId, ecData.chargeStruct.igniterFunctionId);
|
||||
m_esmActorCbx->fillActorComboBox(m_ui->cbActors, coordGeo, isSmoke, 0);
|
||||
m_esmActorCbx->fillActorComboBox(m_ui->cbActors_2, coordGeo, isSmoke, 0);
|
||||
}
|
||||
|
||||
if (ecData.explosionGeometry().underlying() == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
|
||||
if (ecData.explosionGeometry == AreaEffectSimulation::AesExplosionGeometry::EgRadial)
|
||||
{
|
||||
m_ui->lblDimensionYDepth->setText(QString::number(static_cast<int>(std::round(areaRef.height() / 2))));
|
||||
m_ui->lblWidthRadius->setText(QString::number(static_cast<int>(std::round(areaRef.width() / 2))));
|
||||
m_ui->lblDimensionYDepth->setText(QString::number(static_cast<int>(std::round(areaRef.height / 2))));
|
||||
m_ui->lblWidthRadius->setText(QString::number(static_cast<int>(std::round(areaRef.width / 2))));
|
||||
m_ui->lblAimingAxis->setText(QString::number(0));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ui->lblDimensionYDepth->setText(QString::number(static_cast<int>(std::round(areaRef.height()))));
|
||||
m_ui->lblWidthRadius->setText(QString::number(static_cast<int>(std::round(areaRef.width()))));
|
||||
m_ui->lblAimingAxis->setText(QString::number(static_cast<int>(std::round(fmod((areaRef.rotation()) * 6400 / 360, 6400)))));
|
||||
m_ui->lblDimensionYDepth->setText(QString::number(static_cast<int>(std::round(areaRef.height))));
|
||||
m_ui->lblWidthRadius->setText(QString::number(static_cast<int>(std::round(areaRef.width))));
|
||||
m_ui->lblAimingAxis->setText(QString::number(static_cast<int>(std::round(fmod((areaRef.rotation) * 6400 / 360, 6400)))));
|
||||
}
|
||||
setEffectClusterDataFromJson(ecData.properties());
|
||||
if (!ecData.esmParticipantIds().empty())
|
||||
setEffectClusterDataFromJson(ecData.properties);
|
||||
if (!ecData.esmParticipantIds.empty())
|
||||
{
|
||||
m_ui->cbActors->setCurrentIndex(m_ui->cbActors->findData(ecData.esmParticipantIds().at(0)));
|
||||
if (ecData.esmParticipantIds().size() > 1)
|
||||
m_ui->cbActors_2->setCurrentIndex(m_ui->cbActors_2->findData(ecData.esmParticipantIds().at(1)));
|
||||
m_ui->cbActors->setCurrentIndex(m_ui->cbActors->findData(ecData.esmParticipantIds.at(0)));
|
||||
if (ecData.esmParticipantIds.size() > 1)
|
||||
m_ui->cbActors_2->setCurrentIndex(m_ui->cbActors_2->findData(ecData.esmParticipantIds.at(1)));
|
||||
}
|
||||
if (ecData.effectors().size())
|
||||
setOWUWFromTrajectory(ecData.effectors().at(0).trajectoryRelative());
|
||||
if (ecData.effectors.size())
|
||||
setOWUWFromTrajectory(ecData.effectors.at(0).trajectoryRelative);
|
||||
|
||||
// enable second Actor if possible
|
||||
const int amountFireMarker = m_pdmDtc->getAmountFireMarkers(ecData.firePurposeId());
|
||||
const int amountFireMarker = m_pdmDtc->getAmountFireMarkers(ecData.firePurposeId);
|
||||
m_ui->cbActors_2->setEnabled(amountFireMarker > 1);
|
||||
|
||||
DEBUG_LOG(m_logger) << LOGFUNCTION << " END";
|
||||
@@ -414,7 +414,7 @@ void ExplosionsEditAdler::setEffector(int participantId, const AreaEffectSimulat
|
||||
const ParticipantManagement::Participant &part = m_ppmDtc->participant(participantId);
|
||||
|
||||
auto *effectorWidget = new AesEffector(this);
|
||||
effectorWidget->init(participantId, QString::fromStdString(part.tacticalIdentifier()), QString::fromStdString(part.name()), effectorState);
|
||||
effectorWidget->init(participantId, QString::fromStdString(part.tacticalIdentifier), QString::fromStdString(part.name), effectorState);
|
||||
effectorWidget->setStateButtonVisible(false);
|
||||
|
||||
const int row = m_effectorNumber / m_maxColumns;
|
||||
@@ -430,7 +430,7 @@ void ExplosionsEditAdler::setEffector(int participantId, const AreaEffectSimulat
|
||||
QString ExplosionsEditAdler::dialogIdentifier() const
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "dialogIdentifier";
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddExplosionsArtillery") : QStringLiteral("EditExplosionsArtillery%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddExplosionsArtillery") : QStringLiteral("EditExplosionsArtillery%1").arg(m_aesItem.id);
|
||||
}
|
||||
|
||||
void ExplosionsEditAdler::onAcknowledgeExternalAesItemReply(const Core::FunctionReplyObject &replyObject)
|
||||
@@ -442,7 +442,7 @@ void ExplosionsEditAdler::onAcknowledgeExternalAesItemReply(const Core::Function
|
||||
void ExplosionsEditAdler::onEffectClusterChanged(const EffectCluster &ecData, DataModification modType)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "onExplosionClusterChanged";
|
||||
if (ecData.id() != m_aesItem.id())
|
||||
if (ecData.id != m_aesItem.id)
|
||||
return;
|
||||
|
||||
BaseEdit::onAreaChanged(ecData, modType);
|
||||
@@ -454,15 +454,15 @@ void ExplosionsEditAdler::onEffectClusterChanged(const EffectCluster &ecData, Da
|
||||
}
|
||||
|
||||
m_effectClusterData = ecData;
|
||||
m_currentGeometry = m_effectClusterData.explosionGeometry();
|
||||
m_currentGeometry = m_effectClusterData.explosionGeometry;
|
||||
|
||||
setEffectClusterData(ecData);
|
||||
setPbStateChangeName();
|
||||
|
||||
if (m_effectClusterData.effectDuration() == DEFAULT_EFFECT_DURATION)
|
||||
if (m_effectClusterData.effectDuration == DEFAULT_EFFECT_DURATION)
|
||||
m_ui->lblDuration->setText(QStringLiteral("---"));
|
||||
else
|
||||
m_ui->lblDuration->setText(QString::number(m_effectClusterData.effectDuration() / 1000)); // msec -> sec
|
||||
m_ui->lblDuration->setText(QString::number(m_effectClusterData.effectDuration / 1000)); // msec -> sec
|
||||
|
||||
enableUiElements();
|
||||
if (unchangeable())
|
||||
@@ -556,10 +556,10 @@ void ExplosionsEditAdler::enableUiElements(bool enable)
|
||||
m_ui->rbAngleGroupLower->setEnabled(enable);
|
||||
m_ui->rbAngleGroupUpper->setEnabled(enable);
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsReceived)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsReceived)
|
||||
m_ui->pbStateChange->setEnabled(true);
|
||||
else
|
||||
m_ui->pbStateChange->setEnabled(m_effectClusterData.effectorState() != AreaEffectSimulation::AesEffectorState::EsReadyToFire);
|
||||
m_ui->pbStateChange->setEnabled(m_effectClusterData.effectorState != AreaEffectSimulation::AesEffectorState::EsReadyToFire);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -573,17 +573,17 @@ bool ExplosionsEditAdler::apply()
|
||||
int esmParticipantId2 = m_ui->cbActors_2->currentData().toInt(); // participant ID
|
||||
|
||||
EffectClusterModifyActorRequest request;
|
||||
request.aesId(m_aesItem.id());
|
||||
request.aesId = m_aesItem.id;
|
||||
DEBUG_LOG(m_logger) << "currentIndex: " << m_ui->cbActors->currentIndex() << ", currentText: " << m_ui->cbActors->currentText()
|
||||
<< ", participantId1: " << esmParticipantId1;
|
||||
|
||||
if (esmParticipantId1 > 0 || esmParticipantId2 > 0)
|
||||
{
|
||||
request.esmParticipantIds().reserve(2);
|
||||
request.esmParticipantIds.reserve(2);
|
||||
if (esmParticipantId1 > 0)
|
||||
request.esmParticipantIds().push_back(esmParticipantId1);
|
||||
request.esmParticipantIds.push_back(esmParticipantId1);
|
||||
if (esmParticipantId2 > 0 && esmParticipantId1 != esmParticipantId2 && m_ui->cbActors_2->isEnabled())
|
||||
request.esmParticipantIds().push_back(esmParticipantId2);
|
||||
request.esmParticipantIds.push_back(esmParticipantId2);
|
||||
}
|
||||
|
||||
m_requestHelper->addRequest([this, request]() { return m_ftc->effectClusterModifyActorRequest(request, this); });
|
||||
@@ -593,28 +593,28 @@ bool ExplosionsEditAdler::apply()
|
||||
//
|
||||
void ExplosionsEditAdler::setPbStateChangeName()
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "onPbStateChangeName: AesEffectState: " << m_aesItem.effectStateId();
|
||||
DEBUG_LOG(m_logger) << "onPbStateChangeName: AesEffectState: " << m_aesItem.effectStateId;
|
||||
|
||||
if ((m_aesItem.effectStateId() != AesEffectState::EsReceived && m_aesItem.effectStateId() != AesEffectState::EsCreated) || m_aesItem.id() <= 0)
|
||||
if ((m_aesItem.effectStateId != AesEffectState::EsReceived && m_aesItem.effectStateId != AesEffectState::EsCreated) || m_aesItem.id <= 0)
|
||||
return;
|
||||
|
||||
m_ui->pbStateChange->show();
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsReceived)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsReceived)
|
||||
m_ui->pbStateChange->setText(tr("Acknowledge"));
|
||||
else
|
||||
{
|
||||
m_ui->pbStateChange->setText(tr("Ready to fire"));
|
||||
m_ui->pbStateChange->setEnabled(m_effectClusterData.effectorState() != AreaEffectSimulation::AesEffectorState::EsReadyToFire);
|
||||
m_ui->pbStateChange->setEnabled(m_effectClusterData.effectorState != AreaEffectSimulation::AesEffectorState::EsReadyToFire);
|
||||
}
|
||||
}
|
||||
|
||||
void ExplosionsEditAdler::onPbStateChangeClicked()
|
||||
{
|
||||
if ((m_aesItem.effectStateId() != AesEffectState::EsReceived && m_aesItem.effectStateId() != AesEffectState::EsCreated) || m_aesItem.id() <= 0)
|
||||
if ((m_aesItem.effectStateId != AesEffectState::EsReceived && m_aesItem.effectStateId != AesEffectState::EsCreated) || m_aesItem.id <= 0)
|
||||
return;
|
||||
|
||||
DEBUG_LOG(m_logger) << " onPbStateChangeClicked: AesEffectState = " << m_aesItem.effectStateId();
|
||||
DEBUG_LOG(m_logger) << " onPbStateChangeClicked: AesEffectState = " << m_aesItem.effectStateId;
|
||||
|
||||
m_ui->pbStateChange->setDisabled(true);
|
||||
|
||||
@@ -622,21 +622,21 @@ void ExplosionsEditAdler::onPbStateChangeClicked()
|
||||
apply();
|
||||
|
||||
// Re-Enable PB, so we can call it another time, if it does not react...
|
||||
QTimer::singleShot(2000, [this]() { m_ui->pbStateChange->setEnabled(m_effectClusterData.effectorState() != AreaEffectSimulation::AesEffectorState::EsReadyToFire); });
|
||||
QTimer::singleShot(2000, [this]() { m_ui->pbStateChange->setEnabled(m_effectClusterData.effectorState != AreaEffectSimulation::AesEffectorState::EsReadyToFire); });
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsReceived)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsReceived)
|
||||
{
|
||||
AreaEffectSimulation::AcknowledgeExternalAesItemRequest request;
|
||||
request.aesId(m_aesItem.id());
|
||||
DEBUG_LOG(m_logger) << "Send acknowledgeExternalAesItemRequest with aesId: " << request.aesId();
|
||||
request.aesId = m_aesItem.id;
|
||||
DEBUG_LOG(m_logger) << "Send acknowledgeExternalAesItemRequest with aesId: " << request.aesId;
|
||||
m_requestHelper->addRequest([this, request]() { return m_ftc->acknowledgeExternalAesItemRequest(request, this); });
|
||||
}
|
||||
else
|
||||
{
|
||||
AreaEffectSimulation::SetAesItemEffectorStateRequest request;
|
||||
request.aesId(m_aesItem.id());
|
||||
request.newEffectorState(AesEffectorState::EsReadyToFire);
|
||||
DEBUG_LOG(m_logger) << "Send setAesItemEffectorStateRequest with aesId: " << request.aesId() << ", AesEffectorState: " << request.newEffectorState();
|
||||
request.aesId = m_aesItem.id;
|
||||
request.newEffectorState = AesEffectorState::EsReadyToFire;
|
||||
DEBUG_LOG(m_logger) << "Send setAesItemEffectorStateRequest with aesId: " << request.aesId << ", AesEffectorState: " << request.newEffectorState;
|
||||
m_requestHelper->addRequest([this, request]() { return m_ftc->setAesItemEffectorStateRequest(request, this); });
|
||||
}
|
||||
|
||||
@@ -645,7 +645,7 @@ void ExplosionsEditAdler::onPbStateChangeClicked()
|
||||
|
||||
void ExplosionsEditAdler::onEffectorChanged(const AreaEffectSimulation::Effector &data, DataModification modType)
|
||||
{
|
||||
if (data.aesItemId() != m_aesItem.id())
|
||||
if (data.aesItemId != m_aesItem.id)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < m_ui->layoutEffectors->count(); ++i)
|
||||
@@ -655,24 +655,24 @@ void ExplosionsEditAdler::onEffectorChanged(const AreaEffectSimulation::Effector
|
||||
{
|
||||
if (AesEffector *effectorWidget = qobject_cast<AesEffector *>(widget))
|
||||
{
|
||||
if (effectorWidget->effectorId() != data.id())
|
||||
if (effectorWidget->effectorId() != data.id)
|
||||
continue;
|
||||
|
||||
effectorWidget->setState(data.effectorState());
|
||||
effectorWidget->setState(data.effectorState);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (modType == DataModification::eAdded)
|
||||
setEffector(data.participantId(), data.effectorState());
|
||||
setEffector(data.participantId, data.effectorState);
|
||||
}
|
||||
|
||||
bool ExplosionsEditAdler::isOnlyNameModifiable() const
|
||||
{
|
||||
// BaseClass::isOnlyNameModifiable() -> EsPaused || EsActivated
|
||||
// m_effectClusterData.isObjectModifiable -> since PreStart and s_calculationOffsetMSec
|
||||
const bool ret = BaseClass::isOnlyNameModifiable() || !m_effectClusterData.isObjectModifiable();
|
||||
const bool ret = BaseClass::isOnlyNameModifiable() || !m_effectClusterData.isObjectModifiable;
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -694,9 +694,9 @@ void ExplosionsEditAdler::setOWUWFromTrajectory(const std::vector<Core::Relative
|
||||
if (vecGeometry.size() < 2)
|
||||
return;
|
||||
|
||||
const double dz = vecGeometry.at(1).offsetZ() - vecGeometry.at(0).offsetZ();
|
||||
const QLineF line(vecGeometry.at(0).offsetX(), vecGeometry.at(0).offsetY(),
|
||||
vecGeometry.at(1).offsetX(), vecGeometry.at(1).offsetY());
|
||||
const double dz = vecGeometry.at(1).offsetZ - vecGeometry.at(0).offsetZ;
|
||||
const QLineF line(vecGeometry.at(0).offsetX, vecGeometry.at(0).offsetY,
|
||||
vecGeometry.at(1).offsetX, vecGeometry.at(1).offsetY);
|
||||
|
||||
double angleArc = std::atan2(dz, line.length());
|
||||
double angleDegree = angleArc * (180.0 / M_PI);
|
||||
@@ -753,7 +753,7 @@ void ExplosionsEditAdler::setEffectClusterDataFromJson(const std::string &proper
|
||||
m_ui->lblTargetSubType->setText(m_pdmDtc->trTargetSubTypeName(targetSubTypeId));
|
||||
|
||||
const int angleGroup = propsObj[AdlerJson::JsonKeys::WINKELGRUPPE()].toInt();
|
||||
if (angleGroup == ProjectDataManagement::L43_AngleGroup::Lower)
|
||||
if (angleGroup == static_cast<int>(ProjectDataManagement::L43_AngleGroup::Lower))
|
||||
m_ui->rbAngleGroupLower->setChecked(true);
|
||||
else
|
||||
m_ui->rbAngleGroupUpper->setChecked(true);
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <EffectShowManagement/esm_gui_combobox_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm_data_plugin_interface.h>
|
||||
|
||||
+238
-238
File diff suppressed because it is too large.
Load diff
+1
-1
@@ -6,7 +6,7 @@
|
||||
#include "LtsElevation/lts_elevation_manager.h"
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
#include <ElevationMap/elevation_map_manager.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <EffectShowManagement/esm_gui_combobox_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm_data_plugin_interface.h>
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+51
-51
@@ -47,7 +47,7 @@ void enaDisaWirkmittel(QComboBox *wirkmittelCombobox, AesExplosionGeometry geome
|
||||
const QVariant currentData = wirkmittelCombobox->itemData(indexCounter);
|
||||
const ProjectDataManagement::GearClass currentGearClass = static_cast<ProjectDataManagement::GearClass>(currentData.toInt());
|
||||
|
||||
if (currentGearClass == ProjectDataManagement::GearClass::Rocket)
|
||||
if (currentGearClass == ProjectDataManagement::GearClass::GearClass_Rocket)
|
||||
{
|
||||
QStandardItem *item = cboModel->item(indexCounter);
|
||||
|
||||
@@ -70,7 +70,7 @@ void enaDisaWirkmittel(QComboBox *wirkmittelCombobox, AesExplosionGeometry geome
|
||||
const QVariant currentData = wirkmittelCombobox->itemData(indexCounter);
|
||||
const ProjectDataManagement::GearClass currentGearClass = static_cast<ProjectDataManagement::GearClass>(currentData.toInt());
|
||||
|
||||
if (currentGearClass == ProjectDataManagement::GearClass::Rocket)
|
||||
if (currentGearClass == ProjectDataManagement::GearClass::GearClass_Rocket)
|
||||
{
|
||||
QStandardItem *item = cboModel->item(indexCounter);
|
||||
|
||||
@@ -98,7 +98,7 @@ void enaDisaWirkmittel(QComboBox *wirkmittelCombobox, AesExplosionGeometry geome
|
||||
|
||||
void addRocketPropertiesToRequest(EffectClusterModifyRequest &request, const std::shared_ptr<ParticipantManagement::Interface::Dtc> &ppmDtc)
|
||||
{
|
||||
switch (request.explosionGeometry().underlying())
|
||||
switch (request.explosionGeometry)
|
||||
{
|
||||
case AesExplosionGeometry::EgAimPoint:
|
||||
case AesExplosionGeometry::EgPoint:
|
||||
@@ -123,23 +123,23 @@ void addRocketPropertiesForLinearGeometry(EffectClusterModifyRequest &request, c
|
||||
|
||||
wirkmittel.wirkzeit = 6;
|
||||
|
||||
const UtmCoordinate areaBottomLeftUtm = UtmCoordinate::fromGeographic(request.area().cornerBottomLeft().lon(), request.area().cornerBottomLeft().lat());
|
||||
const UtmCoordinate areaBottomLeftUtm = UtmCoordinate::fromGeographic(request.area.cornerBottomLeft.lon, request.area.cornerBottomLeft.lat);
|
||||
|
||||
QTransform transform;
|
||||
transform.translate(areaBottomLeftUtm.x, areaBottomLeftUtm.y);
|
||||
transform.rotate(-request.area().rotation());
|
||||
transform.rotate(-request.area.rotation);
|
||||
|
||||
const double yLocal = request.area().height() / 2;
|
||||
const double yLocal = request.area.height / 2;
|
||||
|
||||
int mhpSliceCounter = 1;
|
||||
|
||||
for (EffectorData ¤tEffector : request.effectors())
|
||||
for (EffectorData ¤tEffector : request.effectors)
|
||||
{
|
||||
wirkmittel.geschoss.anzahl = currentEffector.chargeAmount();
|
||||
wirkmittel.geschoss.anzahl = currentEffector.chargeAmount;
|
||||
treffpunkt.anzahl = wirkmittel.geschoss.anzahl;
|
||||
|
||||
// calculate local x
|
||||
double xLocal = request.area().width() * (static_cast<double>(mhpSliceCounter++) / (request.effectors().size() + 1));
|
||||
double xLocal = request.area.width * (static_cast<double>(mhpSliceCounter++) / (request.effectors.size() + 1));
|
||||
|
||||
// transform local point to UTM
|
||||
const QPointF localPoint(xLocal, yLocal);
|
||||
@@ -150,10 +150,10 @@ void addRocketPropertiesForLinearGeometry(EffectClusterModifyRequest &request, c
|
||||
const QPointF mhpGeo = currentUtm.geographic();
|
||||
|
||||
// treffpunkt
|
||||
currentEffector.mhpPosition().lon(mhpGeo.x());
|
||||
currentEffector.mhpPosition().lat(mhpGeo.y());
|
||||
treffpunkt.koordinate.koordinate.longitude = currentEffector.mhpPosition().lon() * LtsCoordTrans::rad2deg();
|
||||
treffpunkt.koordinate.koordinate.latitude = currentEffector.mhpPosition().lat() * LtsCoordTrans::rad2deg();
|
||||
currentEffector.mhpPosition.lon = mhpGeo.x();
|
||||
currentEffector.mhpPosition.lat = mhpGeo.y();
|
||||
treffpunkt.koordinate.koordinate.longitude = currentEffector.mhpPosition.lon * LtsCoordTrans::rad2deg();
|
||||
treffpunkt.koordinate.koordinate.latitude = currentEffector.mhpPosition.lat * LtsCoordTrans::rad2deg();
|
||||
|
||||
wirkmittel.treffpunkte.clear();
|
||||
wirkmittel.treffpunkte.append(treffpunkt);
|
||||
@@ -161,32 +161,32 @@ void addRocketPropertiesForLinearGeometry(EffectClusterModifyRequest &request, c
|
||||
QJsonObject wirkmittelObj;
|
||||
AdlerJson::wirkmittelFeuerkommandoRaketeToJson(wirkmittelObj, wirkmittel);
|
||||
|
||||
currentEffector.properties(QJsonDocument(wirkmittelObj).toJson().toStdString());
|
||||
currentEffector.properties = QJsonDocument(wirkmittelObj).toJson().toStdString();
|
||||
|
||||
// trajectory
|
||||
const ParticipantManagement::ParticipantPosition &participantPosition = ppmDtc->participantPosition(currentEffector.participantId());
|
||||
const LtsUtils::QPoint3D trajectoryStart(participantPosition.pos().lon(),
|
||||
participantPosition.pos().lat(),
|
||||
participantPosition.pos().z());
|
||||
const LtsUtils::QPoint3D trajectoryEnd(currentEffector.mhpPosition().lon(),
|
||||
currentEffector.mhpPosition().lat(),
|
||||
currentEffector.mhpPosition().z()); // TODO
|
||||
const ParticipantManagement::ParticipantPosition &participantPosition = ppmDtc->participantPosition(currentEffector.participantId);
|
||||
const LtsUtils::QPoint3D trajectoryStart(participantPosition.pos.lon,
|
||||
participantPosition.pos.lat,
|
||||
participantPosition.pos.z);
|
||||
const LtsUtils::QPoint3D trajectoryEnd(currentEffector.mhpPosition.lon,
|
||||
currentEffector.mhpPosition.lat,
|
||||
currentEffector.mhpPosition.z); // TODO
|
||||
TrajectoryGeoPosition trajectoryWithoutTime;
|
||||
|
||||
TrajectoryGenerator::getInstance()->generateTrajectoryBiedziak(trajectoryStart, trajectoryEnd, 45.0, trajectoryWithoutTime);
|
||||
|
||||
currentEffector.flightTime(60000.0);
|
||||
const double flightTimeStep = currentEffector.flightTime() / static_cast<double>(trajectoryWithoutTime.size());
|
||||
currentEffector.flightTime = 60000.0;
|
||||
const double flightTimeStep = currentEffector.flightTime / static_cast<double>(trajectoryWithoutTime.size());
|
||||
double currentFlightTime = 0.0;
|
||||
|
||||
currentEffector.trajectoryRelative().clear(); // LS_711_akkumulierende_flugkurven_bei_rakete
|
||||
const LtsCoordTrans::UtmCoordinate utmStartPos = LtsCoordTrans::UtmCoordinate::fromGeographic(participantPosition.pos().lon(), participantPosition.pos().lat());
|
||||
currentEffector.trajectoryRelative.clear(); // LS_711_akkumulierende_flugkurven_bei_rakete
|
||||
const LtsCoordTrans::UtmCoordinate utmStartPos = LtsCoordTrans::UtmCoordinate::fromGeographic(participantPosition.pos.lon, participantPosition.pos.lat);
|
||||
for (const Core::GeoPosition &pos : trajectoryWithoutTime)
|
||||
{
|
||||
const LtsCoordTrans::UtmCoordinate utmCurrentPos = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat());
|
||||
const LtsCoordTrans::UtmCoordinate utmCurrentPos = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat);
|
||||
|
||||
currentEffector.trajectoryRelative().emplace_back(utmCurrentPos.x - utmStartPos.x,
|
||||
utmCurrentPos.y - utmStartPos.y, pos.z(), currentFlightTime);
|
||||
currentEffector.trajectoryRelative.emplace_back(utmCurrentPos.x - utmStartPos.x,
|
||||
utmCurrentPos.y - utmStartPos.y, pos.z, currentFlightTime);
|
||||
|
||||
currentFlightTime += flightTimeStep;
|
||||
}
|
||||
@@ -203,19 +203,19 @@ void addRocketPropertiesForPointGeometry(EffectClusterModifyRequest &request, co
|
||||
wirkmittel.wirkzeit = 6;
|
||||
treffpunkt.anzahl = 1;
|
||||
|
||||
const UtmCoordinate areaBottomLeftUtm = UtmCoordinate::fromGeographic(request.area().cornerBottomLeft().lon(), request.area().cornerBottomLeft().lat());
|
||||
const QPointF areaCenterGeo = areaBottomLeftUtm.geographic(request.area().width() / 2, request.area().height() / 2);
|
||||
const UtmCoordinate areaBottomLeftUtm = UtmCoordinate::fromGeographic(request.area.cornerBottomLeft.lon, request.area.cornerBottomLeft.lat);
|
||||
const QPointF areaCenterGeo = areaBottomLeftUtm.geographic(request.area.width / 2, request.area.height / 2);
|
||||
|
||||
for (EffectorData ¤tEffector : request.effectors())
|
||||
for (EffectorData ¤tEffector : request.effectors)
|
||||
{
|
||||
wirkmittel.geschoss.anzahl = currentEffector.chargeAmount();
|
||||
wirkmittel.geschoss.anzahl = currentEffector.chargeAmount;
|
||||
treffpunkt.anzahl = wirkmittel.geschoss.anzahl;
|
||||
|
||||
// treffpunkt
|
||||
currentEffector.mhpPosition().lon(areaCenterGeo.x());
|
||||
currentEffector.mhpPosition().lat(areaCenterGeo.y());
|
||||
treffpunkt.koordinate.koordinate.longitude = currentEffector.mhpPosition().lon() * LtsCoordTrans::rad2deg();
|
||||
treffpunkt.koordinate.koordinate.latitude = currentEffector.mhpPosition().lat() * LtsCoordTrans::rad2deg();
|
||||
currentEffector.mhpPosition.lon = areaCenterGeo.x();
|
||||
currentEffector.mhpPosition.lat = areaCenterGeo.y();
|
||||
treffpunkt.koordinate.koordinate.longitude = currentEffector.mhpPosition.lon * LtsCoordTrans::rad2deg();
|
||||
treffpunkt.koordinate.koordinate.latitude = currentEffector.mhpPosition.lat * LtsCoordTrans::rad2deg();
|
||||
|
||||
wirkmittel.treffpunkte.clear();
|
||||
wirkmittel.treffpunkte.append(treffpunkt);
|
||||
@@ -223,32 +223,32 @@ void addRocketPropertiesForPointGeometry(EffectClusterModifyRequest &request, co
|
||||
QJsonObject wirkmittelObj;
|
||||
AdlerJson::wirkmittelFeuerkommandoRaketeToJson(wirkmittelObj, wirkmittel);
|
||||
|
||||
currentEffector.properties(QJsonDocument(wirkmittelObj).toJson().toStdString());
|
||||
currentEffector.properties = QJsonDocument(wirkmittelObj).toJson().toStdString();
|
||||
|
||||
// trajectory
|
||||
const ParticipantManagement::ParticipantPosition &participantPosition = ppmDtc->participantPosition(currentEffector.participantId());
|
||||
const LtsUtils::QPoint3D trajectoryStart(participantPosition.pos().lon(),
|
||||
participantPosition.pos().lat(),
|
||||
participantPosition.pos().z());
|
||||
const LtsUtils::QPoint3D trajectoryEnd(currentEffector.mhpPosition().lon(),
|
||||
currentEffector.mhpPosition().lat(),
|
||||
currentEffector.mhpPosition().z());
|
||||
const ParticipantManagement::ParticipantPosition &participantPosition = ppmDtc->participantPosition(currentEffector.participantId);
|
||||
const LtsUtils::QPoint3D trajectoryStart(participantPosition.pos.lon,
|
||||
participantPosition.pos.lat,
|
||||
participantPosition.pos.z);
|
||||
const LtsUtils::QPoint3D trajectoryEnd(currentEffector.mhpPosition.lon,
|
||||
currentEffector.mhpPosition.lat,
|
||||
currentEffector.mhpPosition.z);
|
||||
TrajectoryGeoPosition trajectoryWithoutTime;
|
||||
|
||||
TrajectoryGenerator::getInstance()->generateTrajectoryBiedziak(trajectoryStart, trajectoryEnd, 45.0, trajectoryWithoutTime);
|
||||
|
||||
currentEffector.flightTime(60000.0);
|
||||
const double flightTimeStep = currentEffector.flightTime() / static_cast<double>(trajectoryWithoutTime.size());
|
||||
currentEffector.flightTime = 60000.0;
|
||||
const double flightTimeStep = currentEffector.flightTime / static_cast<double>(trajectoryWithoutTime.size());
|
||||
double currentFlightTime = 0.0;
|
||||
|
||||
currentEffector.trajectoryRelative().clear(); // LS_711_akkumulierende_flugkurven_bei_rakete
|
||||
const LtsCoordTrans::UtmCoordinate utmStartPos = LtsCoordTrans::UtmCoordinate::fromGeographic(participantPosition.pos().lon(), participantPosition.pos().lat());
|
||||
currentEffector.trajectoryRelative.clear(); // LS_711_akkumulierende_flugkurven_bei_rakete
|
||||
const LtsCoordTrans::UtmCoordinate utmStartPos = LtsCoordTrans::UtmCoordinate::fromGeographic(participantPosition.pos.lon, participantPosition.pos.lat);
|
||||
for (const Core::GeoPosition &pos : trajectoryWithoutTime)
|
||||
{
|
||||
const LtsCoordTrans::UtmCoordinate utmCurrentPos = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon(), pos.lat());
|
||||
const LtsCoordTrans::UtmCoordinate utmCurrentPos = LtsCoordTrans::UtmCoordinate::fromGeographic(pos.lon, pos.lat);
|
||||
|
||||
currentEffector.trajectoryRelative().emplace_back(utmCurrentPos.x - utmStartPos.x,
|
||||
utmCurrentPos.y - utmStartPos.y, pos.z(), currentFlightTime);
|
||||
currentEffector.trajectoryRelative.emplace_back(utmCurrentPos.x - utmStartPos.x,
|
||||
utmCurrentPos.y - utmStartPos.y, pos.z, currentFlightTime);
|
||||
|
||||
currentFlightTime += flightTimeStep;
|
||||
}
|
||||
|
||||
+5
-5
@@ -66,13 +66,13 @@ bool CustomViewFunctionalArea::init(const QModelIndex &idx)
|
||||
bool CustomViewFunctionalArea::calculateIcon(const FunctionalArea &funcArea, const QColor &color)
|
||||
{
|
||||
Database::AesFunctionalArea funcOut;
|
||||
funcOut.width = funcArea.area().width();
|
||||
funcOut.length = funcArea.area().height();
|
||||
funcOut.position = QPointF(funcArea.area().cornerBottomLeft().lon(),
|
||||
funcArea.area().cornerBottomLeft().lat());
|
||||
funcOut.width = funcArea.area.width;
|
||||
funcOut.length = funcArea.area.height;
|
||||
funcOut.position = QPointF(funcArea.area.cornerBottomLeft.lon,
|
||||
funcArea.area.cornerBottomLeft.lat);
|
||||
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::functionalArea(funcOut);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(funcArea.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(funcArea.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+84
-84
@@ -163,7 +163,7 @@ void FunctionalAreaEdit::enableUiElements(bool enable)
|
||||
|
||||
const FunctionalAreaType type = m_functionalAreaTypes.value(m_ui->cbFunctionalAreaType->currentData().toInt());
|
||||
|
||||
if (type.supplyMode() == AesOperatingMode::OmWaitingTime)
|
||||
if (type.supplyMode == AesOperatingMode::OmWaitingTime)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "SUPPLY-MODE";
|
||||
m_ui->sbDecontaminationMinutes->setEnabled(false);
|
||||
@@ -209,24 +209,24 @@ void FunctionalAreaEdit::enableUiElements(bool enable)
|
||||
m_ui->sbWidth->setEnabled(enable);
|
||||
|
||||
|
||||
const bool deconAvailable = type.deconMode() != AesOperatingMode::OmNotAvailable;
|
||||
const bool maintAvailable = type.maintMode() != AesOperatingMode::OmNotAvailable;
|
||||
const bool medicAvailable = type.medicMode() != AesOperatingMode::OmNotAvailable;
|
||||
const bool deconAvailable = type.deconMode != AesOperatingMode::OmNotAvailable;
|
||||
const bool maintAvailable = type.maintMode != AesOperatingMode::OmNotAvailable;
|
||||
const bool medicAvailable = type.medicMode != AesOperatingMode::OmNotAvailable;
|
||||
|
||||
m_ui->cbDecontamination->setEnabled(enable && deconAvailable);
|
||||
m_ui->cbMaintenance->setEnabled(enable && maintAvailable);
|
||||
m_ui->cbMedical->setEnabled(enable && medicAvailable);
|
||||
|
||||
m_ui->sbDecontaminationMinutes->setEnabled((m_ui->cbDecontamination->currentIndex() == AesOperatingMode::OmWaitingTime) && enable && deconAvailable);
|
||||
m_ui->sbMaintanenceMinutes->setEnabled((m_ui->cbMaintenance->currentIndex() == AesOperatingMode::OmWaitingTime) && enable && maintAvailable);
|
||||
m_ui->sbMedicalMinutes->setEnabled((m_ui->cbMedical->currentIndex() == AesOperatingMode::OmWaitingTime) && enable && medicAvailable);
|
||||
m_ui->sbDecontaminationMinutes->setEnabled((m_ui->cbDecontamination->currentIndex() == static_cast<int>(AesOperatingMode::OmWaitingTime)) && enable && deconAvailable);
|
||||
m_ui->sbMaintanenceMinutes->setEnabled((m_ui->cbMaintenance->currentIndex() == static_cast<int>(AesOperatingMode::OmWaitingTime)) && enable && maintAvailable);
|
||||
m_ui->sbMedicalMinutes->setEnabled((m_ui->cbMedical->currentIndex() == static_cast<int>(AesOperatingMode::OmWaitingTime)) && enable && medicAvailable);
|
||||
m_ui->sbSupplyMinutes->setEnabled(false);
|
||||
m_ui->sbSupplyMinutes->setValue(0);
|
||||
m_ui->cbSupply->setCurrentIndex(0);
|
||||
setVisableFaButtons();
|
||||
}
|
||||
const bool isGenericFunctionalArea = type.id() == 0;
|
||||
const bool symbolAvailable = type.pointSymbol().empty();
|
||||
const bool isGenericFunctionalArea = type.id == 0;
|
||||
const bool symbolAvailable = type.pointSymbol.empty();
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
|
||||
@@ -244,18 +244,18 @@ void FunctionalAreaEdit::enableUiElements(bool enable)
|
||||
m_ui->pbClearPointSymbol->setEnabled(isGenericFunctionalArea);
|
||||
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
DEBUG_LOG(m_logger) << "setUnchangeable()";
|
||||
setUnchangeable();
|
||||
disableButtons(true);
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->functionalArea(m_aesItem.id());
|
||||
auto baseData = m_dtc->functionalArea(m_aesItem.id);
|
||||
DEBUG_LOG(m_logger) << "init: setData";
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
@@ -279,7 +279,7 @@ bool FunctionalAreaEdit::init(int areaId, bool copy,
|
||||
m_ui->cbFunctionalAreaType->clear();
|
||||
m_functionalAreaTypes = m_dtc->functionalAreaTypes();
|
||||
for (const auto &type : std::as_const(m_functionalAreaTypes))
|
||||
m_ui->cbFunctionalAreaType->addItem(AreaEffectSimulation::trFunctionalAreaTypeName(type.name()), type.id());
|
||||
m_ui->cbFunctionalAreaType->addItem(AreaEffectSimulation::trFunctionalAreaTypeName(type.name), type.id);
|
||||
|
||||
bool editable = LtsSessionData::LtsSessionData::getInstance()->hasOperatorRight(OperatorRights::FunctionalAreasEdit) ||
|
||||
m_session->app() == LtsAppDescriptor::App::OC;
|
||||
@@ -326,36 +326,36 @@ void FunctionalAreaEdit::setData(const FunctionalArea &area, bool copy)
|
||||
m_aesItem = area;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(area.name()));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(area.effectStart().is_set() ? area.effectStart().get() : 0);
|
||||
m_ui->sbDurationMinutes->setValue(area.effectDuration() / 1000 / 60);
|
||||
m_ui->sbWidth->setValue(area.area().width());
|
||||
m_ui->sbHeight->setValue(area.area().height());
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(area.partyId().is_set() ? area.partyId().get() : 0));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(area.name));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(area.effectStart.has_value() ? area.effectStart.get() : 0);
|
||||
m_ui->sbDurationMinutes->setValue(area.effectDuration / 1000 / 60);
|
||||
m_ui->sbWidth->setValue(area.area.width);
|
||||
m_ui->sbHeight->setValue(area.area.height);
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(area.partyId.has_value() ? area.partyId.get() : 0));
|
||||
|
||||
const QPointF bottomLeft(area.area().cornerBottomLeft().lon(), area.area().cornerBottomLeft().lat());
|
||||
const QPointF centerpoint = Polygons::bottomLeft2CenterPoint(bottomLeft, area.area().width(), area.area().height(), 0.0);
|
||||
const QPointF bottomLeft(area.area.cornerBottomLeft.lon, area.area.cornerBottomLeft.lat);
|
||||
const QPointF centerpoint = Polygons::bottomLeft2CenterPoint(bottomLeft, area.area.width, area.area.height, 0.0);
|
||||
if (!bottomLeft.isNull())
|
||||
m_ui->positionEdit->setCoordinate(centerpoint);
|
||||
|
||||
m_ui->cbDecontamination->setCurrentIndex(m_ui->cbDecontamination->findData(area.deconMode().underlying()));
|
||||
m_ui->cbMaintenance->setCurrentIndex(m_ui->cbMaintenance->findData(area.maintMode().underlying()));
|
||||
m_ui->cbMedical->setCurrentIndex(m_ui->cbMedical->findData(area.medicMode().underlying()));
|
||||
m_ui->cbDecontamination->setCurrentIndex(m_ui->cbDecontamination->findData(static_cast<int>(area.deconMode)));
|
||||
m_ui->cbMaintenance->setCurrentIndex(m_ui->cbMaintenance->findData(static_cast<int>(area.maintMode)));
|
||||
m_ui->cbMedical->setCurrentIndex(m_ui->cbMedical->findData(static_cast<int>(area.medicMode)));
|
||||
|
||||
m_ui->sbDecontaminationMinutes->setValue(area.deconTime() / (1000 * 60));
|
||||
m_ui->sbMaintanenceMinutes->setValue(area.maintTime() / (1000 * 60));
|
||||
m_ui->sbMedicalMinutes->setValue(area.medicTime() / (1000 * 60));
|
||||
m_ui->sbSupplyMinutes->setValue(area.supplyTime() / (1000 * 60));
|
||||
m_ui->sbDecontaminationMinutes->setValue(area.deconTime / (1000 * 60));
|
||||
m_ui->sbMaintanenceMinutes->setValue(area.maintTime / (1000 * 60));
|
||||
m_ui->sbMedicalMinutes->setValue(area.medicTime / (1000 * 60));
|
||||
m_ui->sbSupplyMinutes->setValue(area.supplyTime / (1000 * 60));
|
||||
|
||||
m_ui->cbFunctionalAreaType->setCurrentIndex(m_ui->cbFunctionalAreaType->findData(area.functionalAreaTypeId()));
|
||||
m_ui->cbFunctionalAreaType->setCurrentIndex(m_ui->cbFunctionalAreaType->findData(area.functionalAreaTypeId));
|
||||
|
||||
if (m_aesItem.participantId().is_set())
|
||||
if (m_aesItem.participantId.has_value())
|
||||
{
|
||||
int participantId = m_aesItem.participantId().get();
|
||||
int participantId = m_aesItem.participantId.get();
|
||||
DEBUG_LOG(m_logger) << "ParticipantId = " << participantId;
|
||||
QVector<int> participants;
|
||||
participants.append(participantId);
|
||||
@@ -363,13 +363,13 @@ void FunctionalAreaEdit::setData(const FunctionalArea &area, bool copy)
|
||||
}
|
||||
|
||||
|
||||
if (area.pointSymbol().is_set())
|
||||
if (area.pointSymbol.has_value())
|
||||
{
|
||||
m_sidc = QString::fromStdString(area.pointSymbol().get());
|
||||
m_sidc = QString::fromStdString(area.pointSymbol.get());
|
||||
onChangeSymbol(m_sidc);
|
||||
}
|
||||
if ((m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
|| (m_aesItem.effectStateId() == AesEffectState::EsExpired))
|
||||
if ((m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
|| (m_aesItem.effectStateId == AesEffectState::EsExpired))
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "setUnchangeable";
|
||||
disableButtons(true);
|
||||
@@ -394,19 +394,19 @@ void FunctionalAreaEdit::fillCbx()
|
||||
QString byOperator = tr("by operator");
|
||||
QString bytimeout = tr("by wait time");
|
||||
|
||||
m_ui->cbDecontamination->addItem(unused, AesOperatingMode::OmNotUsed);
|
||||
m_ui->cbDecontamination->addItem(byOperator, AesOperatingMode::OmObserver);
|
||||
m_ui->cbDecontamination->addItem(bytimeout, AesOperatingMode::OmWaitingTime);
|
||||
m_ui->cbDecontamination->addItem(unused, static_cast<int>(AesOperatingMode::OmNotUsed));
|
||||
m_ui->cbDecontamination->addItem(byOperator, static_cast<int>(AesOperatingMode::OmObserver));
|
||||
m_ui->cbDecontamination->addItem(bytimeout, static_cast<int>(AesOperatingMode::OmWaitingTime));
|
||||
|
||||
m_ui->cbMaintenance->addItem(unused, AesOperatingMode::OmNotUsed);
|
||||
m_ui->cbMaintenance->addItem(byOperator, AesOperatingMode::OmObserver);
|
||||
m_ui->cbMaintenance->addItem(bytimeout, AesOperatingMode::OmWaitingTime);
|
||||
m_ui->cbMaintenance->addItem(unused, static_cast<int>(AesOperatingMode::OmNotUsed));
|
||||
m_ui->cbMaintenance->addItem(byOperator, static_cast<int>(AesOperatingMode::OmObserver));
|
||||
m_ui->cbMaintenance->addItem(bytimeout, static_cast<int>(AesOperatingMode::OmWaitingTime));
|
||||
|
||||
m_ui->cbMedical->addItem(unused, AesOperatingMode::OmNotUsed);
|
||||
m_ui->cbMedical->addItem(byOperator, AesOperatingMode::OmObserver);
|
||||
m_ui->cbMedical->addItem(bytimeout, AesOperatingMode::OmWaitingTime);
|
||||
m_ui->cbMedical->addItem(unused, static_cast<int>(AesOperatingMode::OmNotUsed));
|
||||
m_ui->cbMedical->addItem(byOperator, static_cast<int>(AesOperatingMode::OmObserver));
|
||||
m_ui->cbMedical->addItem(bytimeout, static_cast<int>(AesOperatingMode::OmWaitingTime));
|
||||
|
||||
m_ui->cbSupply->addItem(bytimeout, AesOperatingMode::OmWaitingTime);
|
||||
m_ui->cbSupply->addItem(bytimeout, static_cast<int>(AesOperatingMode::OmWaitingTime));
|
||||
|
||||
|
||||
if (curIdxDeconCbx >= 0)
|
||||
@@ -450,47 +450,47 @@ void FunctionalAreaEdit::onRectData(const QPointF ¢erPoint, double width, do
|
||||
|
||||
void FunctionalAreaEdit::onCbxIdxDeconChanged()
|
||||
{
|
||||
m_ui->sbDecontaminationMinutes->setEnabled(AesOperatingMode::OmWaitingTime == m_ui->cbDecontamination->currentData().toInt());
|
||||
m_ui->sbDecontaminationMinutes->setEnabled(static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbDecontamination->currentData().toInt());
|
||||
}
|
||||
|
||||
void FunctionalAreaEdit::onCbxIdxMaintChanged()
|
||||
{
|
||||
m_ui->sbMaintanenceMinutes->setEnabled(AesOperatingMode::OmWaitingTime == m_ui->cbMaintenance->currentData().toInt());
|
||||
m_ui->sbMaintanenceMinutes->setEnabled(static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbMaintenance->currentData().toInt());
|
||||
}
|
||||
|
||||
void FunctionalAreaEdit::onCbxIdxMedicChanged()
|
||||
{
|
||||
m_ui->sbMedicalMinutes->setEnabled(AesOperatingMode::OmWaitingTime == m_ui->cbMedical->currentData().toInt());
|
||||
m_ui->sbMedicalMinutes->setEnabled(static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbMedical->currentData().toInt());
|
||||
}
|
||||
|
||||
void FunctionalAreaEdit::onCbxIdxSupplyChanged()
|
||||
{
|
||||
m_ui->sbSupplyMinutes->setEnabled(AesOperatingMode::OmWaitingTime == m_ui->cbSupply->currentData().toInt());
|
||||
m_ui->sbSupplyMinutes->setEnabled(static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbSupply->currentData().toInt());
|
||||
}
|
||||
|
||||
void FunctionalAreaEdit::onCbxIdxFunctionalAreaTypeChanged()
|
||||
{
|
||||
const FunctionalAreaType type = m_functionalAreaTypes.value(m_ui->cbFunctionalAreaType->currentData().toInt());
|
||||
DEBUG_LOG(m_logger) << "onCbxIdxFunctionalAreaTypeChanged"
|
||||
<< " type.id=" << type.id()
|
||||
<< " name=" << type.name();
|
||||
if (type.id() != 0)
|
||||
<< " type.id=" << type.id
|
||||
<< " name=" << type.name;
|
||||
if (type.id != 0)
|
||||
{
|
||||
if (type.id() == 7)
|
||||
if (type.id == 7)
|
||||
{
|
||||
m_ui->sbSupplyMinutes->setValue(type.supplyTime());
|
||||
m_ui->sbSupplyMinutes->setValue(type.supplyTime);
|
||||
m_ui->cbSupply->setCurrentIndex(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_sidc = QString::fromStdString(type.pointSymbol());
|
||||
m_sidc = QString::fromStdString(type.pointSymbol);
|
||||
onChangeSymbol(m_sidc);
|
||||
m_ui->sbDecontaminationMinutes->setValue(type.deconTime());
|
||||
m_ui->sbMaintanenceMinutes->setValue(type.maintTime());
|
||||
m_ui->sbMedicalMinutes->setValue(type.medicTime());
|
||||
m_ui->cbDecontamination->setCurrentIndex(m_ui->cbDecontamination->findData(type.deconMode() == AesOperatingMode::OmNotAvailable ? AesOperatingMode::OmNotUsed : type.deconMode().underlying()));
|
||||
m_ui->cbMaintenance->setCurrentIndex(m_ui->cbMaintenance->findData(type.maintMode() == AesOperatingMode::OmNotAvailable ? AesOperatingMode::OmNotUsed : type.maintMode().underlying()));
|
||||
m_ui->cbMedical->setCurrentIndex(m_ui->cbMedical->findData(type.medicMode() == AesOperatingMode::OmNotAvailable ? AesOperatingMode::OmNotUsed : type.medicMode().underlying()));
|
||||
m_ui->sbDecontaminationMinutes->setValue(type.deconTime);
|
||||
m_ui->sbMaintanenceMinutes->setValue(type.maintTime);
|
||||
m_ui->sbMedicalMinutes->setValue(type.medicTime);
|
||||
m_ui->cbDecontamination->setCurrentIndex(m_ui->cbDecontamination->findData(static_cast<int>(type.deconMode == AesOperatingMode::OmNotAvailable ? AesOperatingMode::OmNotUsed : type.deconMode)));
|
||||
m_ui->cbMaintenance->setCurrentIndex(m_ui->cbMaintenance->findData(static_cast<int>(type.maintMode == AesOperatingMode::OmNotAvailable ? AesOperatingMode::OmNotUsed : type.maintMode)));
|
||||
m_ui->cbMedical->setCurrentIndex(m_ui->cbMedical->findData(static_cast<int>(type.medicMode == AesOperatingMode::OmNotAvailable ? AesOperatingMode::OmNotUsed : type.medicMode)));
|
||||
}
|
||||
}
|
||||
enableUiElements(true);
|
||||
@@ -569,7 +569,7 @@ void FunctionalAreaEdit::onChangeSymbol(const QString &sidc)
|
||||
std::shared_ptr<ParticipantManagement::Interface::Dtc> ppmDtc;
|
||||
m_session->getDtc<ParticipantManagement::DataInterface>(ppmDtc);
|
||||
if (ppmDtc)
|
||||
symDataToRender.fillColor = ppmDtc->party(partyId).color();
|
||||
symDataToRender.fillColor = ppmDtc->party(partyId).color;
|
||||
else
|
||||
WARNING_LOG(m_logger) << "no ppmDtc";
|
||||
}
|
||||
@@ -614,17 +614,17 @@ bool FunctionalAreaEdit::apply()
|
||||
int playerId = 0;
|
||||
const auto pointSymbol = m_sidc.toStdString();
|
||||
AesOperatingMode deconMode = static_cast<AesOperatingMode>(m_ui->cbDecontamination->currentData().toInt());
|
||||
int deconTime = (AesOperatingMode::OmWaitingTime == m_ui->cbDecontamination->currentData().toInt()) ? 1000 * 60 * m_ui->sbDecontaminationMinutes->value() : 0;
|
||||
int deconTime = (static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbDecontamination->currentData().toInt()) ? 1000 * 60 * m_ui->sbDecontaminationMinutes->value() : 0;
|
||||
AesOperatingMode maintMode = static_cast<AesOperatingMode>(m_ui->cbMaintenance->currentData().toInt());
|
||||
int maintTime = (AesOperatingMode::OmWaitingTime == m_ui->cbMaintenance->currentData().toInt()) ? 1000 * 60 * m_ui->sbMaintanenceMinutes->value() : 0;
|
||||
int maintTime = (static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbMaintenance->currentData().toInt()) ? 1000 * 60 * m_ui->sbMaintanenceMinutes->value() : 0;
|
||||
AesOperatingMode medicMode = static_cast<AesOperatingMode>(m_ui->cbMedical->currentData().toInt());
|
||||
int medicTime = (AesOperatingMode::OmWaitingTime == m_ui->cbMedical->currentData().toInt()) ? 1000 * 60 * m_ui->sbMedicalMinutes->value() : 0;
|
||||
int medicTime = (static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbMedical->currentData().toInt()) ? 1000 * 60 * m_ui->sbMedicalMinutes->value() : 0;
|
||||
AesOperatingMode supplyMode = static_cast<AesOperatingMode>(m_ui->cbSupply->currentData().toInt());
|
||||
if ( functionalAreaType != 7 )
|
||||
supplyMode = AesOperatingMode::OmNotUsed;
|
||||
int supplyTime = (AesOperatingMode::OmWaitingTime == m_ui->cbSupply->currentData().toInt()) ? 1000 * 60 * m_ui->sbSupplyMinutes->value() : 0;
|
||||
int supplyTime = (static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbSupply->currentData().toInt()) ? 1000 * 60 * m_ui->sbSupplyMinutes->value() : 0;
|
||||
AesOperatingMode notfightMode = static_cast<AesOperatingMode>(m_ui->cbMedical->currentData().toInt());
|
||||
int notfightTime = (AesOperatingMode::OmWaitingTime == m_ui->cbMedical->currentData().toInt()) ? 1000 * 60 * m_ui->sbMedicalMinutes->value() : 0;
|
||||
int notfightTime = (static_cast<int>(AesOperatingMode::OmWaitingTime) == m_ui->cbMedical->currentData().toInt()) ? 1000 * 60 * m_ui->sbMedicalMinutes->value() : 0;
|
||||
if ( functionalAreaType == 7 )
|
||||
{
|
||||
deconMode = AesOperatingMode::OmNotUsed;
|
||||
@@ -652,12 +652,12 @@ bool FunctionalAreaEdit::apply()
|
||||
if (supplyMode == AesOperatingMode::OmWaitingTime)
|
||||
{
|
||||
partyId = 0;
|
||||
playerId = m_participant.id();
|
||||
playerId = m_participant.id;
|
||||
}
|
||||
|
||||
FunctionalAreaModifyRequest req(m_aesItem.id(),
|
||||
FunctionalAreaModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
duration,
|
||||
chargeType,
|
||||
area,
|
||||
@@ -679,7 +679,7 @@ bool FunctionalAreaEdit::apply()
|
||||
|
||||
m_requestHelper->addRequest([this, req, functionalAreaType]()
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "addRequest m_aesItem.id()=" << m_aesItem.id()
|
||||
DEBUG_LOG(m_logger) << "addRequest m_aesItem.id()=" << m_aesItem.id
|
||||
<< " functionalAreaType=" << functionalAreaType
|
||||
<< " area=" << req;
|
||||
return m_ftc->functionalAreaModifyRequest(req, this);
|
||||
@@ -774,7 +774,7 @@ void FunctionalAreaEdit::onParticipantClicked()
|
||||
{
|
||||
ParticipantManagement::ParticipantSelection *ps = new ParticipantManagement::ParticipantSelection(m_session, this);
|
||||
ps->init();
|
||||
ps->setParticipantSelected(m_participant.partyId(), m_participant.id());
|
||||
ps->setParticipantSelected(m_participant.partyId, m_participant.id);
|
||||
|
||||
connect(ps, &ParticipantManagement::ParticipantSelection::selectedParticipants, this, &FunctionalAreaEdit::onParticipant);
|
||||
ps->exec();
|
||||
@@ -792,12 +792,12 @@ void FunctionalAreaEdit::onParticipant(const QVector<int> &participants)
|
||||
|
||||
|
||||
m_participant = m_ppmDtc->participant(participants[0]);
|
||||
QString lblHierarchy = m_ppmDtc->hierarchyFromParticipant(m_participant.id());
|
||||
QString lblParticipantType = ParticipantManagement::trTypeName(m_ppmDtc->type(m_participant.typeId()).name());
|
||||
QString lblHierarchy = m_ppmDtc->hierarchyFromParticipant(m_participant.id);
|
||||
QString lblParticipantType = ParticipantManagement::trTypeName(m_ppmDtc->type(m_participant.typeId).name);
|
||||
int functionalAreaType = m_ui->cbFunctionalAreaType->currentData().toInt();
|
||||
DEBUG_LOG(m_logger) << "m_participant.id=" << m_participant.id()
|
||||
<< " designator=" << m_participant.designator()
|
||||
<< " tacticalIdentifier=" << m_participant.tacticalIdentifier()
|
||||
DEBUG_LOG(m_logger) << "m_participant.id=" << m_participant.id
|
||||
<< " designator=" << m_participant.designator
|
||||
<< " tacticalIdentifier=" << m_participant.tacticalIdentifier
|
||||
<< " lblHierarchy=" << lblHierarchy
|
||||
<< " lblHierarchy.isVisable=" << m_ui->lblHierarchy->isVisible()
|
||||
<< " lblParticipantType=" << lblParticipantType
|
||||
@@ -816,14 +816,14 @@ void FunctionalAreaEdit::onParticipant(const QVector<int> &participants)
|
||||
<< " property=" << propertyStrType.join(QStringLiteral("|"));
|
||||
|
||||
m_ui->lblHierarchy->show();
|
||||
m_ui->lblHierarchy->setText(m_ppmDtc->hierarchyFromParticipant(m_participant.id()));
|
||||
m_ui->lblHierarchy->setText(m_ppmDtc->hierarchyFromParticipant(m_participant.id));
|
||||
m_ui->lblParticipantType->show();
|
||||
m_ui->lblParticipantType->setText(ParticipantManagement::trTypeName(m_ppmDtc->type(m_participant.typeId()).name()));
|
||||
m_ui->lblParticipantType->setText(ParticipantManagement::trTypeName(m_ppmDtc->type(m_participant.typeId).name));
|
||||
m_ui->lblEquipmentNumber->show();
|
||||
|
||||
dds::core::optional<int32_t> eqId = m_participant.equipmentNumber();
|
||||
dds::core::optional<int32_t> eqId = m_participant.equipmentNumber;
|
||||
|
||||
if (eqId.is_set())
|
||||
if (eqId.has_value())
|
||||
{
|
||||
QString id = QString::number(eqId.get());
|
||||
m_ui->lblEquipmentNumber->setText(id);
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
#include <AdvancedSymbology/asb_data_plugin_interface.h>
|
||||
#include <ParticipantManagement/ppm_data_plugin_interface.h>
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddFunctionalArea") : QStringLiteral("EditFunctionalArea%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddFunctionalArea") : QStringLiteral("EditFunctionalArea%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int areaId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_functional_area_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+2
-2
@@ -37,8 +37,8 @@ QVariant FunctionalAreasModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
case ColType:
|
||||
{
|
||||
auto fat = m_aesDtc->functionalAreaType(functionalArea.functionalAreaTypeId());
|
||||
return trFunctionalAreaTypeName(fat.name());
|
||||
auto fat = m_aesDtc->functionalAreaType(functionalArea.functionalAreaTypeId);
|
||||
return trFunctionalAreaTypeName(fat.name);
|
||||
}
|
||||
default:
|
||||
break;
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
|
||||
+5
-5
@@ -44,21 +44,21 @@ bool CustomViewGasPipe::init(const QModelIndex &idx)
|
||||
|
||||
bool CustomViewGasPipe::calculateIcon(const AreaEffectSimulation::GasPipe &line, const QColor &color)
|
||||
{
|
||||
if (line.segments().size() == 0)
|
||||
if (line.segments.size() == 0)
|
||||
return false;
|
||||
|
||||
QVector<Database::AesGasPipeSegment> segments;
|
||||
segments.reserve(line.segments().size());
|
||||
segments.reserve(line.segments.size());
|
||||
int counter = 0;
|
||||
for (const Core::GeoPosition2D &s : line.segments())
|
||||
for (const Core::GeoPosition2D &s : line.segments)
|
||||
{
|
||||
Database::AesGasPipeSegment segment;
|
||||
segment.position = QPointF(s.lon(), s.lat());
|
||||
segment.position = QPointF(s.lon, s.lat);
|
||||
segments.append(segment);
|
||||
counter++;
|
||||
}
|
||||
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::gasPipe(segments, line.width());
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::gasPipe(segments, line.width);
|
||||
Qt::BrushStyle bStyle = Qt::BrushStyle::NoBrush;
|
||||
const auto pix = Polygons::pixmapFromPolygon(poly, color, ICON_RESOLUTION, bStyle, true);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
+14
-14
@@ -76,15 +76,15 @@ void GasPipeEdit::enableUiElements(bool enable)
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
m_ui->cbParty->setEnabled(enable);
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->gasPipe(m_aesItem.id());
|
||||
auto baseData = m_dtc->gasPipe(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -135,16 +135,16 @@ void GasPipeEdit::setData(const GasPipe &aesItem, bool copy)
|
||||
m_aesItem = aesItem;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(aesItem.name()));
|
||||
m_ui->sbWidth->setValue(aesItem.width());
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(aesItem.effectStart().is_set() ? aesItem.effectStart().get() : 0);
|
||||
if ( aesItem.partyId().is_set())
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(aesItem.partyId().get()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(aesItem.name));
|
||||
m_ui->sbWidth->setValue(aesItem.width);
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(aesItem.effectStart.has_value() ? aesItem.effectStart.get() : 0);
|
||||
if ( aesItem.partyId.has_value())
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(aesItem.partyId.get()));
|
||||
|
||||
setCoordinates(aesItem.segments());
|
||||
setCoordinates(aesItem.segments);
|
||||
}
|
||||
|
||||
void GasPipeEdit::getPolygon()
|
||||
@@ -190,8 +190,8 @@ bool GasPipeEdit::apply()
|
||||
if (!checkSegementLengths(this))
|
||||
return false;
|
||||
|
||||
const GasPipeModifyRequest req(m_aesItem.id(),
|
||||
LtsUtils::toOptional(effectStart),
|
||||
const GasPipeModifyRequest req(m_aesItem.id,
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
LtsUtils::toOptional(partyId),
|
||||
name,
|
||||
getCoordinates(),
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
|
||||
class QDoubleSpinBox;
|
||||
@@ -28,7 +28,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddGasPipe") : QStringLiteral("EditGasPipe%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddGasPipe") : QStringLiteral("EditGasPipe%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_gas_pipe_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
#include <FileManagement/flm_explorer_gui_plugin_interface.h>
|
||||
#include "aes_gas_pipes_model.h"
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+9
-9
@@ -50,23 +50,23 @@ bool CustomViewMineArea::init(const QModelIndex &idx)
|
||||
|
||||
bool CustomViewMineArea::calculateIcon(const MineArea &area, const QColor &color)
|
||||
{
|
||||
if (area.segments().size() == 0)
|
||||
if (area.segments.size() == 0)
|
||||
return false;
|
||||
|
||||
QVector<Database::AesMineAreaSegment> segments;
|
||||
segments.reserve(area.segments().size());
|
||||
for (AreaEffectSimulation::MineSegment segmentIn : area.segments())
|
||||
segments.reserve(area.segments.size());
|
||||
for (AreaEffectSimulation::MineSegment segmentIn : area.segments)
|
||||
{
|
||||
Database::AesMineAreaSegment segmentOut;
|
||||
segmentOut.startPosition = QPointF(segmentIn.positionStart().lon(),
|
||||
segmentIn.positionStart().lat());
|
||||
segmentOut.endPosition = QPointF(segmentIn.positionEnd().lon(),
|
||||
segmentIn.positionEnd().lat());
|
||||
segmentOut.startPosition = QPointF(segmentIn.positionStart.lon,
|
||||
segmentIn.positionStart.lat);
|
||||
segmentOut.endPosition = QPointF(segmentIn.positionEnd.lon,
|
||||
segmentIn.positionEnd.lat);
|
||||
segments.append(segmentOut);
|
||||
}
|
||||
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::mineArea(segments, area.width(), area.density(), area.isCenterLine());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(area.effectStateId());
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::mineArea(segments, area.width, area.density, area.isCenterLine);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(area.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+39
-39
@@ -81,7 +81,7 @@ std::vector<LtsCoordWidget::LtsCoordWidget *> MineAreaEdit::coordWidgets() const
|
||||
void MineAreaEdit::retranslate()
|
||||
{
|
||||
translate(m_ui, m_aesItem, tr("Mine Area"));
|
||||
bool isReactivatable = m_dtc->mineArea(m_aesItem.id()).isReactivatable();
|
||||
bool isReactivatable = m_dtc->mineArea(m_aesItem.id).isReactivatable;
|
||||
m_ui->pbResetDusMines->setText(isReactivatable ? tr("Reset DUS Mines") : tr("Hide DUS Mines"));
|
||||
m_ui->pbResetDusMines->setToolTip(isReactivatable ? tr("Reset all DUS Mines matched to this Minearea") : tr("Hide all DUS Mines matched to this Minearea"));
|
||||
}
|
||||
@@ -105,24 +105,24 @@ void MineAreaEdit::enableUiElements(bool enable)
|
||||
m_ui->sbWidth->setEnabled(enable);
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
|
||||
const MineArea &ma = m_dtc->mineArea(m_aesItem.id());
|
||||
if (m_aesItem.id() > 0 &&
|
||||
(ma.isDus() || ma.isConcrete()) &&
|
||||
const MineArea &ma = m_dtc->mineArea(m_aesItem.id);
|
||||
if (m_aesItem.id > 0 &&
|
||||
(ma.isDus || ma.isConcrete) &&
|
||||
|
||||
LtsSessionData::hasOperatorRight(OperatorRights::MineAreasResetDusMines))
|
||||
m_ui->pbResetDusMines->setEnabled(isOnlyNameModifiable());
|
||||
else
|
||||
m_ui->pbResetDusMines->hide();
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->mineArea(m_aesItem.id());
|
||||
auto baseData = m_dtc->mineArea(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -193,10 +193,10 @@ bool MineAreaEdit::init(int aesItemId, bool copy,
|
||||
m_ui->cbDurationHours->setCurrentIndex(m_ui->cbDurationHours->findData(96));
|
||||
|
||||
if (strcmp(PROJECTBUILD, "guez") == 0)
|
||||
m_ui->cbLayingProcedure->addItem(tr("Artillery"), AesMaLayingProcedureType::LptArtillery);
|
||||
m_ui->cbLayingProcedure->addItem(tr("Artillery"), static_cast<int>(AesMaLayingProcedureType::LptArtillery));
|
||||
|
||||
m_ui->cbLayingProcedure->addItem(tr("Pioneer"), AesMaLayingProcedureType::LptPioneer);
|
||||
m_ui->cbLayingProcedure->setCurrentIndex(m_ui->cbLayingProcedure->findData(AesMaLayingProcedureType::LptPioneer));
|
||||
m_ui->cbLayingProcedure->addItem(tr("Pioneer"), static_cast<int>(AesMaLayingProcedureType::LptPioneer));
|
||||
m_ui->cbLayingProcedure->setCurrentIndex(m_ui->cbLayingProcedure->findData(static_cast<int>(AesMaLayingProcedureType::LptPioneer)));
|
||||
|
||||
m_ui->cbLayingMethod->addItem(tr("Open"), 0);
|
||||
m_ui->cbLayingMethod->addItem(tr("Covered"), 1);
|
||||
@@ -245,30 +245,30 @@ void MineAreaEdit::setData(const MineArea &data, bool copy)
|
||||
m_aesItem = data;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromUtf8(data.name().c_str()));
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(data.chargeStruct().chargeTypeId()));
|
||||
m_ui->sbDensity->setValue(data.density());
|
||||
m_ui->leIdentifier->setText(QString::fromUtf8(data.name.c_str()));
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(data.chargeStruct.chargeTypeId));
|
||||
m_ui->sbDensity->setValue(data.density);
|
||||
|
||||
double distance = qRound(1.0 / data.density());
|
||||
double distance = qRound(1.0 / data.density);
|
||||
if (distance == 8.0)
|
||||
distance = 7.5;
|
||||
const int densityIndex = m_ui->cbxDensity->findData(distance);
|
||||
if (densityIndex != -1)
|
||||
m_ui->cbxDensity->setCurrentIndex(densityIndex);
|
||||
else
|
||||
WARNING_LOG(m_logger) << "Got invalid density = " << data.density() << " / distance = " << distance;
|
||||
WARNING_LOG(m_logger) << "Got invalid density = " << data.density << " / distance = " << distance;
|
||||
|
||||
|
||||
const QJsonObject &propObj = QJsonDocument::fromJson(data.properties().c_str()).object();
|
||||
const QJsonObject &propObj = QJsonDocument::fromJson(data.properties.c_str()).object();
|
||||
const int refAesItemId = propObj.value(QStringLiteral("referencedAesItemId")).toInt(-1);
|
||||
int effectClusterChargeTypeId = 0;
|
||||
if (refAesItemId > 0)
|
||||
{
|
||||
const auto &effectCluster = m_aesDtc->effectCluster(refAesItemId);
|
||||
effectClusterChargeTypeId = (effectCluster.id() > 0) ? effectCluster.chargeStruct().chargeTypeId() : 0 ;
|
||||
effectClusterChargeTypeId = (effectCluster.id > 0) ? effectCluster.chargeStruct.chargeTypeId : 0 ;
|
||||
}
|
||||
|
||||
const bool showDensity = (effectClusterChargeTypeId != s_DM72ChargeTypeId);
|
||||
@@ -279,22 +279,22 @@ void MineAreaEdit::setData(const MineArea &data, bool copy)
|
||||
|
||||
|
||||
m_ui->sbWidth->setDecimals(0);
|
||||
m_ui->sbWidth->setValue(qRound(data.width()));
|
||||
m_ui->cbEffectMarkingInTa->setChecked(data.effectMarkingInTa());
|
||||
m_ui->sbWidth->setValue(qRound(data.width));
|
||||
m_ui->cbEffectMarkingInTa->setChecked(data.effectMarkingInTa);
|
||||
if (m_session->app() != LtsAppDescriptor::App::OC)
|
||||
m_ui->cbMineAreaInputMode->setCurrentIndex(m_ui->cbMineAreaInputMode->findData(data.isCenterLine()));
|
||||
m_ui->cbMineAreaInputMode->setCurrentIndex(m_ui->cbMineAreaInputMode->findData(data.isCenterLine));
|
||||
|
||||
QVector<QPointF> coords;
|
||||
MineSegment seg;
|
||||
coords.reserve(data.segments().size());
|
||||
for (const MineSegment &ms : data.segments())
|
||||
coords.reserve(data.segments.size());
|
||||
for (const MineSegment &ms : data.segments)
|
||||
{
|
||||
coords << QPointF(ms.positionStart().lon(), ms.positionStart().lat());
|
||||
coords << QPointF(ms.positionStart.lon, ms.positionStart.lat);
|
||||
seg = ms;
|
||||
}
|
||||
|
||||
if (coords.size() > 0)
|
||||
coords << QPointF(seg.positionEnd().lon(), seg.positionEnd().lat());
|
||||
coords << QPointF(seg.positionEnd.lon, seg.positionEnd.lat);
|
||||
|
||||
for (int i = 0; i < coords.size(); ++i)
|
||||
{
|
||||
@@ -304,13 +304,13 @@ void MineAreaEdit::setData(const MineArea &data, bool copy)
|
||||
w->setCoordinate(coords[i]);
|
||||
}
|
||||
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(data.effectStart().is_set() ? data.effectStart().get() : 0);
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(data.effectStart.has_value() ? data.effectStart.get() : 0);
|
||||
|
||||
double duration = data.effectDuration() / (1000 * 60 * 60);
|
||||
double duration = data.effectDuration / (1000 * 60 * 60);
|
||||
m_ui->cbDurationHours->setCurrentText(QString::number(duration));
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(data.partyId().is_set() ? data.partyId().get() : 0));
|
||||
m_ui->cbLayingProcedure->setCurrentIndex(m_ui->cbLayingProcedure->findData(static_cast<int>(data.layingProcedureType().underlying())));
|
||||
m_ui->cbLayingMethod->setCurrentIndex(m_ui->cbLayingMethod->findData(data.isLaidHidden() ? 1 : 0));
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(data.partyId.has_value() ? data.partyId.get() : 0));
|
||||
m_ui->cbLayingProcedure->setCurrentIndex(m_ui->cbLayingProcedure->findData(static_cast<int>(data.layingProcedureType)));
|
||||
m_ui->cbLayingMethod->setCurrentIndex(m_ui->cbLayingMethod->findData(data.isLaidHidden ? 1 : 0));
|
||||
}
|
||||
|
||||
|
||||
@@ -323,7 +323,7 @@ void MineAreaEdit::getPosition()
|
||||
double width = m_ui->sbWidth->value();
|
||||
|
||||
int maxSegments = m_segments;
|
||||
if (m_ui->cbLayingProcedure->currentData().toInt() == AesMaLayingProcedureType::LptArtillery)
|
||||
if (m_ui->cbLayingProcedure->currentData().toInt() == static_cast<int>(AesMaLayingProcedureType::LptArtillery))
|
||||
maxSegments = 1;
|
||||
|
||||
|
||||
@@ -370,7 +370,7 @@ bool MineAreaEdit::onResetDusMines()
|
||||
{
|
||||
return m_requestHelper->startSingleRequest([this]()
|
||||
{
|
||||
return m_ftc->mineResetRequest(MineResetRequest(m_aesItem.id(), dds::core::optional<int32_t>()), this);
|
||||
return m_ftc->mineResetRequest(MineResetRequest(m_aesItem.id, dds::core::optional<int32_t>()), this);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -402,10 +402,10 @@ bool MineAreaEdit::apply()
|
||||
return false;
|
||||
|
||||
const double distance = 500.0;
|
||||
const MineAreaModifyRequest req(m_aesItem.id(), name,
|
||||
LtsUtils::toOptional(effectStart),
|
||||
const MineAreaModifyRequest req(m_aesItem.id, name,
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
effectDuration,
|
||||
m_aesItem.effectSourceId(),
|
||||
m_aesItem.effectSourceId,
|
||||
density,
|
||||
width,
|
||||
{chargeTypeId,0,0},
|
||||
@@ -417,7 +417,7 @@ bool MineAreaEdit::apply()
|
||||
m_ui->cbEffectMarkingInTa->isChecked(),
|
||||
m_ui->cbMineAreaInputMode->currentData().toBool(),
|
||||
distance,
|
||||
LtsUtils::toOptional(0LL),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(0LL)),
|
||||
true
|
||||
);
|
||||
|
||||
@@ -429,7 +429,7 @@ bool MineAreaEdit::apply()
|
||||
|
||||
void MineAreaEdit::onLayingProcedureChanged()
|
||||
{
|
||||
const bool islptArtillery = m_ui->cbLayingProcedure->currentData().toInt() == AesMaLayingProcedureType::LptArtillery;
|
||||
const bool islptArtillery = m_ui->cbLayingProcedure->currentData().toInt() == static_cast<int>(AesMaLayingProcedureType::LptArtillery);
|
||||
if (islptArtillery)
|
||||
m_pdmGuiIfc->setChargeTypePropertyFilter(m_ui->cbChargeType, QStringLiteral("canBeThrown"), true);
|
||||
else
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <ProjectDataManagement/pdm_gui_plugin_interface.h>
|
||||
#include <ProjectDataManagement/pdm_data_plugin_interface.h>
|
||||
|
||||
@@ -28,7 +28,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddMineArea") : QStringLiteral("EditMineArea%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddMineArea") : QStringLiteral("EditMineArea%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_mine_area_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+1
-1
@@ -40,7 +40,7 @@ QVariant MineAreasModel::data(const QModelIndex &index, int role) const
|
||||
switch (index.column())
|
||||
{
|
||||
case ColWidth:
|
||||
return QLocale().toString(mine.width(), 'f', 2);
|
||||
return QLocale().toString(mine.width, 'f', 2);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
|
||||
+6
-6
@@ -47,20 +47,20 @@ bool CustomViewMineCorridor::init(const QModelIndex &idx)
|
||||
bool CustomViewMineCorridor::calculateIcon(const MineCorridor &corridor, const QColor &color)
|
||||
{
|
||||
QVector<Database::AesMineCorridorSegment> segments;
|
||||
segments.reserve(corridor.segments().size());
|
||||
segments.reserve(corridor.segments.size());
|
||||
int counter = 0;
|
||||
for (const Core::GeoPosition2D &segmentIn : corridor.segments())
|
||||
for (const Core::GeoPosition2D &segmentIn : corridor.segments)
|
||||
{
|
||||
Database::AesMineCorridorSegment segmentOut;
|
||||
segmentOut.position = QPointF(segmentIn.lon(), segmentIn.lat());
|
||||
segmentOut.mineCorridorId = corridor.id();
|
||||
segmentOut.position = QPointF(segmentIn.lon, segmentIn.lat);
|
||||
segmentOut.mineCorridorId = corridor.id;
|
||||
segmentOut.elementNumber = counter;
|
||||
segments.append(segmentOut);
|
||||
++counter;
|
||||
}
|
||||
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::mineCorridor(segments, corridor.width());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(corridor.effectStateId());
|
||||
QPolygonF poly = AreaEffectSimulation::Polygons::mineCorridor(segments, corridor.width);
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(corridor.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+14
-14
@@ -76,15 +76,15 @@ void MineCorridorEdit::enableUiElements(bool enable)
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->mineCorridor(m_aesItem.id());
|
||||
auto baseData = m_dtc->mineCorridor(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -133,14 +133,14 @@ void MineCorridorEdit::setData(const MineCorridor &aesItem, bool copy)
|
||||
m_aesItem = aesItem;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(aesItem.name()));
|
||||
m_ui->sbWidth->setValue(aesItem.width());
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(aesItem.effectStart().is_set() ? aesItem.effectStart().get() : 0);
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(aesItem.name));
|
||||
m_ui->sbWidth->setValue(aesItem.width);
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(aesItem.effectStart.has_value() ? aesItem.effectStart.get() : 0);
|
||||
|
||||
setCoordinates(aesItem.segments());
|
||||
setCoordinates(aesItem.segments);
|
||||
}
|
||||
|
||||
void MineCorridorEdit::getPolygon()
|
||||
@@ -184,16 +184,16 @@ bool MineCorridorEdit::apply()
|
||||
if (!checkSegementLengths(this))
|
||||
return false;
|
||||
|
||||
const MineCorridorModifyRequest req(m_aesItem.id(),
|
||||
const MineCorridorModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
1 * 60 * 1000,
|
||||
m_aesItem.effectSourceId(),
|
||||
m_aesItem.effectSourceId,
|
||||
width,
|
||||
getCoordinates(),
|
||||
LtsUtils::toOptional(effectStart),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
dds::core::optional<int32_t>(),
|
||||
dds::core::optional<int32_t>(),
|
||||
dds::core::optional<rti::core::int64>());
|
||||
dds::core::optional<int64_t>());
|
||||
|
||||
return m_requestHelper->startSingleRequest([this, req]()
|
||||
{
|
||||
|
||||
+2
-2
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_edit.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
|
||||
#include <AreaEffectSimulation/aes_ftc.h>
|
||||
|
||||
class QDoubleSpinBox;
|
||||
@@ -28,7 +28,7 @@ public:
|
||||
|
||||
QString dialogIdentifier() const override
|
||||
{
|
||||
return m_aesItem.id() <= 0 ? QStringLiteral("AddMineCorridor") : QStringLiteral("EditMineCorridor%1").arg(m_aesItem.id());
|
||||
return m_aesItem.id <= 0 ? QStringLiteral("AddMineCorridor") : QStringLiteral("EditMineCorridor%1").arg(m_aesItem.id);
|
||||
}
|
||||
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_gui_plugin.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_gui_plugin.h>
|
||||
#include "aes_mine_corridor_gui_plugin_interface.h"
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
|
||||
+2
-2
@@ -3,8 +3,8 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_itemlist.h>
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_itemlist.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace AreaEffectSimulation
|
||||
{
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AreaEffectSimulation/Base/aes_base_model.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
|
||||
|
||||
namespace LtsSession
|
||||
{
|
||||
|
||||
+3
-3
@@ -65,10 +65,10 @@ bool CustomViewBoobyTrap::init(const QModelIndex &idx)
|
||||
|
||||
bool CustomViewBoobyTrap::calculateIcon(const BoobyTrap &bt, const QColor &color)
|
||||
{
|
||||
QPointF impactPosition = QPointF(bt.impactPosition().lon(), bt.impactPosition().lat());
|
||||
const QPolygonF poly = Polygons::circle(impactPosition, bt.triggerRadius());
|
||||
QPointF impactPosition = QPointF(bt.impactPosition.lon, bt.impactPosition.lat);
|
||||
const QPolygonF poly = Polygons::circle(impactPosition, bt.triggerRadius);
|
||||
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(bt.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(bt.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+7
-7
@@ -66,16 +66,16 @@ bool CustomViewOffRouteMine::init(const QModelIndex &idx)
|
||||
bool CustomViewOffRouteMine::calculateIcon(const OffRouteMine &orm, const QColor &color)
|
||||
{
|
||||
Database::AesOffRouteMine ormOut;
|
||||
ormOut.id = orm.id();
|
||||
ormOut.chargeTypeId = orm.chargeStruct().chargeTypeId();
|
||||
ormOut.effectStart = QDateTime::fromMSecsSinceEpoch(orm.effectStart().is_set() ? orm.effectStart().get() : 0);
|
||||
ormOut.impactPosition = QPointF(orm.area().cornerBottomLeft().lon(), orm.area().cornerBottomLeft().lat());
|
||||
if (orm.impactRadius().is_set())
|
||||
ormOut.impactRadius = orm.impactRadius().get();
|
||||
ormOut.id = orm.id;
|
||||
ormOut.chargeTypeId = orm.chargeStruct.chargeTypeId;
|
||||
ormOut.effectStart = QDateTime::fromMSecsSinceEpoch(orm.effectStart.has_value() ? orm.effectStart.get() : 0);
|
||||
ormOut.impactPosition = QPointF(orm.area.cornerBottomLeft.lon, orm.area.cornerBottomLeft.lat);
|
||||
if (orm.impactRadius.has_value())
|
||||
ormOut.impactRadius = orm.impactRadius.get();
|
||||
|
||||
const QPolygonF poly = AreaEffectSimulation::Polygons::offRouteMineArea(ormOut);
|
||||
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(orm.effectStateId());
|
||||
Qt::BrushStyle bStyle = PixmapLabel::checkForBrushStyle(orm.effectStateId);
|
||||
const auto pix = Polygons::pixmapFromPolygon(PixmapLabel::geographic2Utm(poly), color, ICON_RESOLUTION, bStyle);
|
||||
m_ui->lblIcon->setPixmap(pix);
|
||||
|
||||
|
||||
+4
-4
@@ -4,7 +4,7 @@
|
||||
#include "aes_booby_trap_info.h"
|
||||
#include "ui_aes_booby_trap_info.h"
|
||||
|
||||
#include <AreaEffectSimulation/Base/InfoView/aes_base_info.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/InfoView/aes_base_info.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <LtsCoordTrans/lts_coord_trans.h>
|
||||
#include <QtCore/QDateTime>
|
||||
@@ -33,9 +33,9 @@ bool BoobyTrapInfo::setData(const BoobyTrap *item)
|
||||
{
|
||||
m_ui->wBaseData->setData(item);
|
||||
|
||||
m_ui->lblImpactRadius->setText(QString::number(item->impactRadius()));
|
||||
m_ui->lblTriggerRadius->setText(QString::number(item->triggerRadius()));
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->impactPosition().lon(), item->impactPosition().lat()));
|
||||
m_ui->lblImpactRadius->setText(QString::number(item->impactRadius));
|
||||
m_ui->lblTriggerRadius->setText(QString::number(item->triggerRadius));
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->impactPosition.lon, item->impactPosition.lat));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@
|
||||
#include "aes_off_route_mine_info.h"
|
||||
#include "ui_aes_off_route_mine_info.h"
|
||||
|
||||
#include <AreaEffectSimulation/Base/InfoView/aes_base_info.h>
|
||||
#include <Plugins/AreaEffectSimulation/Gui/Base/InfoView/aes_base_info.h>
|
||||
#include <LtsSession/lts_session.h>
|
||||
#include <LtsCoordTrans/lts_coord_trans.h>
|
||||
#include <QtCore/QDateTime>
|
||||
@@ -34,7 +34,7 @@ bool OffRouteMineInfo::setData(const OffRouteMine *item)
|
||||
m_ui->wBaseData->setData(item);
|
||||
|
||||
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->area().cornerBottomLeft().lon(), item->area().cornerBottomLeft().lat()));
|
||||
m_ui->lblImpactPosition->setText(LtsCoordTrans::mgrsFromGeographic(item->area.cornerBottomLeft.lon, item->area.cornerBottomLeft.lat));
|
||||
return true;
|
||||
}
|
||||
void OffRouteMineInfo::init(LtsSession::LtsSession *session)
|
||||
|
||||
+23
-23
@@ -126,15 +126,15 @@ void BoobyTrapEdit::enableUiElements(bool enable)
|
||||
m_ui->leIdentifier->setEnabled(enable || isOnlyNameModifiable());
|
||||
|
||||
m_ui->pbClear->setEnabled(enable);
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsExpired)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsExpired)
|
||||
{
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name()));
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(m_aesItem.name));
|
||||
__unchange__();
|
||||
}
|
||||
if (m_aesItem.effectStateId() == AesEffectState::EsActivated)
|
||||
if (m_aesItem.effectStateId == AesEffectState::EsActivated)
|
||||
{
|
||||
QString name = m_ui->leIdentifier->text();
|
||||
auto baseData = m_dtc->boobyTrap(m_aesItem.id());
|
||||
auto baseData = m_dtc->boobyTrap(m_aesItem.id);
|
||||
setData(baseData, false);
|
||||
__unchange__();
|
||||
if (name != m_ui->leIdentifier->text())
|
||||
@@ -224,29 +224,29 @@ void BoobyTrapEdit::setData(const BoobyTrap &bt, bool copy)
|
||||
m_aesItem = bt;
|
||||
if (copy)
|
||||
{
|
||||
m_aesItem.id(0);
|
||||
m_aesItem.effectStateId(AreaEffectSimulation::AesEffectState::get_default());
|
||||
m_aesItem.id = 0;
|
||||
m_aesItem.effectStateId = AreaEffectSimulation::AesEffectState::EsUnknown;
|
||||
}
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(bt.name()));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(bt.effectStart().is_set() ? bt.effectStart().get() : 0);
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(bt.chargeStruct().chargeTypeId()));
|
||||
s_lastChargeTypeBoobyTrap = bt.chargeStruct().chargeTypeId();
|
||||
m_ui->sbDurationHours->setValue(bt.effectDuration() / 1000 / 60/ 60);
|
||||
m_ui->sbTriggerRadius->setValue(bt.triggerRadius());
|
||||
m_ui->sbImpactRadius->setValue(bt.impactRadius());
|
||||
m_ui->leIdentifier->setText(QString::fromStdString(bt.name));
|
||||
m_ui->dteEffectStart->setMsecsSinceEpoch(bt.effectStart.has_value() ? bt.effectStart.get() : 0);
|
||||
m_ui->cbChargeType->setCurrentIndex(m_ui->cbChargeType->findData(bt.chargeStruct.chargeTypeId));
|
||||
s_lastChargeTypeBoobyTrap = bt.chargeStruct.chargeTypeId;
|
||||
m_ui->sbDurationHours->setValue(bt.effectDuration / 1000 / 60/ 60);
|
||||
m_ui->sbTriggerRadius->setValue(bt.triggerRadius);
|
||||
m_ui->sbImpactRadius->setValue(bt.impactRadius);
|
||||
|
||||
if (bt.rotationAngle().is_set())
|
||||
if (bt.rotationAngle.has_value())
|
||||
{
|
||||
|
||||
m_ui->rotationAngleEdit->setValue(bt.rotationAngle().get(), LtsAngleEditBase::AngleUnitType::Deg);
|
||||
m_ui->rotationAngleEdit->setValue(bt.rotationAngle.get(), LtsAngleEditBase::AngleUnitType::Deg);
|
||||
}
|
||||
|
||||
if (bt.centralAngle().is_set())
|
||||
m_ui->sbCentralAngle->setValue(bt.centralAngle().get());
|
||||
if (bt.centralAngle.has_value())
|
||||
m_ui->sbCentralAngle->setValue(bt.centralAngle.get());
|
||||
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(bt.partyId().is_set() ? bt.partyId().get() : 0));
|
||||
m_ui->cbParty->setCurrentIndex(m_ui->cbParty->findData(bt.partyId.has_value() ? bt.partyId.get() : 0));
|
||||
|
||||
QPointF impactPosition(bt.impactPosition().lon(), bt.impactPosition().lat());
|
||||
QPointF impactPosition(bt.impactPosition.lon, bt.impactPosition.lat);
|
||||
if (!impactPosition.isNull())
|
||||
m_ui->positionEdit->setCoordinate(impactPosition);
|
||||
}
|
||||
@@ -424,7 +424,7 @@ bool BoobyTrapEdit::apply()
|
||||
QPointF p(m_ui->positionEdit->coordinate());
|
||||
const Core::GeoPosition2D pos(p.x(), p.y());
|
||||
|
||||
BoobyTrapModifyRequest req(m_aesItem.id(),
|
||||
BoobyTrapModifyRequest req(m_aesItem.id,
|
||||
name,
|
||||
duration,
|
||||
chargeType,
|
||||
@@ -433,7 +433,7 @@ bool BoobyTrapEdit::apply()
|
||||
triggerRadius,
|
||||
dds::core::optional<double>(),
|
||||
dds::core::optional<double>(),
|
||||
LtsUtils::toOptional(effectStart),
|
||||
LtsUtils::toOptional(static_cast<int64_t>(effectStart)),
|
||||
LtsUtils::toOptional(partyId)
|
||||
);
|
||||
|
||||
@@ -443,9 +443,9 @@ bool BoobyTrapEdit::apply()
|
||||
double rotValue = m_ui->rotationAngleEdit->getAngleConverted(m_ui->rotationAngleEdit->getAngle(),
|
||||
LtsAngleEditBase::AngleUnitType::Deg,
|
||||
m_ui->rotationAngleEdit->getAngleCurrentUnit());
|
||||
req.rotationAngle().set(rotValue);
|
||||
req.rotationAngle.set(rotValue);
|
||||
|
||||
req.centralAngle().set(m_ui->sbCentralAngle->value());
|
||||
req.centralAngle.set(m_ui->sbCentralAngle->value());
|
||||
}
|
||||
|
||||
m_requestHelper->addRequest([this,req]()
|
||||
|
||||
Loaded 100 of 1718 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user