X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Finput_manager.hpp;h=07a21261d1730ca9f603b02ba534d5989f196c48;hb=1405cf748a267b5e7ad21b606172a27d688eda56;hp=f35602677c719c51d9cad962303316e70da48262;hpb=d3fe7f28797d4dba65ffcdd60bf932e758a48a9e;p=vlc diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp index f35602677c..07a21261d1 100644 --- a/modules/gui/qt4/input_manager.hpp +++ b/modules/gui/qt4/input_manager.hpp @@ -1,7 +1,7 @@ /***************************************************************************** * input_manager.hpp : Manage an input and interact with its GUI elements **************************************************************************** - * Copyright (C) 2006 the VideoLAN team + * Copyright (C) 2006-2008 the VideoLAN team * $Id$ * * Authors: Clément Stenac @@ -24,43 +24,103 @@ #ifndef _INPUT_MANAGER_H_ #define _INPUT_MANAGER_H_ -#include -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include #include +#include "qt4.hpp" + +#include +#include + +static int const PositionUpdate_Type = QEvent::User + IMEventType + 1; +static int const ItemChanged_Type = QEvent::User + IMEventType + 2; +static int const ItemStateChanged_Type = QEvent::User + IMEventType + 3; +static int const ItemTitleChanged_Type = QEvent::User + IMEventType + 4; +static int const ItemRateChanged_Type = QEvent::User + IMEventType + 5; +static int const VolumeChanged_Type = QEvent::User + IMEventType + 6; +static int const FullscreenControlShow_Type = QEvent::User + IMEventType + 7; +static int const FullscreenControlHide_Type = QEvent::User + IMEventType + 8; +static int const FullscreenControlPlanHide_Type = QEvent::User + IMEventType + 9; + +class IMEvent : public QEvent +{ +public: + IMEvent( int type, int id ) : QEvent( (QEvent::Type)(type) ) + { i_id = id ; } ; + virtual ~IMEvent() {}; + + int i_id; +}; + class InputManager : public QObject { Q_OBJECT; public: - InputManager( QObject *, intf_thread_t *); + InputManager( QObject *, intf_thread_t * ); virtual ~InputManager(); void delInput(); bool hasInput() { return p_input && !p_input->b_dead && !p_input->b_die; } bool hasAudio() { return b_has_audio; } bool hasVideo() { return b_has_video; } - bool b_has_audio, b_has_video, b_had_audio, b_had_video; + bool b_has_audio, b_has_video, b_had_audio, b_had_video, b_has_subs; + private: - intf_thread_t *p_intf; + intf_thread_t *p_intf; input_thread_t *p_input; - int i_old_playing_status; + int i_input_id; + int i_old_playing_status; + QString old_name; + QString artUrl; + int i_rate; + + void customEvent( QEvent * ); + void addCallbacks(); + void delCallbacks(); + void UpdateRate(); + void UpdateMeta(); + void UpdateStatus(); + void UpdateNavigation(); + void UpdatePosition(); + void UpdateTracks(); + void UpdateArt(); public slots: - void togglePlayPause(); - void update(); ///< Periodic updates void setInput( input_thread_t * ); ///< Our controlled input changed void sliderUpdate( float ); ///< User dragged the slider. We get new pos + void togglePlayPause(); void slower(); void faster(); void normalRate(); + void setRate( int ); + void sectionNext(); + void sectionPrev(); + void sectionMenu(); +#ifdef ZVBI_COMPILED + void telexGotoPage( int ); + void telexToggle( bool ); + void telexSetTransparency( bool ); +#endif + signals: /// Send new position, new time and new length void positionUpdated( float , int, int ); + void rateChanged( int ); void nameChanged( QString ); + /// Used to signal whether we should show navigation buttons void navigationChanged( int ); + /// Play/pause status void statusChanged( int ); - void audioStarted(); - void videoStarted(); + void artChanged( QString ); + /// Controll of fullscreen controller + void inputUnset(); +#ifdef ZVBI_COMPILED + void teletextEnabled( bool ); +#endif }; class MainInputManager : public QObject @@ -78,22 +138,27 @@ public: if( instance ) delete instance; } virtual ~MainInputManager(); + input_thread_t *getInput() { return p_input; }; InputManager *getIM() { return im; }; private: - InputManager *im; - intf_thread_t *p_intf; - input_thread_t *p_input; + MainInputManager( intf_thread_t * ); + void customEvent( QEvent * ); + + InputManager *im; + input_thread_t *p_input; + + intf_thread_t *p_intf; static MainInputManager *instance; - MainInputManager( intf_thread_t *); public slots: void togglePlayPause(); -private slots: - void updateInput(); + void stop(); + void next(); + void prev(); signals: - void inputChanged( input_thread_t *); + void inputChanged( input_thread_t * ); + void volumeChanged(); }; - #endif