]> git.tdb.fi Git - xinema.git/blob - remote/source/xinemacontrol.h
Display stream size and codecs on the playback page
[xinema.git] / remote / source / xinemacontrol.h
1 #ifndef XINEMACONTROL_H_
2 #define XINEMACONTROL_H_
3
4 #include <QObject>
5 #include <QSize>
6 #include <QTcpSocket>
7
8 class XinemaControl: public QObject
9 {
10         Q_OBJECT
11
12 public:
13         enum PlaybackState
14         {
15                 STOPPED,
16                 PAUSED,
17                 PLAYING
18         };
19
20         enum
21         {
22                 OFF = -1
23         };
24
25 private:
26         QTcpSocket socket;
27         QByteArray buffer;
28         PlaybackState playback_state;
29         QString title;
30         float duration;
31         float position;
32         QSize video_size;
33         float framerate;
34         QString video_codec;
35         QString audio_codec;
36         QStringList audio_channels;
37         QStringList spu_channels;
38         int current_audio_channel;
39         int current_spu_channel;
40
41 public:
42         XinemaControl();
43
44         void connect(const QHostAddress &);
45         bool is_connected() const;
46
47         void list_directory(const QString &);
48         void play_file(const QString &);
49
50         PlaybackState get_playback_state() const { return playback_state; }
51         const QString &get_title() const { return title; }
52         float get_duration() const { return duration; }
53         float get_position() const { return position; }
54         const QSize &get_video_size() const { return video_size; }
55         float get_framerate() const { return framerate; }
56         const QString &get_video_codec() const { return video_codec; }
57         const QString &get_audio_codec() const { return audio_codec; }
58
59         void play();
60         void seek(float);
61         void pause();
62         void stop();
63
64         const QStringList &get_audio_channels() const { return audio_channels; }
65         const QStringList &get_spu_channels() const { return spu_channels; }
66         void select_audio_channel(int);
67         void select_spu_channel(int);
68         int get_current_audio_channel() const { return current_audio_channel; }
69         int get_current_spu_channel() const { return current_spu_channel; }
70
71 signals:
72         void connected();
73         void disconnected();
74         void directory_started(const QString &);
75         void file_added(const QString &);
76         void subdirectory_added(const QString &);
77         void playback_state_changed(PlaybackState);
78         void title_changed(const QString &);
79         void duration_changed(float);
80         void position_changed(float);
81         void size_changed(const QSize &);
82         void framerate_changed(float);
83         void codecs_changed(const QString &, const QString &);
84         void channels_changed();
85         void current_audio_channel_changed(int);
86         void current_spu_channel_changed(int);
87
88 private:
89         void send_request(const QString &);
90
91 private slots:
92         void data_available();
93         void process_reply(const QString &);
94         static int convert_channel(const QString &);
95         static void resize_list(QStringList &, int);
96 };
97
98 #endif