bool PlaylistSaver::saveM3U(const KURL &file, int opt) { // kdDebug(66666) << k_funcinfo << "file='" << file.path() << "', opt=" << opt << endl; bool isExt=(opt==EXTM3U); // easier ;) QString local(napp->tempSaveName(file.path())); QFile saver(local); saver.open(IO_ReadWrite | IO_Truncate); QTextStream t(&saver); reset(); PlaylistItem i; QStringList props; // this is more code but otoh faster than checking for isExt inside the loop if(isExt) { t << "#EXTM3U" << '\n'; while ((i=writeItem())) { int length = static_cast<int>(((i.property("length")).toInt())/1000); if(length==0) length=-1; // special value in an EXTM3U file, means "unknown" KURL u(i.property("url")); QString title; // if a playlistitem is without a tag or ONLY title is set if((i.property("author").isEmpty() && i.property("title").isEmpty()) || (i.property("author").isEmpty() && !i.property("title").isEmpty()) ) title = u.filename().left(u.filename().length()-4); else title = i.property("author") + " - " + i.property("title"); // kdDebug(66666) << "#EXTINF:"<< QString::number(length) << "," << title << endl; t << "#EXTINF:"<< QString::number(length) << "," << title << '\n'; if (u.isLocalFile()) t << u.path() << '\n'; else t << u.url() << '\n'; } } else { while ((i=writeItem())) { KURL u(i.property("url")); if (u.isLocalFile()) t << u.path() << '\n'; else t << u.url() << '\n'; } } saver.close(); KIO::NetAccess::upload(local, file, 0L); saver.remove(); return true; }
bool PlaylistSaver::saveXML(const KURL &file, int ) { QString localFile; if (file.isLocalFile()) localFile = QFile::encodeName(file.path()); else localFile = napp->tempSaveName(file.path()); // QDom is a pain :) QDomDocument doc("playlist"); doc.setContent(QString("<!DOCTYPE XMLPlaylist><playlist version=\"1.0\" client=\"noatun\"/>")); QDomElement docElem=doc.documentElement(); reset(); PlaylistItem i; QStringList props; while ((i=writeItem())) { // write all properties props=i.properties(); QDomElement elem=doc.createElement("item"); for (QStringList::Iterator pi(props.begin()); pi!=props.end(); ++pi) { QString val=i.property(*pi); elem.setAttribute(*pi, val); if ((*pi)=="url") { KURL u(val); if (u.isLocalFile()) { elem.setAttribute("local", u.path()); } } } docElem.appendChild(elem); props.clear(); } Noatun::KSaver saver(localFile); if (!saver.open()) return false; saver.textStream().setEncoding(QTextStream::UnicodeUTF8); saver.textStream() << doc.toString(); saver.close(); return true; }