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/generator.cpp
|
||||||
smartplaylists/generatorinserter.cpp
|
smartplaylists/generatorinserter.cpp
|
||||||
smartplaylists/querygenerator.cpp
|
smartplaylists/querygenerator.cpp
|
||||||
|
smartplaylists/querywizardplugin.cpp
|
||||||
smartplaylists/search.cpp
|
smartplaylists/search.cpp
|
||||||
smartplaylists/searchpreview.cpp
|
smartplaylists/searchpreview.cpp
|
||||||
smartplaylists/searchterm.cpp
|
smartplaylists/searchterm.cpp
|
||||||
smartplaylists/searchtermwidget.cpp
|
smartplaylists/searchtermwidget.cpp
|
||||||
smartplaylists/wizard.cpp
|
smartplaylists/wizard.cpp
|
||||||
|
smartplaylists/wizardplugin.cpp
|
||||||
|
|
||||||
songinfo/artistinfoview.cpp
|
songinfo/artistinfoview.cpp
|
||||||
songinfo/collapsibleinfoheader.cpp
|
songinfo/collapsibleinfoheader.cpp
|
||||||
@ -290,9 +292,11 @@ set(HEADERS
|
|||||||
smartplaylists/generator.h
|
smartplaylists/generator.h
|
||||||
smartplaylists/generatorinserter.h
|
smartplaylists/generatorinserter.h
|
||||||
smartplaylists/generatormimedata.h
|
smartplaylists/generatormimedata.h
|
||||||
|
smartplaylists/querywizardplugin.h
|
||||||
smartplaylists/searchpreview.h
|
smartplaylists/searchpreview.h
|
||||||
smartplaylists/searchtermwidget.h
|
smartplaylists/searchtermwidget.h
|
||||||
smartplaylists/wizard.h
|
smartplaylists/wizard.h
|
||||||
|
smartplaylists/wizardplugin.h
|
||||||
|
|
||||||
songinfo/artistinfoview.h
|
songinfo/artistinfoview.h
|
||||||
songinfo/collapsibleinfoheader.h
|
songinfo/collapsibleinfoheader.h
|
||||||
@ -374,9 +378,10 @@ set(UI
|
|||||||
radio/magnatunedownloaddialog.ui
|
radio/magnatunedownloaddialog.ui
|
||||||
radio/radioviewcontainer.ui
|
radio/radioviewcontainer.ui
|
||||||
|
|
||||||
|
smartplaylists/querysearchpage.ui
|
||||||
|
smartplaylists/querysortpage.ui
|
||||||
smartplaylists/searchpreview.ui
|
smartplaylists/searchpreview.ui
|
||||||
smartplaylists/searchtermwidget.ui
|
smartplaylists/searchtermwidget.ui
|
||||||
smartplaylists/wizard.ui
|
|
||||||
|
|
||||||
songinfo/lyricsettings.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/>.
|
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "generator.h"
|
#include "querywizardplugin.h"
|
||||||
#include "searchpreview.h"
|
|
||||||
#include "searchtermwidget.h"
|
|
||||||
#include "wizard.h"
|
#include "wizard.h"
|
||||||
#include "ui_wizard.h"
|
#include "wizardplugin.h"
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QRadioButton>
|
||||||
|
#include <QSignalMapper>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
namespace smart_playlists {
|
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)
|
Wizard::Wizard(LibraryBackend* library, QWidget* parent)
|
||||||
: QWizard(parent),
|
: QWizard(parent),
|
||||||
ui_(new Ui_SmartPlaylistWizard),
|
library_(library),
|
||||||
library_(library)
|
type_page_(new TypePage(this)),
|
||||||
|
type_mapper_(new QSignalMapper(this))
|
||||||
{
|
{
|
||||||
ui_->setupUi(this);
|
setWindowIcon(QIcon(":/icon.png"));
|
||||||
ui_->limit_value->setValue(Generator::kDefaultLimit);
|
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
|
connect(type_mapper_, SIGNAL(mapped(int)), SLOT(TypeChanged(int)));
|
||||||
ui_->page_query_search->type_ = ui_->search_type;
|
|
||||||
|
|
||||||
// Create the new search term widget
|
new QVBoxLayout(type_page_);
|
||||||
ui_->page_query_search->new_term_ = new SearchTermWidget(library_, this);
|
AddPlugin(new QueryWizardPlugin(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_);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Wizard::~Wizard() {
|
Wizard::~Wizard() {
|
||||||
delete ui_;
|
qDeleteAll(plugins_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Wizard::UpdateSortOrder() {
|
void Wizard::AddPlugin(WizardPlugin* plugin) {
|
||||||
const SearchTerm::Field field =
|
const int index = plugins_.count();
|
||||||
SearchTerm::Field(ui_->sort_field_value->currentIndex());
|
plugins_ << plugin;
|
||||||
const SearchTerm::Type type = SearchTerm::TypeOf(field);
|
plugin->Init(this);
|
||||||
const QString asc = SearchTerm::FieldSortOrderText(type, true);
|
|
||||||
const QString desc = SearchTerm::FieldSortOrderText(type, false);
|
|
||||||
|
|
||||||
ui_->sort_order->clear();
|
// Create the radio button
|
||||||
ui_->sort_order->addItem(asc);
|
QRadioButton* name = new QRadioButton(plugin->name(), type_page_);
|
||||||
ui_->sort_order->addItem(desc);
|
QLabel* description = new QLabel(plugin->description(), type_page_);
|
||||||
}
|
type_page_->layout()->addWidget(name);
|
||||||
|
type_page_->layout()->addWidget(description);
|
||||||
|
|
||||||
void Wizard::AddSearchTerm() {
|
type_mapper_->setMapping(name, index);
|
||||||
SearchTermWidget* widget =
|
connect(name, SIGNAL(clicked()), type_mapper_, SLOT(map()));
|
||||||
new SearchTermWidget(library_, this);
|
|
||||||
connect(widget, SIGNAL(RemoveClicked()), SLOT(RemoveSearchTerm()));
|
|
||||||
connect(widget, SIGNAL(Changed()), SLOT(UpdateTermPreview()));
|
|
||||||
|
|
||||||
ui_->page_query_search->layout_->insertWidget(
|
if (index == 0) {
|
||||||
ui_->page_query_search->terms_.count(), widget);
|
name->setChecked(true);
|
||||||
ui_->page_query_search->terms_ << widget;
|
TypeChanged(0);
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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() {
|
void Wizard::TypeChanged(int index) {
|
||||||
const bool all = ui_->search_type->currentIndex() == 2;
|
type_page_->next_id_ = plugins_[index]->start_page();
|
||||||
ui_->terms_group->setEnabled(!all);
|
|
||||||
|
|
||||||
UpdateTermPreview();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -17,20 +17,15 @@
|
|||||||
#ifndef SMARTPLAYLISTWIZARD_H
|
#ifndef SMARTPLAYLISTWIZARD_H
|
||||||
#define SMARTPLAYLISTWIZARD_H
|
#define SMARTPLAYLISTWIZARD_H
|
||||||
|
|
||||||
#include "search.h"
|
|
||||||
|
|
||||||
#include <QWizard>
|
#include <QWizard>
|
||||||
|
|
||||||
class LibraryBackend;
|
class LibraryBackend;
|
||||||
class Ui_SmartPlaylistWizard;
|
|
||||||
|
|
||||||
class QComboBox;
|
class QSignalMapper;
|
||||||
class QVBoxLayout;
|
|
||||||
|
|
||||||
namespace smart_playlists {
|
namespace smart_playlists {
|
||||||
|
|
||||||
class SearchPreview;
|
class WizardPlugin;
|
||||||
class SearchTermWidget;
|
|
||||||
|
|
||||||
class Wizard : public QWizard {
|
class Wizard : public QWizard {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@ -39,36 +34,24 @@ public:
|
|||||||
Wizard(LibraryBackend* library, QWidget* parent);
|
Wizard(LibraryBackend* library, QWidget* parent);
|
||||||
~Wizard();
|
~Wizard();
|
||||||
|
|
||||||
class SearchPage : public QWizardPage {
|
private:
|
||||||
friend class Wizard;
|
struct TypePage : public QWizardPage {
|
||||||
public:
|
TypePage(QWidget* parent) : QWizardPage(parent), next_id_(0) {}
|
||||||
SearchPage(QWidget* parent = 0);
|
int nextId() const { return next_id_; }
|
||||||
bool isComplete() const;
|
int next_id_;
|
||||||
|
|
||||||
QVBoxLayout* layout_;
|
|
||||||
QComboBox* type_;
|
|
||||||
QList<SearchTermWidget*> terms_;
|
|
||||||
SearchTermWidget* new_term_;
|
|
||||||
|
|
||||||
SearchPreview* preview_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void AddPlugin(WizardPlugin* plugin);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void AddSearchTerm();
|
void TypeChanged(int index);
|
||||||
void RemoveSearchTerm();
|
|
||||||
|
|
||||||
void SearchTypeChanged();
|
|
||||||
|
|
||||||
void UpdateTermPreview();
|
|
||||||
void UpdateSortPreview();
|
|
||||||
void UpdateSortOrder();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Search MakeSearch() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
Ui_SmartPlaylistWizard* ui_;
|
|
||||||
LibraryBackend* library_;
|
LibraryBackend* library_;
|
||||||
|
TypePage* type_page_;
|
||||||
|
QSignalMapper* type_mapper_;
|
||||||
|
|
||||||
|
QList<WizardPlugin*> plugins_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // 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"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1149,11 +1146,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "المدة"
|
msgstr "المدة"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1136,9 +1136,6 @@ msgstr "Last.fm парола"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1154,11 +1151,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Дължина"
|
msgstr "Дължина"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1157,9 +1157,6 @@ msgstr "Contrasenya de Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1177,11 +1174,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Durada"
|
msgstr "Durada"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Biblioteca"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
|
@ -1136,9 +1136,6 @@ msgstr "Heslo k Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1154,11 +1151,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Délka"
|
msgstr "Délka"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Knihovna"
|
msgstr "Knihovna"
|
||||||
|
|
||||||
|
@ -1131,9 +1131,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1149,11 +1146,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1137,9 +1137,6 @@ msgstr "Last.fm-adgangskode"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1155,11 +1152,6 @@ msgstr "Lad stå blank for standard. Eksempler: \"/dev/dsp\", \"front\", osv."
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Længde"
|
msgstr "Længde"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliotek"
|
msgstr "Bibliotek"
|
||||||
|
|
||||||
|
@ -1160,9 +1160,6 @@ msgstr "Last.fm Passwort"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Last.fm Abspielzähler"
|
msgstr "Last.fm Abspielzähler"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm tags"
|
msgstr "Last.fm tags"
|
||||||
|
|
||||||
@ -1180,11 +1177,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Länge"
|
msgstr "Länge"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Sammlung"
|
msgstr "Sammlung"
|
||||||
|
|
||||||
|
@ -1171,9 +1171,6 @@ msgstr "Last.fm συνθηματικό"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Αριθμός αναπαραγωγής Last.fm"
|
msgstr "Αριθμός αναπαραγωγής Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Παρόμοιοι καλλιτέχνες Last.fm"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Ετικέτες του Last.fm"
|
msgstr "Ετικέτες του Last.fm"
|
||||||
|
|
||||||
@ -1189,13 +1186,6 @@ msgstr "Κενό για τα προεπιλεγμένα. Π.χ. \"/dev/dsp\", \
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Διάρκεια"
|
msgstr "Διάρκεια"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
"Επιτρέψτε στο Last.fm να προτείνει τραγούδια από την βιβλιοθήκη σας παρόμοια "
|
|
||||||
"με αυτό που ορίζετε."
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Βιβλιοθήκη"
|
msgstr "Βιβλιοθήκη"
|
||||||
|
|
||||||
@ -2411,6 +2401,16 @@ msgstr "διακοπή"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "κομμάτι %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Λίστες αναπαραγωγής"
|
#~ msgstr "Λίστες αναπαραγωγής"
|
||||||
|
|
||||||
|
@ -1135,9 +1135,6 @@ msgstr "Last.fm password"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1153,11 +1150,6 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc."
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Length"
|
msgstr "Length"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Library"
|
msgstr "Library"
|
||||||
|
|
||||||
|
@ -1133,9 +1133,6 @@ msgstr "Last.fm password"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1151,11 +1148,6 @@ msgstr "Leave blank for the default. Examples: \"/dev/dsp\", \"front\", etc."
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Length"
|
msgstr "Length"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Library"
|
msgstr "Library"
|
||||||
|
|
||||||
|
@ -1131,9 +1131,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1149,11 +1146,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1169,9 +1169,6 @@ msgstr "Contraseña"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Recuento de reproducciones de Last.fm"
|
msgstr "Recuento de reproducciones de Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Etiquetas de Last.fm"
|
msgstr "Etiquetas de Last.fm"
|
||||||
|
|
||||||
@ -1189,11 +1186,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Duración"
|
msgstr "Duración"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Colección"
|
msgstr "Colección"
|
||||||
|
|
||||||
|
@ -1133,9 +1133,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm sildipilv"
|
msgstr "Last.fm sildipilv"
|
||||||
|
|
||||||
@ -1151,11 +1148,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Kestvus"
|
msgstr "Kestvus"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Helikogu"
|
msgstr "Helikogu"
|
||||||
|
|
||||||
|
@ -1133,9 +1133,6 @@ msgstr "Last.fm-salasana"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1151,11 +1148,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Kesto"
|
msgstr "Kesto"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Kirjasto"
|
msgstr "Kirjasto"
|
||||||
|
|
||||||
|
@ -1168,9 +1168,6 @@ msgstr "Mot de passe"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Nombre d'écoutes Last.fm"
|
msgstr "Nombre d'écoutes Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Tags Last.fm"
|
msgstr "Tags Last.fm"
|
||||||
|
|
||||||
@ -1188,11 +1185,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Durée"
|
msgstr "Durée"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliothèque"
|
msgstr "Bibliothèque"
|
||||||
|
|
||||||
|
@ -1138,9 +1138,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1156,11 +1153,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Durazón"
|
msgstr "Durazón"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1163,9 +1163,6 @@ msgstr "Last.fm jelszó"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Last.fm lejátszás számláló"
|
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"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm címkék"
|
msgstr "Last.fm címkék"
|
||||||
|
|
||||||
@ -1182,13 +1179,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Időtartam"
|
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"
|
msgid "Library"
|
||||||
msgstr "Zenetár"
|
msgstr "Zenetár"
|
||||||
|
|
||||||
@ -2396,6 +2386,16 @@ msgstr "leállítás"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "%1. szám"
|
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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Lejátszási listák"
|
#~ msgstr "Lejátszási listák"
|
||||||
|
|
||||||
|
@ -1170,9 +1170,6 @@ msgstr "Password Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Contatore riproduzioni di Last.fm"
|
msgstr "Contatore riproduzioni di Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Artisti simili di Last.fm"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Etichette di Last.fm"
|
msgstr "Etichette di Last.fm"
|
||||||
|
|
||||||
@ -1190,13 +1187,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Durata"
|
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"
|
msgid "Library"
|
||||||
msgstr "Raccolta"
|
msgstr "Raccolta"
|
||||||
|
|
||||||
@ -2411,6 +2401,16 @@ msgstr "ferma"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "traccia %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Scalette"
|
#~ msgstr "Scalette"
|
||||||
|
|
||||||
|
@ -1156,9 +1156,6 @@ msgstr "Last.fm のパスワード"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Last.fm の再生回数"
|
msgstr "Last.fm の再生回数"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Last.fm のテイストの似たアーティスト"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm タグ"
|
msgstr "Last.fm タグ"
|
||||||
|
|
||||||
@ -1174,11 +1171,6 @@ msgstr "既定にするには空のままにします。例: \"/dev/dsp\"、\"fr
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "長さ"
|
msgstr "長さ"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr "ライブラリの指定する曲にテイストの似た曲を Last.fm から検索します。"
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "ライブラリ"
|
msgstr "ライブラリ"
|
||||||
|
|
||||||
@ -2380,6 +2372,14 @@ msgstr "停止"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "トラック %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "プレイリスト"
|
#~ msgstr "プレイリスト"
|
||||||
|
|
||||||
|
@ -1133,9 +1133,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1151,11 +1148,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Ұзындығы"
|
msgstr "Ұзындығы"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1132,9 +1132,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1150,11 +1147,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1146,9 +1146,6 @@ msgstr "Last.fm passord"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1164,11 +1161,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Lengde"
|
msgstr "Lengde"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliotek"
|
msgstr "Bibliotek"
|
||||||
|
|
||||||
|
@ -1160,9 +1160,6 @@ msgstr "Last.fm wachtwoord"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1179,11 +1176,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Duur"
|
msgstr "Duur"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliotheek"
|
msgstr "Bibliotheek"
|
||||||
|
|
||||||
|
@ -1131,9 +1131,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1149,11 +1146,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Longor"
|
msgstr "Longor"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliotèca"
|
msgstr "Bibliotèca"
|
||||||
|
|
||||||
|
@ -1157,9 +1157,6 @@ msgstr "Hasło Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1177,11 +1174,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Długość"
|
msgstr "Długość"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Biblioteka"
|
msgstr "Biblioteka"
|
||||||
|
|
||||||
|
@ -1166,9 +1166,6 @@ msgstr "Senha Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Reprodções Last.fm"
|
msgstr "Reprodções Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Artistas semelhantes na Last.fm"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "\\\"Tags\\\" Last.fm"
|
msgstr "\\\"Tags\\\" Last.fm"
|
||||||
|
|
||||||
@ -1186,13 +1183,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Duração"
|
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"
|
msgid "Library"
|
||||||
msgstr "Biblioteca"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
@ -2402,6 +2392,16 @@ msgstr "parar"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "faixa %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Listas de reprodução"
|
#~ msgstr "Listas de reprodução"
|
||||||
|
|
||||||
|
@ -1148,9 +1148,6 @@ msgstr "Senha do Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1166,11 +1163,6 @@ msgstr "Deixe em brando por padrão. Exemplos: \"/dev/dsp\", \"front\", etc."
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Duração"
|
msgstr "Duração"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Biblioteca"
|
msgstr "Biblioteca"
|
||||||
|
|
||||||
|
@ -1132,9 +1132,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1150,11 +1147,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Durată"
|
msgstr "Durată"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliotecă"
|
msgstr "Bibliotecă"
|
||||||
|
|
||||||
|
@ -1153,9 +1153,6 @@ msgstr "Пароль Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Количество прослушиваний на Last.fm"
|
msgstr "Количество прослушиваний на Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Похожие исполнители на Last.fm"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm теги"
|
msgstr "Last.fm теги"
|
||||||
|
|
||||||
@ -1172,11 +1169,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Длительность"
|
msgstr "Длительность"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Коллекция"
|
msgstr "Коллекция"
|
||||||
|
|
||||||
@ -2383,6 +2375,9 @@ msgstr "Остановить"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "композиция %1"
|
msgstr "композиция %1"
|
||||||
|
|
||||||
|
#~ msgid "Last.fm similar artists"
|
||||||
|
#~ msgstr "Похожие исполнители на Last.fm"
|
||||||
|
|
||||||
#~ msgid "Playlists"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Плейлисты"
|
#~ msgstr "Плейлисты"
|
||||||
|
|
||||||
|
@ -1157,9 +1157,6 @@ msgstr "Last.fm heslo"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Last.fm počet prehraní"
|
msgstr "Last.fm počet prehraní"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Last.fm podobný interpréti"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm tagy"
|
msgstr "Last.fm tagy"
|
||||||
|
|
||||||
@ -1175,13 +1172,6 @@ msgstr "Nechať pôvodne - prázdne. Príklady: \"/dev/dsp\", \"front\", atď."
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Dĺžka"
|
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"
|
msgid "Library"
|
||||||
msgstr "Zbierka"
|
msgstr "Zbierka"
|
||||||
|
|
||||||
@ -2387,6 +2377,16 @@ msgstr "zastaviť"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "skladba %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Playlisty"
|
#~ msgstr "Playlisty"
|
||||||
|
|
||||||
|
@ -1159,9 +1159,6 @@ msgstr "Geslo Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Število predvajanj last.fm"
|
msgstr "Število predvajanj last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Last.fm podobni izvajalci"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm oznake"
|
msgstr "Last.fm oznake"
|
||||||
|
|
||||||
@ -1177,13 +1174,6 @@ msgstr "Pustite prazno za privzeto. Primeri: \"/dev/dsp\", \"front\", itd."
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Dolžina"
|
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"
|
msgid "Library"
|
||||||
msgstr "Knjižnica"
|
msgstr "Knjižnica"
|
||||||
|
|
||||||
@ -2389,6 +2379,16 @@ msgstr "zaustavi"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "skladba %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Seznami predvajanja"
|
#~ msgstr "Seznami predvajanja"
|
||||||
|
|
||||||
|
@ -1137,9 +1137,6 @@ msgstr "ЛастФМ лозинка"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1155,11 +1152,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Трајање"
|
msgstr "Трајање"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Библиотека"
|
msgstr "Библиотека"
|
||||||
|
|
||||||
|
@ -1158,9 +1158,6 @@ msgstr "Last.fm-lösenord"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Last.fm-låtstatistik"
|
msgstr "Last.fm-låtstatistik"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Liknande Last.fm-artister"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm-taggar"
|
msgstr "Last.fm-taggar"
|
||||||
|
|
||||||
@ -1176,11 +1173,6 @@ msgstr "Lämna tomt för standardvärdet. Exempel: \"/dev/dsp\", \"front\", etc.
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Speltid"
|
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"
|
msgid "Library"
|
||||||
msgstr "Bibliotek"
|
msgstr "Bibliotek"
|
||||||
|
|
||||||
@ -2384,6 +2376,15 @@ msgstr "stoppa"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "spår %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Spellistor"
|
#~ msgstr "Spellistor"
|
||||||
|
|
||||||
|
@ -1154,9 +1154,6 @@ msgstr "Last.fm parolası"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Last.fm benzer sanatçılar"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Last.fm etiketleri"
|
msgstr "Last.fm etiketleri"
|
||||||
|
|
||||||
@ -1174,11 +1171,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Süre"
|
msgstr "Süre"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Kütüphane"
|
msgstr "Kütüphane"
|
||||||
|
|
||||||
@ -2376,6 +2368,9 @@ msgstr "durdur"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "parça %1"
|
msgstr "parça %1"
|
||||||
|
|
||||||
|
#~ msgid "Last.fm similar artists"
|
||||||
|
#~ msgstr "Last.fm benzer sanatçılar"
|
||||||
|
|
||||||
#~ msgid "Playlists"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Çalma Listeleri"
|
#~ msgstr "Çalma Listeleri"
|
||||||
|
|
||||||
|
@ -1122,9 +1122,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1140,11 +1137,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1158,9 +1158,6 @@ msgstr "Пароль Last.fm"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr "Кількість відтворень на Last.fm"
|
msgstr "Кількість відтворень на Last.fm"
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr "Подібні виконавці на Last.fm"
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr "Позначки Last.fm"
|
msgstr "Позначки Last.fm"
|
||||||
|
|
||||||
@ -1176,13 +1173,6 @@ msgstr "Типово, залишити порожнім. Наприклад: \"
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "Тривалість"
|
msgstr "Тривалість"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
"Дозволити Last.fm пропонувати композиції з вашої фонотеки подібні до "
|
|
||||||
"вказаних вами."
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Фонотека"
|
msgstr "Фонотека"
|
||||||
|
|
||||||
@ -2383,6 +2373,16 @@ msgstr "зупинити"
|
|||||||
msgid "track %1"
|
msgid "track %1"
|
||||||
msgstr "доріжка %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"
|
#~ msgid "Playlists"
|
||||||
#~ msgstr "Списки відтворення"
|
#~ msgstr "Списки відтворення"
|
||||||
|
|
||||||
|
@ -1133,9 +1133,6 @@ msgstr "Last.fm 密码"
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1151,11 +1148,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "长度"
|
msgstr "长度"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -1137,9 +1137,6 @@ msgstr ""
|
|||||||
msgid "Last.fm play counts"
|
msgid "Last.fm play counts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Last.fm similar artists"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Last.fm tags"
|
msgid "Last.fm tags"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -1155,11 +1152,6 @@ msgstr ""
|
|||||||
msgid "Length"
|
msgid "Length"
|
||||||
msgstr "長度"
|
msgstr "長度"
|
||||||
|
|
||||||
msgid ""
|
|
||||||
"Let Last.fm suggest songs from your library that are similar to one you "
|
|
||||||
"specify."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "音樂庫"
|
msgstr "音樂庫"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user