context menu for removing playlist items, lots of fixes, basic functions seem to...
[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 signals:
40     void playlistChanged (int from);
41     void itemUpdated (int index);
42 private slots:
43     void metaStateChanged(Phonon::State newState, Phonon::State oldState);
44 private:
45
46     Phonon::MediaObject *metaInformationResolver;
47     QList<PlaylistItem> items;
48     QWidget* parentWidget;
49 };
50
51 #endif // PLAYLISTMANAGER_H