X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fgui%2Fqt4%2Finput_manager.hpp;h=36549844f0ba8097fba12e23062f4aec0e9adda9;hb=113cb9941052b4c8b08095f16e40050747d8565c;hp=b76358314f43552cfe5c82d8e20ac69c4569167a;hpb=cb3432ffc069dbb544a61818bdecd96f56c147b9;p=vlc diff --git a/modules/gui/qt4/input_manager.hpp b/modules/gui/qt4/input_manager.hpp index b76358314f..36549844f0 100644 --- a/modules/gui/qt4/input_manager.hpp +++ b/modules/gui/qt4/input_manager.hpp @@ -22,8 +22,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ -#ifndef _INPUT_MANAGER_H_ -#define _INPUT_MANAGER_H_ +#ifndef QVLC_INPUT_MANAGER_H_ +#define QVLC_INPUT_MANAGER_H_ #ifdef HAVE_CONFIG_H # include "config.h" @@ -44,6 +44,7 @@ enum { ItemTitleChanged_Type, ItemRateChanged_Type, VolumeChanged_Type, + SoundMuteChanged_Type, ItemEsChanged_Type, ItemTeletextChanged_Type, InterfaceVoutUpdate_Type, @@ -55,9 +56,14 @@ enum { SynchroChanged_Type, CachingEvent_Type, BookmarksChanged_Type, -/* RecordingEvent_Type, + RecordingEvent_Type, ProgramChanged_Type, - SignalChanged_Type, */ + RandomChanged_Type, + LoopChanged_Type, + RepeatChanged_Type, + LeafToParent_Type, + EPGEvent_Type, +/* SignalChanged_Type, */ FullscreenControlToggle_Type = QEvent::User + IMEventType + 20, FullscreenControlShow_Type, @@ -65,21 +71,50 @@ enum { FullscreenControlPlanHide_Type, }; +enum { NORMAL, /* loop: 0, repeat: 0 */ + REPEAT_ONE,/* loop: 1, repeat: 0 */ + REPEAT_ALL,/* loop: 0, repeat: 1 */ +}; + class IMEvent : public QEvent { friend class InputManager; +friend class MainInputManager; public: - IMEvent( int type, int id ) : QEvent( (QEvent::Type)(type) ) - { i_id = id ; } ; - virtual ~IMEvent() {}; + IMEvent( int type, input_item_t *p_input = NULL ) + : QEvent( (QEvent::Type)(type) ) + { + if( (p_item = p_input) != NULL ) + vlc_gc_incref( p_item ); + } + virtual ~IMEvent() + { + if( p_item ) + vlc_gc_decref( p_item ); + } private: - int i_id; + input_item_t *p_item; +}; + +enum PLEventTypes +{ + PLItemAppended_Type = QEvent::User + PLEventType + 1, + PLItemRemoved_Type +}; + +class PLEvent : public QEvent +{ +public: + PLEvent( PLEventTypes t, int i, int p ) + : QEvent( (QEvent::Type)t ), i_item(i), i_parent(p) {} + int i_item; + int i_parent; }; class InputManager : public QObject { - Q_OBJECT; + Q_OBJECT friend class MainInputManager; public: @@ -97,17 +132,20 @@ public: bool hasAudio(); bool hasVideo() { return hasInput() && b_video; } + void requestArtUpdate(); QString getName() { return oldName; } + static const QString decodeArtURL( input_item_t *p_item ); private: intf_thread_t *p_intf; input_thread_t *p_input; - int i_input_id; + vlc_object_t *p_input_vbi; + input_item_t *p_item; int i_old_playing_status; QString oldName; QString artUrl; - int i_rate; + float f_rate; float f_cache; bool b_video; mtime_t timeA, timeB; @@ -126,12 +164,14 @@ private: void UpdateArt(); void UpdateInfo(); void UpdateMeta(); + void UpdateMeta(input_item_t *); void UpdateVout(); void UpdateAout(); void UpdateStats(); void UpdateCaching(); - - void AtoBLoop( int ); + void UpdateRecord(); + void UpdateProgramEvent(); + void UpdateEPG(); public slots: void setInput( input_thread_t * ); ///< Our controlled input changed @@ -140,8 +180,13 @@ public slots: void reverse(); void slower(); void faster(); + void littlefaster(); + void littleslower(); void normalRate(); void setRate( int ); + /* Jumping */ + void jumpFwd(); + void jumpBwd(); /* Menus */ void sectionNext(); void sectionPrev(); @@ -149,29 +194,32 @@ public slots: /* Teletext */ void telexSetPage( int ); ///< Goto teletext page void telexSetTransparency( bool ); ///< Transparency on teletext background - void telexActivation( bool ); ///< Enable disable teletext buttons void activateTeletext( bool ); ///< Toggle buttons after click /* A to B Loop */ void setAtoB(); private slots: void togglePlayPause(); + void AtoBLoop( float, int64_t, int ); signals: /// Send new position, new time and new length - void positionUpdated( float , int, int ); - void rateChanged( int ); - void nameChanged( QString ); + void positionUpdated( float , int64_t, int ); + void seekRequested( float pos ); + void rateChanged( float ); + void nameChanged( const QString& ); /// Used to signal whether we should show navigation buttons void titleChanged( bool ); void chapterChanged( bool ); /// Statistics are updated void statisticsUpdated( input_item_t* ); void infoChanged( input_item_t* ); - void metaChanged( input_item_t* ); - void artChanged( input_item_t* ); + void currentMetaChanged( input_item_t* ); + void metaChanged( input_item_t *); + void artChanged( QString ); /// Play/pause status void statusChanged( int ); + void recordingStateChanged( bool ); /// Teletext void teletextPossible( bool ); void teletextActivated( bool ); @@ -181,15 +229,19 @@ signals: void AtoBchanged( bool, bool ); /// Vout void voutChanged( bool ); + void voutListChanged( vout_thread_t **pp_vout, int i_vout ); + /// Other void synchroChanged(); void bookmarksChanged(); void cachingChanged( float ); - void voutListChanged( vout_thread_t **pp_vout, int i_vout ); + /// Program Event changes + void encryptionChanged( bool ); + void epgChanged(); }; class MainInputManager : public QObject { - Q_OBJECT; + Q_OBJECT public: static MainInputManager *getInstance( intf_thread_t *_p_intf ) { @@ -199,15 +251,24 @@ public: } static void killInstance() { - if( instance ) delete instance; + delete instance; + instance = NULL; } - virtual ~MainInputManager(); - input_thread_t *getInput() { return p_input; }; - InputManager *getIM() { return im; }; + input_thread_t *getInput() { return p_input; } + InputManager *getIM() { return im; } + inline input_item_t *currentInputItem() + { + return ( p_input ? input_GetItem( p_input ) : NULL ); + } + + vout_thread_t* getVout(); + aout_instance_t *getAout(); private: MainInputManager( intf_thread_t * ); + virtual ~MainInputManager(); + static MainInputManager *instance; void customEvent( QEvent * ); @@ -216,15 +277,28 @@ private: input_thread_t *p_input; intf_thread_t *p_intf; + void notifyRepeatLoop(); public slots: void togglePlayPause(); + void play(); + void pause(); + void toggleRandom(); void stop(); void next(); void prev(); + void activatePlayQuit( bool ); + + void loopRepeatLoopStatus(); signals: void inputChanged( input_thread_t * ); void volumeChanged(); + void soundMuteChanged(); + void playlistItemAppended( int itemId, int parentId ); + void playlistItemRemoved( int itemId ); + void randomChanged( bool ); + void repeatLoopChanged( int ); + void leafBecameParent( input_item_t * ); }; #endif