X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fcomponents%2Finterface_widgets.hpp;h=61edabbdd17c5f45b09f290ffac1434c6a334fbc;hb=495602e13542b7b3ed6646c9768e25d4bf66a2ee;hp=319691bdf4d784ef5c6a3dfd049a6b279d49fab9;hpb=6b61e7bd36533660fffa57998213ebb086246623;p=vlc diff --git a/modules/gui/qt4/components/interface_widgets.hpp b/modules/gui/qt4/components/interface_widgets.hpp index 319691bdf4..61edabbdd1 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 @@ -25,13 +27,18 @@ #define _INTFWIDGETS_H_ #include -#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; @@ -57,8 +64,11 @@ private: QWidget *frame; intf_thread_t *p_intf; vlc_mutex_t lock; +signals: + void askResize(); + void askVideoToShow(); private slots: - void update(); + void SetMinSize(); }; /******************** Background Widget ****************/ @@ -75,33 +85,190 @@ 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 ); + void toggle(){ TOGGLEV( this ); } +}; + +class VisualSelector : public QFrame +{ + Q_OBJECT +public: + VisualSelector( intf_thread_t *); + virtual ~VisualSelector(); +private: + intf_thread_t *p_intf; + QLabel *current; +private slots: + void prev(); + void next(); +}; + +/* Advanced Button Bar */ +class QPushButton; +class AdvControlsWidget : public QFrame +{ + Q_OBJECT +public: + AdvControlsWidget( intf_thread_t *); + virtual ~AdvControlsWidget(); + + void enableInput( bool ); + void enableVideo( bool ); + +private: + intf_thread_t *p_intf; + QPushButton *recordButton, *ABButton; + QPushButton *snapshotButton, *frameButton; + +private slots: + void snapshot(); + void frame(); + void fromAtoB(); + void record(); +}; + +/* Button Bar */ +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 hasAudio(); - void hasVideo(); + 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 Widget ****************/ +/******************** Playlist Widgets ****************/ #include +#include class QSignalMapper; class PLSelector; class PLPanel; +class QPushButton; -class PlaylistWidget : public QFrame +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; private: PLSelector *selector; PLPanel *rightPanel; + 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