3#include <QLoggingCategory>
5#include "HistoryModel.h"
7static Q_LOGGING_CATEGORY(log,
"WebBrowser.History.Model")
9 : QAbstractTableModel(parent)
12 qDebug(log) << Q_FUNC_INFO;
15 m_pDatabase = &pPara->m_HistoryDatabase;
23CHistoryModel::~CHistoryModel()
25 qDebug(log) << Q_FUNC_INFO;
28QVariant CHistoryModel::headerData(
int section, Qt::Orientation orientation,
int role)
const
30 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
32 case ColumnTitle:
return tr(
"Title");
33 case ColumnUrl:
return tr(
"Url");
34 case ColumnVisitTime:
return tr(
"Visit Time");
43int CHistoryModel::rowCount(
const QModelIndex &parent)
const
46 return m_historyItems.count();
49int CHistoryModel::columnCount(
const QModelIndex &parent)
const
55QVariant CHistoryModel::data(
const QModelIndex &index,
int role)
const
58 if (!index.isValid() || index.row() >= m_historyItems.count())
62 qCritical(log) <<
"The m_pDatabase is nullptr";
66 const HistoryItem &item = m_historyItems.at(index.row());
70 switch (index.column()) {
72 return item.title.isEmpty() ? tr(
"Untitled") : item.title;
76 return item.visitTime.toString(QLocale::system().dateFormat());
80 case Qt::DecorationRole:
81 if (index.column() == ColumnTitle) {
87 return QString(tr(
"Title: %1\nUrl: %2\nVisit Time: %3")
90 .arg(item.visitTime.toString(QLocale::system().dateFormat())));
99void CHistoryModel::refresh()
102 qCritical(log) <<
"The m_pDatabase is nullptr";
108 nLimit = m_pPara->GetDatabaseViewLimit();
109 m_historyItems = m_pDatabase->getAllHistory(nLimit);
113void CHistoryModel::refresh(
const QDate &start,
const QDate &end)
116 qCritical(log) <<
"The m_pDatabase is nullptr";
122 nLimit = m_pPara->GetDatabaseViewLimit();
123 m_historyItems = m_pDatabase->getHistoryByDate(start, end, nLimit);
127bool CHistoryModel::removeRows(
int row,
int count,
const QModelIndex &parent)
129 if (row < 0 || row + count > m_historyItems.count())
133 qCritical(log) <<
"The m_pDatabase is nullptr";
137 beginRemoveRows(parent, row, row + count - 1);
139 for (
int i = row + count - 1; i >= row; --i) {
140 m_pDatabase->deleteHistoryEntry(m_historyItems.at(i).id);
141 m_historyItems.removeAt(i);
148HistoryItem CHistoryModel::getItem(
const QModelIndex &index)
const
150 if (index.isValid() && index.row() < m_historyItems.count()) {
151 return m_historyItems.at(index.row());
156bool CHistoryModel::removeDomainItems(
const QString &szDomain)
159 m_pDatabase->deleteDomainEntries(szDomain);
166bool CHistoryModel::removeItems(
const QString &url)
169 m_pDatabase->deleteHistoryEntry(url);
176bool CHistoryModel::search(
const QString &keyword)
178 if(!m_pDatabase)
return false;
180 m_historyItems = m_pDatabase->searchHistory(keyword);
185bool CHistoryModel::importFromJson(
const QString &filename)
187 if(!m_pDatabase)
return false;
188 return m_pDatabase->ImportFromJsonFile(filename);
191bool CHistoryModel::exportToJson(
const QString &filename)
193 if(!m_pDatabase)
return false;
194 return m_pDatabase->ExportToJsonFile(filename);