f934394187caedcfe3618f02ba621b4bcdc02d59
[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 : public QObject
22 {
23     Q_OBJECT
24 public:
25     PlaylistManager(QWidget* parent);
26     void addStringList (const QStringList&);
27     void parseAndAddFolder (const QString& dir, bool recursive);
28
29     QStringList playlistStrings () const;
30     int size () const { return items.size (); }
31     int indexOf (const Phonon::MediaSource& s) const;
32     const Phonon::MediaSource& at (int i) { return items[i].source; }
33     const PlaylistItem& getItem (int i) const { return items[i]; }
34 public slots:
35     void savePlaylist(const QString& filename);
36     void loadPlaylist(const QString& filename);
37     void clearPlaylist();
38 signals:
39     void playlistChanged (int from);
40     void itemUpdated (int index);
41 private slots:
42     void metaStateChanged(Phonon::State newState, Phonon::State oldState);
43 private:
44
45     Phonon::MediaObject *metaInformationResolver;
46     QList<PlaylistItem> items;
47     QWidget* parentWidget;
48 };
49
50 #endif // PLAYLISTMANAGER_H