Add setting for lyric providers and add more providers

Fixes #335
This commit is contained in:
Jonas Kvinge
2020-05-08 18:35:36 +02:00
parent 6ef69f6b32
commit f44ce49ea7
39 changed files with 1834 additions and 105 deletions

View File

@@ -21,13 +21,20 @@
#include <QObject>
#include <QMutex>
#include <QList>
#include <QVariant>
#include <QVariantList>
#include <QString>
#include <QStringList>
#include <QSettings>
#include <QtDebug>
#include "core/logging.h"
#include "lyricsprovider.h"
#include "lyricsproviders.h"
#include "settings/lyricssettingspage.h"
LyricsProviders::LyricsProviders(QObject *parent) : QObject(parent) {}
LyricsProviders::~LyricsProviders() {
@@ -38,6 +45,48 @@ LyricsProviders::~LyricsProviders() {
}
void LyricsProviders::ReloadSettings() {
QStringList all_providers;
for (LyricsProvider *provider : lyrics_providers_.keys()) {
if (!provider->is_enabled()) continue;
all_providers << provider->name();
}
QSettings s;
s.beginGroup(LyricsSettingsPage::kSettingsGroup);
QStringList providers_enabled = s.value("providers", all_providers).toStringList();
s.endGroup();
int i = 0;
QList<LyricsProvider*> providers;
for (const QString &name : providers_enabled) {
LyricsProvider *provider = ProviderByName(name);
if (provider) {
provider->set_enabled(true);
provider->set_order(++i);
providers << provider;
}
}
for (LyricsProvider *provider : lyrics_providers_.keys()) {
if (!providers.contains(provider)) {
provider->set_enabled(false);
provider->set_order(++i);
}
}
}
LyricsProvider *LyricsProviders::ProviderByName(const QString &name) const {
for (LyricsProvider *provider : lyrics_providers_.keys()) {
if (provider->name() == name) return provider;
}
return nullptr;
}
void LyricsProviders::AddProvider(LyricsProvider *provider) {
{