4#include <QLoggingCategory>
5#include "RecentModel.h"
6#include "ParameterApp.h"
8static Q_LOGGING_CATEGORY(log,
"App.Recent.Model")
10 : QAbstractTableModel(parent)
11 , m_pParameterApp(pPara)
16Qt::ItemFlags CRecentModel::flags(
const QModelIndex &index)
const
18 auto f = QAbstractTableModel::flags(index);
22 if(index.row() >= m_Items.count())
25 auto item = m_Items.at(index.row());
26 QFileInfo fi(item.szFile);
27 if(!item.szFile.isEmpty() && fi.exists())
28 f |= Qt::ItemIsEnabled;
30 f &= ~Qt::ItemIsEnabled;
34QVariant CRecentModel::headerData(
int section, Qt::Orientation orientation,
int role)
const
36 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
38 case Name:
return tr(
"Name");
39 case Protocol:
return tr(
"Protocol");
40 case Type:
return tr(
"Type");
41 case Time:
return tr(
"Time");
42 case ID:
return tr(
"ID");
43 case File:
return tr(
"File");
50int CRecentModel::rowCount(
const QModelIndex &parent)
const
55 return m_Items.count();
58int CRecentModel::columnCount(
const QModelIndex &parent)
const
63QVariant CRecentModel::data(
const QModelIndex &index,
int role)
const
68 if(index.row() >= m_Items.count())
71 auto item = m_Items.at(index.row());
75 switch (index.column()) {
79 return item.szProtocol;
83 return item.time.toString(QLocale::system().dateTimeFormat());
85 return item.szOperateId;
91 case Qt::DecorationRole:
92 if (index.column() == Name) {
98 return item.szDescription;
104bool CRecentModel::removeRows(
int row,
int count,
const QModelIndex &parent)
106 if (row < 0 || row + count > m_Items.count())
110 qCritical(log) <<
"The m_pDatabase is nullptr";
114 for (
int i = row + count - 1; i >= row; i--) {
115 m_pDatabase->DeleteRecent(m_Items.at(i).id);
122void CRecentModel::refresh(
int limit)
126 if(!m_pDatabase->
OpenDatabase(m_pParameterApp->m_pDatabase))
129 if(!m_pDatabase->IsOpen())
134 auto items = m_pDatabase->GetRecents(limit, 0);
135 foreach(
auto it, items) {
144 if (!index.isValid())
147 if(index.row() >= m_Items.count())
150 item = m_Items.at(index.row());
156 if(!m_pDatabase)
return false;
157 return m_pDatabase->AddRecent(item);
virtual bool OpenDatabase(CParameterDatabase *pPara=nullptr)
OpenDatabase