Files
qt5-legatus-legacy/Lts/Plugins/AreaEffectSimulation/Gui/NContamination/aes_ncontamination_edit.h
T
2026-08-13 18:33:10 +02:00

92 lines
2.5 KiB
C++
Executable File

/**
* @RDE_HEADER@
* AreaEffectSimulation - Explosion Edit Dialog
* $Id$
* $HeadURL$
* $Author$
* Created by Patric Karwat, SLSE, 2016-07-07
*/
#pragma once
#include <Plugins/AreaEffectSimulation/Gui/Base/aes_base_edit.h>
#include <AreaEffectSimulation/aes_ftc.h>
#include <LtsWidgets/lts_angle_edit.h>
#include <ProjectDataManagement/pdm.hpp>
class QDoubleSpinBox;
namespace Ui
{
class NContaminationEdit;
}
namespace AreaEffectSimulation
{
class NContaminationEdit final
: public BaseEdit
, protected AreaEffectSimulation::Interface::Ftc::NContaminationModifyReplyHandler
{
Q_OBJECT
public:
explicit NContaminationEdit(const QString &menuGroup, QWidget *parent = nullptr);
~NContaminationEdit();
using LtsAngleEditBase = LtsWidgets::LtsAngleEdit;
QString dialogIdentifier() const override
{
return m_aesItem.id() <= 0 ? QStringLiteral("AddNContamination") : QStringLiteral("EditContamination%1").arg(m_aesItem.id());
}
bool init(int aesItemId, bool copy, LtsSession::LtsSession *session);
void onNContaminationModifyReply(const Core::FunctionReplyObject &replyObject) override final { onAesItemModifyReply(replyObject); }
private:
void retranslate() override;
static double s_minRadiusKm;
static double s_maxRadiusKm;
static double s_stepRadiusKm;
static double s_minBorderLengthInnerKm;
static double s_maxBorderLengthInnerKm;
static double s_stepBorderLengthInnerKm;
static double s_minBorderLengthOuterKm;
static double s_maxBorderLengthOuterKm;
static double s_stepBorderLengthOuterKm;
static double s_minSpanAngle;
static double s_maxSpanAngle;
static double s_minYield;
static double s_maxYield;
static double s_stepYield;
static int s_minDurationMinutes;
static int s_maxDurationMinutes;
static int s_stepDurationMinutes;
void setData(const NContamination &contamination, bool copy);
void enableUiElements(bool enable) override;
double spanAngle() const;
double rotatianAngle() const;
private Q_SLOTS:
void getPosition();
void onCircleData(const QPointF &position, double radius);
bool apply() override;
void setRadials(double direction, double spanAngle);
void onRadiusChanged(double radiusKm);
void onPresetChanged(int id);
void showPreviewObject() override;
void onWeatherChanged(int index);
private:
Ui::NContaminationEdit *m_ui;
QMap<int, ProjectDataManagement::NuclearPreset> m_presets;
QPointF m_previewCircleCenter;
double m_previewCircleRadius;
};
} //namespace AreaEffectSimulation