diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2c1ebe297..6300e15d6 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -132,11 +132,13 @@ set(SOURCES
smartplaylists/generator.cpp
smartplaylists/generatorinserter.cpp
smartplaylists/querygenerator.cpp
+ smartplaylists/querywizardplugin.cpp
smartplaylists/search.cpp
smartplaylists/searchpreview.cpp
smartplaylists/searchterm.cpp
smartplaylists/searchtermwidget.cpp
smartplaylists/wizard.cpp
+ smartplaylists/wizardplugin.cpp
songinfo/artistinfoview.cpp
songinfo/collapsibleinfoheader.cpp
@@ -290,9 +292,11 @@ set(HEADERS
smartplaylists/generator.h
smartplaylists/generatorinserter.h
smartplaylists/generatormimedata.h
+ smartplaylists/querywizardplugin.h
smartplaylists/searchpreview.h
smartplaylists/searchtermwidget.h
smartplaylists/wizard.h
+ smartplaylists/wizardplugin.h
songinfo/artistinfoview.h
songinfo/collapsibleinfoheader.h
@@ -374,9 +378,10 @@ set(UI
radio/magnatunedownloaddialog.ui
radio/radioviewcontainer.ui
+ smartplaylists/querysearchpage.ui
+ smartplaylists/querysortpage.ui
smartplaylists/searchpreview.ui
smartplaylists/searchtermwidget.ui
- smartplaylists/wizard.ui
songinfo/lyricsettings.ui
diff --git a/src/smartplaylists/querysearchpage.ui b/src/smartplaylists/querysearchpage.ui
new file mode 100644
index 000000000..743c2e218
--- /dev/null
+++ b/src/smartplaylists/querysearchpage.ui
@@ -0,0 +1,57 @@
+
+
+ SmartPlaylistQuerySearchPage
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Form
+
+
+ -
+
+
+ Search mode
+
+
+
-
+
+
-
+
+ Match every search term (AND)
+
+
+ -
+
+ Match one or more search terms (OR)
+
+
+ -
+
+ Don't use search terms (include all songs)
+
+
+
+
+
+
+
+ -
+
+
+ Search terms
+
+
+
+
+
+
+
+
+
diff --git a/src/smartplaylists/querysortpage.ui b/src/smartplaylists/querysortpage.ui
new file mode 100644
index 000000000..ebfc016ef
--- /dev/null
+++ b/src/smartplaylists/querysortpage.ui
@@ -0,0 +1,117 @@
+
+
+ SmartPlaylistQuerySortPage
+
+
+
+ 0
+ 0
+ 723
+ 335
+
+
+
+ Form
+
+
+
+ 0
+
+ -
+
+
+ Sorting
+
+
+
-
+
+
+ Put songs in a random order
+
+
+ true
+
+
+
+ -
+
+
+ Sort songs by
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+
+
+
+
+
+ -
+
+
+ Limits
+
+
+
-
+
+
+ Show all the songs
+
+
+ true
+
+
+
+ -
+
+
+ Only show the first
+
+
+
+ -
+
+
+ songs
+
+
+ 1000
+
+
+ 15
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+
+
+
+ smart_playlists::SearchPreview
+ QWidget
+ smartplaylists/searchpreview.h
+ 1
+
+
+
+
+
diff --git a/src/smartplaylists/querywizardplugin.cpp b/src/smartplaylists/querywizardplugin.cpp
new file mode 100644
index 000000000..d8fe62fee
--- /dev/null
+++ b/src/smartplaylists/querywizardplugin.cpp
@@ -0,0 +1,223 @@
+/* This file is part of Clementine.
+
+ Clementine is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Clementine is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Clementine. If not, see .
+*/
+
+#include "querywizardplugin.h"
+#include "searchtermwidget.h"
+#include "ui_querysearchpage.h"
+#include "ui_querysortpage.h"
+
+#include
+
+namespace smart_playlists {
+
+QueryWizardPlugin::QueryWizardPlugin(LibraryBackend* library, QObject* parent)
+ : WizardPlugin(library, parent),
+ search_page_(NULL)
+{
+}
+
+QueryWizardPlugin::~QueryWizardPlugin() {
+}
+
+QString QueryWizardPlugin::name() const {
+ return tr("Library search");
+}
+
+QString QueryWizardPlugin::description() const {
+ return tr("Find songs in your library that match the criteria you specify.");
+}
+
+int QueryWizardPlugin::CreatePages(QWizard* wizard) {
+ // Create the UI
+ search_page_ = new SearchPage(wizard);
+
+ QWizardPage* sort_page = new QWizardPage(wizard);
+ sort_ui_.reset(new Ui_SmartPlaylistQuerySortPage);
+ sort_ui_->setupUi(sort_page);
+
+ sort_ui_->limit_value->setValue(Generator::kDefaultLimit);
+
+ connect(search_page_->ui_->type, SIGNAL(currentIndexChanged(int)), SLOT(SearchTypeChanged()));
+
+ // Create the new search term widget
+ search_page_->new_term_ = new SearchTermWidget(library_, search_page_);
+ search_page_->new_term_->SetActive(false);
+ connect(search_page_->new_term_, SIGNAL(Clicked()), SLOT(AddSearchTerm()));
+
+ // Add an empty initial term
+ search_page_->layout_ = static_cast(search_page_->ui_->terms_group->layout());
+ search_page_->layout_->addWidget(search_page_->new_term_);
+ AddSearchTerm();
+
+ // Add the preview widget at the bottom of the search terms page
+ QVBoxLayout* terms_page_layout = static_cast(search_page_->layout());
+ terms_page_layout->addStretch();
+ search_page_->preview_ = new SearchPreview(search_page_);
+ search_page_->preview_->set_library(library_);
+ terms_page_layout->addWidget(search_page_->preview_);
+
+ // Add sort field texts
+ for (int i=0 ; ifield_value->addItem(field_name);
+ }
+ connect(sort_ui_->field_value, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortOrder()));
+ UpdateSortOrder();
+
+ // Set the sort and limit radio buttons back to their defaults - they would
+ // have been changed by setupUi
+ sort_ui_->random->setChecked(true);
+ sort_ui_->limit_none->setChecked(true);
+
+ // Set up the preview widget that's already at the bottom of the sort page
+ sort_ui_->preview->set_library(library_);
+
+ // Configure the page text
+ search_page_->setTitle(tr("Search terms"));
+ search_page_->setSubTitle(tr("A song will be included in the playlist if it matches these conditions."));
+ sort_page->setTitle(tr("Search options"));
+ sort_page->setSubTitle(tr("Choose how the playlist is sorted and how many songs it will contain."));
+ sort_page->setFinalPage(true);
+
+ // Add the pages
+ const int first_page = wizard->addPage(search_page_);
+ wizard->addPage(sort_page);
+ return first_page;
+}
+
+GeneratorPtr QueryWizardPlugin::CreateGenerator() const {
+ // TODO
+ return GeneratorPtr();
+}
+
+void QueryWizardPlugin::UpdateSortOrder() {
+ const SearchTerm::Field field =
+ SearchTerm::Field(sort_ui_->field_value->currentIndex());
+ const SearchTerm::Type type = SearchTerm::TypeOf(field);
+ const QString asc = SearchTerm::FieldSortOrderText(type, true);
+ const QString desc = SearchTerm::FieldSortOrderText(type, false);
+
+ sort_ui_->order->clear();
+ sort_ui_->order->addItem(asc);
+ sort_ui_->order->addItem(desc);
+}
+
+void QueryWizardPlugin::AddSearchTerm() {
+ SearchTermWidget* widget =
+ new SearchTermWidget(library_, search_page_);
+ connect(widget, SIGNAL(RemoveClicked()), SLOT(RemoveSearchTerm()));
+ connect(widget, SIGNAL(Changed()), SLOT(UpdateTermPreview()));
+
+ search_page_->layout_->insertWidget(search_page_->terms_.count(), widget);
+ search_page_->terms_ << widget;
+
+ UpdateTermPreview();
+}
+
+void QueryWizardPlugin::RemoveSearchTerm() {
+ SearchTermWidget* widget =
+ qobject_cast(sender());
+ if (!widget)
+ return;
+
+ const int index = search_page_->terms_.indexOf(widget);
+ if (index == -1)
+ return;
+
+ delete search_page_->terms_.takeAt(index);
+ UpdateTermPreview();
+}
+
+void QueryWizardPlugin::UpdateTermPreview() {
+ Search search = MakeSearch();
+ emit search_page_->completeChanged();
+ if (!search.is_valid())
+ return;
+
+ // Don't apply limits in the term page
+ search.limit_ = -1;
+
+ search_page_->preview_->Update(search);
+}
+
+void QueryWizardPlugin::UpdateSortPreview() {
+ Search search = MakeSearch();
+ if (!search.is_valid())
+ return;
+
+ sort_ui_->preview->Update(search);
+}
+
+Search QueryWizardPlugin::MakeSearch() const {
+ Search ret;
+
+ // Search type
+ ret.search_type_ = Search::SearchType(search_page_->ui_->type->currentIndex());
+
+ // Search terms
+ foreach (SearchTermWidget* widget, search_page_->terms_) {
+ SearchTerm term = widget->Term();
+ if (term.is_valid())
+ ret.terms_ << term;
+ }
+
+ // Sort order
+ if (sort_ui_->random->isChecked()) {
+ ret.sort_type_ = Search::Sort_Random;
+ } else {
+ const bool ascending = sort_ui_->order->currentIndex() == 0;
+ ret.sort_type_ = ascending ? Search::Sort_FieldAsc :
+ Search::Sort_FieldDesc;
+ ret.sort_field_ = SearchTerm::Field(sort_ui_->field_value->currentIndex());
+ }
+
+ // Limit
+ if (sort_ui_->limit_none->isChecked())
+ ret.limit_ = -1;
+ else
+ ret.limit_ = sort_ui_->limit_value->value();
+
+ return ret;
+}
+
+void QueryWizardPlugin::SearchTypeChanged() {
+ const bool all = search_page_->ui_->type->currentIndex() == 2;
+ search_page_->ui_->terms_group->setEnabled(!all);
+
+ UpdateTermPreview();
+}
+
+
+QueryWizardPlugin::SearchPage::SearchPage(QWidget* parent)
+ : QWizardPage(parent),
+ ui_(new Ui_SmartPlaylistQuerySearchPage)
+{
+ ui_->setupUi(this);
+}
+
+bool QueryWizardPlugin::SearchPage::isComplete() const {
+ if (ui_->type->currentIndex() == 2) // All songs
+ return true;
+
+ foreach (SearchTermWidget* widget, terms_) {
+ if (!widget->Term().is_valid())
+ return false;
+ }
+ return true;
+}
+
+} // namespace smart_playlists
diff --git a/src/smartplaylists/querywizardplugin.h b/src/smartplaylists/querywizardplugin.h
new file mode 100644
index 000000000..be563c2ea
--- /dev/null
+++ b/src/smartplaylists/querywizardplugin.h
@@ -0,0 +1,85 @@
+/* This file is part of Clementine.
+
+ Clementine is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Clementine is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Clementine. If not, see .
+*/
+
+#ifndef QUERYWIZARDPLUGIN_H
+#define QUERYWIZARDPLUGIN_H
+
+#include "search.h"
+#include "wizardplugin.h"
+
+#include
+
+#include
+
+class Ui_SmartPlaylistQuerySearchPage;
+class Ui_SmartPlaylistQuerySortPage;
+
+class QVBoxLayout;
+
+namespace smart_playlists {
+
+class SearchPreview;
+class SearchTermWidget;
+
+class QueryWizardPlugin : public WizardPlugin {
+ Q_OBJECT
+
+public:
+ QueryWizardPlugin(LibraryBackend* library, QObject* parent);
+ ~QueryWizardPlugin();
+
+ QString name() const;
+ QString description() const;
+
+ int CreatePages(QWizard* wizard);
+ GeneratorPtr CreateGenerator() const;
+
+private slots:
+ void AddSearchTerm();
+ void RemoveSearchTerm();
+
+ void SearchTypeChanged();
+
+ void UpdateTermPreview();
+ void UpdateSortPreview();
+ void UpdateSortOrder();
+
+private:
+ class SearchPage : public QWizardPage {
+ friend class QueryWizardPlugin;
+
+ public:
+ SearchPage(QWidget* parent = 0);
+ bool isComplete() const;
+
+ QVBoxLayout* layout_;
+ QList terms_;
+ SearchTermWidget* new_term_;
+
+ SearchPreview* preview_;
+
+ boost::scoped_ptr ui_;
+ };
+
+ Search MakeSearch() const;
+
+ SearchPage* search_page_;
+ boost::scoped_ptr sort_ui_;
+};
+
+} // namespace smart_playlists
+
+#endif // QUERYWIZARDPLUGIN_H
diff --git a/src/smartplaylists/wizard.cpp b/src/smartplaylists/wizard.cpp
index 3d812caf5..6dfe68ad6 100644
--- a/src/smartplaylists/wizard.cpp
+++ b/src/smartplaylists/wizard.cpp
@@ -14,179 +14,63 @@
along with Clementine. If not, see .
*/
-#include "generator.h"
-#include "searchpreview.h"
-#include "searchtermwidget.h"
+#include "querywizardplugin.h"
#include "wizard.h"
-#include "ui_wizard.h"
+#include "wizardplugin.h"
+
+#include
+#include
+#include
+#include
namespace smart_playlists {
-Wizard::SearchPage::SearchPage(QWidget* parent)
- : QWizardPage(parent)
-{
-}
-
-bool Wizard::SearchPage::isComplete() const {
- if (type_->currentIndex() == 2) // All songs
- return true;
-
- foreach (SearchTermWidget* widget, terms_) {
- if (!widget->Term().is_valid())
- return false;
- }
- return true;
-}
-
Wizard::Wizard(LibraryBackend* library, QWidget* parent)
: QWizard(parent),
- ui_(new Ui_SmartPlaylistWizard),
- library_(library)
+ library_(library),
+ type_page_(new TypePage(this)),
+ type_mapper_(new QSignalMapper(this))
{
- ui_->setupUi(this);
- ui_->limit_value->setValue(Generator::kDefaultLimit);
+ setWindowIcon(QIcon(":/icon.png"));
+ setWindowTitle(tr("Smart playlist"));
+ resize(687, 628);
- connect(ui_->search_type, SIGNAL(currentIndexChanged(int)), SLOT(SearchTypeChanged()));
+ type_page_->setTitle(tr("Playlist type"));
+ type_page_->setSubTitle(tr("A smart playlist is a dynamic list of songs that come from your library. There are different types of smart playlist that offer different ways of selecting songs."));
+ addPage(type_page_);
- // Get the type combo box
- ui_->page_query_search->type_ = ui_->search_type;
+ connect(type_mapper_, SIGNAL(mapped(int)), SLOT(TypeChanged(int)));
- // Create the new search term widget
- ui_->page_query_search->new_term_ = new SearchTermWidget(library_, this);
- ui_->page_query_search->new_term_->SetActive(false);
- connect(ui_->page_query_search->new_term_, SIGNAL(Clicked()), SLOT(AddSearchTerm()));
-
- // Add an empty initial term
- ui_->page_query_search->layout_ = static_cast(ui_->terms_group->layout());
- ui_->page_query_search->layout_->addWidget(ui_->page_query_search->new_term_);
- AddSearchTerm();
-
- // Add the preview widget at the bottom of the search terms page
- QVBoxLayout* terms_page_layout = static_cast(ui_->page_query_search->layout());
- terms_page_layout->addStretch();
- ui_->page_query_search->preview_ = new SearchPreview(this);
- ui_->page_query_search->preview_->set_library(library_);
- terms_page_layout->addWidget(ui_->page_query_search->preview_);
-
- // Add sort field texts
- for (int i=0 ; isort_field_value->addItem(field_name);
- }
- connect(ui_->sort_field_value, SIGNAL(currentIndexChanged(int)), SLOT(UpdateSortOrder()));
- UpdateSortOrder();
-
- // Set the sort and limit radio buttons back to their defaults - they would
- // have been changed by setupUi
- ui_->sort_random->setChecked(true);
- ui_->limit_none->setChecked(true);
-
- // Set up the preview widget that's already at the bottom of the sort page
- ui_->sort_preview->set_library(library_);
+ new QVBoxLayout(type_page_);
+ AddPlugin(new QueryWizardPlugin(library_, this));
}
Wizard::~Wizard() {
- delete ui_;
+ qDeleteAll(plugins_);
}
-void Wizard::UpdateSortOrder() {
- const SearchTerm::Field field =
- SearchTerm::Field(ui_->sort_field_value->currentIndex());
- const SearchTerm::Type type = SearchTerm::TypeOf(field);
- const QString asc = SearchTerm::FieldSortOrderText(type, true);
- const QString desc = SearchTerm::FieldSortOrderText(type, false);
+void Wizard::AddPlugin(WizardPlugin* plugin) {
+ const int index = plugins_.count();
+ plugins_ << plugin;
+ plugin->Init(this);
- ui_->sort_order->clear();
- ui_->sort_order->addItem(asc);
- ui_->sort_order->addItem(desc);
-}
+ // Create the radio button
+ QRadioButton* name = new QRadioButton(plugin->name(), type_page_);
+ QLabel* description = new QLabel(plugin->description(), type_page_);
+ type_page_->layout()->addWidget(name);
+ type_page_->layout()->addWidget(description);
-void Wizard::AddSearchTerm() {
- SearchTermWidget* widget =
- new SearchTermWidget(library_, this);
- connect(widget, SIGNAL(RemoveClicked()), SLOT(RemoveSearchTerm()));
- connect(widget, SIGNAL(Changed()), SLOT(UpdateTermPreview()));
+ type_mapper_->setMapping(name, index);
+ connect(name, SIGNAL(clicked()), type_mapper_, SLOT(map()));
- ui_->page_query_search->layout_->insertWidget(
- ui_->page_query_search->terms_.count(), widget);
- ui_->page_query_search->terms_ << widget;
-
- UpdateTermPreview();
-}
-
-void Wizard::RemoveSearchTerm() {
- SearchTermWidget* widget =
- qobject_cast(sender());
- if (!widget)
- return;
-
- const int index = ui_->page_query_search->terms_.indexOf(widget);
- if (index == -1)
- return;
-
- delete ui_->page_query_search->terms_.takeAt(index);
- UpdateTermPreview();
-}
-
-void Wizard::UpdateTermPreview() {
- Search search = MakeSearch();
- emit ui_->page_query_search->completeChanged();
- if (!search.is_valid())
- return;
-
- // Don't apply limits in the term page
- search.limit_ = -1;
-
- ui_->page_query_search->preview_->Update(search);
-}
-
-void Wizard::UpdateSortPreview() {
- Search search = MakeSearch();
- if (!search.is_valid())
- return;
-
- ui_->sort_preview->Update(search);
-}
-
-Search Wizard::MakeSearch() const {
- Search ret;
-
- // Search type
- ret.search_type_ = Search::SearchType(ui_->search_type->currentIndex());
-
- // Search terms
- foreach (SearchTermWidget* widget, ui_->page_query_search->terms_) {
- SearchTerm term = widget->Term();
- if (term.is_valid())
- ret.terms_ << term;
+ if (index == 0) {
+ name->setChecked(true);
+ TypeChanged(0);
}
-
- // Sort order
- if (ui_->sort_random->isChecked()) {
- ret.sort_type_ = Search::Sort_Random;
- } else {
- const bool ascending = ui_->sort_order->currentIndex() == 0;
- ret.sort_type_ = ascending ? Search::Sort_FieldAsc :
- Search::Sort_FieldDesc;
- ret.sort_field_ = SearchTerm::Field(
- ui_->sort_field_value->currentIndex());
- }
-
- // Limit
- if (ui_->limit_none->isChecked())
- ret.limit_ = -1;
- else
- ret.limit_ = ui_->limit_value->value();
-
- return ret;
}
-void Wizard::SearchTypeChanged() {
- const bool all = ui_->search_type->currentIndex() == 2;
- ui_->terms_group->setEnabled(!all);
-
- UpdateTermPreview();
+void Wizard::TypeChanged(int index) {
+ type_page_->next_id_ = plugins_[index]->start_page();
}
} // namespace
diff --git a/src/smartplaylists/wizard.h b/src/smartplaylists/wizard.h
index fcae11e6d..f906ca636 100644
--- a/src/smartplaylists/wizard.h
+++ b/src/smartplaylists/wizard.h
@@ -17,20 +17,15 @@
#ifndef SMARTPLAYLISTWIZARD_H
#define SMARTPLAYLISTWIZARD_H
-#include "search.h"
-
#include
class LibraryBackend;
-class Ui_SmartPlaylistWizard;
-class QComboBox;
-class QVBoxLayout;
+class QSignalMapper;
namespace smart_playlists {
-class SearchPreview;
-class SearchTermWidget;
+class WizardPlugin;
class Wizard : public QWizard {
Q_OBJECT
@@ -39,36 +34,24 @@ public:
Wizard(LibraryBackend* library, QWidget* parent);
~Wizard();
- class SearchPage : public QWizardPage {
- friend class Wizard;
- public:
- SearchPage(QWidget* parent = 0);
- bool isComplete() const;
-
- QVBoxLayout* layout_;
- QComboBox* type_;
- QList terms_;
- SearchTermWidget* new_term_;
-
- SearchPreview* preview_;
+private:
+ struct TypePage : public QWizardPage {
+ TypePage(QWidget* parent) : QWizardPage(parent), next_id_(0) {}
+ int nextId() const { return next_id_; }
+ int next_id_;
};
+ void AddPlugin(WizardPlugin* plugin);
+
private slots:
- void AddSearchTerm();
- void RemoveSearchTerm();
-
- void SearchTypeChanged();
-
- void UpdateTermPreview();
- void UpdateSortPreview();
- void UpdateSortOrder();
+ void TypeChanged(int index);
private:
- Search MakeSearch() const;
-
-private:
- Ui_SmartPlaylistWizard* ui_;
LibraryBackend* library_;
+ TypePage* type_page_;
+ QSignalMapper* type_mapper_;
+
+ QList plugins_;
};
} // namespace
diff --git a/src/smartplaylists/wizard.ui b/src/smartplaylists/wizard.ui
deleted file mode 100644
index 1b8820197..000000000
--- a/src/smartplaylists/wizard.ui
+++ /dev/null
@@ -1,290 +0,0 @@
-
-
- SmartPlaylistWizard
-
-
-
- 0
- 0
- 687
- 628
-
-
-
- Smart playlist
-
-
-
- QRadioButton {
- font-weight: bold;
-}
-
-QLabel {
- margin-bottom: 1em;
-}
-
-
- Playlist type
-
-
- A smart playlist is a dynamic list of songs that come from your library. There are different types of smart playlist that offer different ways of selecting songs.
-
-
- -
-
-
- Library search
-
-
- true
-
-
-
- -
-
-
- Find songs in your library that match the criteria you specify.
-
-
- true
-
-
- 24
-
-
-
- -
-
-
- false
-
-
- Last.fm similar artists
-
-
-
- -
-
-
- false
-
-
- Let Last.fm suggest songs from your library that are similar to one you specify.
-
-
- true
-
-
- 24
-
-
-
-
-
-
-
- #termframe {
- border: 1px solid grey;
- border-radius: 10px;
-}
-
-#termframe #remove {
-background:qlineargradient(x1:0, y1:0, x2:0, y2:1,
- stop:0 rgba(255,0,0,32), stop: 1 rgba(255,0,0,64));
-border: 0px;
-border-left: 1px dashed grey;
-padding: 6px;
-margin-left: 9px;
-}
-
-
- Search terms
-
-
- A song will be included in the playlist if it matches these conditions.
-
-
- -
-
-
- Search mode
-
-
-
-
-
-
-
-
- Match every search term (AND)
-
-
- -
-
- Match one or more search terms (OR)
-
-
- -
-
- Don't use search terms (include all songs)
-
-
-
-
-
-
-
- -
-
-
- Search terms
-
-
-
-
-
-
-
-
- Search options
-
-
- Choose how the playlist is sorted and how many songs it will contain.
-
-
- -
-
-
- Sorting
-
-
-
-
-
-
- Put songs in a random order
-
-
- true
-
-
-
- -
-
-
- Sort songs by
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
- -
-
-
- Limits
-
-
-
-
-
-
- Show all the songs
-
-
- true
-
-
-
- -
-
-
- Only show the first
-
-
-
- -
-
-
- songs
-
-
- 1000
-
-
- 15
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- -
-
-
-
-
-
-
-
- smart_playlists::SearchPreview
- QWidget
- smartplaylists/searchpreview.h
- 1
-
-
- smart_playlists::Wizard::SearchPage
- QWizardPage
-
- 1
-
-
-
-
-
- sort_field_value
- currentIndexChanged(int)
- sort_field
- click()
-
-
- 190
- 152
-
-
- 142
- 148
-
-
-
-
- limit_value
- valueChanged(int)
- limit_limit
- click()
-
-
- 221
- 252
-
-
- 163
- 248
-
-
-
-
-
diff --git a/src/smartplaylists/wizardplugin.cpp b/src/smartplaylists/wizardplugin.cpp
new file mode 100644
index 000000000..848e5107b
--- /dev/null
+++ b/src/smartplaylists/wizardplugin.cpp
@@ -0,0 +1,32 @@
+/* This file is part of Clementine.
+
+ Clementine is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Clementine is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Clementine. If not, see .
+*/
+
+#include "wizardplugin.h"
+
+namespace smart_playlists {
+
+WizardPlugin::WizardPlugin(LibraryBackend* library, QObject* parent)
+ : QObject(parent),
+ library_(library),
+ start_page_(-1)
+{
+}
+
+void WizardPlugin::Init(QWizard* wizard) {
+ start_page_ = CreatePages(wizard);
+}
+
+} // namespace smart_playlists
diff --git a/src/smartplaylists/wizardplugin.h b/src/smartplaylists/wizardplugin.h
new file mode 100644
index 000000000..9641dcd11
--- /dev/null
+++ b/src/smartplaylists/wizardplugin.h
@@ -0,0 +1,55 @@
+/* This file is part of Clementine.
+
+ Clementine is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Clementine is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Clementine. If not, see .
+*/
+
+#ifndef WIZARDPLUGIN_H
+#define WIZARDPLUGIN_H
+
+#include
+
+#include "generator_fwd.h"
+
+class LibraryBackend;
+
+class QWizard;
+
+namespace smart_playlists {
+
+class WizardPlugin : public QObject {
+ Q_OBJECT
+
+public:
+ WizardPlugin(LibraryBackend* library, QObject* parent);
+
+ virtual QString name() const = 0;
+ virtual QString description() const = 0;
+ int start_page() const { return start_page_; }
+
+ virtual GeneratorPtr CreateGenerator() const = 0;
+
+ void Init(QWizard* wizard);
+
+protected:
+ virtual int CreatePages(QWizard* wizard) = 0;
+
+ LibraryBackend* library_;
+
+private:
+ int start_page_;
+};
+
+} // namespace smart_playlists
+
+#endif // WIZARDPLUGIN_H
diff --git a/src/translations/ar.po b/src/translations/ar.po
index 6e781d9d4..bd35722e9 100644
--- a/src/translations/ar.po
+++ b/src/translations/ar.po
@@ -1131,9 +1131,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1149,11 +1146,6 @@ msgstr ""
msgid "Length"
msgstr "المدة"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/bg.po b/src/translations/bg.po
index de32f0843..964b376be 100644
--- a/src/translations/bg.po
+++ b/src/translations/bg.po
@@ -1136,9 +1136,6 @@ msgstr "Last.fm парола"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1154,11 +1151,6 @@ msgstr ""
msgid "Length"
msgstr "Дължина"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/ca.po b/src/translations/ca.po
index e093669e2..ea81242a1 100644
--- a/src/translations/ca.po
+++ b/src/translations/ca.po
@@ -1157,9 +1157,6 @@ msgstr "Contrasenya de Last.fm"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1177,11 +1174,6 @@ msgstr ""
msgid "Length"
msgstr "Durada"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Biblioteca"
diff --git a/src/translations/cs.po b/src/translations/cs.po
index 6af671c93..7b875038f 100644
--- a/src/translations/cs.po
+++ b/src/translations/cs.po
@@ -1136,9 +1136,6 @@ msgstr "Heslo k Last.fm"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1154,11 +1151,6 @@ msgstr ""
msgid "Length"
msgstr "Délka"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Knihovna"
diff --git a/src/translations/cy.po b/src/translations/cy.po
index 7e862cf4f..76fe5a966 100644
--- a/src/translations/cy.po
+++ b/src/translations/cy.po
@@ -1131,9 +1131,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1149,11 +1146,6 @@ msgstr ""
msgid "Length"
msgstr ""
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/da.po b/src/translations/da.po
index 3324c20b5..c8bddbfa7 100644
--- a/src/translations/da.po
+++ b/src/translations/da.po
@@ -1137,9 +1137,6 @@ msgstr "Last.fm-adgangskode"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1155,11 +1152,6 @@ msgstr "Lad stå blank for standard. Eksempler: \"/dev/dsp\", \"front\", osv."
msgid "Length"
msgstr "Længde"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Bibliotek"
diff --git a/src/translations/de.po b/src/translations/de.po
index e63d85771..51c17da0c 100644
--- a/src/translations/de.po
+++ b/src/translations/de.po
@@ -1160,9 +1160,6 @@ msgstr "Last.fm Passwort"
msgid "Last.fm play counts"
msgstr "Last.fm Abspielzähler"
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr "Last.fm tags"
@@ -1180,11 +1177,6 @@ msgstr ""
msgid "Length"
msgstr "Länge"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Sammlung"
diff --git a/src/translations/el.po b/src/translations/el.po
index e4c4678f9..6838404d8 100644
--- a/src/translations/el.po
+++ b/src/translations/el.po
@@ -1171,9 +1171,6 @@ msgstr "Last.fm συνθηματικό"
msgid "Last.fm play counts"
msgstr "Αριθμός αναπαραγωγής Last.fm"
-msgid "Last.fm similar artists"
-msgstr "Παρόμοιοι καλλιτέχνες Last.fm"
-
msgid "Last.fm tags"
msgstr "Ετικέτες του Last.fm"
@@ -1189,13 +1186,6 @@ msgstr "Κενό για τα προεπιλεγμένα. Π.χ. \"/dev/dsp\", \
msgid "Length"
msgstr "Διάρκεια"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Επιτρέψτε στο Last.fm να προτείνει τραγούδια από την βιβλιοθήκη σας παρόμοια "
-"με αυτό που ορίζετε."
-
msgid "Library"
msgstr "Βιβλιοθήκη"
@@ -2411,6 +2401,16 @@ msgstr "διακοπή"
msgid "track %1"
msgstr "κομμάτι %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Παρόμοιοι καλλιτέχνες Last.fm"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Επιτρέψτε στο Last.fm να προτείνει τραγούδια από την βιβλιοθήκη σας "
+#~ "παρόμοια με αυτό που ορίζετε."
+
#~ msgid "Playlists"
#~ msgstr "Λίστες αναπαραγωγής"
diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po
index 929ed49e1..fc1f47d41 100644
--- a/src/translations/en_CA.po
+++ b/src/translations/en_CA.po
@@ -1135,9 +1135,6 @@ msgstr "Last.fm password"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1153,11 +1150,6 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc."
msgid "Length"
msgstr "Length"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Library"
diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po
index 85cce1b34..ce87dd1c7 100644
--- a/src/translations/en_GB.po
+++ b/src/translations/en_GB.po
@@ -1133,9 +1133,6 @@ msgstr "Last.fm password"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1151,11 +1148,6 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc."
msgid "Length"
msgstr "Length"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Library"
diff --git a/src/translations/eo.po b/src/translations/eo.po
index b473b3d03..abfc6ed71 100644
--- a/src/translations/eo.po
+++ b/src/translations/eo.po
@@ -1131,9 +1131,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1149,11 +1146,6 @@ msgstr ""
msgid "Length"
msgstr ""
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/es.po b/src/translations/es.po
index b898d8445..16c0c1178 100644
--- a/src/translations/es.po
+++ b/src/translations/es.po
@@ -1169,9 +1169,6 @@ msgstr "Contraseña"
msgid "Last.fm play counts"
msgstr "Recuento de reproducciones de Last.fm"
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr "Etiquetas de Last.fm"
@@ -1189,11 +1186,6 @@ msgstr ""
msgid "Length"
msgstr "Duración"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Colección"
diff --git a/src/translations/et.po b/src/translations/et.po
index 5f23a341d..5ac9960d8 100644
--- a/src/translations/et.po
+++ b/src/translations/et.po
@@ -1133,9 +1133,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr "Last.fm sildipilv"
@@ -1151,11 +1148,6 @@ msgstr ""
msgid "Length"
msgstr "Kestvus"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Helikogu"
diff --git a/src/translations/fi.po b/src/translations/fi.po
index 9aae81ed6..321e19ef8 100644
--- a/src/translations/fi.po
+++ b/src/translations/fi.po
@@ -1133,9 +1133,6 @@ msgstr "Last.fm-salasana"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1151,11 +1148,6 @@ msgstr ""
msgid "Length"
msgstr "Kesto"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Kirjasto"
diff --git a/src/translations/fr.po b/src/translations/fr.po
index 029e1664d..78f1b214e 100644
--- a/src/translations/fr.po
+++ b/src/translations/fr.po
@@ -1168,9 +1168,6 @@ msgstr "Mot de passe"
msgid "Last.fm play counts"
msgstr "Nombre d'écoutes Last.fm"
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr "Tags Last.fm"
@@ -1188,11 +1185,6 @@ msgstr ""
msgid "Length"
msgstr "Durée"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Bibliothèque"
diff --git a/src/translations/gl.po b/src/translations/gl.po
index 1688eb7da..d29f877b5 100644
--- a/src/translations/gl.po
+++ b/src/translations/gl.po
@@ -1138,9 +1138,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1156,11 +1153,6 @@ msgstr ""
msgid "Length"
msgstr "Durazón"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/hu.po b/src/translations/hu.po
index 02c716759..acebd352c 100644
--- a/src/translations/hu.po
+++ b/src/translations/hu.po
@@ -1163,9 +1163,6 @@ msgstr "Last.fm jelszó"
msgid "Last.fm play counts"
msgstr "Last.fm lejátszás számláló"
-msgid "Last.fm similar artists"
-msgstr "Last.fm hasonló előadók"
-
msgid "Last.fm tags"
msgstr "Last.fm címkék"
@@ -1182,13 +1179,6 @@ msgstr ""
msgid "Length"
msgstr "Időtartam"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Last.fm ajánlások használata számok kiválasztásához a zenetáradból a "
-"feltételeidnek megfelelően."
-
msgid "Library"
msgstr "Zenetár"
@@ -2396,6 +2386,16 @@ msgstr "leállítás"
msgid "track %1"
msgstr "%1. szám"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Last.fm hasonló előadók"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Last.fm ajánlások használata számok kiválasztásához a zenetáradból a "
+#~ "feltételeidnek megfelelően."
+
#~ msgid "Playlists"
#~ msgstr "Lejátszási listák"
diff --git a/src/translations/it.po b/src/translations/it.po
index d83ca1e0e..1ce2e9c52 100644
--- a/src/translations/it.po
+++ b/src/translations/it.po
@@ -1170,9 +1170,6 @@ msgstr "Password Last.fm"
msgid "Last.fm play counts"
msgstr "Contatore riproduzioni di Last.fm"
-msgid "Last.fm similar artists"
-msgstr "Artisti simili di Last.fm"
-
msgid "Last.fm tags"
msgstr "Etichette di Last.fm"
@@ -1190,13 +1187,6 @@ msgstr ""
msgid "Length"
msgstr "Durata"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Lascia che Last.fm suggerisca brani della raccolta che sono simili a quello "
-"specificato."
-
msgid "Library"
msgstr "Raccolta"
@@ -2411,6 +2401,16 @@ msgstr "ferma"
msgid "track %1"
msgstr "traccia %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Artisti simili di Last.fm"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Lascia che Last.fm suggerisca brani della raccolta che sono simili a "
+#~ "quello specificato."
+
#~ msgid "Playlists"
#~ msgstr "Scalette"
diff --git a/src/translations/ja.po b/src/translations/ja.po
index ba3c564e5..453f37ad2 100644
--- a/src/translations/ja.po
+++ b/src/translations/ja.po
@@ -1156,9 +1156,6 @@ msgstr "Last.fm のパスワード"
msgid "Last.fm play counts"
msgstr "Last.fm の再生回数"
-msgid "Last.fm similar artists"
-msgstr "Last.fm のテイストの似たアーティスト"
-
msgid "Last.fm tags"
msgstr "Last.fm タグ"
@@ -1174,11 +1171,6 @@ msgstr "既定にするには空のままにします。例: \"/dev/dsp\"、\"fr
msgid "Length"
msgstr "長さ"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr "ライブラリの指定する曲にテイストの似た曲を Last.fm から検索します。"
-
msgid "Library"
msgstr "ライブラリ"
@@ -2380,6 +2372,14 @@ msgstr "停止"
msgid "track %1"
msgstr "トラック %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Last.fm のテイストの似たアーティスト"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr "ライブラリの指定する曲にテイストの似た曲を Last.fm から検索します。"
+
#~ msgid "Playlists"
#~ msgstr "プレイリスト"
diff --git a/src/translations/kk.po b/src/translations/kk.po
index 9514848f7..531d89596 100644
--- a/src/translations/kk.po
+++ b/src/translations/kk.po
@@ -1133,9 +1133,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1151,11 +1148,6 @@ msgstr ""
msgid "Length"
msgstr "Ұзындығы"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/lt.po b/src/translations/lt.po
index 7d2495959..8be0b7581 100644
--- a/src/translations/lt.po
+++ b/src/translations/lt.po
@@ -1132,9 +1132,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1150,11 +1147,6 @@ msgstr ""
msgid "Length"
msgstr ""
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/nb.po b/src/translations/nb.po
index b7513d4f0..87b6dbf18 100644
--- a/src/translations/nb.po
+++ b/src/translations/nb.po
@@ -1146,9 +1146,6 @@ msgstr "Last.fm passord"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1164,11 +1161,6 @@ msgstr ""
msgid "Length"
msgstr "Lengde"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Bibliotek"
diff --git a/src/translations/nl.po b/src/translations/nl.po
index a0012a25b..9294586a0 100644
--- a/src/translations/nl.po
+++ b/src/translations/nl.po
@@ -1160,9 +1160,6 @@ msgstr "Last.fm wachtwoord"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1179,11 +1176,6 @@ msgstr ""
msgid "Length"
msgstr "Duur"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Bibliotheek"
diff --git a/src/translations/oc.po b/src/translations/oc.po
index 19f7d9e88..837037199 100644
--- a/src/translations/oc.po
+++ b/src/translations/oc.po
@@ -1131,9 +1131,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1149,11 +1146,6 @@ msgstr ""
msgid "Length"
msgstr "Longor"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Bibliotèca"
diff --git a/src/translations/pl.po b/src/translations/pl.po
index 40869631b..82c647892 100644
--- a/src/translations/pl.po
+++ b/src/translations/pl.po
@@ -1157,9 +1157,6 @@ msgstr "Hasło Last.fm"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1177,11 +1174,6 @@ msgstr ""
msgid "Length"
msgstr "Długość"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Biblioteka"
diff --git a/src/translations/pt.po b/src/translations/pt.po
index 055adc3dd..9b8b9f67d 100644
--- a/src/translations/pt.po
+++ b/src/translations/pt.po
@@ -1166,9 +1166,6 @@ msgstr "Senha Last.fm"
msgid "Last.fm play counts"
msgstr "Reprodções Last.fm"
-msgid "Last.fm similar artists"
-msgstr "Artistas semelhantes na Last.fm"
-
msgid "Last.fm tags"
msgstr "\\\"Tags\\\" Last.fm"
@@ -1186,13 +1183,6 @@ msgstr ""
msgid "Length"
msgstr "Duração"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Deixar que a Last.fm sugira as músicas da sua biblioteca que sejam "
-"semelhantes às que especificou."
-
msgid "Library"
msgstr "Biblioteca"
@@ -2402,6 +2392,16 @@ msgstr "parar"
msgid "track %1"
msgstr "faixa %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Artistas semelhantes na Last.fm"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Deixar que a Last.fm sugira as músicas da sua biblioteca que sejam "
+#~ "semelhantes às que especificou."
+
#~ msgid "Playlists"
#~ msgstr "Listas de reprodução"
diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po
index 4ef5fb65d..057079102 100644
--- a/src/translations/pt_BR.po
+++ b/src/translations/pt_BR.po
@@ -1148,9 +1148,6 @@ msgstr "Senha do Last.fm"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1166,11 +1163,6 @@ msgstr "Deixe em brando por padrão. Exemplos: \"/dev/dsp\", \"front\", etc."
msgid "Length"
msgstr "Duração"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Biblioteca"
diff --git a/src/translations/ro.po b/src/translations/ro.po
index 079d4c433..19db65d8f 100644
--- a/src/translations/ro.po
+++ b/src/translations/ro.po
@@ -1132,9 +1132,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1150,11 +1147,6 @@ msgstr ""
msgid "Length"
msgstr "Durată"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Bibliotecă"
diff --git a/src/translations/ru.po b/src/translations/ru.po
index 46a9431ef..d111a99ac 100644
--- a/src/translations/ru.po
+++ b/src/translations/ru.po
@@ -1153,9 +1153,6 @@ msgstr "Пароль Last.fm"
msgid "Last.fm play counts"
msgstr "Количество прослушиваний на Last.fm"
-msgid "Last.fm similar artists"
-msgstr "Похожие исполнители на Last.fm"
-
msgid "Last.fm tags"
msgstr "Last.fm теги"
@@ -1172,11 +1169,6 @@ msgstr ""
msgid "Length"
msgstr "Длительность"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Коллекция"
@@ -2383,6 +2375,9 @@ msgstr "Остановить"
msgid "track %1"
msgstr "композиция %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Похожие исполнители на Last.fm"
+
#~ msgid "Playlists"
#~ msgstr "Плейлисты"
diff --git a/src/translations/sk.po b/src/translations/sk.po
index 9b9fee7b9..782f5e641 100644
--- a/src/translations/sk.po
+++ b/src/translations/sk.po
@@ -1157,9 +1157,6 @@ msgstr "Last.fm heslo"
msgid "Last.fm play counts"
msgstr "Last.fm počet prehraní"
-msgid "Last.fm similar artists"
-msgstr "Last.fm podobný interpréti"
-
msgid "Last.fm tags"
msgstr "Last.fm tagy"
@@ -1175,13 +1172,6 @@ msgstr "Nechať pôvodne - prázdne. Príklady: \"/dev/dsp\", \"front\", atď."
msgid "Length"
msgstr "Dĺžka"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Nechať Last.fm napovedať piesne z vašej zbierky ktoré sú podobné ako tá, čo "
-"ste vybrali."
-
msgid "Library"
msgstr "Zbierka"
@@ -2387,6 +2377,16 @@ msgstr "zastaviť"
msgid "track %1"
msgstr "skladba %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Last.fm podobný interpréti"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Nechať Last.fm napovedať piesne z vašej zbierky ktoré sú podobné ako tá, "
+#~ "čo ste vybrali."
+
#~ msgid "Playlists"
#~ msgstr "Playlisty"
diff --git a/src/translations/sl.po b/src/translations/sl.po
index 0f26297e8..f808cc141 100644
--- a/src/translations/sl.po
+++ b/src/translations/sl.po
@@ -1159,9 +1159,6 @@ msgstr "Geslo Last.fm"
msgid "Last.fm play counts"
msgstr "Število predvajanj last.fm"
-msgid "Last.fm similar artists"
-msgstr "Last.fm podobni izvajalci"
-
msgid "Last.fm tags"
msgstr "Last.fm oznake"
@@ -1177,13 +1174,6 @@ msgstr "Pustite prazno za privzeto. Primeri: \"/dev/dsp\", \"front\", itd."
msgid "Length"
msgstr "Dolžina"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Dovoli, da Last.fm predlaga skladbe iz vaše knjižnice, ki so podobne tisti, "
-"ki ste jo določili."
-
msgid "Library"
msgstr "Knjižnica"
@@ -2389,6 +2379,16 @@ msgstr "zaustavi"
msgid "track %1"
msgstr "skladba %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Last.fm podobni izvajalci"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Dovoli, da Last.fm predlaga skladbe iz vaše knjižnice, ki so podobne "
+#~ "tisti, ki ste jo določili."
+
#~ msgid "Playlists"
#~ msgstr "Seznami predvajanja"
diff --git a/src/translations/sr.po b/src/translations/sr.po
index f0a54e288..62b0d9965 100644
--- a/src/translations/sr.po
+++ b/src/translations/sr.po
@@ -1137,9 +1137,6 @@ msgstr "ЛастФМ лозинка"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1155,11 +1152,6 @@ msgstr ""
msgid "Length"
msgstr "Трајање"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Библиотека"
diff --git a/src/translations/sv.po b/src/translations/sv.po
index d7a4c8589..2b514e18e 100644
--- a/src/translations/sv.po
+++ b/src/translations/sv.po
@@ -1158,9 +1158,6 @@ msgstr "Last.fm-lösenord"
msgid "Last.fm play counts"
msgstr "Last.fm-låtstatistik"
-msgid "Last.fm similar artists"
-msgstr "Liknande Last.fm-artister"
-
msgid "Last.fm tags"
msgstr "Last.fm-taggar"
@@ -1176,11 +1173,6 @@ msgstr "Lämna tomt för standardvärdet. Exempel: \"/dev/dsp\", \"front\", etc.
msgid "Length"
msgstr "Speltid"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr "Låt Last.fm föreslå låtar från ditt bibliotek som liknar den du anger."
-
msgid "Library"
msgstr "Bibliotek"
@@ -2384,6 +2376,15 @@ msgstr "stoppa"
msgid "track %1"
msgstr "spår %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Liknande Last.fm-artister"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Låt Last.fm föreslå låtar från ditt bibliotek som liknar den du anger."
+
#~ msgid "Playlists"
#~ msgstr "Spellistor"
diff --git a/src/translations/tr.po b/src/translations/tr.po
index 2e5faa484..e203f5dc1 100644
--- a/src/translations/tr.po
+++ b/src/translations/tr.po
@@ -1154,9 +1154,6 @@ msgstr "Last.fm parolası"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr "Last.fm benzer sanatçılar"
-
msgid "Last.fm tags"
msgstr "Last.fm etiketleri"
@@ -1174,11 +1171,6 @@ msgstr ""
msgid "Length"
msgstr "Süre"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "Kütüphane"
@@ -2376,6 +2368,9 @@ msgstr "durdur"
msgid "track %1"
msgstr "parça %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Last.fm benzer sanatçılar"
+
#~ msgid "Playlists"
#~ msgstr "Çalma Listeleri"
diff --git a/src/translations/translations.pot b/src/translations/translations.pot
index 7325ba957..50a285a9b 100644
--- a/src/translations/translations.pot
+++ b/src/translations/translations.pot
@@ -1122,9 +1122,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1140,11 +1137,6 @@ msgstr ""
msgid "Length"
msgstr ""
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/uk.po b/src/translations/uk.po
index 86027a0d1..3a7be6665 100644
--- a/src/translations/uk.po
+++ b/src/translations/uk.po
@@ -1158,9 +1158,6 @@ msgstr "Пароль Last.fm"
msgid "Last.fm play counts"
msgstr "Кількість відтворень на Last.fm"
-msgid "Last.fm similar artists"
-msgstr "Подібні виконавці на Last.fm"
-
msgid "Last.fm tags"
msgstr "Позначки Last.fm"
@@ -1176,13 +1173,6 @@ msgstr "Типово, залишити порожнім. Наприклад: \"
msgid "Length"
msgstr "Тривалість"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-"Дозволити Last.fm пропонувати композиції з вашої фонотеки подібні до "
-"вказаних вами."
-
msgid "Library"
msgstr "Фонотека"
@@ -2383,6 +2373,16 @@ msgstr "зупинити"
msgid "track %1"
msgstr "доріжка %1"
+#~ msgid "Last.fm similar artists"
+#~ msgstr "Подібні виконавці на Last.fm"
+
+#~ msgid ""
+#~ "Let Last.fm suggest songs from your library that are similar to one you "
+#~ "specify."
+#~ msgstr ""
+#~ "Дозволити Last.fm пропонувати композиції з вашої фонотеки подібні до "
+#~ "вказаних вами."
+
#~ msgid "Playlists"
#~ msgstr "Списки відтворення"
diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po
index ab480b739..45fe21687 100644
--- a/src/translations/zh_CN.po
+++ b/src/translations/zh_CN.po
@@ -1133,9 +1133,6 @@ msgstr "Last.fm 密码"
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1151,11 +1148,6 @@ msgstr ""
msgid "Length"
msgstr "长度"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr ""
diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po
index 5743b8952..e57f84bcb 100644
--- a/src/translations/zh_TW.po
+++ b/src/translations/zh_TW.po
@@ -1137,9 +1137,6 @@ msgstr ""
msgid "Last.fm play counts"
msgstr ""
-msgid "Last.fm similar artists"
-msgstr ""
-
msgid "Last.fm tags"
msgstr ""
@@ -1155,11 +1152,6 @@ msgstr ""
msgid "Length"
msgstr "長度"
-msgid ""
-"Let Last.fm suggest songs from your library that are similar to one you "
-"specify."
-msgstr ""
-
msgid "Library"
msgstr "音樂庫"