From 3bd15aea0dffc6e90cabfb18c29abe82ca29b73c Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Sat, 13 Mar 2021 22:45:42 -0800 Subject: [PATCH] library: Add option to ignore files by extension Add a new skip option in library settings that takes a comma separated list of file extensions. Skip files with the specified extensions when scanning the library. --- src/library/librarysettingspage.cpp | 7 +++++++ src/library/librarysettingspage.ui | 14 ++++++++++++-- src/library/librarywatcher.cpp | 17 +++++++++++++---- src/library/librarywatcher.h | 3 +++ 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/library/librarysettingspage.cpp b/src/library/librarysettingspage.cpp index 91a86149b..43bb2dfd7 100644 --- a/src/library/librarysettingspage.cpp +++ b/src/library/librarysettingspage.cpp @@ -98,6 +98,10 @@ void LibrarySettingsPage::Save() { QStringList filters = filter_text.split(',', QString::SkipEmptyParts); s.setValue("cover_art_patterns", filters); + QString skip_extensions = ui_->skip_extensions->text(); + QStringList extensions = skip_extensions.split(',', QString::SkipEmptyParts); + s.setValue("skip_file_extensions", extensions); + s.endGroup(); s.beginGroup(LibraryBackend::kSettingsGroup); @@ -139,6 +143,9 @@ void LibrarySettingsPage::Load() { .toStringList(); ui_->cover_art_patterns->setText(filters.join(",")); + QStringList extensions = s.value("skip_file_extensions").toStringList(); + ui_->skip_extensions->setText(extensions.join(",")); + s.endGroup(); s.beginGroup(LibraryBackend::kSettingsGroup); diff --git a/src/library/librarysettingspage.ui b/src/library/librarysettingspage.ui index 98f29fbf1..610f7d460 100644 --- a/src/library/librarysettingspage.ui +++ b/src/library/librarysettingspage.ui @@ -7,7 +7,7 @@ 0 0 509 - 452 + 600 @@ -137,7 +137,17 @@ - + + + Skip files with these extensions (comma separated, case insensitive) + + + + + + + + Preferred album art filenames (comma separated) diff --git a/src/library/librarywatcher.cpp b/src/library/librarywatcher.cpp index c1d2b281f..2f1792298 100644 --- a/src/library/librarywatcher.cpp +++ b/src/library/librarywatcher.cpp @@ -330,10 +330,12 @@ void LibraryWatcher::ScanSubdirectory(const QString& path, QString ext_part(ExtensionPart(child)); QString dir_part(DirectoryPart(child)); - if (sValidImages.contains(ext_part)) - album_art[dir_part] << child; - else if (!child_info.isHidden()) - files_on_disk << child; + if (!skip_file_extensions_.contains(ext_part)) { + if (sValidImages.contains(ext_part)) + album_art[dir_part] << child; + else if (!child_info.isHidden()) + files_on_disk << child; + } } } @@ -832,6 +834,13 @@ void LibraryWatcher::ReloadSettings() { if (!s.isEmpty()) best_image_filters_ << s; } + skip_file_extensions_.clear(); + QStringList extensions = s.value("skip_file_extensions").toStringList(); + for (const QString& extension : extensions) { + QString s = extension.trimmed().toLower(); + if (!s.isEmpty()) skip_file_extensions_ << s; + } + if (!monitor_ && was_monitoring_before) { fs_watcher_->Clear(); } else if (monitor_ && !was_monitoring_before) { diff --git a/src/library/librarywatcher.h b/src/library/librarywatcher.h index 49b9e14fb..b3b9d49c0 100644 --- a/src/library/librarywatcher.h +++ b/src/library/librarywatcher.h @@ -217,6 +217,9 @@ class LibraryWatcher : public QObject { */ QStringList best_image_filters_; + // List of file extensions that should be ingored during a scan. + QStringList skip_file_extensions_; + bool scan_on_startup_; bool monitor_;