diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/plugins/PlaylistFormats/xspf/xspfplaylistformat.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/src/plugins/PlaylistFormats/xspf/xspfplaylistformat.cpp b/src/plugins/PlaylistFormats/xspf/xspfplaylistformat.cpp index 60a1c27bd..997867caa 100644 --- a/src/plugins/PlaylistFormats/xspf/xspfplaylistformat.cpp +++ b/src/plugins/PlaylistFormats/xspf/xspfplaylistformat.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008 by Ilya Kotov * + * Copyright (C) 2008-2009 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -59,7 +59,7 @@ QStringList XSPFPlaylistFormat::decode(const QString & contents) { QUrl url (child.firstChildElement("location").text()); if (url.scheme() == "file") //remove scheme for local files only - out << url.toString(QUrl::RemoveScheme); + out << QUrl::fromPercentEncoding(url.toString(QUrl::RemoveScheme).toAscii()); else out << url.toString(); child = child.nextSiblingElement(); @@ -75,7 +75,7 @@ QString XSPFPlaylistFormat::encode(const QList<AbstractPlaylistItem*> & files) QDomDocument doc; QDomElement root = doc.createElement("playlist"); root.setAttribute("version",QString("1")); - root.setAttribute("xmlns",QString("http://xspf.org/ns/0")); + root.setAttribute("xmlns",QString("http://xspf.org/ns/0/")); QDomElement creator = doc.createElement("creator"); QDomText text = doc.createTextNode("qmmp-" + QString(QMMP_STR_VERSION)); @@ -92,9 +92,10 @@ QString XSPFPlaylistFormat::encode(const QList<AbstractPlaylistItem*> & files) QDomElement ch = doc.createElement("location"); QDomText text; if (f->url().contains("://")) - text = doc.createTextNode(f->url()); + text = doc.createTextNode(QUrl::toPercentEncoding(f->url(), ":/")); else //append protocol - text = doc.createTextNode(QString("file://") + QFileInfo(f->url()).absoluteFilePath()); + text = doc.createTextNode(QUrl::toPercentEncoding(QString("file://") + + QFileInfo(f->url()).absoluteFilePath(), ":/")); ch.appendChild(text); track.appendChild(ch); @@ -103,12 +104,28 @@ QString XSPFPlaylistFormat::encode(const QList<AbstractPlaylistItem*> & files) ch.appendChild(text); track.appendChild(ch); + ch = doc.createElement("creator"); + text = doc.createTextNode(f->artist()); + ch.appendChild(text); + track.appendChild(ch); + + ch = doc.createElement("annotation"); + text = doc.createTextNode(f->comment()); + ch.appendChild(text); + track.appendChild(ch); + + ch = doc.createElement("album"); + text = doc.createTextNode(f->album()); + ch.appendChild(text); + track.appendChild(ch); + ch = doc.createElement("trackNum"); text = doc.createTextNode(QString::number(counter)); ch.appendChild(text); track.appendChild(ch); - ch = doc.createElement("year"); + ch = doc.createElement("meta"); + ch.setAttribute("rel", "year"); text = doc.createTextNode(f->year()); ch.appendChild(text); track.appendChild(ch); |
