115 lines
4.0 KiB
C++
115 lines
4.0 KiB
C++
/**
|
|
* @RDE_HEADER@
|
|
* some models for LogViewGui
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <QtCore/QAbstractTableModel>
|
|
#include <QtCore/QSharedPointer>
|
|
#include <QSortFilterProxyModel>
|
|
#include <set>
|
|
|
|
#include <CoPrtCnv/CoPrtCnvLogHeader.hpp>
|
|
#include <CoPrtCnv/CoPrtCnvRadioTelegram.hpp>
|
|
|
|
#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<int> &eqIds,
|
|
const QVector<int> &issis,
|
|
const QVector<int> &numberOfTelegrams);
|
|
protected:
|
|
void updateHeatMap() const;
|
|
protected:
|
|
// eqId , issi
|
|
QVector<QPair<int, int> > m_particpants;
|
|
// eqid, count telegrams
|
|
QHash<int, int> m_particpantMap;
|
|
// eqId, QColor for heatmap
|
|
mutable QHash<int, QColor> 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<QSharedPointer<LogViewTelegram> > &telegrams);
|
|
void appendTelegram(const QSharedPointer<LogViewTelegram> &telegram);
|
|
QSharedPointer<LogViewTelegram> telegram(int row) const;
|
|
protected:
|
|
QVector<QSharedPointer<LogViewTelegram> > m_telegrams;
|
|
};
|
|
|
|
class TelegramProxyModel final : public QSortFilterProxyModel
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
using QSortFilterProxyModel::QSortFilterProxyModel;
|
|
|
|
void setFilterByEquipmentIds(bool bFilterByEquipmentIds);
|
|
void setAllowedEquipmentIds(const std::set<int> &allowedEquipmentIds);
|
|
|
|
void setFilteredCentralTelegramIds(const std::set<int> &filteredCentralTelegramIds);
|
|
void setFilteredTetraTelegramIds(const std::set<int> &filteredTetraTelegramIds);
|
|
void setFilteredWlsTelegramIds(const std::set<int> &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<LogViewTelegram> 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<int> m_allowedEquipmentIds;
|
|
std::set<int> m_filteredCentralTelegramIds;
|
|
std::set<int> m_filteredTetraTelegramIds;
|
|
std::set<int> m_filteredWlsTelegramIds;
|
|
bool m_bFilterByEquipmentIds = false;
|
|
bool m_bFilterLoginTelegrams = false;
|
|
bool m_bFilterFragmentedTelegrams = false;
|
|
std::set<N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol> m_filterCentralTelegrams;
|
|
std::set<N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol> m_filterTetraTelegrams;
|
|
std::set<N_CoPrtCnv::CoPrtCnvLogHeader::E_CoPrtCnvProtocol> m_filterWlsTelegrams;
|
|
std::set<N_CoPrtCnv::CoPrtCnvRadioTelegram::E_PDU_Type> m_filterTetraPDU;
|
|
};
|
|
|
|
} // namespace N_LogView
|