[vlc-devel] commit: Qt: separate speedLabel code from interface code ( Jean-Baptiste Kempf )
git version control
git at videolan.org
Tue Dec 30 13:21:09 CET 2008
vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Mon Dec 29 20:03:21 2008 +0100| [f7a97201e9497e6f530b0c0a7a091bc8bb14afe9] | committer: Jean-Baptiste Kempf
Qt: separate speedLabel code from interface code
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f7a97201e9497e6f530b0c0a7a091bc8bb14afe9
---
modules/gui/qt4/components/interface_widgets.cpp | 57 ++++++++++++++++++++--
modules/gui/qt4/components/interface_widgets.hpp | 12 +++--
modules/gui/qt4/main_interface.cpp | 45 +----------------
modules/gui/qt4/main_interface.hpp | 4 --
4 files changed, 63 insertions(+), 55 deletions(-)
diff --git a/modules/gui/qt4/components/interface_widgets.cpp b/modules/gui/qt4/components/interface_widgets.cpp
index c74188c..036a429 100644
--- a/modules/gui/qt4/components/interface_widgets.cpp
+++ b/modules/gui/qt4/components/interface_widgets.cpp
@@ -39,6 +39,8 @@
#include <QPalette>
#include <QResizeEvent>
#include <QDate>
+#include <QMenu>
+#include <QWidgetAction>
#ifdef Q_WS_X11
# include <X11/Xlib.h>
@@ -280,6 +282,52 @@ void VisualSelector::next()
}
#endif
+SpeedLabel::SpeedLabel( intf_thread_t *_p_intf, const QString text )
+ : QLabel( text ), p_intf( _p_intf )
+{
+ setToolTip( qtr( "Current playback speed.\nRight click to adjust" ) );
+ setContextMenuPolicy ( Qt::CustomContextMenu );
+
+ /* Create the Speed Control Widget */
+ speedControl = new SpeedControlWidget( p_intf );
+ speedControlMenu = new QMenu( this );
+
+ QWidgetAction *widgetAction = new QWidgetAction( speedControl );
+ widgetAction->setDefaultWidget( speedControl );
+ speedControlMenu->addAction( widgetAction );
+
+ /* Speed Label behaviour:
+ - right click gives the vertical speed slider */
+ CONNECT( this, customContextMenuRequested( QPoint ),
+ this, showSpeedMenu( QPoint ) );
+
+ /* Change the SpeedRate in the Status Bar */
+ CONNECT( THEMIM->getIM(), rateChanged( int ), this, setRate( int ) );
+
+ // FIXME this is wrong but will work for some time.
+ CONNECT( THEMIM->getIM(), statusChanged( int ),
+ speedControl, activateOnState() );
+}
+
+/****************************************************************************
+ * Small right-click menu for rate control
+ ****************************************************************************/
+void SpeedLabel::showSpeedMenu( QPoint pos )
+{
+ speedControlMenu->exec( QCursor::pos() - pos
+ + QPoint( 0, height() ) );
+}
+
+void SpeedLabel::setRate( int rate )
+{
+ QString str;
+ str.setNum( ( 1000 / (double)rate ), 'f', 2 );
+ str.append( "x" );
+ setText( str );
+ setToolTip( str );
+ speedControl->updateControls( rate );
+}
+
/**********************************************************************
* Speed control widget
**********************************************************************/
@@ -317,14 +365,13 @@ SpeedControlWidget::SpeedControlWidget( intf_thread_t *_p_i ) :
speedControlLayout->addWidget( speedSlider );
speedControlLayout->addWidget( normalSpeedButton );
setLayout( speedControlLayout );
-}
-SpeedControlWidget::~SpeedControlWidget()
-{}
+ activateOnState();
+}
-void SpeedControlWidget::setEnable( bool b_enable )
+void SpeedControlWidget::activateOnState()
{
- speedSlider->setEnabled( b_enable );
+ speedSlider->setEnabled( THEMIM->getIM()->hasInput() );
}
void SpeedControlWidget::updateControls( int rate )
diff --git a/modules/gui/qt4/components/interface_widgets.hpp b/modules/gui/qt4/components/interface_widgets.hpp
index f4c9f98..8fa6f8e 100644
--- a/modules/gui/qt4/components/interface_widgets.hpp
+++ b/modules/gui/qt4/components/interface_widgets.hpp
@@ -47,6 +47,7 @@ class ResizeEvent;
class QPalette;
class QPixmap;
class QHBoxLayout;
+class QMenu;
/******************** Video Widget ****************/
class VideoWidget : public QFrame
@@ -153,16 +154,20 @@ class SpeedLabel : public QLabel
{
Q_OBJECT
public:
- SpeedLabel( intf_thread_t *_p_intf, const QString text ): QLabel( text )
- { p_intf = _p_intf; }
+ SpeedLabel( intf_thread_t *, const QString );
protected:
virtual void mouseDoubleClickEvent ( QMouseEvent * event )
{
THEMIM->getIM()->setRate( INPUT_RATE_DEFAULT );
}
+private slots:
+ void showSpeedMenu( QPoint );
+ void setRate( int );
private:
intf_thread_t *p_intf;
+ QMenu *speedControlMenu;
+ SpeedControlWidget *speedControl;
};
/******************** Speed Control Widgets ****************/
@@ -171,14 +176,13 @@ class SpeedControlWidget : public QFrame
Q_OBJECT
public:
SpeedControlWidget( intf_thread_t *);
- virtual ~SpeedControlWidget();
void updateControls( int );
private:
intf_thread_t *p_intf;
QSlider *speedSlider;
public slots:
- void setEnable( bool );
+ void activateOnState();
private slots:
void updateRate( int );
diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp
index 7ea2302..6de7b03 100644
--- a/modules/gui/qt4/main_interface.cpp
+++ b/modules/gui/qt4/main_interface.cpp
@@ -49,12 +49,12 @@
#include <QSize>
#include <QDate>
+#include <QMenu>
#include <QMenuBar>
#include <QStatusBar>
#include <QLabel>
#include <QGroupBox>
#include <QPushButton>
-#include <QWidgetAction>
#include <assert.h>
@@ -151,8 +151,6 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
**************************/
/* Connect the input manager to the GUI elements it manages */
- /* Change the SpeedRate in the Status Bar */
- CONNECT( THEMIM->getIM(), rateChanged( int ), this, setRate( int ) );
/**
* Connects on nameChanged()
@@ -291,14 +289,11 @@ inline void MainInterface::createStatusBar()
* Status Bar *
****************/
/* Widgets Creation*/
- timeLabel = new TimeLabel( p_intf );
+ TimeLabel *timeLabel = new TimeLabel( p_intf );
nameLabel = new QLabel;
nameLabel->setTextInteractionFlags( Qt::TextSelectableByMouse
| Qt::TextSelectableByKeyboard );
- speedLabel = new SpeedLabel( p_intf, "1.00x" );
- speedLabel->setToolTip(
- qtr( "Current playback speed.\nRight click to adjust" ) );
- speedLabel->setContextMenuPolicy ( Qt::CustomContextMenu );
+ SpeedLabel *speedLabel = new SpeedLabel( p_intf, "1.00x" );
/* Styling those labels */
timeLabel->setFrameStyle( QFrame::Sunken | QFrame::Panel );
@@ -315,11 +310,6 @@ inline void MainInterface::createStatusBar()
- right-clicking and clicking just toggle between remaining and
elapsed time.*/
CONNECT( timeLabel, timeLabelDoubleClicked(), THEDP, gotoTimeDialog() );
-
- /* Speed Label behaviour:
- - right click gives the vertical speed slider */
- CONNECT( speedLabel, customContextMenuRequested( QPoint ),
- this, showSpeedMenu( QPoint ) );
}
inline void MainInterface::initSystray()
@@ -383,14 +373,6 @@ void MainInterface::handleMainUi( QSettings *settings )
mainLayout->insertWidget( 0, controls, 0, Qt::AlignBottom );
mainLayout->insertWidget( 0, inputC, 0, Qt::AlignBottom );
- /* Create the Speed Control Widget */
- speedControl = new SpeedControlWidget( p_intf );
- speedControlMenu = new QMenu( this );
-
- QWidgetAction *widgetAction = new QWidgetAction( speedControl );
- widgetAction->setDefaultWidget( speedControl );
- speedControlMenu->addAction( widgetAction );
-
/* Visualisation */
/* Disabled for now, they SUCK */
#if 0
@@ -590,15 +572,6 @@ void MainInterface::debug()
}
/****************************************************************************
- * Small right-click menu for rate control
- ****************************************************************************/
-void MainInterface::showSpeedMenu( QPoint pos )
-{
- speedControlMenu->exec( QCursor::pos() - pos
- + QPoint( 0, speedLabel->height() ) );
-}
-
-/****************************************************************************
* Video Handling
****************************************************************************/
@@ -859,23 +832,11 @@ void MainInterface::setStatus( int status )
{
msg_Dbg( p_intf, "Updating the stream status: %i", status );
- speedControl->setEnable( THEMIM->getIM()->hasInput() );
-
/* And in the systray for the menu */
if( sysTray )
QVLCMenu::updateSystrayMenu( this, p_intf );
}
-void MainInterface::setRate( int rate )
-{
- QString str;
- str.setNum( ( 1000 / (double)rate ), 'f', 2 );
- str.append( "x" );
- speedLabel->setText( str );
- speedLabel->setToolTip( str );
- speedControl->updateControls( rate );
-}
-
/*****************************************************************************
* Systray Icon and Systray Menu
*****************************************************************************/
diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp
index 290e187..f5b4ed3 100644
--- a/modules/gui/qt4/main_interface.hpp
+++ b/modules/gui/qt4/main_interface.hpp
@@ -139,8 +139,6 @@ private:
input_thread_t *p_input; ///< Main input associated to the playlist
/* Status Bar */
- QLabel *timeLabel;
- QLabel *speedLabel;
QLabel *nameLabel;
virtual void customEvent( QEvent *);
@@ -164,7 +162,6 @@ private slots:
void debug();
void doComponentsUpdate();
void setStatus( int );
- void setRate( int );
void setName( QString );
void setVLCWindowsTitle( QString title = "" );
#if 0
@@ -173,7 +170,6 @@ private slots:
void handleSystrayClick( QSystemTrayIcon::ActivationReason );
void updateSystrayTooltipName( QString );
void updateSystrayTooltipStatus( int );
- void showSpeedMenu( QPoint );
void updateRecentsMenu();
signals:
void askReleaseVideo( );
More information about the vlc-devel
mailing list