diff --git a/src/core/filesystemmusicstorage.cpp b/src/core/filesystemmusicstorage.cpp index 1c7213f5c..4895540e6 100644 --- a/src/core/filesystemmusicstorage.cpp +++ b/src/core/filesystemmusicstorage.cpp @@ -17,6 +17,7 @@ #include "filesystemmusicstorage.h" #include "core/logging.h" +#include "core/utilities.h" #include #include @@ -50,5 +51,10 @@ bool FilesystemMusicStorage::CopyToStorage(const CopyJob& job) { } bool FilesystemMusicStorage::DeleteFromStorage(const DeleteJob& job) { - return QFile::remove(job.metadata_.url().toLocalFile()); -} + QString path = job.metadata_.url().toLocalFile(); + QFileInfo fileInfo(path); + if (fileInfo.isDir()) + return Utilities::RemoveRecursive(path); + else + return QFile::remove(path); +} \ No newline at end of file diff --git a/src/core/utilities.cpp b/src/core/utilities.cpp index 5d3311a54..1cf6abd68 100644 --- a/src/core/utilities.cpp +++ b/src/core/utilities.cpp @@ -219,17 +219,24 @@ QString GetTemporaryFileName() { return file; } -void RemoveRecursive(const QString& path) { +bool RemoveRecursive(const QString& path) { QDir dir(path); for (const QString& child : - dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Hidden)) - RemoveRecursive(path + "/" + child); + dir.entryList(QDir::NoDotAndDotDot | QDir::Dirs | QDir::Hidden)) { + if (!RemoveRecursive(path + "/" + child)) + return false; + } for (const QString& child : - dir.entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden)) - QFile::remove(path + "/" + child); + dir.entryList(QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden)) { + if (!QFile::remove(path + "/" + child)) + return false; + } - dir.rmdir(path); + if (!dir.rmdir(path)) + return false; + + return true; } bool CopyRecursive(const QString& source, const QString& destination) { diff --git a/src/core/utilities.h b/src/core/utilities.h index 8211f0d6e..9d32c8c1d 100644 --- a/src/core/utilities.h +++ b/src/core/utilities.h @@ -51,7 +51,7 @@ quint64 FileSystemFreeSpace(const QString& path); QString MakeTempDir(const QString template_name = QString()); QString GetTemporaryFileName(); -void RemoveRecursive(const QString& path); +bool RemoveRecursive(const QString& path); bool CopyRecursive(const QString& source, const QString& destination); bool Copy(QIODevice* source, QIODevice* destination);