1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
// Copyright 2015 - 2025, GIBIS-UNIFESP and the wiRedPanda contributors
// SPDX-License-Identifier: GPL-3.0-or-later
#include "recentfiles.h"
#include "common.h"
#include "globalproperties.h"
#include "settings.h"
#include <QApplication>
#include <QFile>
#include <QFileInfo>
RecentFiles::RecentFiles(QObject *parent)
: QObject(parent)
{
if (Settings::contains("recentFileList")) {
m_files = Settings::value("recentFileList").toStringList();
}
connect(&m_fileWatcher, &QFileSystemWatcher::fileChanged, this, [this](const QString &filePath) {
if (!QFile::exists(filePath)) {
m_files.removeAll(filePath);
emit recentFilesUpdated();
}
});
}
void RecentFiles::addRecentFile(const QString &filePath)
{
qCDebug(three) << "Setting recent file to: " << filePath;
if (!QFile(filePath).exists()) {
return;
}
m_fileWatcher.addPath(filePath);
m_files.removeAll(filePath);
m_files.prepend(filePath);
if (m_files.size() > GlobalProperties::maxRecentFiles) {
m_files.erase(m_files.begin() + GlobalProperties::maxRecentFiles, m_files.end());
}
saveRecentFiles();
emit recentFilesUpdated();
}
QStringList RecentFiles::recentFiles()
{
int i = 0;
while (i < m_files.size()) {
QFileInfo fileInfo(m_files.at(i));
if (!fileInfo.exists()) {
m_files.removeAt(i);
continue;
}
++i;
}
saveRecentFiles();
return m_files;
}
void RecentFiles::saveRecentFiles()
{
Settings::setValue("recentFileList", m_files);
}
|