#pragma once #include #include #include #include #include #include namespace Ui { class OperatingCondition; } namespace SituationMap { class ForeignGuiInterface; } namespace EffectShowClient { class SmokeState; class SafetyConfirmationWidget; class OperatingCondition : public LtsWidgets::LtsDialog, protected EffectShowClient::Interface::Ftc::SendAmmunitionReplyHandler, protected EffectShowClient::Interface::Ftc::SendReadinessReplyHandler { Q_OBJECT public: explicit OperatingCondition(QWidget* parent = nullptr); ~OperatingCondition(); bool init(const std::shared_ptr& dtc, const std::shared_ptr& ftc); private: NGL::INGLLogger& m_logger; void retranslate() override; void onSendAmmunitionReply(const Core::FunctionReplyObject& replyObject) override { m_requestHelper->requestReply(replyObject); } void onSendReadinessReply(const Core::FunctionReplyObject& replyObject) override { m_requestHelper->requestReply(replyObject); } int getSmokeCount(); private Q_SLOTS: void onMeteoNearVehicleChanged(const EffectShowClient::MeteoNearVehicle& data, DataModification modType); void onOperatingConditionEntityChanged(const EffectShowClient::OperatingConditionEntity& data, DataModification modType); void onFiringExplosionEntityChanged(const EffectShowClient::FiringExplosionEntity& data, DataModification modType); void onFiringSmokeEntityChanged(const EffectShowClient::FiringSmokeEntity& data, DataModification modType); void onSafetyConfirmationDisplay(); bool onSendRevokeReadiness(); bool onSendConfirmReadiness(); bool onSendAmmunition(); private: struct BatteryVoltage_t { double redBoundary = 5; double yellowBoundary = 15; double greenMaximum = 25; double maximumValue = 100; }; void setBatteryVoltageConstraints(double redBoundary, double yellowBoundary, double greenMaximum); void setBatteryVoltage(double batteryVoltage); void onMeteoTimeout(); private: std::shared_ptr m_dtc; std::shared_ptr m_ftc; EffectShowClient::OperatingConditionEntity m_lastState; EffectShowClient::SafetyConfirmation_e m_safetyConfirmation; int m_meteoTimerTimeout; QTimer* m_meteoTimer; SmokeState* m_smokeState; SafetyConfirmationWidget* m_safetyConfirmationWidget; Ui::OperatingCondition* m_ui; LtsUtils::RequestHelper* m_requestHelper; BatteryVoltage_t m_batteryVoltage; }; } // namespace EffectShowClient