]> git.tdb.fi Git - xinema.git/blob - remote/source/xinemacontrol.h
Implement seeking and play/pause controls in the remote
[xinema.git] / remote / source / xinemacontrol.h
1 #ifndef XINEMACONTROL_H_
2 #define XINEMACONTROL_H_
3
4 #include <QObject>
5 #include <QTcpSocket>
6
7 class XinemaControl: public QObject
8 {
9         Q_OBJECT
10
11 public:
12         enum PlaybackState
13         {
14                 STOPPED,
15                 PAUSED,
16                 PLAYING
17         };
18
19 private:
20         QTcpSocket socket;
21         QByteArray buffer;
22         PlaybackState playback_state;
23         QString title;
24         float duration;
25         float position;
26
27 public:
28         XinemaControl();
29
30         void connect(const QHostAddress &);
31         bool is_connected() const;
32
33         void list_directory(const QString &);
34         void play_file(const QString &);
35
36         PlaybackState get_playback_state() const { return playback_state; }
37         const QString &get_title() const { return title; }
38         float get_duration() const { return duration; }
39         float get_position() const { return position; }
40
41         void play();
42         void seek(float);
43         void pause();
44         void stop();
45
46 signals:
47         void connected();
48         void disconnected();
49         void directory_started(const QString &);
50         void file_added(const QString &);
51         void subdirectory_added(const QString &);
52         void playback_state_changed(PlaybackState);
53         void title_changed(const QString &);
54         void duration_changed(float);
55         void position_changed(float);
56
57 private:
58         void send_request(const QString &);
59
60 private slots:
61         void data_available();
62         void process_reply(const QString &);
63 };
64
65 #endif