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.
64 lines
1.8 KiB
64 lines
1.8 KiB
#pragma once
|
|
|
|
#include <algorithm>
|
|
#include <limits>
|
|
|
|
#include <QAbstractTableModel>
|
|
#include <QCheckBox>
|
|
#include <QLabel>
|
|
#include <QPushButton>
|
|
#include <QTableView>
|
|
|
|
#include "tools/cabana/commands.h"
|
|
#include "tools/cabana/settings.h"
|
|
|
|
class FindSignalModel : public QAbstractTableModel {
|
|
public:
|
|
struct SearchSignal {
|
|
MessageId id = {};
|
|
uint64_t mono_time = 0;
|
|
cabana::Signal sig = {};
|
|
double value = 0.;
|
|
QStringList values;
|
|
};
|
|
|
|
FindSignalModel(QObject *parent) : QAbstractTableModel(parent) {}
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
|
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
|
int columnCount(const QModelIndex &parent = QModelIndex()) const override { return 3; }
|
|
int rowCount(const QModelIndex &parent = QModelIndex()) const override { return std::min(filtered_signals.size(), 300); }
|
|
void search(std::function<bool(double)> cmp);
|
|
void reset();
|
|
void undo();
|
|
|
|
QList<SearchSignal> filtered_signals;
|
|
QList<SearchSignal> initial_signals;
|
|
QList<QList<SearchSignal>> histories;
|
|
uint64_t last_time = std::numeric_limits<uint64_t>::max();
|
|
};
|
|
|
|
class FindSignalDlg : public QDialog {
|
|
Q_OBJECT
|
|
public:
|
|
FindSignalDlg(QWidget *parent);
|
|
|
|
signals:
|
|
void openMessage(const MessageId &id);
|
|
|
|
private:
|
|
void search();
|
|
void modelReset();
|
|
void setInitialSignals();
|
|
void customMenuRequested(const QPoint &pos);
|
|
|
|
QLineEdit *value1, *value2, *factor_edit, *offset_edit;
|
|
QLineEdit *bus_edit, *address_edit, *first_time_edit, *last_time_edit;
|
|
QComboBox *compare_cb;
|
|
QSpinBox *min_size, *max_size;
|
|
QCheckBox *litter_endian, *is_signed;
|
|
QPushButton *search_btn, *reset_btn, *undo_btn;
|
|
QGroupBox *properties_group, *message_group;
|
|
QTableView *view;
|
|
QLabel *to_label, *stats_label;
|
|
FindSignalModel *model;
|
|
};
|
|
|