#pragma once #include "esc_order_model.h" #include #include #include #include #include #include #include namespace Ui { class FiringSmoke; } namespace SituationMap { class ForeignGuiInterface; } namespace EffectShowClient { class SmokeState; class SafetyConfirmationWidget; class FiringSmoke : public LtsWidgets::LtsDialog, protected EffectShowClient::Interface::Ftc::OrderModifyReplyHandler, protected EffectShowClient::Interface::Ftc::ManuallySmokeReplyHandler { Q_OBJECT public: explicit FiringSmoke(QWidget* parent = nullptr); ~FiringSmoke(); bool init(const std::shared_ptr& dtc, const std::shared_ptr& ftc, LtsSession::LtsSession* session, bool freeForm = false); private: NGL::INGLLogger& m_logger; void retranslate() override; void onOrderModifyReply(const Core::FunctionReplyObject& replyObject) override { m_requestHelper->requestReply(replyObject); } void onManuallySmokeReply(const Core::FunctionReplyObject& replyObject) override { m_requestHelper->requestReply(replyObject); } private Q_SLOTS: void onFiringSmokeEntityChanged(const EffectShowClient::FiringSmokeEntity& data, DataModification modType); void onOperatingConditionEntityChanged(const EffectShowClient::OperatingConditionEntity& data, DataModification modType); void onMeteoDataChanged(const EffectShowClient::MeteoNearVehicle& data, DataModification modType); void onMeteoTimerTimeout(); void onApply(); void onAbort(); void onCarriedOut(); void onSafetyConfirmationDisplay(); void onFiringClearanceCountDown(); private: enum class EffectShowStatus_e : unsigned int { Apply, Abort, CarriedOut }; bool statusChangedForManuallyEffectShow(EffectShowStatus_e status); bool statusChangedForOrderedEffectShow(EffectShowStatus_e status); private: QTimer* m_timer; QTimer* m_meteoTimer; std::shared_ptr m_dtc; std::shared_ptr m_ftc; LtsSession::LtsSession* m_session; EffectShowClient::SmokeState* m_smokeState; SafetyConfirmationWidget* m_safetyConfirmationWidget; Ui::FiringSmoke* m_ui; LtsUtils::RequestHelper* m_requestHelper; EffectShowClient::FiringSmokeEntity m_oldEntity; EffectShowClient::SafetyConfirmation_e m_safetyConfirmation; int m_idOrder; qint64 m_firingClearanceCountDown; qint64 m_endOfFiringClearanceCountDown; }; } // namespace EffectShowClient