X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fgui%2Fqt4%2Fcomponents%2Finterface_widgets.hpp;h=512e15f5e368d0e4463a4d36264dcbafd96cd1d1;hb=a39be0837a5252caf944638e898b96369492c73e;hp=f81197bd18efb5a828190d5867e59e2b21a0bf4c;hpb=dd22c2219ec1268a76794cbc2c5edf9b9f1dc87c;p=vlc diff --git a/modules/gui/qt4/components/interface_widgets.hpp b/modules/gui/qt4/components/interface_widgets.hpp index f81197bd18..512e15f5e3 100644 --- a/modules/gui/qt4/components/interface_widgets.hpp +++ b/modules/gui/qt4/components/interface_widgets.hpp @@ -30,7 +30,7 @@ # include "config.h" #endif -#include +#include #include #include @@ -40,8 +40,23 @@ #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 */ +#define HAVE_TRANSPARENCY 0 +/* it can be enabled on-non windows systems, + but it will be transparent only with composite manager */ +#ifndef WIN32 + #define HAVE_TRANSPARENCY 1 +#endif + class ResizeEvent; class QPalette; class QPixmap; @@ -155,7 +170,8 @@ class ControlsWidget : public QFrame Q_OBJECT public: /* p_intf, advanced control visible or not, blingbling or not */ - ControlsWidget( intf_thread_t *, MainInterface*, bool, bool ); + ControlsWidget( intf_thread_t *_p_i, MainInterface *_p_mi, + bool b_advControls, bool b_shiny, bool b_fsCreation = false); virtual ~ControlsWidget(); QPushButton *playlistButton; @@ -167,21 +183,23 @@ public slots: protected: friend class MainInterface; friend class VolumeClickHandler; -private: +protected: intf_thread_t *p_intf; QWidget *discFrame; QWidget *telexFrame; QGridLayout *controlLayout; InputSlider *slider; QPushButton *prevSectionButton, *nextSectionButton, *menuButton; - QPushButton *playButton, *fullscreenButton; + QPushButton *playButton, *fullscreenButton, *extSettingsButton; QToolButton *slowerButton, *fasterButton; + QHBoxLayout *controlButLayout; AdvControlsWidget *advControls; QLabel *volMuteLabel; QAbstractSlider *volumeSlider; + VolumeClickHandler *hVolLabel; bool b_advancedVisible; -private slots: +protected slots: void play(); void stop(); void prev(); @@ -198,6 +216,66 @@ signals: void advancedControlsToggled( bool ); }; +/*********************************** + * Fullscreen controller + ***********************************/ + +static int showFullscreenControllCallback(vlc_object_t *vlc_object, const char *variable, vlc_value_t old_val, + vlc_value_t new_val, void *data); + +static int regMouseMoveCallback(vlc_object_t *vlc_object, const char *variable, vlc_value_t old_val, + vlc_value_t new_val, void *data); + +class FullscreenControllerWidget : public ControlsWidget +{ + Q_OBJECT +public: + FullscreenControllerWidget( intf_thread_t *, MainInterface*, bool, bool ); + virtual ~FullscreenControllerWidget(); + + void SetHideTimeout( int hideTimeout ) { i_hideTimeout = hideTimeout; } + void regFullscreenCallback( vout_thread_t *p_vout ); + + bool isFSCHidden(); + +public slots: + void unregFullscreenCallback(); + +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 hideFSControllerWidget(); + void slowHideFSC(); + +private: + QTimer *p_hideTimer; + +#if HAVE_TRANSPARENCY + QTimer *p_slowHideTimer; +#endif + + int i_lastPosX; + int i_lastPosY; + int i_hideTimeout; /* FSC hiding timeout, same as mouse hiding timeout */ + bool b_mouseIsOver; + +#ifdef WIN32TRICK + bool fscHidden; +#endif + + virtual void customEvent( QEvent *event ); +}; + + + class VolumeClickHandler : public QObject { public: