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:
berrux-dev committed 2026-10-20 09:36:57 +02:00
1 parent 2b957d1edb
commit 598fc2560e
1718 files changed
+126739 -18495

No files matched your search

@@ -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));
}
@@ -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);
}
}
@@ -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);
}
@@ -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);
@@ -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
@@ -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);
}
@@ -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>
@@ -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"
@@ -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,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
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace AreaEffectSimulation
{
@@ -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);
@@ -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;
}
@@ -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,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);
@@ -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
@@ -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
{
@@ -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
@@ -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/
@@ -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
@@ -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);
@@ -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>
@@ -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;
@@ -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;
};
@@ -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();
@@ -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;
@@ -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));
@@ -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);
@@ -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);
@@ -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
@@ -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);
@@ -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"
@@ -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));
}
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace LtsSession
{
@@ -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);
@@ -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)
@@ -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
{
@@ -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();
@@ -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);
}
@@ -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 &gtc : 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,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); }
@@ -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
@@ -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);
@@ -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);
}
@@ -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);
@@ -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
@@ -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
{
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace LtsSession
{
@@ -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})
@@ -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);
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace AreaEffectSimulation
{
@@ -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)
@@ -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
@@ -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;
@@ -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();
}
}
@@ -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>
@@ -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))
@@ -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
@@ -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)
{
}
@@ -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
{
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace AreaEffectSimulation
{
@@ -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;
}
@@ -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>
@@ -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);
@@ -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>
@@ -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>
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace AreaEffectSimulation
{
@@ -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 &currentEffector : request.effectors())
for (EffectorData &currentEffector : 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 &currentEffector : request.effectors())
for (EffectorData &currentEffector : 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;
}
@@ -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);
@@ -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 &centerPoint, 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);
@@ -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);
@@ -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
@@ -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
{
@@ -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;
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace LtsSession
{
@@ -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);
@@ -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(),
@@ -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);
@@ -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
@@ -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"
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace AreaEffectSimulation
{
@@ -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);
@@ -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
@@ -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);
@@ -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
@@ -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
{
@@ -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;
}
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace LtsSession
{
@@ -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);
@@ -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]()
{
@@ -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);
@@ -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
@@ -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
{
@@ -3,7 +3,7 @@
#pragma once
#include <AreaEffectSimulation/Base/aes_base_model.h>
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_model.h>
namespace LtsSession
{
@@ -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);
@@ -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,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;
}
@@ -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)
@@ -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