[vlc-commits] Qt: implement teletext buttons (fix #11132)
Francois Cartegnie
git at videolan.org
Thu Apr 3 08:36:34 CEST 2014
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Apr 3 08:30:45 2014 +0200| [06ee1e1131575f581bc84b62cf0d50caeb28c4e6] | committer: Francois Cartegnie
Qt: implement teletext buttons (fix #11132)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=06ee1e1131575f581bc84b62cf0d50caeb28c4e6
---
NEWS | 1 +
modules/gui/qt4/components/controller.cpp | 34 +++++++++++++++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/NEWS b/NEWS
index 4fce4e6..01e39d6 100644
--- a/NEWS
+++ b/NEWS
@@ -107,6 +107,7 @@ Interfaces:
Misc:
* New module for TLS on OS X and iOS
* Windows installer will kill running instance before installing
+ * Teletext navigation buttons support in Qt4 gui
Removed modules:
* ios video output: use ios2
diff --git a/modules/gui/qt4/components/controller.cpp b/modules/gui/qt4/components/controller.cpp
index b2567ce..e904820 100644
--- a/modules/gui/qt4/components/controller.cpp
+++ b/modules/gui/qt4/components/controller.cpp
@@ -616,6 +616,40 @@ QFrame *AbstractController::telexFrame()
telexPage->setEnabled( false );
telexLayout->addWidget( telexPage );
+ /* Contextual & Index Buttons */
+ QSignalMapper *contextButtonMapper = new QSignalMapper( this );
+ QToolButton *contextButton = NULL;
+ QPixmap iconPixmap( telexOn->minimumHeight(), telexOn->minimumHeight() );
+ iconPixmap.fill( Qt::transparent );
+ QPainter iconPixmapPainter( &iconPixmap );
+ QRadialGradient iconPixmapPainterGradient( iconPixmap.rect().center(),
+ iconPixmap.rect().width() / 2,
+ iconPixmap.rect().center() / 2 );
+
+#define CREATE_CONTEXT_BUTTON(color, key) \
+ iconPixmapPainterGradient.setColorAt( 0, QColor( color ).lighter(150) );\
+ iconPixmapPainterGradient.setColorAt( 1.0, QColor( color ) );\
+ iconPixmapPainter.setBrush( iconPixmapPainterGradient );\
+ iconPixmapPainter.drawEllipse( iconPixmap.rect().adjusted( 0, 0, -1, -1 ) );\
+ contextButton = new QToolButton();\
+ setupButton( contextButton );\
+ contextButton->setIcon( iconPixmap );\
+ contextButton->setEnabled( false );\
+ contextButtonMapper->setMapping( contextButton, key << 16 );\
+ CONNECT( contextButton, clicked(), contextButtonMapper, map() );\
+ CONNECT( contextButtonMapper, mapped( int ),\
+ THEMIM->getIM(), telexSetPage( int ) );\
+ CONNECT( THEMIM->getIM(), teletextActivated( bool ), contextButton, setEnabled( bool ) );\
+ telexLayout->addWidget( contextButton )
+
+ CREATE_CONTEXT_BUTTON("grey", 'i'); /* index */
+ CREATE_CONTEXT_BUTTON("red", 'r');
+ CREATE_CONTEXT_BUTTON("green", 'g');
+ CREATE_CONTEXT_BUTTON("yellow", 'y');
+ CREATE_CONTEXT_BUTTON("blue", 'b');
+
+#undef CREATE_CONTEXT_BUTTON
+
/* Page change and set */
CONNECT( telexPage, valueChanged( int ),
THEMIM->getIM(), telexSetPage( int ) );
More information about the vlc-commits
mailing list