* $Id$
*
* Authors: Clément Stenac <zorglub@videolan.org>
+ * Jean-Baptiste Kempf <jb@videolan.org>
+ * Rafaël Carré <funman@videolanorg>
*
* 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
#ifndef _INTFWIDGETS_H_
#define _INTFWIDGETS_H_
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <vlc/vlc.h>
-#include <vlc/intf.h>
+#include <vlc_interface.h>
+#include <vlc_aout.h>
#include "qt4.hpp"
+#include "main_interface.hpp"
#include <QWidget>
#include <QFrame>
-#include <QPalette>
-#include <QResizeEvent>
-#include <QPixmap>
+#define VOLUME_MAX 200
+class ResizeEvent;
+class QPalette;
+class QPixmap;
class QLabel;
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 );
+ void release( void * );
+ int control( void *, int, va_list );
- int i_video_height, i_video_width;
- vout_thread_t *p_vout;
-
- QSize widgetSize;
virtual QSize sizeHint() const;
private:
- QWidget *frame;
intf_thread_t *p_intf;
+ vout_thread_t *p_vout;
+
vlc_mutex_t lock;
+ QSize videoSize;
+
+signals:
+ void askVideoWidgetToShow();
+ //void askResize();
+
+public slots:
+ void SetSizing( unsigned int, unsigned int );
};
/******************** Background Widget ****************/
-class BackgroundWidget : public QFrame
+class BackgroundWidget : public QWidget
{
Q_OBJECT
public:
BackgroundWidget( intf_thread_t * );
virtual ~BackgroundWidget();
- QSize widgetSize;
- virtual QSize sizeHint() const;
+
private:
QPalette plt;
QLabel *label;
- QHBoxLayout *backgroundLayout;
- virtual void resizeEvent( QResizeEvent *e );
- int DrawBackground();
- int CleanBackground();
+ virtual void contextMenuEvent( QContextMenuEvent *event );
intf_thread_t *p_intf;
+
+public slots:
+ void toggle(){ TOGGLEV( this ); }
+ void update( QString );
};
class VisualSelector : public QFrame
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;
+
+ mtime_t timeA, timeB;
+
+private slots:
+ void snapshot();
+#if 0
+ void frame();
+#endif
+ void fromAtoB();
+ void record();
+ void AtoBLoop( float, int, int );
+};
+
+/* Button Bar */
+class InputSlider;
+class QSlider;
+class QGridLayout;
+class VolumeClickHandler;
+class SoundSlider;
+class QAbstractSlider;
+class QToolButton;
+
class ControlsWidget : public QFrame
{
Q_OBJECT
public:
- ControlsWidget( intf_thread_t *);
+ /* p_intf, advanced control visible or not, blingbling or not */
+ ControlsWidget( intf_thread_t *, MainInterface*, bool, bool );
virtual ~ControlsWidget();
+
+ QPushButton *playlistButton;
+ void setStatus( int );
void enableInput( bool );
void enableVideo( bool );
+public slots:
+ void setNavigation( int );
+protected:
+ friend class MainInterface;
+ friend class VolumeClickHandler;
private:
- intf_thread_t *p_intf;
- QPushButton *slowerButton, *normalButton, *fasterButton;
- QPushButton *fullscreenButton, *snapshotButton;
+ intf_thread_t *p_intf;
+ QWidget *discFrame;
+ QWidget *telexFrame;
+ QGridLayout *controlLayout;
+ InputSlider *slider;
+ QPushButton *prevSectionButton, *nextSectionButton, *menuButton;
+ QPushButton *playButton, *fullscreenButton;
+ QToolButton *slowerButton, *fasterButton;
+ AdvControlsWidget *advControls;
+ QLabel *volMuteLabel;
+ QAbstractSlider *volumeSlider;
+
+ bool b_advancedVisible;
private 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 normal();
- void snapshot();
- void fullscreen();
+ 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;
+};
-/******************** Playlist Widgets ****************/
-#include <QModelIndex>
-class QSignalMapper;
-class PLSelector;
-class PLPanel;
-class QPushButton;
+#include <QLabel>
+#include <QMouseEvent>
+class TimeLabel : public QLabel
+{
+ Q_OBJECT
+ void mousePressEvent( QMouseEvent *event )
+ {
+ emit timeLabelClicked();
+ }
+ void mouseDoubleClickEvent( QMouseEvent *event )
+ {
+ emit timeLabelDoubleClicked();
+ }
+signals:
+ void timeLabelClicked();
+ void timeLabelDoubleClicked();
+};
-class PlaylistWidget : public BasePlaylistWidget
+
+/******************** Speed Control Widgets ****************/
+class SpeedControlWidget : public QFrame
{
- Q_OBJECT;
+ Q_OBJECT
public:
- PlaylistWidget( intf_thread_t * );
- virtual ~PlaylistWidget();
- QSize widgetSize;
- virtual QSize sizeHint() const;
+ SpeedControlWidget( intf_thread_t *);
+ virtual ~SpeedControlWidget();
+ void updateControls( int );
+protected:
+ virtual void mouseDoubleClickEvent( QMouseEvent * event );
private:
- PLSelector *selector;
- PLPanel *rightPanel;
- QPushButton *addButton;
-signals:
- void rootChanged( int );
+ intf_thread_t *p_intf;
+ QSlider *speedSlider;
+private slots:
+ void updateRate( int );
+ void resetRate();
};
#endif