/** * Handler for all Language HMI objects * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2015-09-03 */ #pragma once #include #include #include #include "dds_handler.h" #include "esm_convert_from_tab.h" #include "logger.h" namespace EffectShowManagement { class Initialization; class ObjectEffectShowActorRelocation; /** * @brief Handler for effect show actor relocations. * * (1)Fetches the gui-interactions for effect show actor relocations and * triggers data base administration accordingly.\n * (2)If a effect show actor relocation was created, the Training Area Base Proxy * will be triggered to send a relocation order to the effect show actor.\n * (3)If a effect show actor was deleted, the Training Area Base Proxy will be * triggered to send a retract order to the effect show actor.\n * (4)Receives the confirmation from the effect show actor via Training Area Base * Proxy for relocation order.\n * (5)Triggers the update of the data base with the new confirmation.\n * (6)If the relocation order is completed, the status will be provided for the * dialog for 1min. After that the relocation order will be removed.\n */ class HandlerEffectShowActorRelocation : public QObject , protected Interface::Fts::EffectShowActorRelocationModifyRequestHandler , protected Interface::Fts::EffectShowActorRelocationRemoveRequestHandler { Q_OBJECT public: explicit HandlerEffectShowActorRelocation(Initialization *mainHandler, QObject *parent = nullptr); ~HandlerEffectShowActorRelocation(); /** * @brief Update of member variables with data base entries after start. */ bool init(); /** * @brief Updates the handler with the order confirmation from effect show actor * @param[in] orderConfirmation Order confirmation from effect show actor */ void relocationOrderConfirmationReceived(const ConvertFromTab::OrderConfirmation_t &orderConfirmation); private: void onEffectShowActorRelocationModifyRequest(const rti::core::SampleIdentity &cookie, const EffectShowActorRelocation &request) override final; Core::FunctionReplyObject effectShowActorRelocationModifyRequest(const EffectShowActorRelocation &request); Core::FunctionReplyObject effectShowActorRelocationCreateRequest(const EffectShowActorRelocation &request); void onEffectShowActorRelocationRemoveRequest(const rti::core::SampleIdentity &cookie, const Core::RemoveElementRequest &request) override final; private: QMap m_effectShowActorRelocationObjMap; struct Completed_t { qint64 timestamp; int id; }; QQueue m_completed; // IDs and timestamp of the completed relocations Initialization *m_mainHandler; NGL::INGLLogger &m_logger; }; }