Save providers preferences (enabled/disable)
This commit is contained in:
parent
1d60cc6c52
commit
f03d48164f
|
@ -33,7 +33,7 @@ GlobalSearch::GlobalSearch(QObject* parent)
|
|||
{
|
||||
}
|
||||
|
||||
void GlobalSearch::AddProvider(SearchProvider* provider) {
|
||||
void GlobalSearch::AddProvider(SearchProvider* provider, bool enable_by_default) {
|
||||
Q_ASSERT(!provider->name().isEmpty());
|
||||
|
||||
connect(provider, SIGNAL(ResultsAvailable(int,SearchProvider::ResultList)),
|
||||
|
@ -48,7 +48,8 @@ void GlobalSearch::AddProvider(SearchProvider* provider) {
|
|||
SLOT(ProviderDestroyedSlot(QObject*)));
|
||||
|
||||
ProviderData data;
|
||||
data.enabled_ = !disabled_provider_ids_.contains(provider->id());
|
||||
data.enabled_ = providers_state_preference_.contains(provider->id()) ?
|
||||
providers_state_preference_[provider->id()] : enable_by_default;
|
||||
providers_[provider] = data;
|
||||
|
||||
emit ProviderAdded(provider);
|
||||
|
@ -240,9 +241,9 @@ bool GlobalSearch::SetProviderEnabled(const SearchProvider* const_provider,
|
|||
} else {
|
||||
providers_[provider].enabled_ = enabled;
|
||||
emit ProviderToggled(provider, enabled);
|
||||
SaveProvidersSettings();
|
||||
return true;
|
||||
}
|
||||
// TODO: save providers
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -259,9 +260,19 @@ void GlobalSearch::ReloadSettings() {
|
|||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
disabled_provider_ids_ = s.value("disabled_providers", QStringList() << "jamendo").toStringList();
|
||||
|
||||
foreach (SearchProvider* provider, providers_.keys()) {
|
||||
SetProviderEnabled(provider, !disabled_provider_ids_.contains(provider->id()));
|
||||
QVariant value = s.value(provider->id());
|
||||
if (value.isValid()) {
|
||||
providers_state_preference_.insert(provider->id(), value.toBool());
|
||||
providers_[provider].enabled_ = value.toBool() && provider->IsLoggedIn();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GlobalSearch::SaveProvidersSettings() {
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
foreach (SearchProvider* provider, providers_.keys()) {
|
||||
s.setValue(provider->id(), providers_[provider].enabled_);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@ public:
|
|||
static const int kDelayedSearchTimeoutMs;
|
||||
static const char* kSettingsGroup;
|
||||
|
||||
void AddProvider(SearchProvider* provider);
|
||||
void AddProvider(SearchProvider* provider, bool enable_by_default = true);
|
||||
// Try to change provider state. Returns false if we can't (e.g. we can't
|
||||
// enable a provider because it requires the user to be logged-in)
|
||||
bool SetProviderEnabled(const SearchProvider* provider, bool enabled);
|
||||
|
@ -81,6 +81,8 @@ private:
|
|||
void TakeNextQueuedArt(SearchProvider* provider);
|
||||
QString PixmapCacheKey(const SearchProvider::Result& result) const;
|
||||
|
||||
void SaveProvidersSettings();
|
||||
|
||||
private:
|
||||
struct DelayedSearch {
|
||||
int id_;
|
||||
|
@ -108,7 +110,7 @@ private:
|
|||
QPixmapCache pixmap_cache_;
|
||||
QMap<int, QString> pending_art_searches_;
|
||||
|
||||
QStringList disabled_provider_ids_;
|
||||
QMap<QString, bool> providers_state_preference_;
|
||||
};
|
||||
|
||||
#endif // GLOBALSEARCH_H
|
||||
|
|
|
@ -236,7 +236,6 @@ MainWindow::MainWindow(
|
|||
// Initialise the global search widget
|
||||
StyleHelper::setBaseColor(palette().color(QPalette::Highlight).darker());
|
||||
|
||||
global_search->ReloadSettings();
|
||||
// Add global search providers
|
||||
global_search->AddProvider(new LibrarySearchProvider(
|
||||
library_->backend(), tr("Library"), "library",
|
||||
|
@ -254,7 +253,9 @@ MainWindow::MainWindow(
|
|||
tr("Jamendo"),
|
||||
"jamendo",
|
||||
QIcon(":/providers/jamendo.png"),
|
||||
global_search));
|
||||
global_search),
|
||||
false /* disabled Jamendo by default */);
|
||||
global_search->ReloadSettings();
|
||||
|
||||
ui_->global_search->Init(global_search);
|
||||
connect(ui_->global_search, SIGNAL(AddToPlaylist(QMimeData*)), SLOT(AddToPlaylist(QMimeData*)));
|
||||
|
|
Loading…
Reference in New Issue