From 1b2b5d3b7532267548d9683cf2f6dea93b78e7de Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 7 Aug 2020 19:00:09 +1000 Subject: [PATCH] diskmanager: save configured disk cache location --- app/render/diskmanager.cpp | 36 ++++++++++++++++++++++++++++-------- app/render/diskmanager.h | 4 ++++ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/app/render/diskmanager.cpp b/app/render/diskmanager.cpp index 7194e63b6..d8883ca89 100644 --- a/app/render/diskmanager.cpp +++ b/app/render/diskmanager.cpp @@ -39,16 +39,18 @@ DiskManager* DiskManager::instance_ = nullptr; DiskManager::DiskManager() { // Add default cache location - QFile default_disk_cache_file(QDir(FileFunctions::GetConfigurationLocation()).filePath(QStringLiteral("defaultdiskcache"))); + QFile default_disk_cache_file(GetDefaultDiskCacheConfigFile()); if (default_disk_cache_file.open(QFile::ReadOnly)) { QString default_dir = default_disk_cache_file.readAll(); - if (FileFunctions::DirectoryIsValid(default_dir, true)) { - GetOpenFolder(default_dir); - } else { - QMessageBox::warning(nullptr, - tr("Disk Cache Error"), - tr("Unable to set custom application disk cache. Using default instead.")); + if (!default_dir.isEmpty()) { + if (FileFunctions::DirectoryIsValid(default_dir, true)) { + GetOpenFolder(default_dir); + } else { + QMessageBox::warning(nullptr, + tr("Disk Cache Error"), + tr("Unable to set custom application disk cache. Using default instead.")); + } } default_disk_cache_file.close(); @@ -56,7 +58,7 @@ DiskManager::DiskManager() // If no custom default was loaded, load default if (open_folders_.isEmpty()) { - GetOpenFolder(QDir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)).filePath("mediacache")); + GetOpenFolder(GetDefaultDiskCachePath()); } QFile disk_cache_index(QDir(FileFunctions::GetConfigurationLocation()).filePath(QStringLiteral("diskcache"))); @@ -75,6 +77,14 @@ DiskManager::DiskManager() DiskManager::~DiskManager() { + QFile default_disk_cache_file(GetDefaultDiskCacheConfigFile()); + if (default_disk_cache_file.open(QFile::WriteOnly)) { + if (GetDefaultDiskCachePath() != GetDefaultCachePath()) { + default_disk_cache_file.write(GetDefaultCachePath().toUtf8()); + } + + default_disk_cache_file.close(); + } } void DiskManager::CreateInstance() @@ -145,6 +155,16 @@ bool DiskManager::ShowDiskCacheChangeConfirmationDialog(QWidget *parent) QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Ok); } +QString DiskManager::GetDefaultDiskCacheConfigFile() +{ + return QDir(FileFunctions::GetConfigurationLocation()).filePath(QStringLiteral("defaultdiskcache")); +} + +QString DiskManager::GetDefaultDiskCachePath() +{ + return QDir(QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation)).filePath("mediacache"); +} + DiskCacheFolder::DiskCacheFolder(const QString &path, QObject *parent) : QObject(parent) { diff --git a/app/render/diskmanager.h b/app/render/diskmanager.h index 9fc04cf7a..6c46082c8 100644 --- a/app/render/diskmanager.h +++ b/app/render/diskmanager.h @@ -131,6 +131,10 @@ public: static bool ShowDiskCacheChangeConfirmationDialog(QWidget* parent); + static QString GetDefaultDiskCacheConfigFile(); + + static QString GetDefaultDiskCachePath(); + public slots: void Accessed(const QString& cache_folder, const QByteArray& hash);