--- /dev/null
+#ifndef PLAYLISTMANAGER_H
+#define PLAYLISTMANAGER_H
+
+#include <QWidget>
+#include <phonon/mediaobject.h>
+#include <phonon/backendcapabilities.h>
+
+
+
+struct PlaylistItem
+{
+ Phonon::MediaSource source;
+ QString uri;
+ bool playable;
+ bool localFile;
+ QString title;
+ QString artist;
+ QString album;
+ PlaylistItem (const QString& uri) : source (Phonon::MediaSource (uri)), uri (uri), playable (false), localFile (false) { }
+ bool operator ==(const Phonon::MediaSource& s) const { return source == s; }
+};
+
+class PlaylistManager : public QObject
+{
+ Q_OBJECT
+public:
+ PlaylistManager(QWidget* parent);
+ void addStringList (const QStringList&);
+ void parseAndAddFolder (const QString& dir, bool recursive);
+ void removeItem (int i);
+
+ QStringList playlistStrings () const;
+ int size () const { return items.size (); }
+ int indexOf (const Phonon::MediaSource& s) const;
+ const Phonon::MediaSource& at (int i) { return items[i].source; }
+ const PlaylistItem& getItem (int i) const { return items[i]; }
+ bool moveItemUp (int i);
+ bool moveItemDown (int i);
+public slots:
+ void savePlaylist(const QString& filename);
+ void loadPlaylist(const QString& filename);
+ void clearPlaylist();
+ void addPlaylist (const QString& filename);
+signals:
+ void playlistChanged (int from);
+ void itemRemoved (int i);
+ void itemUpdated (int index);
+private slots:
+ void metaStateChanged(Phonon::State newState, Phonon::State oldState);
+ void appendPlaylist (const QString& filename);
+ void appendPlaylistPLS (const QString& filename);
+private:
+ bool fileSupported (const QString& fname) const;
+
+ Phonon::MediaObject *metaInformationResolver;
+ QList<PlaylistItem> items;
+ QWidget* parentWidget;
+ int lastMetaRead;
+};
+
+#endif // PLAYLISTMANAGER_H