aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-11-26 05:02:51 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-11-26 05:02:51 +0000
commitb67a746b18fecb139bfbbd52635dcec56da06ac5 (patch)
tree2de7550fe960bd2dc28a8b004482a07e652427b0 /src
parent81ce1a88424aece4b638fd12c4ceb5b8cbadc2b7 (diff)
downloadqmmp-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.cpp53
-rw-r--r--src/qmmpui/playlistparser.cpp51
-rw-r--r--src/qmmpui/playlistparser.h13
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(){}