diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-11-26 05:02:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-11-26 05:02:51 +0000 |
| commit | b67a746b18fecb139bfbbd52635dcec56da06ac5 (patch) | |
| tree | 2de7550fe960bd2dc28a8b004482a07e652427b0 /src | |
| parent | 81ce1a88424aece4b638fd12c4ceb5b8cbadc2b7 (diff) | |
| download | qmmp-b67a746b18fecb139bfbbd52635dcec56da06ac5.tar.gz qmmp-b67a746b18fecb139bfbbd52635dcec56da06ac5.tar.bz2 qmmp-b67a746b18fecb139bfbbd52635dcec56da06ac5.zip | |
added new api functions: PlayListParser::savePlayList and
PlayListParser::loadPlaylist
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3929 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 53 | ||||
| -rw-r--r-- | src/qmmpui/playlistparser.cpp | 51 | ||||
| -rw-r--r-- | src/qmmpui/playlistparser.h | 13 |
3 files changed, 70 insertions, 47 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index cd45d8cb2..3e930198f 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -809,60 +809,19 @@ void PlayListModel::doCurrentVisibleRequest() void PlayListModel::loadPlaylist(const QString &f_name) { - if(!QFile::exists(f_name)) - return; - PlayListFormat* prs = PlayListParser::findByPath(f_name); - if(!prs) - return; - - QFile file(f_name); - if (!file.open(QIODevice::ReadOnly)) - { - qWarning("PlayListModel: %s", qPrintable(file.errorString())); - return; - } - - //clear(); - QStringList list = prs->decode(QTextStream(&file).readAll()); - if(list.isEmpty()) - { - qWarning("PlayListModel: error opening %s",qPrintable(f_name)); - } - for (int i = 0; i < list.size(); ++i) - { - if(list.at(i).contains("://")) - continue; - - if (QFileInfo(list.at(i)).isRelative()) - list[i].prepend(QFileInfo(f_name).canonicalPath () + QDir::separator ()); - } + QStringList list = PlayListParser::loadPlaylist(f_name); m_loader->add(list); - file.close(); } -void PlayListModel::savePlaylist(const QString & f_name) +void PlayListModel::savePlaylist(const QString &f_name) { - PlayListFormat* prs = PlayListParser::findByPath(f_name); - if (!prs) - return; - - QFile file(f_name); - if (file.open(QIODevice::WriteOnly)) + QList <PlayListTrack *> songs; + for(int i = 0; i < m_container->count(); ++i) { - QTextStream ts(&file); - QList <PlayListTrack *> songs; - for(int i = 0; i < m_container->count(); ++i) - { - if(!isTrack(i)) - continue; + if(isTrack(i)) songs << m_container->track(i); - } - ts << prs->encode(songs); - file.close(); } - else - qWarning("Error opening %s",f_name.toLocal8Bit().data()); - + PlayListParser::savePlayList(songs, f_name); } bool PlayListModel::isRepeatableList() const diff --git a/src/qmmpui/playlistparser.cpp b/src/qmmpui/playlistparser.cpp index 52cfa5c9b..5e467a132 100644 --- a/src/qmmpui/playlistparser.cpp +++ b/src/qmmpui/playlistparser.cpp @@ -23,6 +23,7 @@ #include <QList> #include <QDir> #include <QApplication> +#include <QTextStream> #include <qmmp/qmmp.h> #include "playlistformat.h" #include "playlistparser.h" @@ -78,6 +79,56 @@ PlayListFormat *PlayListParser::findByUrl(const QUrl &url) return findByPath(path); } +void PlayListParser::savePlayList(QList<PlayListTrack *> tracks, const QString &f_name) +{ + if(tracks.isEmpty()) + return; + PlayListFormat* prs = PlayListParser::findByPath(f_name); + if (!prs) + return; + QFile file(f_name); + if (file.open(QIODevice::WriteOnly)) + { + QTextStream ts(&file); + ts << prs->encode(tracks); + file.close(); + } + else + qWarning("PlayListParser: unable to save playlist, error: %s", qPrintable(file.errorString())); +} + +QStringList PlayListParser::loadPlaylist(const QString &f_name) +{ + QStringList list; + if(!QFile::exists(f_name)) + return list; + PlayListFormat* prs = PlayListParser::findByPath(f_name); + if(!prs) + return list; + + QFile file(f_name); + if (!file.open(QIODevice::ReadOnly)) + { + qWarning("PlayListParser: unable to open playlist, error: %s", qPrintable(file.errorString())); + return; + } + + list = prs->decode(QTextStream(&file).readAll()); + if(list.isEmpty()) + qWarning("PlayListParser: error opening %s",qPrintable(f_name)); + + for (int i = 0; i < list.size(); ++i) + { + if(list.at(i).contains("://")) + continue; + + if (QFileInfo(list.at(i)).isRelative()) + list[i].prepend(QFileInfo(f_name).canonicalPath () + "/"); + } + file.close(); + return list; +} + void PlayListParser::checkFormats() { if (m_formats) diff --git a/src/qmmpui/playlistparser.h b/src/qmmpui/playlistparser.h index b2fdc44c9..c8e779b84 100644 --- a/src/qmmpui/playlistparser.h +++ b/src/qmmpui/playlistparser.h @@ -22,6 +22,7 @@ #include <QStringList> #include <QUrl> +#include "playlisttrack.h" #include "playlistformat.h" /*! @brief The PlaylistParser class provides a simple api to access playlist format plugins. @@ -53,6 +54,18 @@ public: * Returns \b 0 if file \b filePath is unsupported. */ static PlayListFormat *findByUrl(const QUrl &url); + /*! + * Saves a list of tracks to the file. + * @param tracks A list of tracks. + * @param f_name File name the playlist. + */ + static void savePlayList(QList <PlayListTrack *> tracks, const QString &f_name); + /*! + * Loads playlist from file \b f_name + * @param f_name File name. + * @return A list of URLs or file paths. + */ + static QStringList loadPlaylist(const QString &f_name); private: PlayListParser(){} |
