You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							41 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							41 lines
						
					
					
						
							1.2 KiB
						
					
					
				| #pragma once
 | |
| 
 | |
| #include <QAbstractTableModel>
 | |
| #include <QTableView>
 | |
| 
 | |
| #include "tools/cabana/canmessages.h"
 | |
| 
 | |
| class MessageListModel : public QAbstractTableModel {
 | |
| Q_OBJECT
 | |
| 
 | |
| public:
 | |
|   MessageListModel(QObject *parent) : QAbstractTableModel(parent) {}
 | |
|   QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
 | |
|   int columnCount(const QModelIndex &parent = QModelIndex()) const override { return 5; }
 | |
|   QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
 | |
|   int rowCount(const QModelIndex &parent = QModelIndex()) const override { return msgs.size(); }
 | |
|   void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
 | |
|   void setFilterString(const QString &string);
 | |
|   void msgsReceived(const QHash<QString, CanData> *new_msgs = nullptr);
 | |
|   void sortMessages();
 | |
|   QStringList msgs;
 | |
| 
 | |
| private:
 | |
|   QString filter_str;
 | |
|   int sort_column = 0;
 | |
|   Qt::SortOrder sort_order = Qt::AscendingOrder;
 | |
| };
 | |
| 
 | |
| class MessagesWidget : public QWidget {
 | |
|   Q_OBJECT
 | |
| 
 | |
| public:
 | |
|   MessagesWidget(QWidget *parent);
 | |
| signals:
 | |
|   void msgSelectionChanged(const QString &message_id);
 | |
| 
 | |
| protected:
 | |
|   QTableView *table_widget;
 | |
|   QString current_msg_id;
 | |
|   MessageListModel *model;
 | |
| };
 | |
| 
 |