Save providers preferences (enabled/disable)

This commit is contained in:
Arnaud Bienner 2011-10-20 16:36:12 +02:00
parent 1d60cc6c52
commit f03d48164f
3 changed files with 24 additions and 10 deletions

View File

@ -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_);
}
}

View File

@ -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

View File

@ -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*)));