#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; }; }