#define XINEMACONTROL_H_
#include <QObject>
+#include <QSize>
#include <QTcpSocket>
class XinemaControl: public QObject
{
Q_OBJECT
+public:
+ enum PlaybackState
+ {
+ STOPPED,
+ PAUSED,
+ PLAYING
+ };
+
+ enum
+ {
+ OFF = -1
+ };
+
private:
QTcpSocket socket;
QByteArray buffer;
+ PlaybackState playback_state;
+ QString title;
+ float duration;
+ float position;
+ QSize video_size;
+ float framerate;
+ QString video_codec;
+ QString audio_codec;
+ QStringList audio_channels;
+ QStringList spu_channels;
+ int current_audio_channel;
+ int current_spu_channel;
public:
XinemaControl();
void list_directory(const QString &);
void play_file(const QString &);
+ PlaybackState get_playback_state() const { return playback_state; }
+ const QString &get_title() const { return title; }
+ float get_duration() const { return duration; }
+ float get_position() const { return position; }
+ const QSize &get_video_size() const { return video_size; }
+ float get_framerate() const { return framerate; }
+ const QString &get_video_codec() const { return video_codec; }
+ const QString &get_audio_codec() const { return audio_codec; }
+
+ void play();
+ void seek(float);
+ void pause();
+ void stop();
+
+ const QStringList &get_audio_channels() const { return audio_channels; }
+ const QStringList &get_spu_channels() const { return spu_channels; }
+ void select_audio_channel(int);
+ void select_spu_channel(int);
+ int get_current_audio_channel() const { return current_audio_channel; }
+ int get_current_spu_channel() const { return current_spu_channel; }
+
signals:
void connected();
void disconnected();
void directory_started(const QString &);
void file_added(const QString &);
void subdirectory_added(const QString &);
+ void playback_state_changed(PlaybackState);
+ void title_changed(const QString &);
+ void duration_changed(float);
+ void position_changed(float);
+ void size_changed(const QSize &);
+ void framerate_changed(float);
+ void codecs_changed(const QString &, const QString &);
+ void channels_changed();
+ void current_audio_channel_changed(int);
+ void current_spu_channel_changed(int);
private:
void send_request(const QString &);
private slots:
void data_available();
void process_reply(const QString &);
+ static int convert_channel(const QString &);
+ static void resize_list(QStringList &, int);
};
#endif