Load playlist button works

This commit is contained in:
David Sansome 2010-05-22 20:28:11 +00:00
parent c9c44ca592
commit 1f8b0de49c
30 changed files with 379 additions and 4 deletions

View File

@ -17,6 +17,7 @@
#include "playlistcontainer.h" #include "playlistcontainer.h"
#include "playlistmanager.h" #include "playlistmanager.h"
#include "ui_playlistcontainer.h" #include "ui_playlistcontainer.h"
#include "playlistparsers/playlistparser.h"
#include "ui/iconloader.h" #include "ui/iconloader.h"
#include <QUndoStack> #include <QUndoStack>
@ -25,12 +26,16 @@
#include <QTimeLine> #include <QTimeLine>
#include <QSortFilterProxyModel> #include <QSortFilterProxyModel>
#include <QLabel> #include <QLabel>
#include <QFileDialog>
#include <QMessageBox>
const char* PlaylistContainer::kSettingsGroup = "Playlist"; const char* PlaylistContainer::kSettingsGroup = "Playlist";
PlaylistContainer::PlaylistContainer(QWidget *parent) PlaylistContainer::PlaylistContainer(QWidget *parent)
: QWidget(parent), : QWidget(parent),
ui_(new Ui_PlaylistContainer), ui_(new Ui_PlaylistContainer),
parser_(new PlaylistParser(this)),
manager_(NULL),
undo_(NULL), undo_(NULL),
redo_(NULL), redo_(NULL),
starting_up_(true), starting_up_(true),
@ -228,7 +233,27 @@ void PlaylistContainer::NewPlaylist() {
} }
void PlaylistContainer::LoadPlaylist() { 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() { void PlaylistContainer::SavePlaylist() {

View File

@ -24,6 +24,7 @@ class Ui_PlaylistContainer;
class Playlist; class Playlist;
class PlaylistManager; class PlaylistManager;
class PlaylistParser;
class PlaylistView; class PlaylistView;
class QTimeLine; class QTimeLine;
@ -84,6 +85,7 @@ private:
private: private:
Ui_PlaylistContainer* ui_; Ui_PlaylistContainer* ui_;
PlaylistParser* parser_;
PlaylistManager* manager_; PlaylistManager* manager_;
QAction* undo_; QAction* undo_;
QAction* redo_; QAction* redo_;

View File

@ -72,13 +72,15 @@ Playlist* PlaylistManager::AddPlaylist(int id, const QString& name) {
return ret; return ret;
} }
void PlaylistManager::New(const QString& name) { void PlaylistManager::New(const QString& name, const SongList& songs) {
int id = playlist_backend_->CreatePlaylist(name); int id = playlist_backend_->CreatePlaylist(name);
if (id == -1) if (id == -1)
qFatal("Couldn't create playlist"); qFatal("Couldn't create playlist");
AddPlaylist(id, name); Playlist* playlist = AddPlaylist(id, name);
playlist->InsertSongs(songs);
SetCurrentPlaylist(id); SetCurrentPlaylist(id);
} }

View File

@ -20,11 +20,12 @@
#include <QObject> #include <QObject>
#include <QMap> #include <QMap>
#include "core/song.h"
class LibraryBackend; class LibraryBackend;
class Playlist; class Playlist;
class PlaylistBackend; class PlaylistBackend;
class PlaylistSequence; class PlaylistSequence;
class Song;
class QModelIndex; class QModelIndex;
class QUrl; class QUrl;
@ -53,7 +54,7 @@ public:
PlaylistSequence* sequence() const { return sequence_; } PlaylistSequence* sequence() const { return sequence_; }
public slots: public slots:
void New(const QString& name); void New(const QString& name, const SongList& songs = SongList());
void Load(const QString& filename); void Load(const QString& filename);
void Save(int id, const QString& filename); void Save(int id, const QString& filename);
void Rename(int id, const QString& new_name); void Rename(int id, const QString& new_name);

View File

@ -38,6 +38,13 @@ QStringList PlaylistParser::file_extensions() const {
return ret; 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 { bool PlaylistParser::can_load(const QString &filename) const {
return file_extensions().contains(QFileInfo(filename).suffix()); return file_extensions().contains(QFileInfo(filename).suffix());
} }

View File

@ -30,6 +30,8 @@ public:
PlaylistParser(QObject *parent = 0); PlaylistParser(QObject *parent = 0);
QStringList file_extensions() const; QStringList file_extensions() const;
QString filter_text() const;
bool can_load(const QString& filename) const; bool can_load(const QString& filename) const;
SongList Load(const QString& filename) const; SongList Load(const QString& filename) const;

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "" msgstr ""

View File

@ -341,6 +341,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Seznam skladeb" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -343,6 +343,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Spilleliste" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Wiedergabeliste" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -343,6 +343,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Λίστα" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -346,6 +346,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Lista de reproducción" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "" msgstr ""

View File

@ -345,6 +345,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Liste de lecture" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -343,6 +343,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Scaletta" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -341,6 +341,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Spilleliste" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Lista de lectura" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -341,6 +341,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Playlista" 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" msgid "ASF"
msgstr "" msgstr ""

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Lista de Reprodução" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "" msgstr ""

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Listă de redare" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Плейлист" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -341,6 +341,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -342,6 +342,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "Spellista" 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" msgid "ASF"
msgstr "ASF" msgstr "ASF"

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "" msgstr ""

View File

@ -331,6 +331,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "" msgstr ""

View File

@ -340,6 +340,20 @@ msgstr ""
msgid "Playlist" msgid "Playlist"
msgstr "" 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" msgid "ASF"
msgstr "" msgstr ""