X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Finterface_widgets.hpp;h=85dc19d83fceffaf44ddd9b729267ddf8e267650;hb=48785825906a724ea80bf3936bcf45ba2f012a4b;hp=3f0946c4eb62a77efe3411050d386b42f6e1c998;hpb=d3fe7f28797d4dba65ffcdd60bf932e758a48a9e;p=vlc diff --git a/modules/gui/qt4/components/interface_widgets.hpp b/modules/gui/qt4/components/interface_widgets.hpp index 3f0946c4eb..85dc19d83f 100644 --- a/modules/gui/qt4/components/interface_widgets.hpp +++ b/modules/gui/qt4/components/interface_widgets.hpp @@ -5,6 +5,8 @@ * $Id$ * * Authors: Clément Stenac + * Jean-Baptiste Kempf + * Rafaël Carré * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -27,14 +29,16 @@ #include #include +#include #include "qt4.hpp" #include #include -#include -#include -#include +#define VOLUME_MAX 200 +class ResizeEvent; +class QPalette; +class QPixmap; class QLabel; class QHBoxLayout; @@ -60,6 +64,11 @@ private: QWidget *frame; intf_thread_t *p_intf; vlc_mutex_t lock; +signals: + void askResize(); + void askVideoToShow(); +private slots: + void SetMinSize(); }; /******************** Background Widget ****************/ @@ -76,9 +85,12 @@ private: QLabel *label; QHBoxLayout *backgroundLayout; virtual void resizeEvent( QResizeEvent *e ); + virtual void contextMenuEvent( QContextMenuEvent *event ); int DrawBackground(); int CleanBackground(); intf_thread_t *p_intf; +public slots: + void setArt( QString ); }; class VisualSelector : public QFrame @@ -96,39 +108,131 @@ private slots: }; class QPushButton; -class ControlsWidget : public QFrame +class AdvControlsWidget : public QFrame { Q_OBJECT public: - ControlsWidget( intf_thread_t *); - virtual ~ControlsWidget(); + AdvControlsWidget( intf_thread_t *); + virtual ~AdvControlsWidget(); void enableInput( bool ); void enableVideo( bool ); private: intf_thread_t *p_intf; - QPushButton *slowerButton, *normalButton, *fasterButton; - QPushButton *fullscreenButton, *snapshotButton; + QPushButton *normalButton, *recordButton, *ABButton; + QPushButton *snapshotButton, *frameButton; private slots: - void faster(); - void slower(); void normal(); void snapshot(); + void frame(); + void fromAtoB(); + void record(); +}; + + + +class InputSlider; +class QSlider; +class QGridLayout; +class VolumeClickHandler; +class ControlsWidget : public QFrame +{ + Q_OBJECT +public: + ControlsWidget( intf_thread_t *, bool ); + virtual ~ControlsWidget(); + + QPushButton *playlistButton; + QSlider *volumeSlider; + void setStatus( int ); + void enableInput( bool ); + void enableVideo( bool ); +public slots: + void setNavigation( int ); + void updateOnTimer(); +protected: + friend class MainInterface; + friend class VolumeClickHandler; +private: + intf_thread_t *p_intf; + QFrame *discFrame; + QGridLayout *controlLayout; + InputSlider *slider; + QPushButton *prevSectionButton, *nextSectionButton, *menuButton; + QPushButton *playButton, *fullscreenButton; + QPushButton *slowerButton, *fasterButton; + AdvControlsWidget *advControls; + QLabel *volMuteLabel; + + bool b_advancedVisible; +private slots: + void play(); + void stop(); + void prev(); + void next(); + void updateVolume( int ); void fullscreen(); + void extSettings(); + void faster(); + void slower(); + void toggleAdvanced(); +signals: + void advancedControlsToggled( bool ); }; +class VolumeClickHandler : public QObject +{ +public: + VolumeClickHandler( intf_thread_t *_p_intf, ControlsWidget *_m ) :QObject(_m) + {m = _m; p_intf = _p_intf; } + virtual ~VolumeClickHandler() {}; + bool eventFilter( QObject *obj, QEvent *e ) + { + if (e->type() == QEvent::MouseButtonPress ) + { + aout_VolumeMute( p_intf, NULL ); + audio_volume_t i_volume; + aout_VolumeGet( p_intf, &i_volume ); + m->updateVolume( i_volume * VOLUME_MAX / (AOUT_VOLUME_MAX/2) ); + return true; + } + return false; + } +private: + ControlsWidget *m; + intf_thread_t *p_intf; +}; + +#include +#include +class TimeLabel : public QLabel +{ + Q_OBJECT + void mousePressEvent( QMouseEvent *event ) + { + if( event->button() == Qt::LeftButton ) emit timeLabelClicked(); + } + void mouseDoubleClickEvent( QMouseEvent *event ) + { + emit timeLabelDoubleClicked(); + } +signals: + void timeLabelClicked(); + void timeLabelDoubleClicked(); +}; /******************** Playlist Widgets ****************/ #include +#include class QSignalMapper; class PLSelector; class PLPanel; class QPushButton; -class PlaylistWidget : public BasePlaylistWidget +class PlaylistWidget : public QSplitter { Q_OBJECT; public: - PlaylistWidget( intf_thread_t * ); + PlaylistWidget( intf_thread_t *_p_i ) ; virtual ~PlaylistWidget(); QSize widgetSize; virtual QSize sizeHint() const; @@ -138,10 +242,32 @@ private: QPushButton *addButton; QLabel *art; QString prevArt; +protected: + intf_thread_t *p_intf; private slots: void setArt( QString ); signals: void rootChanged( int ); + void artSet( QString ); }; + +/******************** Speed Control Widgets ****************/ +class SpeedControlWidget : public QFrame +{ + Q_OBJECT +public: + SpeedControlWidget( intf_thread_t *); + virtual ~SpeedControlWidget(); + void updateControls( int ); +private: + intf_thread_t *p_intf; + QSlider *speedSlider; + QPushButton *normalSpeedButton; +private slots: + void updateRate( int ); + void resetRate(); +}; + + #endif