feat:完成历史事件的分页查看
This commit is contained in:
parent
ea9970230a
commit
9d82145e6d
|
|
@ -82,7 +82,7 @@ public:
|
||||||
,width(w){}
|
,width(w){}
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit AlarmEventDataModel(QObject* parent = nullptr);
|
explicit AlarmEventDataModel(AlarmDataMode mode, QObject* parent = nullptr);
|
||||||
~AlarmEventDataModel();
|
~AlarmEventDataModel();
|
||||||
|
|
||||||
//QAbstractTableModel接口实现
|
//QAbstractTableModel接口实现
|
||||||
|
|
@ -96,13 +96,17 @@ public:
|
||||||
|
|
||||||
//自定义功能函数
|
//自定义功能函数
|
||||||
const QVector<SectionData> headerData() const {return m_headerData;}
|
const QVector<SectionData> headerData() const {return m_headerData;}
|
||||||
void setMode(AlarmDataMode mode) {m_dataMode = mode;}
|
//void setMode(AlarmDataMode mode);
|
||||||
void setMaxRealTimeEvents(int value) {m_maxRealTimeEvents = value;}
|
void setMaxRealTimeEvents(int value);
|
||||||
const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;}
|
const int getMaxRealTimeEvents() const {return m_maxRealTimeEvents;}
|
||||||
void setFilter(const AlarmEventDataFilter& filter);
|
void setFilter(const AlarmEventDataFilter& filter);
|
||||||
void refresh();
|
void refresh();
|
||||||
|
|
||||||
//void setPageSize(int);
|
bool setCurrentPage(int);
|
||||||
|
void previousPage();
|
||||||
|
void nextPage();
|
||||||
|
void firstPage();
|
||||||
|
void lastPage();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onTimeoutSimulateData();
|
void onTimeoutSimulateData();
|
||||||
|
|
@ -173,10 +177,10 @@ class AlarmEventDataView : public QWidget
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AlarmEventDataView(QWidget* parent = nullptr);
|
AlarmEventDataView(AlarmDataMode mode, QWidget* parent = nullptr);
|
||||||
~AlarmEventDataView();
|
~AlarmEventDataView();
|
||||||
|
|
||||||
void setModelMode(AlarmDataMode, int maxRealTimeEvents = 5);
|
//void setModelMode(AlarmDataMode, int maxRealTimeEvents = 5);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void onBtnClicked_Confirm(const QModelIndex& index);
|
void onBtnClicked_Confirm(const QModelIndex& index);
|
||||||
|
|
|
||||||
|
|
@ -86,11 +86,21 @@ bool AlarmEventDataFilter::isEmpty()
|
||||||
|
|
||||||
|
|
||||||
///////------AlarmEventDataModel-----
|
///////------AlarmEventDataModel-----
|
||||||
AlarmEventDataModel::AlarmEventDataModel(QObject* parent)
|
AlarmEventDataModel::AlarmEventDataModel(AlarmDataMode mode, QObject* parent)
|
||||||
: QAbstractTableModel(parent)
|
: QAbstractTableModel(parent)
|
||||||
|
, m_dataMode(mode)
|
||||||
, m_maxRealTimeEvents(5)
|
, m_maxRealTimeEvents(5)
|
||||||
{
|
{
|
||||||
m_dataMode = Historical;
|
if(m_dataMode == RealTime) //创建几个“空事件”来初始化表格
|
||||||
|
{
|
||||||
|
for(int i = 0; i < m_maxRealTimeEvents; ++i)
|
||||||
|
{
|
||||||
|
EventData event;
|
||||||
|
event.id = ""; //空事件
|
||||||
|
m_displayEvents.append(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_paginationInfo.entriesPerPage = 100;
|
m_paginationInfo.entriesPerPage = 100;
|
||||||
m_paginationInfo.currentPage = 1;
|
m_paginationInfo.currentPage = 1;
|
||||||
m_paginationInfo.totalEntries = 0;
|
m_paginationInfo.totalEntries = 0;
|
||||||
|
|
@ -125,6 +135,8 @@ QVariant AlarmEventDataModel::data(const QModelIndex& index, int role) const
|
||||||
int col = index.column();
|
int col = index.column();
|
||||||
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row;
|
int globalRow = (m_paginationInfo.currentPage - 1) * m_paginationInfo.entriesPerPage + row;
|
||||||
const EventData& event = m_displayEvents.at(row);
|
const EventData& event = m_displayEvents.at(row);
|
||||||
|
if(event.id.isEmpty()) //无效事件
|
||||||
|
return QVariant();
|
||||||
//EventData event = m_displayEvents[row];
|
//EventData event = m_displayEvents[row];
|
||||||
|
|
||||||
switch (role)
|
switch (role)
|
||||||
|
|
@ -238,6 +250,45 @@ void AlarmEventDataModel::iniHeaderData()
|
||||||
m_headerData.emplace_back(SectionData("操作", 172, Operation));
|
m_headerData.emplace_back(SectionData("操作", 172, Operation));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*void AlarmEventDataModel::setMode(AlarmDataMode mode)
|
||||||
|
{
|
||||||
|
if(m_dataMode == mode)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_dataMode = mode;
|
||||||
|
if(mode == Historical)
|
||||||
|
{}
|
||||||
|
else
|
||||||
|
{}
|
||||||
|
}*/
|
||||||
|
|
||||||
|
void AlarmEventDataModel::setMaxRealTimeEvents(int count)
|
||||||
|
{
|
||||||
|
if(m_dataMode == Historical) //实时列表初始化表格
|
||||||
|
{
|
||||||
|
if(m_maxRealTimeEvents == count)
|
||||||
|
return;
|
||||||
|
else if(m_maxRealTimeEvents < count)
|
||||||
|
{
|
||||||
|
int DValue = count - m_maxRealTimeEvents;
|
||||||
|
for(int i = 0; i < DValue; ++i)
|
||||||
|
m_displayEvents.removeLast();
|
||||||
|
}
|
||||||
|
else if(m_maxRealTimeEvents > count)
|
||||||
|
{
|
||||||
|
int DValue = m_maxRealTimeEvents - count;
|
||||||
|
for(int i = 0; i < DValue; ++i)
|
||||||
|
{
|
||||||
|
EventData event;
|
||||||
|
event.id = ""; //空事件
|
||||||
|
m_displayEvents.append(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_maxRealTimeEvents = count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void AlarmEventDataModel::setFilter(const AlarmEventDataFilter& filter)
|
void AlarmEventDataModel::setFilter(const AlarmEventDataFilter& filter)
|
||||||
{
|
{
|
||||||
m_currentFilter = filter;
|
m_currentFilter = filter;
|
||||||
|
|
@ -358,7 +409,7 @@ void AlarmEventDataModel::onRealTimeEventReceived(const EventData& event)
|
||||||
if(m_displayEvents.size() >= m_maxRealTimeEvents)
|
if(m_displayEvents.size() >= m_maxRealTimeEvents)
|
||||||
m_displayEvents.removeLast();
|
m_displayEvents.removeLast();
|
||||||
|
|
||||||
//按照时间顺序排序(从小到大)
|
//按照时间顺序排序(从后到前)
|
||||||
int insertPosition = 0;
|
int insertPosition = 0;
|
||||||
for(; insertPosition < m_displayEvents.size(); ++insertPosition)
|
for(; insertPosition < m_displayEvents.size(); ++insertPosition)
|
||||||
{
|
{
|
||||||
|
|
@ -374,6 +425,52 @@ void AlarmEventDataModel::onRealTimeEventReceived(const EventData& event)
|
||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AlarmEventDataModel::setCurrentPage(int page)
|
||||||
|
{
|
||||||
|
if(m_paginationInfo.currentPage != page && page > 0 && page <= m_paginationInfo.totalPages)
|
||||||
|
{
|
||||||
|
m_paginationInfo.currentPage = page;
|
||||||
|
updateCurPageData();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventDataModel::previousPage()
|
||||||
|
{
|
||||||
|
if(m_paginationInfo.currentPage == 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int page = m_paginationInfo.currentPage;
|
||||||
|
setCurrentPage(--page);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventDataModel::nextPage()
|
||||||
|
{
|
||||||
|
if(m_paginationInfo.currentPage == m_paginationInfo.totalPages)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int page = m_paginationInfo.currentPage;
|
||||||
|
setCurrentPage(++page);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventDataModel::firstPage()
|
||||||
|
{
|
||||||
|
if(m_paginationInfo.currentPage == 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
setCurrentPage(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void AlarmEventDataModel::lastPage()
|
||||||
|
{
|
||||||
|
if(m_paginationInfo.currentPage == m_paginationInfo.totalPages)
|
||||||
|
return;
|
||||||
|
|
||||||
|
setCurrentPage(m_paginationInfo.totalPages);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///////------AlarmEventDataDelegate-----
|
///////------AlarmEventDataDelegate-----
|
||||||
AlarmEventDataDelegate::AlarmEventDataDelegate(QTableView* view, QObject* parent)
|
AlarmEventDataDelegate::AlarmEventDataDelegate(QTableView* view, QObject* parent)
|
||||||
|
|
@ -426,7 +523,9 @@ void AlarmEventDataDelegate::paint(QPainter* painter, const QStyleOptionViewItem
|
||||||
painter->restore();
|
painter->restore();
|
||||||
|
|
||||||
//绘制操作按钮
|
//绘制操作按钮
|
||||||
if(index.column() == m_tableView->model()->columnCount() - 1)
|
QModelIndex numIndex = m_tableView->model()->index(index.row(), 0);
|
||||||
|
QString number = numIndex.data(Qt::DisplayRole).toString();
|
||||||
|
if(!number.isEmpty() && index.column() == m_tableView->model()->columnCount() - 1)
|
||||||
{
|
{
|
||||||
int nMarginH = 10;
|
int nMarginH = 10;
|
||||||
int nMarginV = 5;
|
int nMarginV = 5;
|
||||||
|
|
@ -539,7 +638,7 @@ bool AlarmEventDataDelegate::editorEvent(QEvent* event, QAbstractItemModel* mode
|
||||||
|
|
||||||
|
|
||||||
///////------AlarmEventDataView-----
|
///////------AlarmEventDataView-----
|
||||||
AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
AlarmEventDataView::AlarmEventDataView(AlarmDataMode mode, QWidget* parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
m_tableView = new QTableView(this);
|
m_tableView = new QTableView(this);
|
||||||
|
|
@ -549,7 +648,7 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
||||||
m_tableView->setShowGrid(false);
|
m_tableView->setShowGrid(false);
|
||||||
//m_tableView->setStyleSheet("QHeaderView{background-color: rgb(40, 40, 40);} QHeaderView::section{background-color:transparent;}");
|
//m_tableView->setStyleSheet("QHeaderView{background-color: rgb(40, 40, 40);} QHeaderView::section{background-color:transparent;}");
|
||||||
|
|
||||||
m_tableModel = new AlarmEventDataModel(this);
|
m_tableModel = new AlarmEventDataModel(mode, this);
|
||||||
m_tableView->setModel(m_tableModel);
|
m_tableView->setModel(m_tableModel);
|
||||||
//设置表头
|
//设置表头
|
||||||
const QVector<AlarmEventDataModel::SectionData> headerData = m_tableModel->headerData();
|
const QVector<AlarmEventDataModel::SectionData> headerData = m_tableModel->headerData();
|
||||||
|
|
@ -576,7 +675,7 @@ AlarmEventDataView::AlarmEventDataView(QWidget* parent)
|
||||||
AlarmEventDataView::~AlarmEventDataView()
|
AlarmEventDataView::~AlarmEventDataView()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void AlarmEventDataView::setModelMode(AlarmDataMode mode, int maxRealTimeEvents)
|
/*void AlarmEventDataView::setModelMode(AlarmDataMode mode, int maxRealTimeEvents)
|
||||||
{
|
{
|
||||||
if(m_tableModel)
|
if(m_tableModel)
|
||||||
{
|
{
|
||||||
|
|
@ -584,7 +683,7 @@ void AlarmEventDataView::setModelMode(AlarmDataMode mode, int maxRealTimeEvents)
|
||||||
if(mode == RealTime)
|
if(mode == RealTime)
|
||||||
m_tableModel->setMaxRealTimeEvents(maxRealTimeEvents);
|
m_tableModel->setMaxRealTimeEvents(maxRealTimeEvents);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
void AlarmEventDataView::onBtnClicked_Confirm(const QModelIndex& index)
|
void AlarmEventDataView::onBtnClicked_Confirm(const QModelIndex& index)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,7 @@ AlarmEventRealTimeDock::AlarmEventRealTimeDock(QWidget* parent)
|
||||||
m_isInAnimation = false;
|
m_isInAnimation = false;
|
||||||
m_curState = "collapse";
|
m_curState = "collapse";
|
||||||
|
|
||||||
m_tableView = new AlarmEventDataView(this);
|
m_tableView = new AlarmEventDataView(RealTime, this);
|
||||||
m_tableView->setModelMode(RealTime);
|
|
||||||
ui->tableLayout->addWidget(m_tableView);
|
ui->tableLayout->addWidget(m_tableView);
|
||||||
|
|
||||||
m_animation = new QPropertyAnimation(this, "geometry");
|
m_animation = new QPropertyAnimation(this, "geometry");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue