fb33ba9baf4687dea83c8bf6be39cbedae8bc58f
[someplayer] / src / libraryform.h
1 #ifndef LIBRARYFORM_H
2 #define LIBRARYFORM_H
3
4 #include <QWidget>
5 #include "someplayer.h"
6
7 #include <QStandardItemModel>
8 #include <QStandardItem>
9 #include <QModelIndex>
10 #include "playlist.h"
11
12 namespace Ui {
13     class LibraryForm;
14 }
15
16 using SomePlayer::DataObjects::Library;
17 using SomePlayer::DataObjects::Track;
18 using SomePlayer::DataObjects::Playlist;
19
20 enum LibraryFormListState {STATE_NONE, STATE_ARTIST, STATE_ALBUM, STATE_TRACK, STATE_PLAYLIST, STATE_PLAYLIST_TRACK, STATE_DYNAMIC};
21
22 class LibraryForm : public QWidget
23 {
24     Q_OBJECT
25
26 public:
27         explicit LibraryForm(Library *lib, QWidget *parent = 0);
28     ~LibraryForm();
29 signals:
30         void player();
31         void busy(QString);
32         void done();
33 public slots:
34         void search(QString &);
35         void nextItem();
36         void prevItem();
37         void cancelSearch();
38 private slots:
39         void _player();
40         void _view_button();
41         void _dynamic_button();
42         void _playlists_button();
43         void _add_button();
44         void _delete_button();
45         void _back_button();
46         void _use_button();
47         void _process_list_click(QModelIndex);
48
49 private:
50     Ui::LibraryForm *ui;
51         Library *_lib;
52         QStandardItemModel *_model;
53         LibraryFormListState _state;
54         QString _current_artist;
55         QString _current_album;
56         Playlist _current_playlist;
57         QList<Track> _current_tracks;
58         QString _search_pattern;
59         int _search_current_id;
60
61         void _add_artist(QString artist);
62         void _add_album(QString artist, QString album);
63         void _add_track(Track track);
64         void _add_playlist(QString name);
65         void _delete_track(Track track);
66 };
67
68 #endif // LIBRARYFORM_H