/** * @RDE_HEADER@ * TargetParticipantModel * $Id$ * $HeadURL$ * $Author$ * Created by Norbert Thoden, NLE, 2020-06-29 */ #pragma once #include "tgt_participant_handler.h" #include #include #include #include #include namespace TargetManagement { // Forward: class ParticipantHandler; // -------------------------------------------------------- // TargetParticipantModel // -------------------------------------------------------- class TargetParticipantModel final : public LtsWidgets::LtsAbstractTableModel { Q_OBJECT using BaseClass = LtsWidgets::LtsAbstractTableModel; public: enum Columns { Id, // linked participant: ShootbackTargetName, TargetPartipantId, TargetPartipantEquipmentNumber, TargetPartipantEquipmentType, Participant, // main/base config Position, ActivateLaserDesignation, ActivateLights, ActivatePopupAutomatic, HitsToKill, PermanentInstalledTarget, VisibleParticipants, }; explicit TargetParticipantModel(QObject *parent = nullptr); bool initModel(const std::shared_ptr &tgtDtc, const std::shared_ptr &ppmDtc, const std::shared_ptr &ppmGuiCbxIfc, LtsSession::LtsSession *session); QVariant headerData(int section, Qt::Orientation orientation, int role) const override final; QVariant data(const QModelIndex &, int) const override; const QHash &getParticipantHierarchies() const { return m_participantHandler->getParticipantHierarchies(); } const QHash &getParticipantDecorations() const { return m_participantHandler->getParticipantDecorations(); } QSet getAssociatedParticipantIds() const; const QVector &getData() const { return m_vecData; } Q_SIGNALS: void signalParticipantNamesChanged(); private Q_SLOTS: void onShootbackTargetChanged(const TargetManagement::ShootbackTarget &data, const DataModification modType); void updateColumnFilter(); private: friend class TargetParticipantProxyModel; std::shared_ptr m_tgt_dtc; ParticipantHandler *m_participantHandler{nullptr}; LtsSession::LtsSession *m_session{nullptr}; QIcon m_yes{QLatin1String("icon:yes.svg")}; QIcon m_no{QLatin1String("icon:no.svg")}; // column filter QSet m_usedActiveLaserDesignations; QSet m_usedActivateLights; QSet m_usedActivatePopupAutomatic; QSet m_usedHitsToKill; QSet m_usedPermanetTargetInstalled; LOGGER_T m_logger; }; // -------------------------------------------------------- // TargetParticipantProxyModel // -------------------------------------------------------- class TargetParticipantProxyModel : public LtsWidgets::LtsColumnFilterProxyModel { Q_OBJECT using BaseClass = LtsWidgets::LtsColumnFilterProxyModel; public: using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel; void setSourceModel(QAbstractItemModel *sourceModel) override; protected: bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override; protected: TargetParticipantModel *m_sourceModel{nullptr}; }; } //namespace TargetManagement