new buttons, loads pls files
[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     void removeItem (int i);
29
30     QStringList playlistStrings () const;
31     int size () const { return items.size (); }
32     int indexOf (const Phonon::MediaSource& s) const;
33     const Phonon::MediaSource& at (int i) { return items[i].source; }
34     const PlaylistItem& getItem (int i) const { return items[i]; }
35 public slots:
36     void savePlaylist(const QString& filename);
37     void loadPlaylist(const QString& filename);
38     void clearPlaylist();
39     void addPlaylist (const QString& filename);
40 signals:
41     void playlistChanged (int from);
42     void itemUpdated (int index);
43 private slots:
44     void metaStateChanged(Phonon::State newState, Phonon::State oldState);
45     void appendPlaylist (const QString& filename);
46     void appendPlaylistPLS (const QString& filename);
47 private:
48
49     Phonon::MediaObject *metaInformationResolver;
50     QList<PlaylistItem> items;
51     QWidget* parentWidget;
52 };
53
54 #endif // PLAYLISTMANAGER_H