+void PlaylistManager::appendPlaylistPLS(const QString& filename)
+{
+ qDebug () << "Attempting to load playlist: " << filename;
+ QFile f(filename);
+ if (!f.open (QFile::ReadOnly))
+ return;
+ QString tmp = f.readAll();
+ f.close ();
+ QStringList lines = tmp.split("\n");
+ QMap<int, int> filemap;
+
+ foreach (QString l, lines)
+ {
+ if (l.isEmpty() || l.trimmed().toLower() == "[playlist]" || l.trimmed().toLower() == "version=2")
+ {
+ continue;
+ }
+ qDebug () << "PLS " << l;
+ if (l.trimmed().toLower().left(4) == "file")
+ {
+ QStringList tokens = l.split('=');
+ if (tokens.size () < 2)
+ continue;
+ tokens[0] = tokens[0].mid (4);
+ filemap.insert(tokens[0].toInt (), items.size ());
+ qDebug () << tokens;
+ items.append(PlaylistItem (tokens[1]));
+ }
+ else if (l.trimmed().toLower().left(5) == "title")
+ {
+ QStringList tokens = l.split('=');
+ if (tokens.size () < 2)
+ continue;
+ tokens[0] = tokens[0].mid (5);
+ int toupdate = filemap[tokens[0].toInt()];
+ qDebug () << "Need to update " << toupdate << " for " << l;
+ QStringList metatok = tokens[1].split (" - ");
+ qDebug () << metatok;
+ if (metatok.size() > 2 && toupdate >= 0 && toupdate < items.size ())
+ {
+ items[toupdate].artist = metatok[0];
+ items[toupdate].title = metatok[1];
+ metatok = metatok.mid (2);
+ items[toupdate].album = metatok.join (" - ");
+ }
+ else
+ {
+ items[toupdate].title = metatok.join (" - ");
+ }
+ }
+ }
+}
+
+