/** * @RDE_HEADER@ * AreaEffectSimulation - Explosion Edit Dialog * $Id$ * $HeadURL$ * $Author$ * Created by Patric Karwat, SLSE, 2016-07-07 */ #pragma once #include #include #include #include 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 m_presets; QPointF m_previewCircleCenter; double m_previewCircleRadius; }; } //namespace AreaEffectSimulation