3#include <QLoggingCategory>
5#include "HistoryModel.h"
7static Q_LOGGING_CATEGORY(log,
"WebBrowser.History.Model")
9 : QAbstractTableModel(parent)
12 qDebug(log) << Q_FUNC_INFO;
17 m_pDatabase = CHistoryDatabase::Instance();
20CHistoryModel::~CHistoryModel()
22 qDebug(log) << Q_FUNC_INFO;
25QVariant CHistoryModel::headerData(
int section, Qt::Orientation orientation,
int role)
const
27 if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
29 case ColumnTitle:
return tr(
"Title");
30 case ColumnUrl:
return tr(
"Url");
31 case ColumnVisitTime:
return tr(
"Visit Time");
40int CHistoryModel::rowCount(
const QModelIndex &parent)
const
43 return m_historyItems.count();
46int CHistoryModel::columnCount(
const QModelIndex &parent)
const
52QVariant CHistoryModel::data(
const QModelIndex &index,
int role)
const
55 if (!index.isValid() || index.row() >= m_historyItems.count())
59 qCritical(log) <<
"The m_pDatabase is nullptr";
63 const HistoryItem &item = m_historyItems.at(index.row());
67 switch (index.column()) {
69 return item.title.isEmpty() ? tr(
"Untitled") : item.title;
73 return item.visitTime.toString(QLocale::system().dateFormat());
77 case Qt::DecorationRole:
78 if (index.column() == ColumnTitle) {
84 return QString(tr(
"Title: %1\nUrl: %2\nVisit Time: %3")
87 .arg(item.visitTime.toString(QLocale::system().dateFormat())));
96void CHistoryModel::refresh()
99 qCritical(log) <<
"The m_pDatabase is nullptr";
105 nLimit = m_pPara->GetDatabaseViewLimit();
106 m_historyItems = m_pDatabase->getAllHistory(nLimit);
110void CHistoryModel::refresh(
const QDate &start,
const QDate &end)
113 qCritical(log) <<
"The m_pDatabase is nullptr";
119 nLimit = m_pPara->GetDatabaseViewLimit();
120 m_historyItems = m_pDatabase->getHistoryByDate(start, end, nLimit);
124bool CHistoryModel::removeRows(
int row,
int count,
const QModelIndex &parent)
126 if (row < 0 || row + count > m_historyItems.count())
130 qCritical(log) <<
"The m_pDatabase is nullptr";
134 beginRemoveRows(parent, row, row + count - 1);
136 for (
int i = row + count - 1; i >= row; --i) {
137 m_pDatabase->deleteHistoryEntry(m_historyItems.at(i).id);
138 m_historyItems.removeAt(i);
145HistoryItem CHistoryModel::getItem(
const QModelIndex &index)
const
147 if (index.isValid() && index.row() < m_historyItems.count()) {
148 return m_historyItems.at(index.row());
153bool CHistoryModel::removeDomainItems(
const QString &szDomain)
156 m_pDatabase->deleteDomainEntries(szDomain);
163bool CHistoryModel::removeItems(
const QString &url)
166 m_pDatabase->deleteHistoryEntry(url);
173bool CHistoryModel::importFromCSV(
const QString &filename)
175 if(!m_pDatabase)
return false;
176 return m_pDatabase->importFromCSV(filename);
179bool CHistoryModel::exportToCSV(
const QString &filename)
181 if(!m_pDatabase)
return false;
182 return m_pDatabase->exportToCSV(filename);
185bool CHistoryModel::importFromJson(
const QString &filename)
187 if(!m_pDatabase)
return false;
188 return m_pDatabase->importFromJson(filename);
191bool CHistoryModel::exportToJson(
const QString &filename)
193 if(!m_pDatabase)
return false;
194 return m_pDatabase->exportToJson(filename);