Remove the playlists tab and add a smart playlists section to the library view instead
This commit is contained in:
parent
28a9454044
commit
4750c19d00
|
@ -131,13 +131,10 @@ set(SOURCES
|
|||
|
||||
smartplaylists/playlistgenerator.cpp
|
||||
smartplaylists/playlistgeneratorinserter.cpp
|
||||
smartplaylists/smartplaylistcontainer.cpp
|
||||
smartplaylists/smartplaylistmodel.cpp
|
||||
smartplaylists/smartplaylistsearch.cpp
|
||||
smartplaylists/smartplaylistsearchpreview.cpp
|
||||
smartplaylists/smartplaylistsearchterm.cpp
|
||||
smartplaylists/smartplaylistsearchtermwidget.cpp
|
||||
smartplaylists/smartplaylistview.cpp
|
||||
smartplaylists/smartplaylistwizard.cpp
|
||||
smartplaylists/queryplaylistgenerator.cpp
|
||||
|
||||
|
@ -293,11 +290,8 @@ set(HEADERS
|
|||
smartplaylists/generatormimedata.h
|
||||
smartplaylists/playlistgenerator.h
|
||||
smartplaylists/playlistgeneratorinserter.h
|
||||
smartplaylists/smartplaylistcontainer.h
|
||||
smartplaylists/smartplaylistmodel.h
|
||||
smartplaylists/smartplaylistsearchpreview.h
|
||||
smartplaylists/smartplaylistsearchtermwidget.h
|
||||
smartplaylists/smartplaylistview.h
|
||||
smartplaylists/smartplaylistwizard.h
|
||||
|
||||
songinfo/artistinfoview.h
|
||||
|
@ -380,7 +374,6 @@ set(UI
|
|||
radio/magnatunedownloaddialog.ui
|
||||
radio/radioviewcontainer.ui
|
||||
|
||||
smartplaylists/smartplaylistcontainer.ui
|
||||
smartplaylists/smartplaylistsearchpreview.ui
|
||||
smartplaylists/smartplaylistsearchtermwidget.ui
|
||||
smartplaylists/smartplaylistwizard.ui
|
||||
|
|
|
@ -39,6 +39,7 @@ Library::Library(BackgroundThread<Database>* db_thread, TaskManager* task_manage
|
|||
backend_->Init(db_thread->Worker(), kSongsTable, kDirsTable, kSubdirsTable, kFtsTable);
|
||||
|
||||
model_ = new LibraryModel(backend_, this);
|
||||
model_->set_show_smart_playlists(true);
|
||||
}
|
||||
|
||||
void Library::set_watcher_factory(BackgroundThreadFactory<LibraryWatcher>* factory) {
|
||||
|
|
|
@ -30,6 +30,8 @@ class LibraryItem : public SimpleTreeItem<LibraryItem> {
|
|||
Type_Divider,
|
||||
Type_Container,
|
||||
Type_Song,
|
||||
Type_PlaylistContainer,
|
||||
Type_SmartPlaylist,
|
||||
};
|
||||
|
||||
LibraryItem(SimpleTreeModel<LibraryItem>* model)
|
||||
|
@ -39,6 +41,7 @@ class LibraryItem : public SimpleTreeItem<LibraryItem> {
|
|||
|
||||
int container_level;
|
||||
Song metadata;
|
||||
QByteArray smart_playlist_data;
|
||||
};
|
||||
|
||||
#endif // LIBRARYITEM_H
|
||||
|
|
|
@ -21,22 +21,31 @@
|
|||
#include "sqlrow.h"
|
||||
#include "core/database.h"
|
||||
#include "playlist/songmimedata.h"
|
||||
#include "smartplaylists/generatormimedata.h"
|
||||
#include "smartplaylists/playlistgenerator.h"
|
||||
#include "smartplaylists/queryplaylistgenerator.h"
|
||||
#include "ui/iconloader.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QStringList>
|
||||
#include <QUrl>
|
||||
#include <QMetaEnum>
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
|
||||
const char* LibraryModel::kSmartPlaylistsMimeType = "application/x-clementine-smart-playlist-generator";
|
||||
const char* LibraryModel::kSmartPlaylistsSettingsGroup = "SerialisedSmartPlaylists";
|
||||
|
||||
LibraryModel::LibraryModel(LibraryBackend* backend, QObject* parent)
|
||||
: SimpleTreeModel<LibraryItem>(new LibraryItem(this), parent),
|
||||
backend_(backend),
|
||||
dir_model_(new LibraryDirectoryModel(backend, this)),
|
||||
show_smart_playlists_(false),
|
||||
artist_icon_(":/icons/22x22/x-clementine-artist.png"),
|
||||
album_icon_(":/icons/22x22/x-clementine-album.png"),
|
||||
no_cover_icon_(":nocover.png")
|
||||
no_cover_icon_(":nocover.png"),
|
||||
playlists_dir_icon_(IconLoader::Load("folder")),
|
||||
playlist_icon_(IconLoader::Load("view-media-playlist"))
|
||||
{
|
||||
root_->lazy_loaded = true;
|
||||
|
||||
|
@ -327,6 +336,8 @@ QVariant LibraryModel::data(const LibraryItem* item, int role) const {
|
|||
|
||||
case Qt::DecorationRole:
|
||||
switch (item->type)
|
||||
case LibraryItem::Type_PlaylistContainer:
|
||||
return playlists_dir_icon_;
|
||||
case LibraryItem::Type_Container:
|
||||
switch (container_type) {
|
||||
case GroupBy_Album:
|
||||
|
@ -337,6 +348,8 @@ QVariant LibraryModel::data(const LibraryItem* item, int role) const {
|
|||
default:
|
||||
break;
|
||||
}
|
||||
case LibraryItem::Type_SmartPlaylist:
|
||||
return playlist_icon_;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
|
@ -412,6 +425,7 @@ void LibraryModel::Reset() {
|
|||
container_nodes_[2].clear();
|
||||
divider_nodes_.clear();
|
||||
compilation_artist_node_ = NULL;
|
||||
smart_playlist_node_ = NULL;
|
||||
|
||||
root_ = new LibraryItem(this);
|
||||
root_->lazy_loaded = false;
|
||||
|
@ -421,6 +435,10 @@ void LibraryModel::Reset() {
|
|||
backend_->HasCompilations(query_options_))
|
||||
CreateCompilationArtistNode(false, root_);
|
||||
|
||||
// Smart playlists?
|
||||
if (show_smart_playlists_)
|
||||
CreateSmartPlaylists();
|
||||
|
||||
// Populate top level
|
||||
LazyPopulate(root_, false);
|
||||
|
||||
|
@ -708,6 +726,7 @@ Qt::ItemFlags LibraryModel::flags(const QModelIndex& index) const {
|
|||
switch (IndexToItem(index)->type) {
|
||||
case LibraryItem::Type_Song:
|
||||
case LibraryItem::Type_Container:
|
||||
case LibraryItem::Type_SmartPlaylist:
|
||||
return Qt::ItemIsSelectable |
|
||||
Qt::ItemIsEnabled |
|
||||
Qt::ItemIsDragEnabled;
|
||||
|
@ -723,6 +742,20 @@ QStringList LibraryModel::mimeTypes() const {
|
|||
}
|
||||
|
||||
QMimeData* LibraryModel::mimeData(const QModelIndexList& indexes) const {
|
||||
if (indexes.isEmpty())
|
||||
return NULL;
|
||||
|
||||
// Special case: a smart playlist was dragged
|
||||
if (IndexToItem(indexes.first())->type == LibraryItem::Type_SmartPlaylist) {
|
||||
PlaylistGeneratorPtr generator = CreateGenerator(indexes.first());
|
||||
if (!generator)
|
||||
return NULL;
|
||||
|
||||
GeneratorMimeData* data = new GeneratorMimeData(generator);
|
||||
data->setData(kSmartPlaylistsMimeType, QByteArray());
|
||||
return data;
|
||||
}
|
||||
|
||||
SongMimeData* data = new SongMimeData;
|
||||
QList<QUrl> urls;
|
||||
QSet<int> song_ids;
|
||||
|
@ -834,3 +867,91 @@ LibraryModel::GroupBy& LibraryModel::Grouping::operator [](int i) {
|
|||
Q_ASSERT(0);
|
||||
return first;
|
||||
}
|
||||
|
||||
void LibraryModel::CreateSmartPlaylists() {
|
||||
smart_playlist_node_ = new LibraryItem(LibraryItem::Type_PlaylistContainer, root_);
|
||||
smart_playlist_node_->container_level = 0;
|
||||
smart_playlist_node_->sort_text = " _smart";
|
||||
smart_playlist_node_->key = tr("Smart playlists");
|
||||
|
||||
QSettings s;
|
||||
|
||||
if (!s.childGroups().contains(kSmartPlaylistsSettingsGroup)) {
|
||||
// No smart playlists existed in the settings, so create some defaults
|
||||
|
||||
s.beginGroup(kSmartPlaylistsSettingsGroup);
|
||||
s.beginWriteArray("smart");
|
||||
|
||||
// These defines really make this section more concise
|
||||
#define S SmartPlaylistSearch
|
||||
#define T SmartPlaylistSearchTerm
|
||||
|
||||
int i = 0;
|
||||
SaveDefaultGenerator(&s, i++, tr("50 random tracks"), S(
|
||||
S::Type_All, S::TermList(), S::Sort_Random, T::Field_Title, 50));
|
||||
SaveDefaultGenerator(&s, i++, tr("Ever played"), S(
|
||||
S::Type_And, S::TermList() << T(T::Field_PlayCount, T::Op_GreaterThan, 0),
|
||||
S::Sort_Random, T::Field_Title));
|
||||
SaveDefaultGenerator(&s, i++, tr("Never played"), S(
|
||||
S::Type_And, S::TermList() << T(T::Field_PlayCount, T::Op_Equals, 0),
|
||||
S::Sort_Random, T::Field_Title));
|
||||
SaveDefaultGenerator(&s, i++, tr("Last played"), S(
|
||||
S::Type_All, S::TermList(), S::Sort_FieldDesc, T::Field_LastPlayed));
|
||||
SaveDefaultGenerator(&s, i++, tr("Most played"), S(
|
||||
S::Type_All, S::TermList(), S::Sort_FieldDesc, T::Field_PlayCount));
|
||||
SaveDefaultGenerator(&s, i++, tr("Favourite tracks"), S(
|
||||
S::Type_All, S::TermList(), S::Sort_FieldDesc, T::Field_Score));
|
||||
SaveDefaultGenerator(&s, i++, tr("Newest tracks"), S(
|
||||
S::Type_All, S::TermList(), S::Sort_FieldDesc, T::Field_DateCreated));
|
||||
|
||||
#undef S
|
||||
#undef T
|
||||
|
||||
s.endArray();
|
||||
s.endGroup();
|
||||
}
|
||||
|
||||
s.beginGroup(kSmartPlaylistsSettingsGroup);
|
||||
|
||||
const int count = s.beginReadArray("smart");
|
||||
for (int i=0 ; i<count ; ++i) {
|
||||
s.setArrayIndex(i);
|
||||
LibraryItem* item = new LibraryItem(LibraryItem::Type_SmartPlaylist, smart_playlist_node_);
|
||||
item->display_text = s.value("name").toString();
|
||||
item->key = s.value("type").toString();
|
||||
item->smart_playlist_data = s.value("data").toByteArray();
|
||||
item->lazy_loaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
void LibraryModel::SaveDefaultGenerator(QSettings* s, int i, const QString& name,
|
||||
const SmartPlaylistSearch& search) const {
|
||||
boost::shared_ptr<QueryPlaylistGenerator> gen(new QueryPlaylistGenerator);
|
||||
gen->set_name(name);
|
||||
gen->Load(search);
|
||||
SaveGenerator(s, i, boost::static_pointer_cast<PlaylistGenerator>(gen));
|
||||
}
|
||||
|
||||
void LibraryModel::SaveGenerator(QSettings* s, int i, PlaylistGeneratorPtr generator) const {
|
||||
s->setArrayIndex(i);
|
||||
s->setValue("name", generator->name());
|
||||
s->setValue("type", generator->type());
|
||||
s->setValue("data", generator->Save());
|
||||
}
|
||||
|
||||
PlaylistGeneratorPtr LibraryModel::CreateGenerator(const QModelIndex& index) const {
|
||||
PlaylistGeneratorPtr ret;
|
||||
|
||||
const LibraryItem* item = IndexToItem(index);
|
||||
if (!item || item->type != LibraryItem::Type_SmartPlaylist)
|
||||
return ret;
|
||||
|
||||
ret = PlaylistGenerator::Create(item->key);
|
||||
if (!ret)
|
||||
return ret;
|
||||
|
||||
ret->set_name(item->display_text);
|
||||
ret->set_library(backend());
|
||||
ret->Load(item->smart_playlist_data);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -27,11 +27,15 @@
|
|||
#include "core/simpletreemodel.h"
|
||||
#include "core/song.h"
|
||||
#include "engines/engine_fwd.h"
|
||||
#include "smartplaylists/playlistgenerator_fwd.h"
|
||||
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
|
||||
class LibraryDirectoryModel;
|
||||
class LibraryBackend;
|
||||
class SmartPlaylistSearch;
|
||||
|
||||
class QSettings;
|
||||
|
||||
class LibraryModel : public SimpleTreeModel<LibraryItem> {
|
||||
Q_OBJECT
|
||||
|
@ -41,6 +45,9 @@ class LibraryModel : public SimpleTreeModel<LibraryItem> {
|
|||
LibraryModel(LibraryBackend* backend, QObject* parent = 0);
|
||||
~LibraryModel();
|
||||
|
||||
static const char* kSmartPlaylistsMimeType;
|
||||
static const char* kSmartPlaylistsSettingsGroup;
|
||||
|
||||
enum Role {
|
||||
Role_Type = Qt::UserRole + 1,
|
||||
Role_ContainerType,
|
||||
|
@ -86,12 +93,17 @@ class LibraryModel : public SimpleTreeModel<LibraryItem> {
|
|||
LibraryBackend* backend() const { return backend_; }
|
||||
LibraryDirectoryModel* directory_model() const { return dir_model_; }
|
||||
|
||||
// Call before Init()
|
||||
void set_show_smart_playlists(bool show_smart_playlists) { show_smart_playlists_ = show_smart_playlists; }
|
||||
|
||||
// Get information about the library
|
||||
void GetChildSongs(LibraryItem* item, QList<QUrl>* urls, SongList* songs,
|
||||
QSet<int>* song_ids) const;
|
||||
SongList GetChildSongs(const QModelIndex& index) const;
|
||||
SongList GetChildSongs(const QModelIndexList& indexes) const;
|
||||
|
||||
PlaylistGeneratorPtr CreateGenerator(const QModelIndex& index) const;
|
||||
|
||||
// QAbstractItemModel
|
||||
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
|
||||
Qt::ItemFlags flags(const QModelIndex& index) const;
|
||||
|
@ -143,6 +155,12 @@ class LibraryModel : public SimpleTreeModel<LibraryItem> {
|
|||
// The "Various Artists" node is an annoying special case.
|
||||
LibraryItem* CreateCompilationArtistNode(bool signal, LibraryItem* parent);
|
||||
|
||||
// Smart playlists are shown in another top-level node
|
||||
void CreateSmartPlaylists();
|
||||
void SaveDefaultGenerator(QSettings* s, int i, const QString& name,
|
||||
const SmartPlaylistSearch& search) const;
|
||||
void SaveGenerator(QSettings* s, int i, PlaylistGeneratorPtr generator) const;
|
||||
|
||||
// Helpers for ItemFromQuery and ItemFromSong
|
||||
LibraryItem* InitItem(GroupBy type, bool signal, LibraryItem* parent,
|
||||
int container_level);
|
||||
|
@ -168,6 +186,7 @@ class LibraryModel : public SimpleTreeModel<LibraryItem> {
|
|||
private:
|
||||
LibraryBackend* backend_;
|
||||
LibraryDirectoryModel* dir_model_;
|
||||
bool show_smart_playlists_;
|
||||
|
||||
QueryOptions query_options_;
|
||||
Grouping group_by_;
|
||||
|
@ -184,9 +203,14 @@ class LibraryModel : public SimpleTreeModel<LibraryItem> {
|
|||
// Only applies if the first level is "artist"
|
||||
LibraryItem* compilation_artist_node_;
|
||||
|
||||
// Only applies if smart playlists are set to on
|
||||
LibraryItem* smart_playlist_node_;
|
||||
|
||||
QIcon artist_icon_;
|
||||
QIcon album_icon_;
|
||||
QIcon no_cover_icon_;
|
||||
QIcon playlists_dir_icon_;
|
||||
QIcon playlist_icon_;
|
||||
};
|
||||
|
||||
Q_DECLARE_METATYPE(LibraryModel::Grouping);
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "core/modelfuturewatcher.h"
|
||||
#include "library/library.h"
|
||||
#include "library/librarybackend.h"
|
||||
#include "library/librarymodel.h"
|
||||
#include "library/libraryplaylistitem.h"
|
||||
#include "radio/magnatuneservice.h"
|
||||
#include "radio/magnatuneplaylistitem.h"
|
||||
|
@ -34,7 +35,6 @@
|
|||
#include "radio/savedradio.h"
|
||||
#include "smartplaylists/generatormimedata.h"
|
||||
#include "smartplaylists/playlistgeneratorinserter.h"
|
||||
#include "smartplaylists/smartplaylistmodel.h"
|
||||
|
||||
#include <QtDebug>
|
||||
#include <QMimeData>
|
||||
|
@ -519,7 +519,7 @@ Qt::ItemFlags Playlist::flags(const QModelIndex &index) const {
|
|||
|
||||
QStringList Playlist::mimeTypes() const {
|
||||
return QStringList() << "text/uri-list" << kRowsMimetype
|
||||
<< SmartPlaylistModel::kMimeType;
|
||||
<< LibraryModel::kSmartPlaylistsMimeType;
|
||||
}
|
||||
|
||||
Qt::DropActions Playlist::supportedDropActions() const {
|
||||
|
|
|
@ -24,8 +24,6 @@
|
|||
|
||||
class LibraryBackend;
|
||||
|
||||
class QSettings;
|
||||
|
||||
class PlaylistGenerator : public QObject, public boost::enable_shared_from_this<PlaylistGenerator> {
|
||||
Q_OBJECT
|
||||
|
||||
|
@ -39,8 +37,13 @@ public:
|
|||
void set_library(LibraryBackend* backend) { backend_ = backend; }
|
||||
|
||||
QString name() const { return name_; }
|
||||
void set_name(const QString& name) { name_ = name; }
|
||||
|
||||
virtual QString type() const = 0;
|
||||
|
||||
virtual void Load(const QByteArray& data) = 0;
|
||||
virtual QByteArray Save() const = 0;
|
||||
|
||||
virtual void Load(const QSettings& s) {}
|
||||
virtual PlaylistItemList Generate() = 0;
|
||||
|
||||
signals:
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include "library/librarybackend.h"
|
||||
#include "library/libraryplaylistitem.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QtDebug>
|
||||
|
||||
QueryPlaylistGenerator::QueryPlaylistGenerator()
|
||||
|
@ -29,11 +28,17 @@ void QueryPlaylistGenerator::Load(const SmartPlaylistSearch& search) {
|
|||
search_ = search;
|
||||
}
|
||||
|
||||
void QueryPlaylistGenerator::Load(const QSettings& s) {
|
||||
PlaylistGenerator::Load(s);
|
||||
void QueryPlaylistGenerator::Load(const QByteArray& data) {
|
||||
QDataStream s(data);
|
||||
s >> search_;
|
||||
}
|
||||
|
||||
QDataStream stream(s.value("search").toByteArray());
|
||||
stream >> search_;
|
||||
QByteArray QueryPlaylistGenerator::Save() const {
|
||||
QByteArray ret;
|
||||
QDataStream s(&ret, QIODevice::WriteOnly);
|
||||
s << search_;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
PlaylistItemList QueryPlaylistGenerator::Generate() {
|
||||
|
|
|
@ -24,8 +24,12 @@ class QueryPlaylistGenerator : public PlaylistGenerator {
|
|||
public:
|
||||
QueryPlaylistGenerator();
|
||||
|
||||
QString type() const { return "Query"; }
|
||||
|
||||
void Load(const SmartPlaylistSearch& search);
|
||||
void Load(const QSettings& s);
|
||||
void Load(const QByteArray& data);
|
||||
QByteArray Save() const;
|
||||
|
||||
PlaylistItemList Generate();
|
||||
|
||||
private:
|
||||
|
|
|
@ -1,72 +0,0 @@
|
|||
/* 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 "smartplaylistcontainer.h"
|
||||
#include "smartplaylistmodel.h"
|
||||
#include "smartplaylistwizard.h"
|
||||
#include "ui_smartplaylistcontainer.h"
|
||||
#include "playlist/playlistmanager.h"
|
||||
#include "ui/iconloader.h"
|
||||
|
||||
SmartPlaylistContainer::SmartPlaylistContainer(QWidget *parent)
|
||||
: QWidget(parent),
|
||||
ui_(new Ui_SmartPlaylistContainer),
|
||||
first_show_(true),
|
||||
model_(new SmartPlaylistModel(this)),
|
||||
library_(NULL),
|
||||
playlist_manager_(NULL)
|
||||
{
|
||||
ui_->setupUi(this);
|
||||
|
||||
connect(ui_->view, SIGNAL(Play(QModelIndex,bool,bool)), SLOT(Play(QModelIndex,bool,bool)));
|
||||
connect(ui_->view, SIGNAL(NewSmartPlaylist()), SLOT(NewSmartPlaylist()));
|
||||
|
||||
connect(ui_->add, SIGNAL(clicked()), SLOT(NewSmartPlaylist()));
|
||||
|
||||
ui_->view->setModel(model_);
|
||||
}
|
||||
|
||||
SmartPlaylistContainer::~SmartPlaylistContainer() {
|
||||
delete ui_;
|
||||
}
|
||||
|
||||
void SmartPlaylistContainer::set_library(LibraryBackend* library) {
|
||||
library_ = library;
|
||||
model_->set_library(library);
|
||||
}
|
||||
|
||||
void SmartPlaylistContainer::showEvent(QShowEvent*) {
|
||||
if (!first_show_)
|
||||
return;
|
||||
first_show_ = false;
|
||||
|
||||
ui_->add->setIcon(IconLoader::Load("list-add"));
|
||||
ui_->remove->setIcon(IconLoader::Load("list-remove"));
|
||||
ui_->play->setIcon(IconLoader::Load("media-playback-start"));
|
||||
}
|
||||
|
||||
void SmartPlaylistContainer::Play(const QModelIndex& index, bool as_new, bool clear) {
|
||||
PlaylistGeneratorPtr generator = model_->CreateGenerator(index);
|
||||
if (!generator)
|
||||
return;
|
||||
|
||||
playlist_manager_->PlaySmartPlaylist(generator, as_new, clear);
|
||||
}
|
||||
|
||||
void SmartPlaylistContainer::NewSmartPlaylist() {
|
||||
SmartPlaylistWizard* wizard = new SmartPlaylistWizard(library_, this);
|
||||
wizard->show();
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
/* 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 SMARTPLAYLISTCONTAINER_H
|
||||
#define SMARTPLAYLISTCONTAINER_H
|
||||
|
||||
#include "playlistgenerator_fwd.h"
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
class LibraryBackend;
|
||||
class PlaylistManager;
|
||||
class SmartPlaylistModel;
|
||||
class Ui_SmartPlaylistContainer;
|
||||
|
||||
class QModelIndex;
|
||||
|
||||
class SmartPlaylistContainer : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SmartPlaylistContainer(QWidget* parent);
|
||||
~SmartPlaylistContainer();
|
||||
|
||||
void set_library(LibraryBackend* library);
|
||||
void set_playlists(PlaylistManager* playlist_manager) { playlist_manager_ = playlist_manager; }
|
||||
|
||||
protected:
|
||||
void showEvent(QShowEvent*);
|
||||
|
||||
private slots:
|
||||
void Play(const QModelIndex& index, bool as_new, bool clear);
|
||||
void NewSmartPlaylist();
|
||||
|
||||
private:
|
||||
Ui_SmartPlaylistContainer* ui_;
|
||||
bool first_show_;
|
||||
|
||||
SmartPlaylistModel* model_;
|
||||
LibraryBackend* library_;
|
||||
PlaylistManager* playlist_manager_;
|
||||
};
|
||||
|
||||
#endif // SMARTPLAYLISTCONTAINER_H
|
|
@ -1,96 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SmartPlaylistContainer</class>
|
||||
<widget class="QWidget" name="SmartPlaylistContainer">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>380</width>
|
||||
<height>616</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QToolButton" name="add">
|
||||
<property name="text">
|
||||
<string>New</string>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="remove">
|
||||
<property name="text">
|
||||
<string>Remove</string>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="play">
|
||||
<property name="text">
|
||||
<string>Play</string>
|
||||
</property>
|
||||
<property name="toolButtonStyle">
|
||||
<enum>Qt::ToolButtonTextBesideIcon</enum>
|
||||
</property>
|
||||
<property name="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="SmartPlaylistView" name="view"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>SmartPlaylistView</class>
|
||||
<extends>QTreeView</extends>
|
||||
<header>smartplaylists/smartplaylistview.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
|
@ -1,142 +0,0 @@
|
|||
/* 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 "generatormimedata.h"
|
||||
#include "playlistgenerator.h"
|
||||
#include "smartplaylistmodel.h"
|
||||
#include "ui/iconloader.h"
|
||||
|
||||
#include <QSettings>
|
||||
|
||||
const char* SmartPlaylistModel::kSettingsGroup = "SmartPlaylists";
|
||||
const char* SmartPlaylistModel::kMimeType = "application/x-clementine-smart-playlist-generator";
|
||||
|
||||
SmartPlaylistModel::SmartPlaylistModel(QObject* parent)
|
||||
: QStandardItemModel(parent),
|
||||
library_(NULL),
|
||||
container_icon_(IconLoader::Load("folder")),
|
||||
playlist_icon_(IconLoader::Load("view-media-playlist")),
|
||||
smart_item_(CreateContainer(tr("Smart playlists"), "smart")),
|
||||
dynamic_item_(CreateContainer(tr("Dynamic playlists"), "dynamic"))
|
||||
{
|
||||
setColumnCount(1);
|
||||
|
||||
invisibleRootItem()->appendRow(smart_item_);
|
||||
invisibleRootItem()->appendRow(dynamic_item_);
|
||||
|
||||
QSettings s;
|
||||
if (!s.childGroups().contains(kSettingsGroup)) {
|
||||
SaveDefaults();
|
||||
}
|
||||
|
||||
Load("smart", smart_item_);
|
||||
Load("dynamic", dynamic_item_);
|
||||
}
|
||||
|
||||
QStandardItem* SmartPlaylistModel::CreateContainer(
|
||||
const QString& name, const QString& group) {
|
||||
QStandardItem* ret = new QStandardItem(name);
|
||||
ret->setData(Type_Container, Role_Type);
|
||||
ret->setData(group, Role_ContainerGroup);
|
||||
ret->setData(container_icon_, Qt::DecorationRole);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void SmartPlaylistModel::Load(const char* name, QStandardItem* parent) {
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
const int count = s.beginReadArray(name);
|
||||
for (int i=0 ; i<count ; ++i) {
|
||||
s.setArrayIndex(i);
|
||||
QStandardItem* item = new QStandardItem;
|
||||
item->setText(s.value("name").toString());
|
||||
item->setData(s.value("type").toString(), Role_GeneratorClass);
|
||||
item->setData(Type_Generator, Role_Type);
|
||||
item->setData(playlist_icon_, Qt::DecorationRole);
|
||||
parent->appendRow(item);
|
||||
}
|
||||
}
|
||||
|
||||
void SmartPlaylistModel::SaveDefaults() {
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
|
||||
int i = 0;
|
||||
s.beginWriteArray("smart");
|
||||
SaveDefaultQuery(&s, i++, tr("50 random tracks"), QString(), "random()", 50);
|
||||
SaveDefaultQuery(&s, i++, tr("Ever played"), "playcount > 0", QString());
|
||||
SaveDefaultQuery(&s, i++, tr("Last played"), QString(), "lastplayed DESC");
|
||||
SaveDefaultQuery(&s, i++, tr("Most played"), QString(), "playcount DESC");
|
||||
SaveDefaultQuery(&s, i++, tr("Never played"), "playcount = 0", QString());
|
||||
SaveDefaultQuery(&s, i++, tr("Favourite tracks"), QString(), "rating DESC"); // TODO: use score
|
||||
SaveDefaultQuery(&s, i++, tr("Newest tracks"), QString(), "ctime DESC");
|
||||
s.endArray();
|
||||
}
|
||||
|
||||
void SmartPlaylistModel::SaveDefaultQuery(QSettings* s, int i,
|
||||
const QString& name, const QString& where, const QString& order, int limit) {
|
||||
s->setArrayIndex(i);
|
||||
s->setValue("name", name);
|
||||
s->setValue("type", "Query");
|
||||
if (limit != -1) s->setValue("limit", limit);
|
||||
if (!where.isEmpty()) s->setValue("where", where);
|
||||
if (!order.isEmpty()) s->setValue("order", order);
|
||||
}
|
||||
|
||||
PlaylistGeneratorPtr SmartPlaylistModel::CreateGenerator(const QModelIndex& index) const {
|
||||
PlaylistGeneratorPtr ret;
|
||||
|
||||
// Get the item
|
||||
const QStandardItem* item = itemFromIndex(index);
|
||||
if (!item || item->data(Role_Type).toInt() != Type_Generator)
|
||||
return ret;
|
||||
|
||||
// Get the container that the item is in
|
||||
const QStandardItem* container = itemFromIndex(index.parent());
|
||||
if (!container || container->data(Role_Type).toInt() != Type_Container)
|
||||
return ret;
|
||||
|
||||
// Open the settings in the right place
|
||||
QSettings s;
|
||||
s.beginGroup(kSettingsGroup);
|
||||
const int count = s.beginReadArray(container->data(Role_ContainerGroup).toString());
|
||||
|
||||
// Check this row really exists
|
||||
if (index.row() >= count)
|
||||
return ret;
|
||||
s.setArrayIndex(index.row());
|
||||
|
||||
// Create a generator of the right type
|
||||
ret = PlaylistGenerator::Create(item->data(Role_GeneratorClass).toString());
|
||||
if (!ret)
|
||||
return ret;
|
||||
|
||||
// Initialise the generator
|
||||
ret->set_library(library_);
|
||||
ret->Load(s);
|
||||
return ret;
|
||||
}
|
||||
|
||||
QMimeData* SmartPlaylistModel::mimeData(const QModelIndexList& indexes) const {
|
||||
PlaylistGeneratorPtr generator = CreateGenerator(indexes.first());
|
||||
if (!generator)
|
||||
return NULL;
|
||||
|
||||
GeneratorMimeData* data = new GeneratorMimeData(generator);
|
||||
data->setData(kMimeType, QByteArray());
|
||||
return data;
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
/* 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 SMARTPLAYLISTMODEL_H
|
||||
#define SMARTPLAYLISTMODEL_H
|
||||
|
||||
#include "playlistgenerator_fwd.h"
|
||||
|
||||
#include <QStandardItemModel>
|
||||
|
||||
class LibraryBackend;
|
||||
|
||||
class QSettings;
|
||||
|
||||
class SmartPlaylistModel : public QStandardItemModel {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SmartPlaylistModel(QObject* parent = 0);
|
||||
|
||||
enum Role {
|
||||
Role_Type = Qt::UserRole + 1,
|
||||
Role_ContainerGroup,
|
||||
Role_GeneratorClass,
|
||||
|
||||
RoleCount
|
||||
};
|
||||
|
||||
enum Type {
|
||||
Type_Invalid,
|
||||
|
||||
Type_Container,
|
||||
Type_Generator,
|
||||
};
|
||||
|
||||
static const char* kSettingsGroup;
|
||||
static const char* kMimeType;
|
||||
|
||||
void set_library(LibraryBackend* library) { library_ = library; }
|
||||
|
||||
PlaylistGeneratorPtr CreateGenerator(const QModelIndex& index) const;
|
||||
|
||||
// QAbstractItemModel
|
||||
QMimeData* mimeData(const QModelIndexList& indexes) const;
|
||||
|
||||
private:
|
||||
void Load(const char* name, QStandardItem* parent);
|
||||
void SaveDefaults();
|
||||
void SaveDefaultQuery(QSettings* settings, int i, const QString& name,
|
||||
const QString& where, const QString& order,
|
||||
int limit = -1);
|
||||
|
||||
QStandardItem* CreateContainer(const QString& name, const QString& group);
|
||||
|
||||
private:
|
||||
LibraryBackend* library_;
|
||||
|
||||
QIcon container_icon_;
|
||||
QIcon playlist_icon_;
|
||||
|
||||
QStandardItem* smart_item_;
|
||||
QStandardItem* dynamic_item_;
|
||||
};
|
||||
|
||||
#endif // SMARTPLAYLISTMODEL_H
|
|
@ -23,6 +23,17 @@ SmartPlaylistSearch::SmartPlaylistSearch() {
|
|||
Reset();
|
||||
}
|
||||
|
||||
SmartPlaylistSearch::SmartPlaylistSearch(
|
||||
SearchType type, TermList terms, SortType sort_type,
|
||||
SmartPlaylistSearchTerm::Field sort_field, int limit)
|
||||
: search_type_(type),
|
||||
terms_(terms),
|
||||
sort_type_(sort_type),
|
||||
sort_field_(sort_field),
|
||||
limit_(limit)
|
||||
{
|
||||
}
|
||||
|
||||
void SmartPlaylistSearch::Reset() {
|
||||
search_type_ = Type_And;
|
||||
terms_.clear();
|
||||
|
|
|
@ -17,11 +17,12 @@
|
|||
#ifndef SMARTPLAYLISTSEARCH_H
|
||||
#define SMARTPLAYLISTSEARCH_H
|
||||
|
||||
#include "playlistgenerator.h"
|
||||
#include "smartplaylistsearchterm.h"
|
||||
|
||||
class SmartPlaylistSearch {
|
||||
public:
|
||||
SmartPlaylistSearch();
|
||||
typedef QList<SmartPlaylistSearchTerm> TermList;
|
||||
|
||||
// These values are persisted, so add to the end of the enum only
|
||||
enum SearchType {
|
||||
|
@ -37,10 +38,15 @@ public:
|
|||
Sort_FieldDesc,
|
||||
};
|
||||
|
||||
SmartPlaylistSearch();
|
||||
SmartPlaylistSearch(SearchType type, TermList terms, SortType sort_type,
|
||||
SmartPlaylistSearchTerm::Field sort_field,
|
||||
int limit = PlaylistGenerator::kDefaultLimit);
|
||||
|
||||
bool is_valid() const;
|
||||
|
||||
SearchType search_type_;
|
||||
QList<SmartPlaylistSearchTerm> terms_;
|
||||
TermList terms_;
|
||||
SortType sort_type_;
|
||||
SmartPlaylistSearchTerm::Field sort_field_;
|
||||
int limit_;
|
||||
|
|
|
@ -18,6 +18,16 @@
|
|||
#include "playlist/playlist.h"
|
||||
|
||||
SmartPlaylistSearchTerm::SmartPlaylistSearchTerm()
|
||||
: field_(Field_Title),
|
||||
operator_(Op_Equals)
|
||||
{
|
||||
}
|
||||
|
||||
SmartPlaylistSearchTerm::SmartPlaylistSearchTerm(
|
||||
Field field, Operator op, const QVariant& value)
|
||||
: field_(field),
|
||||
operator_(op),
|
||||
value_(value)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -73,6 +83,7 @@ SmartPlaylistSearchTerm::Type SmartPlaylistSearchTerm::TypeOf(Field field) {
|
|||
case Field_Filesize:
|
||||
case Field_PlayCount:
|
||||
case Field_SkipCount:
|
||||
case Field_Score:
|
||||
return Type_Number;
|
||||
|
||||
case Field_LastPlayed:
|
||||
|
@ -137,6 +148,7 @@ QString SmartPlaylistSearchTerm::FieldColumnName(Field field) {
|
|||
case Field_DateCreated: return "ctime";
|
||||
case Field_DateModified:return "mtime";
|
||||
case Field_Rating: return "rating";
|
||||
case Field_Score: return "score";
|
||||
case Field_Title: return "title";
|
||||
case Field_Artist: return "artist";
|
||||
case Field_Album: return "album";
|
||||
|
@ -165,6 +177,7 @@ QString SmartPlaylistSearchTerm::FieldName(Field field) {
|
|||
case Field_DateCreated: return Playlist::column_name(Playlist::Column_DateCreated);
|
||||
case Field_DateModified:return Playlist::column_name(Playlist::Column_DateModified);
|
||||
case Field_Rating: return Playlist::column_name(Playlist::Column_Rating);
|
||||
case Field_Score: return Playlist::column_name(Playlist::Column_Score);
|
||||
case Field_Title: return Playlist::column_name(Playlist::Column_Title);
|
||||
case Field_Artist: return Playlist::column_name(Playlist::Column_Artist);
|
||||
case Field_Album: return Playlist::column_name(Playlist::Column_Album);
|
||||
|
|
|
@ -22,8 +22,6 @@
|
|||
|
||||
class SmartPlaylistSearchTerm {
|
||||
public:
|
||||
SmartPlaylistSearchTerm();
|
||||
|
||||
// These values are persisted, so add to the end of the enum only
|
||||
enum Field {
|
||||
Field_Title = 0,
|
||||
|
@ -43,6 +41,7 @@ public:
|
|||
Field_DateCreated,
|
||||
Field_DateModified,
|
||||
Field_Rating,
|
||||
Field_Score,
|
||||
Field_PlayCount,
|
||||
Field_SkipCount,
|
||||
Field_LastPlayed,
|
||||
|
@ -75,6 +74,9 @@ public:
|
|||
Type_Rating,
|
||||
};
|
||||
|
||||
SmartPlaylistSearchTerm();
|
||||
SmartPlaylistSearchTerm(Field field, Operator op, const QVariant& value);
|
||||
|
||||
Field field_;
|
||||
Operator operator_;
|
||||
QVariant value_;
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
/* 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 "smartplaylistmodel.h"
|
||||
#include "smartplaylistview.h"
|
||||
#include "ui/iconloader.h"
|
||||
|
||||
#include <QContextMenuEvent>
|
||||
#include <QMenu>
|
||||
|
||||
SmartPlaylistView::SmartPlaylistView(QWidget* parent)
|
||||
: AutoExpandingTreeView(parent),
|
||||
menu_(NULL)
|
||||
{
|
||||
setAttribute(Qt::WA_MacShowFocusRect, false);
|
||||
setHeaderHidden(true);
|
||||
setAllColumnsShowFocus(true);
|
||||
setDragEnabled(true);
|
||||
setDragDropMode(QAbstractItemView::DragOnly);
|
||||
setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||
}
|
||||
|
||||
void SmartPlaylistView::contextMenuEvent(QContextMenuEvent* e) {
|
||||
if (!menu_) {
|
||||
menu_ = new QMenu(this);
|
||||
load_action_ = menu_->addAction(IconLoader::Load("media-playback-start"),
|
||||
tr("Load"), this, SLOT(Load()));
|
||||
add_action_ = menu_->addAction(IconLoader::Load("media-playback-start"),
|
||||
tr("Add to playlist"), this, SLOT(AddToPlaylist()));
|
||||
add_as_new_action_ = menu_->addAction(IconLoader::Load("view-media-playlist"),
|
||||
tr("Add as new playlist..."), this, SLOT(AddAsNewPlaylist()));
|
||||
menu_->addSeparator();
|
||||
new_smart_action_ = menu_->addAction(IconLoader::Load("list-add"),
|
||||
tr("New smart playlist..."), this, SIGNAL(NewSmartPlaylist()));
|
||||
new_folder_action_ = menu_->addAction(IconLoader::Load("folder-new"),
|
||||
tr("New folder..."), this, SLOT(NewFolder()));
|
||||
remove_action_ = menu_->addAction(IconLoader::Load("list-remove"),
|
||||
tr("Remove"), this, SLOT(Remove()));
|
||||
}
|
||||
|
||||
menu_index_ = indexAt(e->pos());
|
||||
const SmartPlaylistModel::Type type = SmartPlaylistModel::Type(
|
||||
menu_index_.data(SmartPlaylistModel::Role_Type).toInt());
|
||||
const bool is_generator = type == SmartPlaylistModel::Type_Generator;
|
||||
|
||||
load_action_->setEnabled(is_generator);
|
||||
add_action_->setEnabled(is_generator);
|
||||
add_as_new_action_->setEnabled(is_generator);
|
||||
|
||||
menu_->popup(e->globalPos());
|
||||
}
|
||||
|
||||
void SmartPlaylistView::Load() {
|
||||
if (menu_index_.isValid())
|
||||
emit Play(menu_index_, false, true);
|
||||
}
|
||||
|
||||
void SmartPlaylistView::AddToPlaylist() {
|
||||
if (menu_index_.isValid())
|
||||
emit Play(menu_index_, false, false);
|
||||
}
|
||||
|
||||
void SmartPlaylistView::AddAsNewPlaylist() {
|
||||
if (menu_index_.isValid())
|
||||
emit Play(menu_index_, true, false);
|
||||
}
|
||||
|
||||
void SmartPlaylistView::NewFolder() {
|
||||
}
|
||||
|
||||
void SmartPlaylistView::Remove() {
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
/* 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 SMARTPLAYLISTVIEW_H
|
||||
#define SMARTPLAYLISTVIEW_H
|
||||
|
||||
#include "widgets/autoexpandingtreeview.h"
|
||||
|
||||
class QAction;
|
||||
class QMenu;
|
||||
|
||||
class SmartPlaylistView : public AutoExpandingTreeView {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SmartPlaylistView(QWidget* parent = 0);
|
||||
|
||||
signals:
|
||||
void Play(const QModelIndex& index, bool as_new, bool clear);
|
||||
void NewSmartPlaylist();
|
||||
|
||||
protected:
|
||||
void contextMenuEvent(QContextMenuEvent*);
|
||||
|
||||
private slots:
|
||||
void Load();
|
||||
void AddToPlaylist();
|
||||
void AddAsNewPlaylist();
|
||||
void NewFolder();
|
||||
void Remove();
|
||||
|
||||
private:
|
||||
QMenu* menu_;
|
||||
QAction* load_action_;
|
||||
QAction* add_action_;
|
||||
QAction* add_as_new_action_;
|
||||
QAction* new_smart_action_;
|
||||
QAction* new_folder_action_;
|
||||
QAction* remove_action_;
|
||||
|
||||
QModelIndex menu_index_;
|
||||
};
|
||||
|
||||
#endif // SMARTPLAYLISTVIEW_H
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "أضف مجلد..."
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1329,18 +1323,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1513,9 +1498,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -174,9 +174,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Добавяне на друг поток..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Добавяне на папка..."
|
||||
|
||||
|
@ -736,9 +733,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1334,18 +1328,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Нови песни"
|
||||
|
||||
|
@ -1518,9 +1503,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Поп"
|
||||
|
||||
|
|
|
@ -180,9 +180,6 @@ msgstr "Afegeix acció"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Afegir un altre fluxe..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Afegir directori..."
|
||||
|
||||
|
@ -754,9 +751,6 @@ msgstr "Arrossegueu per canviar de posició"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Editar etiqueta \"%1\"..."
|
||||
|
@ -1357,18 +1351,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Llista de reproducció nova"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Cançons noves"
|
||||
|
||||
|
@ -1543,9 +1528,6 @@ msgstr "Buscar llista de reproducció"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -175,9 +175,6 @@ msgstr "Přidat činnost"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Přidat další proud..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Přidat adresář..."
|
||||
|
||||
|
@ -737,9 +734,6 @@ msgstr "Přemístit přetažením"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Upravit tag\"%1\"..."
|
||||
|
@ -1334,18 +1328,9 @@ msgstr "Nikdy"
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nové"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nový seznam skladeb"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1518,9 +1503,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Seznamy skladeb"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2348,6 +2330,12 @@ msgstr "zastavit"
|
|||
msgid "track %1"
|
||||
msgstr "stopa %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Seznamy skladeb"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Nové"
|
||||
|
||||
#~ msgid "&Hide tray icon"
|
||||
#~ msgstr "S&krýt ikonu v systémovém panelu"
|
||||
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1329,18 +1323,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1513,9 +1498,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -175,9 +175,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Tilføj endnu en stream..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Tilføj mappe..."
|
||||
|
||||
|
@ -737,9 +734,6 @@ msgstr "Træk for at skifte position"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Redigér mærke \"%1\"..."
|
||||
|
@ -1335,18 +1329,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1519,9 +1504,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -179,9 +179,6 @@ msgstr "Aktion hinzufügen"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Stream hinzufügen..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Verzeichnis hinzufügen..."
|
||||
|
||||
|
@ -755,9 +752,6 @@ msgstr "Klicken und ziehen um die Position zu ändern"
|
|||
msgid "Drive letter"
|
||||
msgstr "Laufwerksbuchstabe"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "%1 bearbeiten"
|
||||
|
@ -1360,18 +1354,9 @@ msgstr "Niemals"
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Neue Wiedergabeliste"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Neue Titel"
|
||||
|
||||
|
@ -1546,9 +1531,6 @@ msgstr "Wiedergabeliste durchsuchen"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -185,9 +185,6 @@ msgstr "Προσθήκη ενέργειας"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Προσθήκη άλλης ροής..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Προσθήκη ως νέα λίστα..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Προσθήκη καταλόγου..."
|
||||
|
||||
|
@ -765,9 +762,6 @@ msgstr "Σύρετε για μετακίνηση"
|
|||
msgid "Drive letter"
|
||||
msgstr "Γράμμα δίσκου"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Δυναμικές λίστες"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Τροποποίηση ετικέτας \"%1\"..."
|
||||
|
@ -1371,18 +1365,9 @@ msgstr "Ποτέ"
|
|||
msgid "Never played"
|
||||
msgstr "Ποτέ δεν έπαιξαν"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Νέο"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Νέος φάκελος..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Νέα λίστα"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Νέα έξυπνη λίστα..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Νέα τραγούδια"
|
||||
|
||||
|
@ -1559,9 +1544,6 @@ msgstr "Αναζήτηση στη λίστα αναπαραγωγής"
|
|||
msgid "Playlist type"
|
||||
msgstr "Τύπος λίστας αναπαραγωγής"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Λίστες αναπαραγωγής"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2420,6 +2402,24 @@ msgstr "διακοπή"
|
|||
msgid "track %1"
|
||||
msgstr "κομμάτι %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Λίστες αναπαραγωγής"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Προσθήκη ως νέα λίστα..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Δυναμικές λίστες"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Νέο"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Νέος φάκελος..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Νέα έξυπνη λίστα..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Add another stream..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Add directory..."
|
||||
|
||||
|
@ -737,9 +734,6 @@ msgstr "Drag to reposition"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Edit tag \"%1\"..."
|
||||
|
@ -1333,18 +1327,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "New playlist"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1518,9 +1503,6 @@ msgstr "Playlist search"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Add another stream..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Add directory..."
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr "Drag to reposition"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Edit tag \"%1\"..."
|
||||
|
@ -1331,18 +1325,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1515,9 +1500,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr "Aldoni agon"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Aldoni plian fluon..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Aldoni dosierujon..."
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1329,18 +1323,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1513,9 +1498,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -185,9 +185,6 @@ msgstr "Añadir acción"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Añadir un flujo de radio..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Agregar como una nueva lista de reproducción"
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Añadir directorio..."
|
||||
|
||||
|
@ -763,9 +760,6 @@ msgstr "Arrastrar para reposicionar"
|
|||
msgid "Drive letter"
|
||||
msgstr "Letra de unidad"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Lista de reproducción dinámica"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Editar etiqueta \"%1\"..."
|
||||
|
@ -1369,18 +1363,9 @@ msgstr "Nunca"
|
|||
msgid "Never played"
|
||||
msgstr "Nunca reproducidos"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nuevo"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Nueva carpeta"
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nueva lista de reproducción"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nuevas canciones"
|
||||
|
||||
|
@ -1557,9 +1542,6 @@ msgstr "Búsqueda en la lista"
|
|||
msgid "Playlist type"
|
||||
msgstr "Tipo de lista de reproducción"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Listas de reproducción"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2412,6 +2394,21 @@ msgstr "detener"
|
|||
msgid "track %1"
|
||||
msgstr "Pista %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Listas de reproducción"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Agregar como una nueva lista de reproducción"
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Lista de reproducción dinámica"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Nuevo"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Nueva carpeta"
|
||||
|
||||
#~ msgid "Artist A-Z"
|
||||
#~ msgstr "Artista A-Z"
|
||||
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr "Lohista asukoha muutmiseks"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Muuda silti \"%1\"..."
|
||||
|
@ -1331,18 +1325,9 @@ msgstr "Mitte kunagi"
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Uus esitusnimekiri"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1515,9 +1500,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -174,9 +174,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Lisää toinen virta..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Lisää kansio..."
|
||||
|
||||
|
@ -736,9 +733,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Muokkaa %1:en tagia"
|
||||
|
@ -1332,18 +1326,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Uusi soittolista"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1516,9 +1501,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -180,9 +180,6 @@ msgstr "Ajouter une action"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Ajouter un autre flux..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Ajouter un répertoire..."
|
||||
|
||||
|
@ -758,9 +755,6 @@ msgstr "Déplacer pour repositionner"
|
|||
msgid "Drive letter"
|
||||
msgstr "Lettre du lecteur"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Modifer le tag « %1 »..."
|
||||
|
@ -1368,18 +1362,9 @@ msgstr "Jamais"
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nouvelle liste de lecture"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nouvelles musiques"
|
||||
|
||||
|
@ -1556,9 +1541,6 @@ msgstr "Rechercher dans la liste de lecture"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -174,9 +174,6 @@ msgstr "Engadir acción"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Adicionar outra stream..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Adicionar directório..."
|
||||
|
||||
|
@ -740,9 +737,6 @@ msgstr "Arraste para posicionar"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Editar a tag \"%1\"..."
|
||||
|
@ -1336,18 +1330,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1520,9 +1505,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -182,9 +182,6 @@ msgstr "Esemény felvétele"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Új adatfolyam hozzáadása"
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Hozzáadás új lejátszási listaként..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Mappa hozzáadása"
|
||||
|
||||
|
@ -758,9 +755,6 @@ msgstr "Fogja meg az áthelyezéshez"
|
|||
msgid "Drive letter"
|
||||
msgstr "Meghajtó azonosító"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Dinamikus lejátszási listák"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "\"%1\" információ módosítása..."
|
||||
|
@ -1364,18 +1358,9 @@ msgstr "Soha"
|
|||
msgid "Never played"
|
||||
msgstr "Sohasem játszott"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Új"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Új könyvtár..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Új lejátszási lista"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Új intelligens lejátszási lista..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Új számok"
|
||||
|
||||
|
@ -1550,9 +1535,6 @@ msgstr "Keresés a lejátszási listán"
|
|||
msgid "Playlist type"
|
||||
msgstr "Lejátszási lista típus"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Lejátszási listák"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2405,6 +2387,24 @@ msgstr "leállítás"
|
|||
msgid "track %1"
|
||||
msgstr "%1. szám"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Lejátszási listák"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Hozzáadás új lejátszási listaként..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Dinamikus lejátszási listák"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Új"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Új könyvtár..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Új intelligens lejátszási lista..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -184,9 +184,6 @@ msgstr "Aggiungi azione"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Aggiungi un altro flusso..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Aggiungi come nuova scaletta..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Aggiungi cartella..."
|
||||
|
||||
|
@ -762,9 +759,6 @@ msgstr "Trascina per riposizionare"
|
|||
msgid "Drive letter"
|
||||
msgstr "Lettera del dispositivo"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Scalette dinamiche"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Modifica tag \"%1\"..."
|
||||
|
@ -1372,18 +1366,9 @@ msgstr "Mai"
|
|||
msgid "Never played"
|
||||
msgstr "Mai riprodotte"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nuovo"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Nuova cartella..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nuova scaletta"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Nuova scaletta veloce..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nuovi brani"
|
||||
|
||||
|
@ -1559,9 +1544,6 @@ msgstr "Ricerca nella scaletta"
|
|||
msgid "Playlist type"
|
||||
msgstr "Tipo di scaletta"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Scalette"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2420,6 +2402,24 @@ msgstr "ferma"
|
|||
msgid "track %1"
|
||||
msgstr "traccia %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Scalette"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Aggiungi come nuova scaletta..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Scalette dinamiche"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Nuovo"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Nuova cartella..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Nuova scaletta veloce..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -179,9 +179,6 @@ msgstr "アクションの追加"
|
|||
msgid "Add another stream..."
|
||||
msgstr "別のストリームの追加..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "新しいプレイリストとして追加..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "ディレクトリの追加..."
|
||||
|
||||
|
@ -752,9 +749,6 @@ msgstr "位置を変更するにはドラッグします"
|
|||
msgid "Drive letter"
|
||||
msgstr "ドライブ文字"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "ダイナミック プレイリスト"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "タグ \"%1\" の編集..."
|
||||
|
@ -1355,18 +1349,9 @@ msgstr "しない"
|
|||
msgid "Never played"
|
||||
msgstr "再生されたことがない"
|
||||
|
||||
msgid "New"
|
||||
msgstr "新規"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "新しいフォルダー..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "新しいプレイリスト"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "新しいスマート プレイリスト..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "新しい曲"
|
||||
|
||||
|
@ -1541,9 +1526,6 @@ msgstr "プレイリスト検索"
|
|||
msgid "Playlist type"
|
||||
msgstr "プレイリストの種類"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "プレイリスト"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2389,6 +2371,24 @@ msgstr "停止"
|
|||
msgid "track %1"
|
||||
msgstr "トラック %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "プレイリスト"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "新しいプレイリストとして追加..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "ダイナミック プレイリスト"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "新規"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "新しいフォルダー..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "新しいスマート プレイリスト..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1331,18 +1325,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1515,9 +1500,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Поп"
|
||||
|
||||
|
|
|
@ -174,9 +174,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -736,9 +733,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1330,18 +1324,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1514,9 +1499,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -177,9 +177,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Legg til enda en strøm..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Legg til som ny spilleliste..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Legg til katalog..."
|
||||
|
||||
|
@ -747,9 +744,6 @@ msgstr "Dra for å endre posisjon"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Endre merkelapp \"%1\"..."
|
||||
|
@ -1344,18 +1338,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Ny spilleliste"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1528,9 +1513,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2359,6 +2341,9 @@ msgstr "stopp"
|
|||
msgid "track %1"
|
||||
msgstr "spor %1"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Legg til som ny spilleliste..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -178,9 +178,6 @@ msgstr "Actie toevoegen"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Noge een radiostream toevoegen..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Map toevoegen..."
|
||||
|
||||
|
@ -754,9 +751,6 @@ msgstr "Sleep om te verplaatsen"
|
|||
msgid "Drive letter"
|
||||
msgstr "Stationsletter"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Tag \"%1\" bewerken..."
|
||||
|
@ -1359,18 +1353,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nieuwe afspeellijst"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nieuwe liedjes"
|
||||
|
||||
|
@ -1547,9 +1532,6 @@ msgstr "Zoeken in afspeellijst"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1329,18 +1323,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1513,9 +1498,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -182,9 +182,6 @@ msgstr "Dodaj akcje"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Dodaj następny strumień..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Dodaj katalog..."
|
||||
|
||||
|
@ -755,9 +752,6 @@ msgstr "Przeciągnij aby zmienić pozycję"
|
|||
msgid "Drive letter"
|
||||
msgstr "Litera dysku"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Edytuj znacznik \"%1\"..."
|
||||
|
@ -1357,18 +1351,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nowa lista odtwarzania"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nowe utwory"
|
||||
|
||||
|
@ -1544,9 +1529,6 @@ msgstr "Przeszukuj listę odtwarzania"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -183,9 +183,6 @@ msgstr "Adicionar uma acção"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Adicionar outra emissão..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Adicionar como nova lista de reprodução..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Adicionar diretório..."
|
||||
|
||||
|
@ -761,9 +758,6 @@ msgstr "Arraste para posicionar"
|
|||
msgid "Drive letter"
|
||||
msgstr "Letra da unidade"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Listas de reprodução dinâmicas"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Editar marca \"%1\"..."
|
||||
|
@ -1368,18 +1362,9 @@ msgstr "Nunca"
|
|||
msgid "Never played"
|
||||
msgstr "Nunca reproduzidas"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nova"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Nova pasta..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nova lista de reprodução"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Nova lista de reprodução inteligente..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Novas músicas"
|
||||
|
||||
|
@ -1555,9 +1540,6 @@ msgstr "Pesquisa na lista de reprodução"
|
|||
msgid "Playlist type"
|
||||
msgstr "Tipo de lista de reprodução"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Listas de reprodução"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2411,6 +2393,24 @@ msgstr "parar"
|
|||
msgid "track %1"
|
||||
msgstr "faixa %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Listas de reprodução"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Adicionar como nova lista de reprodução..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Listas de reprodução dinâmicas"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Nova"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Nova pasta..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Nova lista de reprodução inteligente..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -177,9 +177,6 @@ msgstr "Adicionar ação"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Adicionar outro canal..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Adicionar diretório"
|
||||
|
||||
|
@ -747,9 +744,6 @@ msgstr "Arraste para reposicionar"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Editar marcador \"%1\"..."
|
||||
|
@ -1346,18 +1340,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nova lista de reprodução"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1532,9 +1517,6 @@ msgstr "Procurar lista de reprodução"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Adaugă alt flux..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Adaugă director..."
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr "Trage pentru a repoziționa"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1330,18 +1324,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1514,9 +1499,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
|
|
@ -177,9 +177,6 @@ msgstr "Добавить действие"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Добавить другое потоковое вещание..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Добавить как новый плейлист…"
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Добавить папку"
|
||||
|
||||
|
@ -751,9 +748,6 @@ msgstr "Тащите для перемещения"
|
|||
msgid "Drive letter"
|
||||
msgstr "Буква диска"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Динамические плейлисты"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Редактировать тег \"%1\"..."
|
||||
|
@ -1352,18 +1346,9 @@ msgstr "Никогда"
|
|||
msgid "Never played"
|
||||
msgstr "Никогда не прослушивались"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Новые"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Новая папка..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Новый список воспроизведения"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Новый умный плейлист…"
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Новые композиции"
|
||||
|
||||
|
@ -1538,9 +1523,6 @@ msgstr "Поиск по списку воспроизведения"
|
|||
msgid "Playlist type"
|
||||
msgstr "Тип плейлиста"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Плейлисты"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2392,6 +2374,24 @@ msgstr "Остановить"
|
|||
msgid "track %1"
|
||||
msgstr "композиция %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Плейлисты"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Добавить как новый плейлист…"
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Динамические плейлисты"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Новые"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Новая папка..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Новый умный плейлист…"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -182,9 +182,6 @@ msgstr "Pridať akciu"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Pridať ďalší stream..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Pridať nový inteligentný playlist"
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Pridať priečinok..."
|
||||
|
||||
|
@ -754,9 +751,6 @@ msgstr "Pretiahnite na iné miesto"
|
|||
msgid "Drive letter"
|
||||
msgstr "Písmeno jednotky"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Dynamické playlisty"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Upraviť tag \"%1\"..."
|
||||
|
@ -1357,18 +1351,9 @@ msgstr "Nikdy"
|
|||
msgid "Never played"
|
||||
msgstr "Nikdy nehrané"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nové"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Nový priečinok..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nový playlist"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Nový inteligentný playlist..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nové piesne"
|
||||
|
||||
|
@ -1542,9 +1527,6 @@ msgstr "Hľadanie v playliste"
|
|||
msgid "Playlist type"
|
||||
msgstr "Typ playlistu"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Playlisty"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2396,6 +2378,24 @@ msgstr "zastaviť"
|
|||
msgid "track %1"
|
||||
msgstr "skladba %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Playlisty"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Pridať nový inteligentný playlist"
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Dynamické playlisty"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Nové"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Nový priečinok..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Nový inteligentný playlist..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -181,9 +181,6 @@ msgstr "Dodaj dejanje"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Dodaj še en pretok ..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Kot nov seznam predvajanja ..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Dodaj mapo ..."
|
||||
|
||||
|
@ -756,9 +753,6 @@ msgstr "Povlecite za spremembo položaja"
|
|||
msgid "Drive letter"
|
||||
msgstr "Črka pogona"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Dinamični seznami predvajanja"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Uredi oznako \"%1\" ..."
|
||||
|
@ -1359,18 +1353,9 @@ msgstr "Nikoli"
|
|||
msgid "Never played"
|
||||
msgstr "Nikoli predvajano"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Novo"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Nova mapa ..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Nov seznam predvajanja"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Nov pametni seznam predvajanja"
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nove skladbe"
|
||||
|
||||
|
@ -1545,9 +1530,6 @@ msgstr "Iskanje po seznamu predvajanja"
|
|||
msgid "Playlist type"
|
||||
msgstr "Vrsta seznama predvajanja"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Seznami predvajanja"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2398,6 +2380,24 @@ msgstr "zaustavi"
|
|||
msgid "track %1"
|
||||
msgstr "skladba %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Seznami predvajanja"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Kot nov seznam predvajanja ..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Dinamični seznami predvajanja"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Novo"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Nova mapa ..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Nov pametni seznam predvajanja"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -174,9 +174,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "Додај још један ток"
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Додај фасциклу"
|
||||
|
||||
|
@ -738,9 +735,6 @@ msgstr "Одвуците га где желите"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Уреди ознаку \"%1\"..."
|
||||
|
@ -1335,18 +1329,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Нова листа нумера"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1519,9 +1504,6 @@ msgstr "Претрага листе нумера"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Поп"
|
||||
|
||||
|
|
|
@ -179,9 +179,6 @@ msgstr "Lägg till åtgärd"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Lägg till en annan ström..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Lägg till som ny spellista..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Lägg till katalog..."
|
||||
|
||||
|
@ -755,9 +752,6 @@ msgstr "Dra för att ändra position"
|
|||
msgid "Drive letter"
|
||||
msgstr "Enhetsbeteckning"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Dynamiska spellistor"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Redigera tagg \"%1\"..."
|
||||
|
@ -1356,18 +1350,9 @@ msgstr "Aldrig"
|
|||
msgid "Never played"
|
||||
msgstr "Aldrig spelade"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Ny"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Ny mapp..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Ny spellista"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Ny smart spellista..."
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Nya låtar"
|
||||
|
||||
|
@ -1540,9 +1525,6 @@ msgstr "Sök i spellista"
|
|||
msgid "Playlist type"
|
||||
msgstr "Spellistetyp"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Spellistor"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2393,6 +2375,24 @@ msgstr "stoppa"
|
|||
msgid "track %1"
|
||||
msgstr "spår %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Spellistor"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Lägg till som ny spellista..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Dynamiska spellistor"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Ny"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Ny mapp..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Ny smart spellista..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -178,9 +178,6 @@ msgstr "Eylem ekle"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Başka bir yayın ekle..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Dizin ekle..."
|
||||
|
||||
|
@ -750,9 +747,6 @@ msgstr "Yeniden konumlandırmak için sürükleyin"
|
|||
msgid "Drive letter"
|
||||
msgstr "Sürücü harfi"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "\"%1\" etiketini düzenle..."
|
||||
|
@ -1354,18 +1348,9 @@ msgstr "Hiçbir zaman"
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr "Yeni"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Yeni klasör..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Yeni çalma listesi"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Yeni şarkılar"
|
||||
|
||||
|
@ -1540,9 +1525,6 @@ msgstr "Çalma listesinde ara"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Çalma Listeleri"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Pop"
|
||||
|
||||
|
@ -2385,6 +2367,15 @@ msgstr "durdur"
|
|||
msgid "track %1"
|
||||
msgstr "parça %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Çalma Listeleri"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Yeni"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Yeni klasör..."
|
||||
|
||||
#~ msgid "Options"
|
||||
#~ msgstr "Seçenekler"
|
||||
|
||||
|
|
|
@ -164,9 +164,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -726,9 +723,6 @@ msgstr ""
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1320,18 +1314,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr ""
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1504,9 +1489,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -181,9 +181,6 @@ msgstr "Додати дію"
|
|||
msgid "Add another stream..."
|
||||
msgstr "Додати інший потік..."
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr "Додати новий список відтворення..."
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "Додати каталог..."
|
||||
|
||||
|
@ -755,9 +752,6 @@ msgstr "Перетягніть, щоб змінити розташування"
|
|||
msgid "Drive letter"
|
||||
msgstr "Літера диска"
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr "Динамічні списки відтворення"
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr "Змінити позначку \"%1\"..."
|
||||
|
@ -1358,18 +1352,9 @@ msgstr "Ніколи"
|
|||
msgid "Never played"
|
||||
msgstr "Ніколи не відтворені"
|
||||
|
||||
msgid "New"
|
||||
msgstr "Нові"
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr "Нова тека..."
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "Новий список відтворення"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr "Новий «розумний» список відтворення"
|
||||
|
||||
msgid "New songs"
|
||||
msgstr "Нові композиції"
|
||||
|
||||
|
@ -1544,9 +1529,6 @@ msgstr "Пошук списку відтворення"
|
|||
msgid "Playlist type"
|
||||
msgstr "Тип списку відтворення"
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr "Списки відтворення"
|
||||
|
||||
msgid "Pop"
|
||||
msgstr "Поп"
|
||||
|
||||
|
@ -2392,6 +2374,24 @@ msgstr "зупинити"
|
|||
msgid "track %1"
|
||||
msgstr "доріжка %1"
|
||||
|
||||
#~ msgid "Playlists"
|
||||
#~ msgstr "Списки відтворення"
|
||||
|
||||
#~ msgid "Add as new playlist..."
|
||||
#~ msgstr "Додати новий список відтворення..."
|
||||
|
||||
#~ msgid "Dynamic playlists"
|
||||
#~ msgstr "Динамічні списки відтворення"
|
||||
|
||||
#~ msgid "New"
|
||||
#~ msgstr "Нові"
|
||||
|
||||
#~ msgid "New folder..."
|
||||
#~ msgstr "Нова тека..."
|
||||
|
||||
#~ msgid "New smart playlist..."
|
||||
#~ msgstr "Новий «розумний» список відтворення"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "A song will be included in the playlist if it matches all of these "
|
||||
#~ "conditions."
|
||||
|
|
|
@ -173,9 +173,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "添加其他流媒体"
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "添加目录"
|
||||
|
||||
|
@ -735,9 +732,6 @@ msgstr "拖拽以重新定位"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1331,18 +1325,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "新建播放列表"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1515,9 +1500,6 @@ msgstr ""
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -178,9 +178,6 @@ msgstr ""
|
|||
msgid "Add another stream..."
|
||||
msgstr "加入其它的網路串流"
|
||||
|
||||
msgid "Add as new playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "Add directory..."
|
||||
msgstr "匯入目錄..."
|
||||
|
||||
|
@ -740,9 +737,6 @@ msgstr "拖曳以重新定位"
|
|||
msgid "Drive letter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dynamic playlists"
|
||||
msgstr ""
|
||||
|
||||
#, qt-format
|
||||
msgid "Edit tag \"%1\"..."
|
||||
msgstr ""
|
||||
|
@ -1335,18 +1329,9 @@ msgstr ""
|
|||
msgid "Never played"
|
||||
msgstr ""
|
||||
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
msgid "New folder..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New playlist"
|
||||
msgstr "新增播放清單"
|
||||
|
||||
msgid "New smart playlist..."
|
||||
msgstr ""
|
||||
|
||||
msgid "New songs"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1519,9 +1504,6 @@ msgstr "播放清單搜尋"
|
|||
msgid "Playlist type"
|
||||
msgstr ""
|
||||
|
||||
msgid "Playlists"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pop"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -53,7 +53,6 @@
|
|||
#include "radio/radioview.h"
|
||||
#include "radio/radioviewcontainer.h"
|
||||
#include "radio/savedradio.h"
|
||||
#include "smartplaylists/smartplaylistcontainer.h"
|
||||
#include "songinfo/artistinfoview.h"
|
||||
#include "songinfo/songinfoview.h"
|
||||
#include "transcoder/transcodedialog.h"
|
||||
|
@ -139,7 +138,6 @@ MainWindow::MainWindow(Engine::Type engine, QWidget *parent)
|
|||
devices_(NULL),
|
||||
library_view_(new LibraryViewContainer(this)),
|
||||
file_view_(new FileView(this)),
|
||||
smart_playlist_view_(new SmartPlaylistContainer(this)),
|
||||
radio_view_(new RadioViewContainer(this)),
|
||||
device_view_(new DeviceView(this)),
|
||||
song_info_view_(new SongInfoView(this)),
|
||||
|
@ -183,7 +181,6 @@ MainWindow::MainWindow(Engine::Type engine, QWidget *parent)
|
|||
// Add tabs to the fancy tab widget
|
||||
ui_->tabs->AddTab(library_view_, IconLoader::Load("folder-sound"), tr("Library"));
|
||||
ui_->tabs->AddTab(file_view_, IconLoader::Load("document-open"), tr("Files"));
|
||||
ui_->tabs->AddTab(smart_playlist_view_, IconLoader::Load("view-media-playlist"), tr("Playlists"));
|
||||
ui_->tabs->AddTab(radio_view_, QIcon(":last.fm/icon_radio.png"), tr("Internet"));
|
||||
ui_->tabs->AddTab(device_view_, IconLoader::Load("multimedia-player-ipod-mini-blue"), tr("Devices"));
|
||||
ui_->tabs->AddSpacer();
|
||||
|
@ -433,10 +430,6 @@ MainWindow::MainWindow(Engine::Type engine, QWidget *parent)
|
|||
connect(devices_->connected_devices_model(), SIGNAL(IsEmptyChanged(bool)),
|
||||
playlist_copy_to_device_, SLOT(setDisabled(bool)));
|
||||
|
||||
// Smart playlists connections
|
||||
smart_playlist_view_->set_library(library_->backend());
|
||||
smart_playlist_view_->set_playlists(playlists_);
|
||||
|
||||
// Radio connections
|
||||
connect(radio_model_, SIGNAL(StreamError(QString)), SLOT(ShowErrorDialog(QString)));
|
||||
connect(radio_model_, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), player_, SLOT(HandleSpecialLoad(PlaylistItem::SpecialLoadResult)));
|
||||
|
@ -660,6 +653,14 @@ void MainWindow::LibrarySongsDoubleClicked(const SongList &songs) {
|
|||
AddLibrarySongsToPlaylist(autoclear_playlist_, songs);
|
||||
}
|
||||
|
||||
void MainWindow::AddSmartPlaylistToPlaylist(bool clear_first, PlaylistGeneratorPtr gen) {
|
||||
if (clear_first)
|
||||
playlists_->ClearCurrent();
|
||||
|
||||
const bool play_now = player_->GetState() != Engine::Playing;
|
||||
playlists_->current()->InsertSmartPlaylist(gen, -1, play_now);
|
||||
}
|
||||
|
||||
void MainWindow::AddLibrarySongsToPlaylist(bool clear_first, const SongList &songs) {
|
||||
if (clear_first)
|
||||
playlists_->ClearCurrent();
|
||||
|
@ -834,6 +835,15 @@ void MainWindow::AddLibraryItemToPlaylist(bool clear_first, const QModelIndexLis
|
|||
source_indexes << index;
|
||||
}
|
||||
|
||||
// Special case: is the first item a smart playlist?
|
||||
if (!source_indexes.isEmpty() &&
|
||||
source_indexes.first().data(LibraryModel::Role_Type).toInt() ==
|
||||
LibraryItem::Type_SmartPlaylist) {
|
||||
AddSmartPlaylistToPlaylist(
|
||||
clear_first, library_->model()->CreateGenerator(source_indexes.first()));
|
||||
return;
|
||||
}
|
||||
|
||||
AddLibrarySongsToPlaylist(clear_first, library_->model()->GetChildSongs(source_indexes));
|
||||
}
|
||||
|
||||
|
|
|
@ -57,7 +57,6 @@ class QueueManager;
|
|||
class RadioItem;
|
||||
class RadioModel;
|
||||
class RadioViewContainer;
|
||||
class SmartPlaylistContainer;
|
||||
class Song;
|
||||
class SongInfoBase;
|
||||
class SongInfoView;
|
||||
|
@ -199,6 +198,7 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
|||
void AddFilesToPlaylist(bool clear_first, const QList<QUrl>& urls);
|
||||
void AddLibraryItemToPlaylist(bool clear_first, const QModelIndexList& indexes);
|
||||
void AddLibrarySongsToPlaylist(bool clear_first, const SongList& songs);
|
||||
void AddSmartPlaylistToPlaylist(bool clear_first, PlaylistGeneratorPtr gen);
|
||||
void AddDeviceSongsToPlaylist(bool clear_first, const SongList& songs);
|
||||
void AddUrls(bool play_now, const QList<QUrl>& urls);
|
||||
void ConnectInfoView(SongInfoBase* view);
|
||||
|
@ -225,7 +225,6 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
|||
|
||||
LibraryViewContainer* library_view_;
|
||||
FileView* file_view_;
|
||||
SmartPlaylistContainer* smart_playlist_view_;
|
||||
RadioViewContainer* radio_view_;
|
||||
DeviceView* device_view_;
|
||||
SongInfoView* song_info_view_;
|
||||
|
|
Loading…
Reference in New Issue