4#include <QLoggingCategory>
5#include "RecentModel.h"
6#include "ParameterApp.h"
7#include "ParameterGlobal.h"
9static Q_LOGGING_CATEGORY(log,
"App.Recent.Model")
11 : QAbstractTableModel(parent)
12 , m_pParameterApp(pPara)
17Qt::ItemFlags CRecentModel::flags(
const QModelIndex &index)
const
19 auto f = QAbstractTableModel::flags(index);
23 if(index.row() >= m_Items.count())
26 auto item = m_Items.at(index.row());
27 QString szFile = item.GetFile();
28 if(szFile.isEmpty()) {
34 if(m_pParameterApp->GetGlobalParameters()->GetSaveSettingsType()
35 == CParameterGlobal::SaveSettingsType::Local) {
38 bExist = m_pDatabase->HasFileContents(item);
42 f |= Qt::ItemIsEnabled;
44 f &= ~Qt::ItemIsEnabled;
48QVariant CRecentModel::headerData(
int section, Qt::Orientation orientation,
int role)
const
50 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
52 case Name:
return tr(
"Name");
53 case Protocol:
return tr(
"Protocol");
54 case Type:
return tr(
"Type");
55 case Time:
return tr(
"Time");
56 case ID:
return tr(
"ID");
57 case File:
return tr(
"File");
64int CRecentModel::rowCount(
const QModelIndex &parent)
const
69 return m_Items.count();
72int CRecentModel::columnCount(
const QModelIndex &parent)
const
77QVariant CRecentModel::data(
const QModelIndex &index,
int role)
const
82 if(index.row() >= m_Items.count())
85 auto item = m_Items.at(index.row());
89 switch (index.column()) {
93 return item.szProtocol;
97 return item.time.toString(QLocale::system().dateTimeFormat());
99 return item.szOperateId;
101 return item.GetFile();
105 case Qt::DecorationRole:
106 if (index.column() == Name) {
111 case Qt::ToolTipRole:
112 return item.szDescription;
118bool CRecentModel::removeRows(
int row,
int count,
const QModelIndex &parent)
120 if (row < 0 || row + count > m_Items.count())
124 qCritical(log) <<
"The m_pDatabase is nullptr";
128 for (
int i = row + count - 1; i >= row; i--) {
129 m_pDatabase->DeleteRecent(m_Items.at(i).id);
136void CRecentModel::refresh(
int limit)
138 if(!(m_pDatabase && m_pDatabase->IsOpen())) {
144 auto items = m_pDatabase->GetRecents(limit, 0);
145 foreach(
auto it, items) {
154 if (!index.isValid())
157 if(index.row() >= m_Items.count())
160 item = m_Items.at(index.row());
166 if(!m_pDatabase)
return false;
167 return m_pDatabase->AddRecent(item);
The CRecentDatabase class