[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