#pragma once #include #include #include #include #include #include #include "LogViewTelegram.hpp" namespace N_LogView { class ParticipantModel final : public QAbstractTableModel { Q_OBJECT public: using QAbstractTableModel::QAbstractTableModel; int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; void clearParticipants(); bool addUpdateParticipants(const QVector &eqIds, const QVector &issis, const QVector &numberOfTelegrams); protected: void updateHeatMap() const; protected: QVector > m_particpants; QHash m_particpantMap; mutable QHash m_participantHeatmap; }; class TelegramModel final : public QAbstractTableModel { Q_OBJECT public: using QAbstractTableModel::QAbstractTableModel; int rowCount(const QModelIndex &parent = QModelIndex()) const override; int columnCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; void clearTelegrams(); void appendTelegrams(const QVector > &telegrams); void appendTelegram(const QSharedPointer &telegram); QSharedPointer telegram(int row) const; protected: QVector > m_telegrams; }; class TelegramProxyModel final : public QSortFilterProxyModel { Q_OBJECT public: using QSortFilterProxyModel::QSortFilterProxyModel; void setFilterByEquipmentIds(bool bFilterByEquipmentIds); void setAllowedEquipmentIds(const std::set &allowedEquipmentIds); void setFilteredCentralTelegramIds(const std::set &filteredCentralTelegramIds); void setFilteredTetraTelegramIds(const std::set &filteredTetraTelegramIds); void setFilteredWlsTelegramIds(const std::set &filteredWlsTelegramIds); void setFilterCentralTelegrams(N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol direction, bool bFilter); void setFilterTetraTelegrams(N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol direction, bool bFilter); void setFilterTetraPDU(N_CoPrtCnv::CoPrtCnvRadioTelegram::E_PDU_Type pduType, bool bFilter); void setFilterWlsTelegrams(N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol direction, bool bFilter); void setFilterTetraLogin(bool bFilter); void setFilterTetraFragmented(bool bFilter); QSharedPointer telegram(int row) const; protected: bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; protected: std::set m_allowedEquipmentIds; std::set m_filteredCentralTelegramIds; std::set m_filteredTetraTelegramIds; std::set m_filteredWlsTelegramIds; bool m_bFilterByEquipmentIds = false; bool m_bFilterLoginTelegrams = false; bool m_bFilterFragmentedTelegrams = false; std::set m_filterCentralTelegrams; std::set m_filterTetraTelegrams; std::set m_filterWlsTelegrams; std::set m_filterTetraPDU; }; }