From 1f8b0de49c1f6daf792e7d722a332a9a4ee8be32 Mon Sep 17 00:00:00 2001 From: David Sansome Date: Sat, 22 May 2010 20:28:11 +0000 Subject: [PATCH] Load playlist button works --- src/playlist/playlistcontainer.cpp | 25 +++++++++++++++++++++++++ src/playlist/playlistcontainer.h | 2 ++ src/playlist/playlistmanager.cpp | 6 ++++-- src/playlist/playlistmanager.h | 5 +++-- src/playlistparsers/playlistparser.cpp | 7 +++++++ src/playlistparsers/playlistparser.h | 2 ++ src/translations/ar.po | 14 ++++++++++++++ src/translations/cs.po | 14 ++++++++++++++ src/translations/da.po | 14 ++++++++++++++ src/translations/de.po | 14 ++++++++++++++ src/translations/el.po | 14 ++++++++++++++ src/translations/en_GB.po | 14 ++++++++++++++ src/translations/es.po | 14 ++++++++++++++ src/translations/fi.po | 14 ++++++++++++++ src/translations/fr.po | 14 ++++++++++++++ src/translations/gl.po | 14 ++++++++++++++ src/translations/it.po | 14 ++++++++++++++ src/translations/kk.po | 14 ++++++++++++++ src/translations/nb.po | 14 ++++++++++++++ src/translations/oc.po | 14 ++++++++++++++ src/translations/pl.po | 14 ++++++++++++++ src/translations/pt.po | 14 ++++++++++++++ src/translations/pt_BR.po | 14 ++++++++++++++ src/translations/ro.po | 14 ++++++++++++++ src/translations/ru.po | 14 ++++++++++++++ src/translations/sk.po | 14 ++++++++++++++ src/translations/sv.po | 14 ++++++++++++++ src/translations/tr.po | 14 ++++++++++++++ src/translations/translations.pot | 14 ++++++++++++++ src/translations/zh_TW.po | 14 ++++++++++++++ 30 files changed, 379 insertions(+), 4 deletions(-) diff --git a/src/playlist/playlistcontainer.cpp b/src/playlist/playlistcontainer.cpp index 5c7d70b24..9fe144b7c 100644 --- a/src/playlist/playlistcontainer.cpp +++ b/src/playlist/playlistcontainer.cpp @@ -17,6 +17,7 @@ #include "playlistcontainer.h" #include "playlistmanager.h" #include "ui_playlistcontainer.h" +#include "playlistparsers/playlistparser.h" #include "ui/iconloader.h" #include @@ -25,12 +26,16 @@ #include #include #include +#include +#include const char* PlaylistContainer::kSettingsGroup = "Playlist"; PlaylistContainer::PlaylistContainer(QWidget *parent) : QWidget(parent), ui_(new Ui_PlaylistContainer), + parser_(new PlaylistParser(this)), + manager_(NULL), undo_(NULL), redo_(NULL), starting_up_(true), @@ -228,7 +233,27 @@ void PlaylistContainer::NewPlaylist() { } void PlaylistContainer::LoadPlaylist() { + QString filename = settings_.value("last_load_playlist").toString(); + filename = QFileDialog::getOpenFileName( + this, tr("Load playlist"), filename, + tr("Playlists (%1)").arg(parser_->filter_text())); + if (filename.isNull()) + return; + + settings_.setValue("last_load_playlist", filename); + + SongList songs = parser_->Load(filename); + QFileInfo info(filename); + + if (songs.isEmpty()) { + QMessageBox::information(this, tr("Error"), + tr("The playlist '%1' was empty or could not be loaded.").arg( + info.completeBaseName())); + return; + } + + manager_->New(info.baseName(), songs); } void PlaylistContainer::SavePlaylist() { diff --git a/src/playlist/playlistcontainer.h b/src/playlist/playlistcontainer.h index da295c7d0..e606c0b31 100644 --- a/src/playlist/playlistcontainer.h +++ b/src/playlist/playlistcontainer.h @@ -24,6 +24,7 @@ class Ui_PlaylistContainer; class Playlist; class PlaylistManager; +class PlaylistParser; class PlaylistView; class QTimeLine; @@ -84,6 +85,7 @@ private: private: Ui_PlaylistContainer* ui_; + PlaylistParser* parser_; PlaylistManager* manager_; QAction* undo_; QAction* redo_; diff --git a/src/playlist/playlistmanager.cpp b/src/playlist/playlistmanager.cpp index b4f6e4ce5..25e0422da 100644 --- a/src/playlist/playlistmanager.cpp +++ b/src/playlist/playlistmanager.cpp @@ -72,13 +72,15 @@ Playlist* PlaylistManager::AddPlaylist(int id, const QString& name) { return ret; } -void PlaylistManager::New(const QString& name) { +void PlaylistManager::New(const QString& name, const SongList& songs) { int id = playlist_backend_->CreatePlaylist(name); if (id == -1) qFatal("Couldn't create playlist"); - AddPlaylist(id, name); + Playlist* playlist = AddPlaylist(id, name); + playlist->InsertSongs(songs); + SetCurrentPlaylist(id); } diff --git a/src/playlist/playlistmanager.h b/src/playlist/playlistmanager.h index 1cef78b57..b4a69e1f1 100644 --- a/src/playlist/playlistmanager.h +++ b/src/playlist/playlistmanager.h @@ -20,11 +20,12 @@ #include #include +#include "core/song.h" + class LibraryBackend; class Playlist; class PlaylistBackend; class PlaylistSequence; -class Song; class QModelIndex; class QUrl; @@ -53,7 +54,7 @@ public: PlaylistSequence* sequence() const { return sequence_; } public slots: - void New(const QString& name); + void New(const QString& name, const SongList& songs = SongList()); void Load(const QString& filename); void Save(int id, const QString& filename); void Rename(int id, const QString& new_name); diff --git a/src/playlistparsers/playlistparser.cpp b/src/playlistparsers/playlistparser.cpp index feb8758a9..30d951071 100644 --- a/src/playlistparsers/playlistparser.cpp +++ b/src/playlistparsers/playlistparser.cpp @@ -38,6 +38,13 @@ QStringList PlaylistParser::file_extensions() const { return ret; } +QString PlaylistParser::filter_text() const { + QStringList extensions; + foreach (const QString& extension, file_extensions()) + extensions << "*." + extension; + return extensions.join(" "); +} + bool PlaylistParser::can_load(const QString &filename) const { return file_extensions().contains(QFileInfo(filename).suffix()); } diff --git a/src/playlistparsers/playlistparser.h b/src/playlistparsers/playlistparser.h index ab486f161..8b8a33a34 100644 --- a/src/playlistparsers/playlistparser.h +++ b/src/playlistparsers/playlistparser.h @@ -30,6 +30,8 @@ public: PlaylistParser(QObject *parent = 0); QStringList file_extensions() const; + QString filter_text() const; + bool can_load(const QString& filename) const; SongList Load(const QString& filename) const; diff --git a/src/translations/ar.po b/src/translations/ar.po index 95a9928a3..fe4e5004f 100644 --- a/src/translations/ar.po +++ b/src/translations/ar.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "" diff --git a/src/translations/cs.po b/src/translations/cs.po index 405810bb4..e745e7f51 100644 --- a/src/translations/cs.po +++ b/src/translations/cs.po @@ -341,6 +341,20 @@ msgstr "" msgid "Playlist" msgstr "Seznam skladeb" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/da.po b/src/translations/da.po index bccebca11..fa2bcdaf5 100644 --- a/src/translations/da.po +++ b/src/translations/da.po @@ -343,6 +343,20 @@ msgstr "" msgid "Playlist" msgstr "Spilleliste" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/de.po b/src/translations/de.po index e7a82d014..72c4b5636 100644 --- a/src/translations/de.po +++ b/src/translations/de.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "Wiedergabeliste" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/el.po b/src/translations/el.po index 9e870e302..21c874aa7 100644 --- a/src/translations/el.po +++ b/src/translations/el.po @@ -343,6 +343,20 @@ msgstr "" msgid "Playlist" msgstr "Λίστα" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/en_GB.po b/src/translations/en_GB.po index 658d55268..1cc8068d9 100644 --- a/src/translations/en_GB.po +++ b/src/translations/en_GB.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "Playlist" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/es.po b/src/translations/es.po index 2483d14f3..537c4fdbf 100644 --- a/src/translations/es.po +++ b/src/translations/es.po @@ -346,6 +346,20 @@ msgstr "" msgid "Playlist" msgstr "Lista de reproducción" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/fi.po b/src/translations/fi.po index 0feeaf72b..4dc0c7ff2 100644 --- a/src/translations/fi.po +++ b/src/translations/fi.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "" diff --git a/src/translations/fr.po b/src/translations/fr.po index ad576ff89..cc6fe943e 100644 --- a/src/translations/fr.po +++ b/src/translations/fr.po @@ -345,6 +345,20 @@ msgstr "" msgid "Playlist" msgstr "Liste de lecture" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/gl.po b/src/translations/gl.po index a0c0ba3fb..e53ff6a4d 100644 --- a/src/translations/gl.po +++ b/src/translations/gl.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/it.po b/src/translations/it.po index 99a6de5c0..53e237774 100644 --- a/src/translations/it.po +++ b/src/translations/it.po @@ -343,6 +343,20 @@ msgstr "" msgid "Playlist" msgstr "Scaletta" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/kk.po b/src/translations/kk.po index c285ab919..5062978eb 100644 --- a/src/translations/kk.po +++ b/src/translations/kk.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/nb.po b/src/translations/nb.po index 2f21b3800..03d35b6d0 100644 --- a/src/translations/nb.po +++ b/src/translations/nb.po @@ -341,6 +341,20 @@ msgstr "" msgid "Playlist" msgstr "Spilleliste" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/oc.po b/src/translations/oc.po index db3456006..2fecd06e6 100644 --- a/src/translations/oc.po +++ b/src/translations/oc.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "Lista de lectura" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/pl.po b/src/translations/pl.po index 1836e5584..285b6b519 100644 --- a/src/translations/pl.po +++ b/src/translations/pl.po @@ -341,6 +341,20 @@ msgstr "" msgid "Playlist" msgstr "Playlista" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "" diff --git a/src/translations/pt.po b/src/translations/pt.po index 0497bb5fb..876b19372 100644 --- a/src/translations/pt.po +++ b/src/translations/pt.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "Lista de Reprodução" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/pt_BR.po b/src/translations/pt_BR.po index 327cd4872..e2b537ca0 100644 --- a/src/translations/pt_BR.po +++ b/src/translations/pt_BR.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "" diff --git a/src/translations/ro.po b/src/translations/ro.po index aa43d1a73..e0dcf457b 100644 --- a/src/translations/ro.po +++ b/src/translations/ro.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "Listă de redare" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/ru.po b/src/translations/ru.po index 29a8b938e..0d76c52fc 100644 --- a/src/translations/ru.po +++ b/src/translations/ru.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "Плейлист" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/sk.po b/src/translations/sk.po index 090564084..5cfaeec2e 100644 --- a/src/translations/sk.po +++ b/src/translations/sk.po @@ -341,6 +341,20 @@ msgstr "" msgid "Playlist" msgstr "Playlist" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/sv.po b/src/translations/sv.po index eca26a278..4671cad3a 100644 --- a/src/translations/sv.po +++ b/src/translations/sv.po @@ -342,6 +342,20 @@ msgstr "" msgid "Playlist" msgstr "Spellista" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "ASF" diff --git a/src/translations/tr.po b/src/translations/tr.po index 5e95f8462..1a86dcd66 100644 --- a/src/translations/tr.po +++ b/src/translations/tr.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "" diff --git a/src/translations/translations.pot b/src/translations/translations.pot index 6a957f837..92fa82ce7 100644 --- a/src/translations/translations.pot +++ b/src/translations/translations.pot @@ -331,6 +331,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr "" diff --git a/src/translations/zh_TW.po b/src/translations/zh_TW.po index 59472c64b..05d6f8b09 100644 --- a/src/translations/zh_TW.po +++ b/src/translations/zh_TW.po @@ -340,6 +340,20 @@ msgstr "" msgid "Playlist" msgstr "" +msgid "Load playlist" +msgstr "" + +#, qt-format +msgid "Playlists (%1)" +msgstr "" + +msgid "Error" +msgstr "" + +#, qt-format +msgid "The playlist '%1' was empty or could not be loaded." +msgstr "" + msgid "ASF" msgstr ""