#ifndef CANFRAMEMODEL_H #define CANFRAMEMODEL_H #include #include #include #include #include #include "can_structs.h" #include "dbchandler.h" class CANFrameModel: public QAbstractTableModel { Q_OBJECT public: CANFrameModel(QObject *parent = 0); int rowCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; int columnCount(const QModelIndex &) const; int totalFrameCount(); void sendRefresh(); void sendRefresh(int); void sendBulkRefresh(int); void clearFrames(); void setDBCHandler(DBCHandler *); void setInterpetMode(bool); void setOverwriteMode(bool); void setHexMode(bool); void setFilterState(int ID, bool state); void setAllFilters(bool state); void setSecondsMode(bool); void loadFilterFile(QString filename); void saveFilterFile(QString filename); void normalizeTiming(); void recalcOverwrite(); bool needsFilterRefresh(); void insertFrames(const QVector &newFrames); int getIndexFromTimeID(int ID, double timestamp); const QVector *getListReference() const; //thou shalt not modify these frames externally! const QVector *getFilteredListReference() const; //Thus saith the Lord, NO. const QMap *getFiltersReference() const; //this neither public slots: void addFrame(CANFrame&, bool); signals: void updatedFiltersList(); private: QVector frames; QVector filteredFrames; QMap filters; DBCHandler *dbcHandler; QMutex mutex; bool interpretFrames; //should we use the dbcHandler? bool overwriteDups; //should we display all frames or only the newest for each ID? bool useHexMode; bool timeSeconds; bool needFilterRefresh; uint64_t timeOffset; int lastUpdateNumFrames; }; #endif // CANFRAMEMODEL_H