# include "config.h"
#endif
-#include <vlc/vlc.h>
+#include <vlc_common.h>
#include <vlc_input.h>
+#include "qt4.hpp"
+
#include <QObject>
#include <QEvent>
-static int const PositionUpdate_Type = QEvent::User + 6;
-static int const ItemChanged_Type = QEvent::User + 7;
-static int const ItemRateChanged_Type = QEvent::User + 8;
-static int const ItemTitleChanged_Type = QEvent::User + 9;
-static int const ItemStateChanged_Type = QEvent::User + 10;
-static int const VolumeChanged_Type = QEvent::User + 11;
+enum {
+ PositionUpdate_Type = QEvent::User + IMEventType + 1,
+ ItemChanged_Type,
+ ItemStateChanged_Type,
+ ItemTitleChanged_Type,
+ ItemRateChanged_Type,
+ VolumeChanged_Type,
+ ItemEsChanged_Type,
+ ItemTeletextChanged_Type,
+ InterfaceVoutUpdate_Type,
+ StatisticsUpdate_Type,
+ MetaChanged_Type,
+
+ FullscreenControlToggle_Type = QEvent::User + IMEventType + 20,
+ FullscreenControlShow_Type,
+ FullscreenControlHide_Type,
+ FullscreenControlPlanHide_Type,
+};
class IMEvent : public QEvent
{
-public:
+friend class InputManager;
+ public:
IMEvent( int type, int id ) : QEvent( (QEvent::Type)(type) )
{ i_id = id ; } ;
virtual ~IMEvent() {};
+private:
int i_id;
};
class InputManager : public QObject
{
Q_OBJECT;
+ friend class MainInputManager;
+
public:
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 hasInput() { return p_input && !p_input->b_dead
+ && vlc_object_alive (p_input); }
+ bool hasAudio();
+ bool hasVideo() { return hasInput() && b_video; }
+
+ QString getName() { return oldName; }
+
private:
+ intf_thread_t *p_intf;
+ input_thread_t *p_input;
+ int i_input_id;
+ int i_old_playing_status;
+ QString oldName;
+ QString artUrl;
+ int i_rate;
+ bool b_video;
+ mtime_t timeA, timeB;
+
void customEvent( QEvent * );
+
void addCallbacks();
void delCallbacks();
+
void UpdateRate();
void UpdateMeta();
void UpdateStatus();
- void UpdateTitle();
+ void UpdateNavigation();
void UpdatePosition();
- void UpdateTracks();
+ void UpdateSPU();
+ void UpdateTeletext();
void UpdateArt();
- intf_thread_t *p_intf;
- input_thread_t *p_input;
- int i_input_id;
- int i_old_playing_status;
- QString old_name;
- QString artUrl;
- int i_rate;
+ void UpdateVout();
+ void UpdateStats();
+
+ void AtoBLoop( int );
+
public slots:
- void togglePlayPause();
void setInput( input_thread_t * ); ///< Our controlled input changed
void sliderUpdate( float ); ///< User dragged the slider. We get new pos
+ /* SpeedRate Rate Management */
+ void reverse();
void slower();
void faster();
void normalRate();
void setRate( int );
+ /* Menus */
void sectionNext();
void sectionPrev();
void sectionMenu();
-#ifdef ZVBI_COMPILED
- void telexGotoPage( int );
- void telexToggle( bool );
- void telexSetTransparency( bool );
-#endif
+ /* 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();
+
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 );
-#ifdef ZVBI_COMPILED
- void teletextEnabled( bool );
-#endif
+ void titleChanged( bool );
+ void chapterChanged( bool );
+ /// Statistics are updated
+ void statisticsUpdated( input_item_t* );
/// Play/pause status
void statusChanged( int );
- void artChanged( QString );
+ void artChanged( input_item_t* );
+ /// Teletext
+ void teletextPossible( bool );
+ void teletextActivated( bool );
+ void teletextTransparencyActivated( bool );
+ void newTelexPageSet( int );
+ /// Advanced buttons
+ void AtoBchanged( bool, bool );
+ /// Vout
+ void voutChanged( bool );
};
class MainInputManager : public QObject
if( instance ) delete instance;
}
virtual ~MainInputManager();
+
input_thread_t *getInput() { return p_input; };
InputManager *getIM() { return im; };
private:
- void customEvent( QEvent * );
MainInputManager( intf_thread_t * );
+ static MainInputManager *instance;
+
+ void customEvent( QEvent * );
InputManager *im;
- intf_thread_t *p_intf;
input_thread_t *p_input;
- static MainInputManager *instance;
+ intf_thread_t *p_intf;
+
public slots:
void togglePlayPause();
void stop();
void next();
void prev();
-private slots:
- //void updateInput();
+
signals:
void inputChanged( input_thread_t * );
void volumeChanged();