8594432eed0d16fe5ce8d0780d64c7b5d1b07c57
[tomamp] / playlistmanager.h
1 #ifndef PLAYLISTMANAGER_H
2 #define PLAYLISTMANAGER_H
3
4 #include <QWidget>
5 #include <phonon/mediaobject.h>
6 #include <phonon/backendcapabilities.h>
7
8 struct PlaylistItem
9 {
10     Phonon::MediaSource source;
11     QString uri;
12     bool playable;
13     bool localFile;
14     QString title;
15     QString artist;
16     QString album;
17     PlaylistItem (const QString& uri) : source (Phonon::MediaSource (uri)), uri (uri), playable (false), localFile (false) {  }
18     bool operator ==(const Phonon::MediaSource& s) const { return source == s; }
19 };
20
21 class PlaylistManager
22 {
23 public:
24     PlaylistManager(QWidget* parent);
25     void addStringList (const QStringList&);
26     void parseAndAddFolder (const QString& dir, bool recursive);
27
28     QStringList playlist () const { return QStringList (); }
29     int size () const { return items.size (); }
30     int indexOf (const Phonon::MediaSource& s) const  { return items.indexOf (s); }
31     const Phonon::MediaSource& at (int i) { return items[i].source; }
32     const PlaylistItem& getItem (int i) const { return items[i]; }
33 public slots:
34     void savePlaylist(const QString& filename);
35     void loadPlaylist(const QString& filename);
36     void clearPlaylist();
37 signals:
38     void playlistChanged (QStringList newItems);
39 private slots:
40     void metaStateChanged(Phonon::State newState, Phonon::State oldState);
41 private:
42
43     Phonon::MediaObject *metaInformationResolver;
44     QList<PlaylistItem> items;
45     QWidget* parentWidget;
46 };
47
48 #endif // PLAYLISTMANAGER_H