From 4750c19d009597905da0123e308edc4d39a48f3b Mon Sep 17 00:00:00 2001 From: David Sansome Date: Wed, 17 Nov 2010 20:21:04 +0000 Subject: [PATCH] Remove the playlists tab and add a smart playlists section to the library view instead --- src/CMakeLists.txt | 7 - src/library/library.cpp | 1 + src/library/libraryitem.h | 3 + src/library/librarymodel.cpp | 123 ++++++++++++++- src/library/librarymodel.h | 24 +++ src/playlist/playlist.cpp | 4 +- src/smartplaylists/playlistgenerator.h | 9 +- src/smartplaylists/queryplaylistgenerator.cpp | 15 +- src/smartplaylists/queryplaylistgenerator.h | 6 +- src/smartplaylists/smartplaylistcontainer.cpp | 72 --------- src/smartplaylists/smartplaylistcontainer.h | 57 ------- src/smartplaylists/smartplaylistcontainer.ui | 96 ------------ src/smartplaylists/smartplaylistmodel.cpp | 142 ------------------ src/smartplaylists/smartplaylistmodel.h | 78 ---------- src/smartplaylists/smartplaylistsearch.cpp | 11 ++ src/smartplaylists/smartplaylistsearch.h | 10 +- .../smartplaylistsearchterm.cpp | 13 ++ src/smartplaylists/smartplaylistsearchterm.h | 6 +- src/smartplaylists/smartplaylistview.cpp | 85 ----------- src/smartplaylists/smartplaylistview.h | 57 ------- src/translations/ar.po | 18 --- src/translations/bg.po | 18 --- src/translations/ca.po | 18 --- src/translations/cs.po | 24 +-- src/translations/cy.po | 18 --- src/translations/da.po | 18 --- src/translations/de.po | 18 --- src/translations/el.po | 36 ++--- src/translations/en_CA.po | 18 --- src/translations/en_GB.po | 18 --- src/translations/eo.po | 18 --- src/translations/es.po | 33 ++-- src/translations/et.po | 18 --- src/translations/fi.po | 18 --- src/translations/fr.po | 18 --- src/translations/gl.po | 18 --- src/translations/hu.po | 36 ++--- src/translations/it.po | 36 ++--- src/translations/ja.po | 36 ++--- src/translations/kk.po | 18 --- src/translations/lt.po | 18 --- src/translations/nb.po | 21 +-- src/translations/nl.po | 18 --- src/translations/oc.po | 18 --- src/translations/pl.po | 18 --- src/translations/pt.po | 36 ++--- src/translations/pt_BR.po | 18 --- src/translations/ro.po | 18 --- src/translations/ru.po | 36 ++--- src/translations/sk.po | 36 ++--- src/translations/sl.po | 36 ++--- src/translations/sr.po | 18 --- src/translations/sv.po | 36 ++--- src/translations/tr.po | 27 ++-- src/translations/translations.pot | 18 --- src/translations/uk.po | 36 ++--- src/translations/zh_CN.po | 18 --- src/translations/zh_TW.po | 18 --- src/ui/mainwindow.cpp | 24 ++- src/ui/mainwindow.h | 3 +- 60 files changed, 440 insertions(+), 1303 deletions(-) delete mode 100644 src/smartplaylists/smartplaylistcontainer.cpp delete mode 100644 src/smartplaylists/smartplaylistcontainer.h delete mode 100644 src/smartplaylists/smartplaylistcontainer.ui delete mode 100644 src/smartplaylists/smartplaylistmodel.cpp delete mode 100644 src/smartplaylists/smartplaylistmodel.h delete mode 100644 src/smartplaylists/smartplaylistview.cpp delete mode 100644 src/smartplaylists/smartplaylistview.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ae9670e44..e9ca13151 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 diff --git a/src/library/library.cpp b/src/library/library.cpp index 6e1de7f37..41d5a3a8e 100644 --- a/src/library/library.cpp +++ b/src/library/library.cpp @@ -39,6 +39,7 @@ Library::Library(BackgroundThread* 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* factory) { diff --git a/src/library/libraryitem.h b/src/library/libraryitem.h index b3370b436..dc0772d13 100644 --- a/src/library/libraryitem.h +++ b/src/library/libraryitem.h @@ -30,6 +30,8 @@ class LibraryItem : public SimpleTreeItem { Type_Divider, Type_Container, Type_Song, + Type_PlaylistContainer, + Type_SmartPlaylist, }; LibraryItem(SimpleTreeModel* model) @@ -39,6 +41,7 @@ class LibraryItem : public SimpleTreeItem { int container_level; Song metadata; + QByteArray smart_playlist_data; }; #endif // LIBRARYITEM_H diff --git a/src/library/librarymodel.cpp b/src/library/librarymodel.cpp index 7249d79e0..a43f6beff 100644 --- a/src/library/librarymodel.cpp +++ b/src/library/librarymodel.cpp @@ -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 #include #include #include #include +const char* LibraryModel::kSmartPlaylistsMimeType = "application/x-clementine-smart-playlist-generator"; +const char* LibraryModel::kSmartPlaylistsSettingsGroup = "SerialisedSmartPlaylists"; LibraryModel::LibraryModel(LibraryBackend* backend, QObject* parent) : SimpleTreeModel(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 urls; QSet 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 ; idisplay_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 gen(new QueryPlaylistGenerator); + gen->set_name(name); + gen->Load(search); + SaveGenerator(s, i, boost::static_pointer_cast(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; +} diff --git a/src/library/librarymodel.h b/src/library/librarymodel.h index 9d02af58d..9ef65c1c1 100644 --- a/src/library/librarymodel.h +++ b/src/library/librarymodel.h @@ -27,11 +27,15 @@ #include "core/simpletreemodel.h" #include "core/song.h" #include "engines/engine_fwd.h" +#include "smartplaylists/playlistgenerator_fwd.h" #include class LibraryDirectoryModel; class LibraryBackend; +class SmartPlaylistSearch; + +class QSettings; class LibraryModel : public SimpleTreeModel { Q_OBJECT @@ -41,6 +45,9 @@ class LibraryModel : public SimpleTreeModel { 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 { 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* urls, SongList* songs, QSet* 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 { // 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 { private: LibraryBackend* backend_; LibraryDirectoryModel* dir_model_; + bool show_smart_playlists_; QueryOptions query_options_; Grouping group_by_; @@ -184,9 +203,14 @@ class LibraryModel : public SimpleTreeModel { // 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); diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 8b2a46485..2be64be84 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -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 #include @@ -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 { diff --git a/src/smartplaylists/playlistgenerator.h b/src/smartplaylists/playlistgenerator.h index 26fc20fb8..6419c054d 100644 --- a/src/smartplaylists/playlistgenerator.h +++ b/src/smartplaylists/playlistgenerator.h @@ -24,8 +24,6 @@ class LibraryBackend; -class QSettings; - class PlaylistGenerator : public QObject, public boost::enable_shared_from_this { 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: diff --git a/src/smartplaylists/queryplaylistgenerator.cpp b/src/smartplaylists/queryplaylistgenerator.cpp index 1961ab6f7..f3e2993e8 100644 --- a/src/smartplaylists/queryplaylistgenerator.cpp +++ b/src/smartplaylists/queryplaylistgenerator.cpp @@ -18,7 +18,6 @@ #include "library/librarybackend.h" #include "library/libraryplaylistitem.h" -#include #include 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() { diff --git a/src/smartplaylists/queryplaylistgenerator.h b/src/smartplaylists/queryplaylistgenerator.h index 4a6f65311..0adaa143c 100644 --- a/src/smartplaylists/queryplaylistgenerator.h +++ b/src/smartplaylists/queryplaylistgenerator.h @@ -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: diff --git a/src/smartplaylists/smartplaylistcontainer.cpp b/src/smartplaylists/smartplaylistcontainer.cpp deleted file mode 100644 index d06dfe92b..000000000 --- a/src/smartplaylists/smartplaylistcontainer.cpp +++ /dev/null @@ -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 . -*/ - -#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(); -} diff --git a/src/smartplaylists/smartplaylistcontainer.h b/src/smartplaylists/smartplaylistcontainer.h deleted file mode 100644 index 1d8b3a16c..000000000 --- a/src/smartplaylists/smartplaylistcontainer.h +++ /dev/null @@ -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 . -*/ - -#ifndef SMARTPLAYLISTCONTAINER_H -#define SMARTPLAYLISTCONTAINER_H - -#include "playlistgenerator_fwd.h" - -#include - -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 diff --git a/src/smartplaylists/smartplaylistcontainer.ui b/src/smartplaylists/smartplaylistcontainer.ui deleted file mode 100644 index 369c00546..000000000 --- a/src/smartplaylists/smartplaylistcontainer.ui +++ /dev/null @@ -1,96 +0,0 @@ - - - SmartPlaylistContainer - - - - 0 - 0 - 380 - 616 - - - - Form - - - - 0 - - - 0 - - - - - 0 - - - - - New - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - Remove - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Play - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - - - - - - - SmartPlaylistView - QTreeView -
smartplaylists/smartplaylistview.h
-
-
- - -
diff --git a/src/smartplaylists/smartplaylistmodel.cpp b/src/smartplaylists/smartplaylistmodel.cpp deleted file mode 100644 index 8ddb4acc0..000000000 --- a/src/smartplaylists/smartplaylistmodel.cpp +++ /dev/null @@ -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 . -*/ - -#include "generatormimedata.h" -#include "playlistgenerator.h" -#include "smartplaylistmodel.h" -#include "ui/iconloader.h" - -#include - -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 ; isetText(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; -} diff --git a/src/smartplaylists/smartplaylistmodel.h b/src/smartplaylists/smartplaylistmodel.h deleted file mode 100644 index 87bd493db..000000000 --- a/src/smartplaylists/smartplaylistmodel.h +++ /dev/null @@ -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 . -*/ - -#ifndef SMARTPLAYLISTMODEL_H -#define SMARTPLAYLISTMODEL_H - -#include "playlistgenerator_fwd.h" - -#include - -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 diff --git a/src/smartplaylists/smartplaylistsearch.cpp b/src/smartplaylists/smartplaylistsearch.cpp index 085f92aa3..e4b840207 100644 --- a/src/smartplaylists/smartplaylistsearch.cpp +++ b/src/smartplaylists/smartplaylistsearch.cpp @@ -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(); diff --git a/src/smartplaylists/smartplaylistsearch.h b/src/smartplaylists/smartplaylistsearch.h index 475923d5a..7487faf68 100644 --- a/src/smartplaylists/smartplaylistsearch.h +++ b/src/smartplaylists/smartplaylistsearch.h @@ -17,11 +17,12 @@ #ifndef SMARTPLAYLISTSEARCH_H #define SMARTPLAYLISTSEARCH_H +#include "playlistgenerator.h" #include "smartplaylistsearchterm.h" class SmartPlaylistSearch { public: - SmartPlaylistSearch(); + typedef QList 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 terms_; + TermList terms_; SortType sort_type_; SmartPlaylistSearchTerm::Field sort_field_; int limit_; diff --git a/src/smartplaylists/smartplaylistsearchterm.cpp b/src/smartplaylists/smartplaylistsearchterm.cpp index c385a7ca6..1d7b13a1c 100644 --- a/src/smartplaylists/smartplaylistsearchterm.cpp +++ b/src/smartplaylists/smartplaylistsearchterm.cpp @@ -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); diff --git a/src/smartplaylists/smartplaylistsearchterm.h b/src/smartplaylists/smartplaylistsearchterm.h index 974c978c8..bde6d2a45 100644 --- a/src/smartplaylists/smartplaylistsearchterm.h +++ b/src/smartplaylists/smartplaylistsearchterm.h @@ -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_; diff --git a/src/smartplaylists/smartplaylistview.cpp b/src/smartplaylists/smartplaylistview.cpp deleted file mode 100644 index 4b2d0a16d..000000000 --- a/src/smartplaylists/smartplaylistview.cpp +++ /dev/null @@ -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 . -*/ - -#include "smartplaylistmodel.h" -#include "smartplaylistview.h" -#include "ui/iconloader.h" - -#include -#include - -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() { -} diff --git a/src/smartplaylists/smartplaylistview.h b/src/smartplaylists/smartplaylistview.h deleted file mode 100644 index 38fdd39ff..000000000 --- a/src/smartplaylists/smartplaylistview.h +++ /dev/null @@ -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 . -*/ - -#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 diff --git a/src/translations/ar.po b/src/translations/ar.po index 9b606d1a1..4da66db28 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -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 "" diff --git a/src/translations/bg.po b/src/translations/bg.po index 6e77ed898..0175a9b2b 100644 --- a/src/translations/bg.po +++ b/src/translations/bg.po @@ -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 "Поп" diff --git a/src/translations/ca.po b/src/translations/ca.po index a6f00e958..bf5c96b98 100644 --- a/src/translations/ca.po +++ b/src/translations/ca.po @@ -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" diff --git a/src/translations/cs.po b/src/translations/cs.po index 07b950b4b..727ba52df 100644 --- a/src/translations/cs.po +++ b/src/translations/cs.po @@ -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" diff --git a/src/translations/cy.po b/src/translations/cy.po index 39960f4ac..79a78f2a3 100644 --- a/src/translations/cy.po +++ b/src/translations/cy.po @@ -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 "" diff --git a/src/translations/da.po b/src/translations/da.po index 2bb41f7a1..a50d28292 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -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" diff --git a/src/translations/de.po b/src/translations/de.po index 74a2a99bd..2e9afe9ed 100644 --- a/src/translations/de.po +++ b/src/translations/de.po @@ -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" diff --git a/src/translations/el.po b/src/translations/el.po index 0f7ef1491..0007d7008 100644 --- a/src/translations/el.po +++ b/src/translations/el.po @@ -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." diff --git a/src/translations/en_CA.po b/src/translations/en_CA.po index c98c2ce73..d804ca9a3 100644 --- a/src/translations/en_CA.po +++ b/src/translations/en_CA.po @@ -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" diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index 4dab89849..7bcf77df3 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -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" diff --git a/src/translations/eo.po b/src/translations/eo.po index 9bf03ccdf..7762c170b 100644 --- a/src/translations/eo.po +++ b/src/translations/eo.po @@ -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 "" diff --git a/src/translations/es.po b/src/translations/es.po index 8c6a81aee..d0a73e4ab 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -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" diff --git a/src/translations/et.po b/src/translations/et.po index 7007c89cc..9f7a5fa78 100644 --- a/src/translations/et.po +++ b/src/translations/et.po @@ -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 "" diff --git a/src/translations/fi.po b/src/translations/fi.po index e0f7aed03..f9b35fcb6 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -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" diff --git a/src/translations/fr.po b/src/translations/fr.po index 8a7eb6e6d..9975fa4fb 100644 --- a/src/translations/fr.po +++ b/src/translations/fr.po @@ -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" diff --git a/src/translations/gl.po b/src/translations/gl.po index 26d09fcc7..b3d2a067d 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -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" diff --git a/src/translations/hu.po b/src/translations/hu.po index c37618711..3c03dd177 100644 --- a/src/translations/hu.po +++ b/src/translations/hu.po @@ -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." diff --git a/src/translations/it.po b/src/translations/it.po index 09ee0bee2..b9e488562 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -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." diff --git a/src/translations/ja.po b/src/translations/ja.po index 818a25ed0..7572d738f 100644 --- a/src/translations/ja.po +++ b/src/translations/ja.po @@ -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." diff --git a/src/translations/kk.po b/src/translations/kk.po index dc7a13084..01e15bd5b 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -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 "Поп" diff --git a/src/translations/lt.po b/src/translations/lt.po index ca91db92b..34c42b0df 100644 --- a/src/translations/lt.po +++ b/src/translations/lt.po @@ -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 "" diff --git a/src/translations/nb.po b/src/translations/nb.po index dbbd04201..1a6e22369 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -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." diff --git a/src/translations/nl.po b/src/translations/nl.po index 1fe0d16ba..c8e62e13e 100644 --- a/src/translations/nl.po +++ b/src/translations/nl.po @@ -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" diff --git a/src/translations/oc.po b/src/translations/oc.po index 3949c83fd..d99d027c9 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -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" diff --git a/src/translations/pl.po b/src/translations/pl.po index 81e98950e..f9e5025ae 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -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" diff --git a/src/translations/pt.po b/src/translations/pt.po index cad6e5afe..746b6cd6b 100644 --- a/src/translations/pt.po +++ b/src/translations/pt.po @@ -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." diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po index 4eb536538..09d8ee98c 100644 --- a/src/translations/pt_BR.po +++ b/src/translations/pt_BR.po @@ -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" diff --git a/src/translations/ro.po b/src/translations/ro.po index 3254968b6..ce39fee38 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -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" diff --git a/src/translations/ru.po b/src/translations/ru.po index fd079f03c..1e8dc0247 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -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." diff --git a/src/translations/sk.po b/src/translations/sk.po index 9d08b71bb..c6028fe35 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -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." diff --git a/src/translations/sl.po b/src/translations/sl.po index 280bdd87a..d5b5ebe22 100644 --- a/src/translations/sl.po +++ b/src/translations/sl.po @@ -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." diff --git a/src/translations/sr.po b/src/translations/sr.po index 10e392b4f..552cdec11 100644 --- a/src/translations/sr.po +++ b/src/translations/sr.po @@ -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 "Поп" diff --git a/src/translations/sv.po b/src/translations/sv.po index 0a43e0a26..f9a30ceda 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -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." diff --git a/src/translations/tr.po b/src/translations/tr.po index d422f7c91..8db7ef7c3 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -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" diff --git a/src/translations/translations.pot b/src/translations/translations.pot index 8a5cd933f..df84cf2f7 100644 --- a/src/translations/translations.pot +++ b/src/translations/translations.pot @@ -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 "" diff --git a/src/translations/uk.po b/src/translations/uk.po index 0b9e0fd6b..01467ce79 100644 --- a/src/translations/uk.po +++ b/src/translations/uk.po @@ -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." diff --git a/src/translations/zh_CN.po b/src/translations/zh_CN.po index ea7622099..51dc53e95 100644 --- a/src/translations/zh_CN.po +++ b/src/translations/zh_CN.po @@ -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 "" diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po index 761d02043..96b6b3770 100644 --- a/src/translations/zh_TW.po +++ b/src/translations/zh_TW.po @@ -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 "" diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 25c8432d4..9273231ac 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -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)); } diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 4495278a7..49d454907 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -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& 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& 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_;