/** * @RDE_HEADER@ * MeteoDataManagement - Static Meteo Data Edit Dialog * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-10-17 */ #pragma once #include #include #include #include #include #include namespace Ui { class OperatingCondition; } namespace SituationMap { class ForeignGuiInterface; } namespace EffectShowClient { class SmokeState; class SafetyConfirmationWidget; /** * @brief Input mask for operating conditions. */ 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: 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: /** * @brief The BatteryVoltage_t struct */ struct BatteryVoltage_t { double redBoundary = 5; double yellowBoundary = 15; double greenMaximum = 25; double maximumValue = 100; }; /** * @brief Set the boundaries for red, yellow and green indications of the battery voltage. * @param[in] redBoundary In the range of 0..redBoundary the value is in the red area * @param[in] yellowBoundary In the range of redBoundary..yellowBoundary the value is in the yellow area * @param[in] greenMaximum In the range of yellowBoundary..greenMax the value is in the green area */ void setBatteryVoltageConstraints(double redBoundary, double yellowBoundary, double greenMaximum); /** * @brief Sets the data for the battery voltage indication at gui. * @param batteryVoltage The current battery voltage value */ 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; NGL::INGLLogger &m_logger; }; } //namespace EffectShowClient