From 776bd3b022b275858233eb64ed3a8db3eba07f02 Mon Sep 17 00:00:00 2001 From: Jim Broadus Date: Mon, 17 May 2021 11:17:29 -0700 Subject: [PATCH] settings: Add option to guess song metadata Add "Try to guess missing metadata" option to the Song Metadata page that controls the setting in SongPathParser. --- src/core/tagreaderclient.cpp | 2 ++ src/core/tagreaderclient.h | 1 + src/ui/songmetadatasettingspage.cpp | 19 +++++++++++++++++++ src/ui/songmetadatasettingspage.ui | 10 ++++++++++ 4 files changed, 32 insertions(+) diff --git a/src/core/tagreaderclient.cpp b/src/core/tagreaderclient.cpp index 47a262a71..ecdcdde08 100644 --- a/src/core/tagreaderclient.cpp +++ b/src/core/tagreaderclient.cpp @@ -58,6 +58,8 @@ TagReaderClient::~TagReaderClient() {} void TagReaderClient::Start() { worker_pool_->Start(); } +void TagReaderClient::ReloadSettings() { path_parser_->ReloadSettings(); } + void TagReaderClient::WorkerFailedToStart() { qLog(Error) << "The" << kWorkerExecutableName << "executable was not found" << "in the current directory or on the PATH. Clementine will" diff --git a/src/core/tagreaderclient.h b/src/core/tagreaderclient.h index 77728c27e..65632a31f 100644 --- a/src/core/tagreaderclient.h +++ b/src/core/tagreaderclient.h @@ -47,6 +47,7 @@ class TagReaderClient : public QObject { static const char* kWorkerExecutableName; void Start(); + void ReloadSettings(); ReplyType* ReadFile(const QString& filename); ReplyType* SaveFile(const QString& filename, const Song& metadata); diff --git a/src/ui/songmetadatasettingspage.cpp b/src/ui/songmetadatasettingspage.cpp index d0067783a..e268f035b 100644 --- a/src/ui/songmetadatasettingspage.cpp +++ b/src/ui/songmetadatasettingspage.cpp @@ -21,6 +21,8 @@ #include #include "core/player.h" +#include "core/songpathparser.h" +#include "core/tagreaderclient.h" #include "ui/iconloader.h" #include "ui_songmetadatasettingspage.h" @@ -52,6 +54,14 @@ void SongMetadataSettingsPage::Load() { QString::number(max_numprocs_tagclients)); s.endGroup(); + + s.beginGroup(SongPathParser::kSongMetadataSettingsGroup); + bool guess = s.value(SongPathParser::kGuessMetadataSetting, + SongPathParser::kGuessMetadataSettingDefault) + .toBool(); + ui_->guess_metadata->setCheckState(guess ? Qt::Checked : Qt::Unchecked); + + s.endGroup(); } void SongMetadataSettingsPage::Save() { @@ -61,6 +71,15 @@ void SongMetadataSettingsPage::Save() { s.setValue("max_numprocs_tagclients", ui_->max_numprocs_tagclients->value()); s.endGroup(); + + s.beginGroup(SongPathParser::kSongMetadataSettingsGroup); + + s.setValue(SongPathParser::kGuessMetadataSetting, + ui_->guess_metadata->checkState() != Qt::Unchecked); + + s.endGroup(); + + TagReaderClient::Instance()->ReloadSettings(); } void SongMetadataSettingsPage::MaxNumProcsTagClientsChanged(int value) { diff --git a/src/ui/songmetadatasettingspage.ui b/src/ui/songmetadatasettingspage.ui index b52b49bfc..4e55d22cc 100644 --- a/src/ui/songmetadatasettingspage.ui +++ b/src/ui/songmetadatasettingspage.ui @@ -56,6 +56,16 @@ + + + + Try to extract title, artist, and album from file path. + + + Try to guess missing metadata + + +