+Playlist FileStorage::getPlaylist(QString name) {
+ if (name == _CURRENT_PLAYLIST_SUBST_)
+ name = _CURRENT_PLAYLIST_NAME_;
+ QFile playlistFile (_path_prefix+"/"+name+"."+_PLAYLIST_FILE_EXTENSION_);
+ Playlist playlist;
+ playlist.setName(PLAYLIST_BAD_NAME);
+ if (playlistFile.exists()) {
+ playlist.setName(name);
+ playlistFile.open(QFile::ReadOnly);
+ QTextStream stream(&playlistFile);
+ QString buffer = stream.readLine();
+ if (buffer.startsWith(_PLAYLIST_SIGNATURE_)) {
+ while (!stream.atEnd()) {
+ buffer = stream.readLine();
+ if (_meta_regexp.indexIn(buffer) != -1) {
+ int id = _meta_regexp.cap(1).toInt();
+ int seconds = _meta_regexp.cap(2).toInt();
+ QString artist = _meta_regexp.cap(3);
+ QString album = _meta_regexp.cap(4);
+ QString title = _meta_regexp.cap(5);
+ buffer = stream.readLine();
+ if (_path_regexp.indexIn(buffer) != -1) {
+ QString source = _path_regexp.cap(1);
+ TrackMetadata meta(title, artist, album, seconds);
+ Track track(id, meta, source);
+ playlist.addTrack(track);
+ }
+ }
+ }
+ }
+ }
+ return playlist;
+}
+
+QStringList FileStorage::getPlaylistsNames() {
+ QDir directory(_path_prefix);
+ QDirIterator iterator(directory, QDirIterator::FollowSymlinks);
+ QStringList playlistNames;
+ while (iterator.hasNext()) {
+ QString entry = iterator.next();
+ QFileInfo info(entry);
+ QString suffix = info.suffix().toLower();
+ if (suffix == _PLAYLIST_FILE_EXTENSION_) {
+ QString name = info.fileName().replace(QString(".%1").arg(_PLAYLIST_FILE_EXTENSION_), "", Qt::CaseInsensitive);
+ if (name == _CURRENT_PLAYLIST_NAME_)
+ name = _CURRENT_PLAYLIST_SUBST_;
+ playlistNames.append(name);
+ }
+ }
+ return playlistNames;
+}
+