X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Finterface_widgets.hpp;h=3c0a880d7818a3e2a185af8dcb83af19f30bf83e;hb=098dab901c1a17c869a52d0d4042d03f00a83d67;hp=258119071781481b4f5666772b94be0f9a614e2f;hpb=92e69fb4875691906996b0ccb436b9abea73ae41;p=vlc diff --git a/modules/gui/qt4/components/interface_widgets.hpp b/modules/gui/qt4/components/interface_widgets.hpp index 2581190717..3c0a880d78 100644 --- a/modules/gui/qt4/components/interface_widgets.hpp +++ b/modules/gui/qt4/components/interface_widgets.hpp @@ -26,16 +26,41 @@ #ifndef _INTFWIDGETS_H_ #define _INTFWIDGETS_H_ -#include -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif +#include +#include #include + #include "qt4.hpp" +#include "main_interface.hpp" +#include "input_manager.hpp" #include #include + #define VOLUME_MAX 200 +/* on WIN32 hide() for fullscreen controller doesnt work, so it have to be + done by trick with setting the opacity of window */ +#ifdef WIN32 + #define WIN32TRICK +#endif + +/* to trying transparency with fullscreen controller on windows enable that */ +/* it can be enabled on-non windows systems, + but it will be transparent only with composite manager */ +#ifndef WIN32 + #define HAVE_TRANSPARENCY 1 +#else + #define HAVE_TRANSPARENCY 0 +#endif + +/* Default value of opacity for FS controller */ +#define DEFAULT_OPACITY 0.75 + class ResizeEvent; class QPalette; class QPixmap; @@ -46,51 +71,59 @@ class QHBoxLayout; class VideoWidget : public QFrame { Q_OBJECT +friend class MainInterface; + public: VideoWidget( intf_thread_t * ); virtual ~VideoWidget(); void *request( vout_thread_t *, int *, int *, unsigned int *, unsigned int * ); - void release( void * ); - int control( void *, int, va_list ); - - int i_video_height, i_video_width; - vout_thread_t *p_vout; + void release( void * ); + int control( void *, int, va_list ); - QSize widgetSize; - QSize sizeHint() const; + virtual QSize sizeHint() const; private: - QWidget *frame; intf_thread_t *p_intf; - vlc_mutex_t lock; + int i_vout; + + QSize videoSize; + signals: - void askResize(); - void askVideoToShow(); -private slots: - void SetMinSize(); + void askVideoWidgetToShow( unsigned int, unsigned int ); + +public slots: + void SetSizing( unsigned int, unsigned int ); + +protected: + virtual QPaintEngine *paintEngine() const + { + return NULL; + } + + virtual void paintEvent(QPaintEvent *); }; /******************** Background Widget ****************/ -class BackgroundWidget : public QFrame +class BackgroundWidget : public QWidget { Q_OBJECT public: BackgroundWidget( intf_thread_t * ); virtual ~BackgroundWidget(); - QSize widgetSize; - QSize sizeHint() const; + private: QPalette plt; QLabel *label; - virtual void resizeEvent( QResizeEvent *e ); virtual void contextMenuEvent( QContextMenuEvent *event ); intf_thread_t *p_intf; + virtual void resizeEvent( QResizeEvent * event ); public slots: - void setArt( QString ); void toggle(){ TOGGLEV( this ); } + void updateArt( QString ); }; +#if 0 class VisualSelector : public QFrame { Q_OBJECT @@ -104,6 +137,7 @@ private slots: void prev(); void next(); }; +#endif /* Advanced Button Bar */ class QPushButton; @@ -126,7 +160,9 @@ private: private slots: void snapshot(); +#if 0 void frame(); +#endif void fromAtoB(); void record(); void AtoBLoop( float, int, int ); @@ -139,14 +175,15 @@ class QGridLayout; class VolumeClickHandler; class SoundSlider; class QAbstractSlider; +class QToolButton; class ControlsWidget : public QFrame { Q_OBJECT public: /* p_intf, advanced control visible or not, blingbling or not */ - ControlsWidget( intf_thread_t *, bool, bool ); -// QSize sizeHint() const; + ControlsWidget( intf_thread_t *_p_i, MainInterface *_p_mi, + bool b_advControls, bool b_shiny, bool b_fsCreation = false); virtual ~ControlsWidget(); QPushButton *playlistButton; @@ -155,38 +192,110 @@ public: void enableVideo( bool ); public slots: void setNavigation( int ); - void updateOnTimer(); protected: friend class MainInterface; friend class VolumeClickHandler; -private: +protected: intf_thread_t *p_intf; - QFrame *discFrame; + QWidget *discFrame; + QWidget *telexFrame; QGridLayout *controlLayout; InputSlider *slider; QPushButton *prevSectionButton, *nextSectionButton, *menuButton; - QPushButton *playButton, *fullscreenButton; - QPushButton *slowerButton, *fasterButton; + QPushButton *playButton, *fullscreenButton, *extSettingsButton; + QPushButton *telexTransparent, *telexOn; + QSpinBox *telexPage; + QToolButton *slowerButton, *fasterButton; + QHBoxLayout *controlButLayout; AdvControlsWidget *advControls; QLabel *volMuteLabel; QAbstractSlider *volumeSlider; + VolumeClickHandler *hVolLabel; bool b_advancedVisible; -private slots: + bool b_telexTransparent; + bool b_telexEnabled; +protected slots: void play(); void stop(); void prev(); void next(); void updateVolume( int ); + void updateVolume( void ); + void updateInput(); void fullscreen(); void extSettings(); void faster(); void slower(); void toggleAdvanced(); + void toggleTeletext(); + void toggleTeletextTransparency(); + void enableTeletext( bool ); signals: void advancedControlsToggled( bool ); }; +/*********************************** + * Fullscreen controller + ***********************************/ +class FullscreenControllerWidget : public ControlsWidget +{ + Q_OBJECT +public: + FullscreenControllerWidget( intf_thread_t *, MainInterface*, bool, bool ); + virtual ~FullscreenControllerWidget(); + + /* */ + void attachVout( vout_thread_t *p_vout ); + void detachVout( vout_thread_t *p_vout ); + void fullscreenChanged( vout_thread_t *, bool b_fs, int i_timeout ); + +protected: + friend class MainInterface; + friend class VolumeClickHandler; + + virtual void mouseMoveEvent( QMouseEvent *event ); + virtual void mousePressEvent( QMouseEvent *event ); + virtual void enterEvent( QEvent *event ); + virtual void leaveEvent( QEvent *event ); + virtual void keyPressEvent( QKeyEvent *event ); + +private slots: + void showFSC(); + void planHideFSC(); + void hideFSC(); + + void slowHideFSC(); + + +private: + QTimer *p_hideTimer; +#if HAVE_TRANSPARENCY + QTimer *p_slowHideTimer; +#endif + + int i_mouse_last_x; + int i_mouse_last_y; + + bool b_mouse_over; + + bool b_slow_hide_begin; + int i_slow_hide_timeout; + +#ifdef WIN32TRICK + bool fscHidden; +#endif + + virtual void customEvent( QEvent *event ); + + /* Shared variable between FSC and VLC (protected by a lock) */ + vlc_mutex_t lock; + bool b_fullscreen; + int i_hide_timeout; /* FSC hiding timeout, same as mouse hiding timeout */ +}; + + + class VolumeClickHandler : public QObject { public: @@ -228,40 +337,22 @@ signals: void timeLabelDoubleClicked(); }; - -/******************** Playlist Widgets ****************/ -#include -#include -class QSignalMapper; -class PLSelector; -class PLPanel; -class QPushButton; -class QSettings; - -class PlaylistWidget : public QSplitter +class SpeedLabel : public QLabel { - Q_OBJECT; + Q_OBJECT public: - PlaylistWidget( intf_thread_t *_p_i, QSettings *settings ) ; - virtual ~PlaylistWidget(); - QSize sizeHint() const; - void savingSettings( QSettings *settings ); -private: - PLSelector *selector; - PLPanel *rightPanel; - QPushButton *addButton; - QLabel *art; - QString prevArt; + SpeedLabel( intf_thread_t *_p_intf, const QString text ): QLabel( text) + { p_intf = _p_intf; } + protected: + virtual void mouseDoubleClickEvent ( QMouseEvent * event ) + { + THEMIM->getIM()->setRate( INPUT_RATE_DEFAULT ); + } +private: intf_thread_t *p_intf; -private slots: - void setArt( QString ); -signals: - void rootChanged( int ); - void artSet( QString ); }; - /******************** Speed Control Widgets ****************/ class SpeedControlWidget : public QFrame { @@ -273,7 +364,8 @@ public: private: intf_thread_t *p_intf; QSlider *speedSlider; - QPushButton *normalSpeedButton; +public slots: + void setEnable( bool ); private slots: void updateRate( int ); void resetRate();