Refactor the smart playlist wizard to move all query-specific parts into a separate class
This commit is contained in:
parent
1f267881fe
commit
753b144752
@ -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
|
||||
|
||||
|
57
src/smartplaylists/querysearchpage.ui
Normal file
57
src/smartplaylists/querysearchpage.ui
Normal file
@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SmartPlaylistQuerySearchPage</class>
|
||||
<widget class="QWidget" name="SmartPlaylistQuerySearchPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>400</width>
|
||||
<height>300</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Search mode</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QComboBox" name="type">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Match every search term (AND)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Match one or more search terms (OR)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Don't use search terms (include all songs)</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="terms_group">
|
||||
<property name="title">
|
||||
<string>Search terms</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
117
src/smartplaylists/querysortpage.ui
Normal file
117
src/smartplaylists/querysortpage.ui
Normal file
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SmartPlaylistQuerySortPage</class>
|
||||
<widget class="QWidget" name="SmartPlaylistQuerySortPage">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>723</width>
|
||||
<height>335</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Sorting</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QRadioButton" name="random">
|
||||
<property name="text">
|
||||
<string>Put songs in a random order</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QRadioButton" name="field">
|
||||
<property name="text">
|
||||
<string>Sort songs by</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="field_value"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="order"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Limits</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QRadioButton" name="limit_none">
|
||||
<property name="text">
|
||||
<string>Show all the songs</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QRadioButton" name="limit_limit">
|
||||
<property name="text">
|
||||
<string>Only show the first</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="limit_value">
|
||||
<property name="suffix">
|
||||
<string> songs</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>15</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="smart_playlists::SearchPreview" name="preview" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>smart_playlists::SearchPreview</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>smartplaylists/searchpreview.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
223
src/smartplaylists/querywizardplugin.cpp
Normal file
223
src/smartplaylists/querywizardplugin.cpp
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "querywizardplugin.h"
|
||||
#include "searchtermwidget.h"
|
||||
#include "ui_querysearchpage.h"
|
||||
#include "ui_querysortpage.h"
|
||||
|
||||
#include <QWizardPage>
|
||||
|
||||
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<QVBoxLayout*>(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<QVBoxLayout*>(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 ; i<SearchTerm::FieldCount ; ++i) {
|
||||
const SearchTerm::Field field = SearchTerm::Field(i);
|
||||
const QString field_name = SearchTerm::FieldName(field);
|
||||
sort_ui_->field_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<SearchTermWidget*>(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
|
85
src/smartplaylists/querywizardplugin.h
Normal file
85
src/smartplaylists/querywizardplugin.h
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef QUERYWIZARDPLUGIN_H
|
||||
#define QUERYWIZARDPLUGIN_H
|
||||
|
||||
#include "search.h"
|
||||
#include "wizardplugin.h"
|
||||
|
||||
#include <QWizard>
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
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<SearchTermWidget*> terms_;
|
||||
SearchTermWidget* new_term_;
|
||||
|
||||
SearchPreview* preview_;
|
||||
|
||||
boost::scoped_ptr<Ui_SmartPlaylistQuerySearchPage> ui_;
|
||||
};
|
||||
|
||||
Search MakeSearch() const;
|
||||
|
||||
SearchPage* search_page_;
|
||||
boost::scoped_ptr<Ui_SmartPlaylistQuerySortPage> sort_ui_;
|
||||
};
|
||||
|
||||
} // namespace smart_playlists
|
||||
|
||||
#endif // QUERYWIZARDPLUGIN_H
|
@ -14,179 +14,63 @@
|
||||
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "generator.h"
|
||||
#include "searchpreview.h"
|
||||
#include "searchtermwidget.h"
|
||||
#include "querywizardplugin.h"
|
||||
#include "wizard.h"
|
||||
#include "ui_wizard.h"
|
||||
#include "wizardplugin.h"
|
||||
|
||||
#include <QLabel>
|
||||
#include <QRadioButton>
|
||||
#include <QSignalMapper>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
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<QVBoxLayout*>(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<QVBoxLayout*>(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 ; i<SearchTerm::FieldCount ; ++i) {
|
||||
const SearchTerm::Field field = SearchTerm::Field(i);
|
||||
const QString field_name = SearchTerm::FieldName(field);
|
||||
ui_->sort_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<SearchTermWidget*>(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
|
||||
|
@ -17,20 +17,15 @@
|
||||
#ifndef SMARTPLAYLISTWIZARD_H
|
||||
#define SMARTPLAYLISTWIZARD_H
|
||||
|
||||
#include "search.h"
|
||||
|
||||
#include <QWizard>
|
||||
|
||||
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<SearchTermWidget*> 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<WizardPlugin*> plugins_;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
@ -1,290 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SmartPlaylistWizard</class>
|
||||
<widget class="QWizard" name="SmartPlaylistWizard">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>687</width>
|
||||
<height>628</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Smart playlist</string>
|
||||
</property>
|
||||
<widget class="QWizardPage" name="page_type">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">QRadioButton {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
QLabel {
|
||||
margin-bottom: 1em;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Playlist type</string>
|
||||
</property>
|
||||
<property name="subTitle">
|
||||
<string>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.</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton">
|
||||
<property name="text">
|
||||
<string>Library search</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="text">
|
||||
<string>Find songs in your library that match the criteria you specify.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="indent">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButton_2">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Last.fm similar artists</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Let Last.fm suggest songs from your library that are similar to one you specify.</string>
|
||||
</property>
|
||||
<property name="wordWrap">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="indent">
|
||||
<number>24</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="smart_playlists::Wizard::SearchPage" name="page_query_search">
|
||||
<property name="styleSheet">
|
||||
<string notr="true">#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;
|
||||
}</string>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Search terms</string>
|
||||
</property>
|
||||
<property name="subTitle">
|
||||
<string>A song will be included in the playlist if it matches these conditions.</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_3">
|
||||
<property name="title">
|
||||
<string>Search mode</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QComboBox" name="search_type">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Match every search term (AND)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Match one or more search terms (OR)</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Don't use search terms (include all songs)</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="terms_group">
|
||||
<property name="title">
|
||||
<string>Search terms</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_5"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWizardPage" name="page_query_sort">
|
||||
<property name="title">
|
||||
<string>Search options</string>
|
||||
</property>
|
||||
<property name="subTitle">
|
||||
<string>Choose how the playlist is sorted and how many songs it will contain.</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Sorting</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QRadioButton" name="sort_random">
|
||||
<property name="text">
|
||||
<string>Put songs in a random order</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QRadioButton" name="sort_field">
|
||||
<property name="text">
|
||||
<string>Sort songs by</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QComboBox" name="sort_field_value"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="sort_order"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Limits</string>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="formLayout_2">
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QRadioButton" name="limit_none">
|
||||
<property name="text">
|
||||
<string>Show all the songs</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QRadioButton" name="limit_limit">
|
||||
<property name="text">
|
||||
<string>Only show the first</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QSpinBox" name="limit_value">
|
||||
<property name="suffix">
|
||||
<string> songs</string>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1000</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>15</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="smart_playlists::SearchPreview" name="sort_preview" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>smart_playlists::SearchPreview</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>smartplaylists/searchpreview.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>smart_playlists::Wizard::SearchPage</class>
|
||||
<extends>QWizardPage</extends>
|
||||
<header>smartplaylists/wizard.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>sort_field_value</sender>
|
||||
<signal>currentIndexChanged(int)</signal>
|
||||
<receiver>sort_field</receiver>
|
||||
<slot>click()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>190</x>
|
||||
<y>152</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>142</x>
|
||||
<y>148</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>limit_value</sender>
|
||||
<signal>valueChanged(int)</signal>
|
||||
<receiver>limit_limit</receiver>
|
||||
<slot>click()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>221</x>
|
||||
<y>252</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>163</x>
|
||||
<y>248</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
32
src/smartplaylists/wizardplugin.cpp
Normal file
32
src/smartplaylists/wizardplugin.cpp
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#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
|
55
src/smartplaylists/wizardplugin.h
Normal file
55
src/smartplaylists/wizardplugin.h
Normal file
@ -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 <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef WIZARDPLUGIN_H
|
||||
#define WIZARDPLUGIN_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
#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
|
@ -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 ""
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 "Λίστες αναπαραγωγής"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 "プレイリスト"
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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ă"
|
||||
|
||||
|
@ -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 "Плейлисты"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 "Библиотека"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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 "Списки відтворення"
|
||||
|
||||
|
@ -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 ""
|
||||
|
||||
|
@ -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 "音樂庫"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user