diff --git a/app/config/config.cpp b/app/config/config.cpp index 4cf0aa63c..4bf04fc9b 100644 --- a/app/config/config.cpp +++ b/app/config/config.cpp @@ -67,6 +67,7 @@ void Config::SetDefaults() SetEntryInternal(QStringLiteral("HoverFocus"), NodeParam::kBoolean, false); SetEntryInternal(QStringLiteral("AudioScrubbing"), NodeParam::kBoolean, true); SetEntryInternal(QStringLiteral("AutorecoveryInterval"), NodeParam::kInt, 1); + SetEntryInternal(QStringLiteral("DiskCacheSaveInterval"), NodeParam::kInt, 10000); SetEntryInternal(QStringLiteral("Language"), NodeParam::kString, QLocale::system().name()); SetEntryInternal(QStringLiteral("ScrollZooms"), NodeParam::kBoolean, false); SetEntryInternal(QStringLiteral("EnableSeekToImport"), NodeParam::kBoolean, false); diff --git a/app/render/diskmanager.cpp b/app/render/diskmanager.cpp index 2cdbf2024..bd75bf077 100644 --- a/app/render/diskmanager.cpp +++ b/app/render/diskmanager.cpp @@ -189,6 +189,10 @@ DiskCacheFolder::DiskCacheFolder(const QString &path, QObject *parent) : QObject(parent) { SetPath(path); + + save_timer_.setInterval(Config::Current()[QStringLiteral("DiskCacheSaveInterval")].toInt()); + connect(&save_timer_, &QTimer::timeout, this, &DiskCacheFolder::SaveDiskCacheIndex); + save_timer_.start(); } DiskCacheFolder::~DiskCacheFolder() @@ -335,6 +339,11 @@ void DiskCacheFolder::CloseCacheFolder() } // Save current cache index + SaveDiskCacheIndex(); +} + +void DiskCacheFolder::SaveDiskCacheIndex() +{ QFile cache_index_file(index_path_); if (cache_index_file.open(QFile::WriteOnly)) { diff --git a/app/render/diskmanager.h b/app/render/diskmanager.h index 71ff30bac..9064a0d33 100644 --- a/app/render/diskmanager.h +++ b/app/render/diskmanager.h @@ -24,6 +24,7 @@ #include #include #include +#include #include "common/define.h" #include "project/project.h" @@ -97,6 +98,11 @@ private: bool clear_on_close_; + QTimer save_timer_; + +private slots: + void SaveDiskCacheIndex(); + }; class DiskManager : public QObject