File indexing completed on 2024-11-24 04:18:40
0001 /* 0002 * SPDX-FileCopyrightText: 2020-2021 Han Young <hanyoung@protonmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "historymanager.h" 0008 #include <QDebug> 0009 #include <QDir> 0010 #include <QJsonArray> 0011 #include <QJsonDocument> 0012 #include <QJsonObject> 0013 #include <QStandardPaths> 0014 0015 HistoryManager::HistoryManager() 0016 { 0017 // create cache location if it does not exist, and load cache 0018 QDir dir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/kalk")); 0019 if (!dir.exists()) { 0020 dir.mkpath(QStringLiteral(".")); 0021 } 0022 0023 QFile file(dir.path() + QStringLiteral("/history.json")); 0024 if (file.open(QIODevice::ReadOnly)) { 0025 QJsonDocument doc(QJsonDocument::fromJson(file.readAll())); 0026 const auto array = doc.array(); 0027 m_historyList.reserve(array.size()); 0028 for (const auto &record : array) { 0029 m_historyList.append(record.toString()); 0030 } 0031 } 0032 } 0033 0034 void HistoryManager::clearHistory() 0035 { 0036 m_historyList.clear(); 0037 QDir dir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QStringLiteral("/kalk")); 0038 QFile file(dir.path() + QStringLiteral("history.json")); 0039 file.remove(); 0040 Q_EMIT layoutChanged(); 0041 save(); 0042 } 0043 0044 void HistoryManager::save() 0045 { 0046 QJsonDocument doc; 0047 QJsonArray array; 0048 for (const auto &record : qAsConst(m_historyList)) { 0049 array.append(record); 0050 } 0051 doc.setArray(array); 0052 QString url = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation); 0053 QFile file(url + QStringLiteral("/kalk/history.json")); 0054 file.open(QIODevice::WriteOnly); 0055 file.write(doc.toJson(QJsonDocument::Compact)); 0056 qDebug() << "save" << file.fileName(); 0057 }