PowerMaster/include/alarmEventDataView.h

108 lines
2.5 KiB
C++

#ifndef ALARMEVENTDATAVIEW_H
#define ALARMEVENTDATAVIEW_H
#include "alarmEventGlobal.h"
#include <QWidget>
#include <QTableView>
#include <QAbstractTableModel>
#include <QStyledItemDelegate>
class AlarmEventDataModel : public QAbstractTableModel
{
Q_OBJECT
public:
enum Column
{
Index,
ReceiveTime,
SOETime,
Station,
Bay,
Description,
Type,
Severity,
Status,
Operation,
};
struct RowData
{
QVector<QVariant> values;
};
struct PaginationInfo
{
int totalEntries;
int entriesPerpage;
int totalPages;
int currentPage;
};
struct SectionData
{
int width = -1;
Column column;
QString text;
SectionData(QString t, int w, Column c)
:text(t)
,column(c)
,width(w){}
};
explicit AlarmEventDataModel(QObject* parent = nullptr);
~AlarmEventDataModel();
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;
//bool setData(const QModelIndex& index, const QVariant &value, int role = Qt::EditRole) override;
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
Qt::ItemFlags flags(const QModelIndex& index) const override;
const QVector<SectionData> headerData() const {return m_headerData;}
private:
void iniHeaderData();
void updateCurPageData(); //更新当前页的数据
void updateTotalCount(); //更新总记录数
QVector<EventData> m_displayEvents;
QVector<SectionData> m_headerData;
PaginationInfo m_paginationInfo;
};
class AlarmEventDataDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
explicit AlarmEventDataDelegate(QTableView* view, QObject* parent = nullptr);
~AlarmEventDataDelegate();
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
private:
QTableView* m_tableView;
};
class QVBoxLayout;
class AlarmEventDataView : public QWidget
{
Q_OBJECT
public:
AlarmEventDataView(QWidget* parent = nullptr);
~AlarmEventDataView();
private:
QTableView* m_tableView;
AlarmEventDataModel* m_tableModel;
AlarmEventDataDelegate* m_delegate;
QVBoxLayout* m_vLayout;
};
#endif