Qt: implement teletext buttons (fix #11132)
authorFrancois Cartegnie <fcvlcdev@free.fr>
Thu, 3 Apr 2014 06:30:45 +0000 (08:30 +0200)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Thu, 3 Apr 2014 06:34:37 +0000 (08:34 +0200)
NEWS
modules/gui/qt4/components/controller.cpp

diff --git a/NEWS b/NEWS
index 4fce4e6..01e39d6 100644 (file)
--- 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
index b2567ce..e904820 100644 (file)
@@ -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 ) );