/** * @RDE_HEADER@ * Model for TlnInfo Table * $Id$ * $HeadURL$ * $Author$ * Created by Astrid Mueller, SGAS, 2017-07-10 */ #pragma once #include #include #include #include namespace ParticipantManagement { struct ParticipantInfo { qint64 biteSampleTime = 0; qint64 positionSampleTime = 0; ProjectDataManagement::VulnerabilityState vulnerabilityState; ParticipantManagement::TypeClass typeClass; int participantId = 0; int partyId = 0; int equipmentNumber = 0; QString positionString; QString designator; QString tacticalIdentifier; QString biteResult; bool isManipulated = false; bool isOutdated = false; int id() const { return participantId; } }; // -------------------------------------------------------- // ParticipantInfoTableModel // -------------------------------------------------------- class ParticipantInfoTableModel final : public LtsWidgets::LtsAbstractTableModel { Q_OBJECT public: enum Columns { EquipmentNumber, TacticalStatus, Designator, TacticalIdentifier, Position, BiteResult }; explicit ParticipantInfoTableModel(QObject *parent = nullptr); ~ParticipantInfoTableModel(); bool initModel(LtsSession::LtsSession *session, const std::shared_ptr &ppmDtc, bool bWithPositionandBiteResult); QVariant data(const QModelIndex &index, int role) const override; bool removeItems(const QVector &selectedIds); void initializeDataView(); public Q_SLOTS: void updateDataView(const QSet &participantIds); protected Q_SLOTS: void onParticipantChanged(const ParticipantManagement::DynamicParticipantData &data, DataModification modType); void onPositionChanged(const ParticipantManagement::ParticipantPosition &position, DataModification modType); void onBiteChanged(const ParticipantManagement::Bite &bite, DataModification modType); void onPartitionTimeChanged(qint64 newPartitionTime); void onPartyChanged(const ParticipantManagement::Party &party, DataModification modType); void onTimeoutCheck(); private: ParticipantInfo setInfoData(const ParticipantManagement::Participant &part) const; void fillParticipantContent(ParticipantInfo &info, const DynamicParticipantData &data) const; void fillParticipantContent(ParticipantInfo &info, const Participant &part) const; void updatePosition(ParticipantInfo &info, const ParticipantManagement::ParticipantPosition &position) const; bool isOutdated(qint64 sampleTime) const; QString biteStringFromBite(const ParticipantManagement::Bite &bite) const; static QString vulnerabilityStateString(const ParticipantInfo &data); LtsSession::LtsSession *m_session; std::shared_ptr m_ppmDtc; std::shared_ptr m_ppmGuiCbxIfc; qint64 m_partitionTime; QTimer *m_timeoutCheckTimer; QHash m_partyIcons; bool m_bWithPositionandBiteResult; NGL::INGLLogger &m_logger; }; } //namespace ParticipantManagement