#ifndef _INTFWIDGETS_H_
#define _INTFWIDGETS_H_
-#include <vlc/vlc.h>
-#include <vlc_interface.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#include <vlc_common.h>
+#include <vlc_interface.h>
#include <vlc_aout.h>
+
#include "qt4.hpp"
+#include "main_interface.hpp"
+#include "input_manager.hpp"
#include <QWidget>
#include <QFrame>
+
#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;
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 );
+ void release( void * );
+ int control( void *, int, va_list );
- int i_video_height, i_video_width;
- vout_thread_t *p_vout;
-
- 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;
- bool b_need_update;
+
private:
QPalette plt;
QLabel *label;
- virtual void resizeEvent( QResizeEvent *e );
virtual void contextMenuEvent( QContextMenuEvent *event );
intf_thread_t *p_intf;
- int i_runs;
+ virtual void resizeEvent( QResizeEvent * event );
public slots:
void toggle(){ TOGGLEV( this ); }
- void update( void );
+ void updateArt( QString );
};
+#if 0
class VisualSelector : public QFrame
{
Q_OBJECT
void prev();
void next();
};
+#endif
/* Advanced Button Bar */
class QPushButton;
private slots:
void snapshot();
+#if 0
void frame();
+#endif
void fromAtoB();
void record();
void AtoBLoop( float, int, int );
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 *, MainInterface*, 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;
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:
void timeLabelDoubleClicked();
};
+class SpeedLabel : public QLabel
+{
+ Q_OBJECT
+public:
+ 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;
+};
/******************** Speed Control Widgets ****************/
class SpeedControlWidget : public QFrame
private:
intf_thread_t *p_intf;
QSlider *speedSlider;
- QPushButton *normalSpeedButton;
+public slots:
+ void setEnable( bool );
private slots:
void updateRate( int );
void resetRate();