diff --git a/include/alarmEventDataView.h b/include/alarmEventDataView.h index a25387a..f98035c 100644 --- a/include/alarmEventDataView.h +++ b/include/alarmEventDataView.h @@ -54,6 +54,7 @@ public: explicit AlarmEventDataModel(QObject* parent = nullptr); ~AlarmEventDataModel(); + //QAbstractTableModel接口实现 QModelIndex index(int row, int column, const QModelIndex& parent) const override; QVariant data(const QModelIndex& index, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, int role) const override; @@ -62,7 +63,10 @@ public: int columnCount(const QModelIndex& parent = QModelIndex()) const override; Qt::ItemFlags flags(const QModelIndex& index) const override; + //自定义功能函数 const QVector headerData() const {return m_headerData;} + void setMaxRealTimeEvents(int value) {m_maxRealTimeEvents = value;} + const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;} private: void iniHeaderData(); @@ -72,6 +76,35 @@ private: QVector m_displayEvents; QVector m_headerData; PaginationInfo m_paginationInfo; + + int m_maxRealTimeEvents; +}; + +class AlarmEventDataFilter +{ +public: + AlarmEventDataFilter(); + + void setTimeRange(const QDateTime& start, const QDateTime& end) {m_startTime = start; m_endTime = end;} + void setStationFilter(const QString& station) {m_station = station;} + void setBayFilter(const QString& bay) {m_bay = bay;} + void setTypeFilter(int type) {m_type = type;} + void setSeverityFilter(const QString& severity) {m_severity = severity;} + void setDescriptionFilter(const QString& description) {m_description = description;} + void setConfirmStatusFilter(int status) {m_status = status;} + + bool matches(const EventData& event); + void clear(); + +private: + QDateTime m_startTime; + QDateTime m_endTime; + QString m_station; + QString m_bay; + int m_type; + QString m_severity; + QString m_description; + int m_status; }; class AlarmEventDataDelegate : public QStyledItemDelegate diff --git a/include/alarmEventGlobal.h b/include/alarmEventGlobal.h index 86b01f8..8483896 100644 --- a/include/alarmEventGlobal.h +++ b/include/alarmEventGlobal.h @@ -4,7 +4,7 @@ #include #include -enum MainDialogMode +enum AlarmDataMode { RealTime = 0, Historical diff --git a/include/alarmEventMainDialog.h b/include/alarmEventMainDialog.h index 7d99e04..161d2f7 100644 --- a/include/alarmEventMainDialog.h +++ b/include/alarmEventMainDialog.h @@ -18,7 +18,7 @@ public: AlarmEventMainDialog(QWidget *parent = nullptr); ~AlarmEventMainDialog(); - void setMode(MainDialogMode mode); + void setMode(AlarmDataMode mode); signals: void sgl_hide(); @@ -31,7 +31,7 @@ public slots: private: Ui::alarmEventMainDialog* ui; - MainDialogMode m_mode; + AlarmDataMode m_mode; }; diff --git a/source/alarmEventDataView.cpp b/source/alarmEventDataView.cpp index 0166167..07db7a5 100644 --- a/source/alarmEventDataView.cpp +++ b/source/alarmEventDataView.cpp @@ -134,13 +134,65 @@ void AlarmEventDataModel::iniHeaderData() void AlarmEventDataModel::updateCurPageData() { + beginResetModel(); + m_displayEvents.clear(); + endResetModel(); } void AlarmEventDataModel::updateTotalCount() {} + +///////------AlarmEventDataFilter----- +AlarmEventDataFilter::AlarmEventDataFilter() +{ + m_type = -1; + m_status = -1; +} + +bool AlarmEventDataFilter::matches(const EventData& event) +{ + QDateTime eventTime = QDateTime::fromMSecsSinceEpoch(event.timestamp); + if(m_startTime.isValid() && eventTime < m_startTime) + return false; + if(m_endTime.isValid() && eventTime > m_endTime) + return false; + + if(!m_station.isEmpty() && event.stationName != m_station) + return false; + + if(!m_bay.isEmpty() && event.bayName != m_bay) + return false; + + if(event.type != m_type) + return false; + + if(!m_severity.isEmpty() && event.severity != m_severity) + return false; + + if(!m_description.isEmpty() && event.description != m_description) + return false; + + if(event.status != m_status) + return false; + + return true; +} + +void AlarmEventDataFilter::clear() +{ + m_startTime = QDateTime(); + m_endTime = QDateTime(); + m_station.clear(); + m_bay.clear(); + m_type = -1; + m_severity.clear(); + m_description.clear(); + m_status = -1; +} + ///////------AlarmEventDataDelegate----- AlarmEventDataDelegate::AlarmEventDataDelegate(QTableView* view, QObject* parent) : QStyledItemDelegate(parent) @@ -183,6 +235,7 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent) m_tableView = new QTableView(this); m_tableView->verticalHeader()->setVisible(false); m_tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_tableView->setSelectionBehavior(QAbstractItemView::SelectRows); m_tableView->setShowGrid(false); //m_tableView->setStyleSheet("QHeaderView{background-color: rgb(40, 40, 40);} QHeaderView::section{background-color:transparent;}"); diff --git a/source/alarmEventMainDialog.cpp b/source/alarmEventMainDialog.cpp index b9f50a3..e95d5f0 100644 --- a/source/alarmEventMainDialog.cpp +++ b/source/alarmEventMainDialog.cpp @@ -23,7 +23,7 @@ void AlarmEventMainDialog::showEvent(QShowEvent* event) QDialog::showEvent(event); } -void AlarmEventMainDialog::setMode(MainDialogMode mode) +void AlarmEventMainDialog::setMode(AlarmDataMode mode) { if(mode == RealTime) {