lots of new allowed extensions, small fixes
[tomamp] / 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
9
10 struct PlaylistItem
11 {
12     Phonon::MediaSource source;
13     QString uri;
14     bool playable;
15     bool localFile;
16     QString title;
17     QString artist;
18     QString album;
19 /*    QString year;
20     QString genre;
21     QString length;*/
22     PlaylistItem (const QString& uri) : source (Phonon::MediaSource (uri)), uri (uri), playable (false), localFile (false) {  }
23     bool operator ==(const Phonon::MediaSource& s) const { return source == s; }
24 };
25
26 class PlaylistManager : public QObject
27 {
28     Q_OBJECT
29 public:
30     PlaylistManager(QWidget* parent);
31     void addStringList (const QStringList&);
32     void parseAndAddFolder (const QString& dir, bool recursive);
33     void removeItem (int i);
34
35     QStringList playlistStrings () const;
36     QStringList allowedExt () const { return allowedExtensions; }
37     int size () const { return items.size (); }
38     int indexOf (const Phonon::MediaSource& s) const;
39     const Phonon::MediaSource& at (int i) { return items[i].source; }
40     const PlaylistItem& getItem (int i) const { return items[i]; }
41     bool moveItemUp (int i);
42     bool moveItemDown (int i);
43 public slots:
44     bool savePlaylist(const QString& filename);
45     void loadPlaylist(const QString& filename);
46     void clearPlaylist();
47     void addPlaylist (const QString& filename);
48 signals:
49     void playlistChanged (int from);
50     void itemRemoved (int i);
51     void itemUpdated (int index);
52 private slots:
53     void metaStateChanged(Phonon::State newState, Phonon::State oldState);
54     void appendPlaylist (const QString& filename);
55     void appendPlaylistPLS (const QString& filename);
56 private:
57     bool fileSupported (const QString& fname) const;
58
59     Phonon::MediaObject *metaInformationResolver;
60     QList<PlaylistItem> items;
61     QWidget* parentWidget;
62     static QStringList allowedExtensions;
63     int lastMetaRead;
64 };
65
66 #endif // PLAYLISTMANAGER_H