[vlc-commits] Qt4: Add aspect ratio combobox to toolbar editor

Edward Wang git at videolan.org
Wed Dec 28 01:29:46 CET 2011


vlc | branch: master | Edward Wang <edward.c.wang at compdigitec.com> | Wed Dec 28 01:25:48 2011 +0100| [c630050511ad95a7a7336b3529211c1162130126] | committer: Jean-Baptiste Kempf

Qt4: Add aspect ratio combobox to toolbar editor

Close #4127

Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c630050511ad95a7a7336b3529211c1162130126
---

 modules/gui/qt4/components/controller.cpp        |    3 ++
 modules/gui/qt4/components/controller.hpp        |    1 +
 modules/gui/qt4/components/controller_widget.cpp |   23 +++++++++++++++++++++
 modules/gui/qt4/components/controller_widget.hpp |   24 ++++++++++++++++++++++
 modules/gui/qt4/dialogs/toolbar.cpp              |    8 +++++++
 5 files changed, 59 insertions(+), 0 deletions(-)

diff --git a/modules/gui/qt4/components/controller.cpp b/modules/gui/qt4/components/controller.cpp
index 3d1bd78..22d3792 100644
--- a/modules/gui/qt4/components/controller.cpp
+++ b/modules/gui/qt4/components/controller.cpp
@@ -465,6 +465,9 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options )
         CONNECT_MAP_SET( play, PLAY_ACTION );
         }
         break;
+    case ASPECT_RATIO_COMBOBOX:
+        widget = new AspectRatioComboBox( p_intf );
+        break;
     default:
         msg_Warn( p_intf, "This should not happen %i", button );
         break;
diff --git a/modules/gui/qt4/components/controller.hpp b/modules/gui/qt4/components/controller.hpp
index d3ba78b..96d53c0 100644
--- a/modules/gui/qt4/components/controller.hpp
+++ b/modules/gui/qt4/components/controller.hpp
@@ -99,6 +99,7 @@ typedef enum buttonType_e
     TELETEXT_BUTTONS,
     ADVANCED_CONTROLLER,
     PLAYBACK_BUTTONS,
+    ASPECT_RATIO_COMBOBOX,
     SPECIAL_MAX,
 
     WIDGET_SPACER = 0x40,
diff --git a/modules/gui/qt4/components/controller_widget.cpp b/modules/gui/qt4/components/controller_widget.cpp
index acd8b7f..370ef3f 100644
--- a/modules/gui/qt4/components/controller_widget.cpp
+++ b/modules/gui/qt4/components/controller_widget.cpp
@@ -267,3 +267,26 @@ void LoopButton::updateButtonIcons( int value )
     setIcon( ( value == REPEAT_ONE ) ? QIcon( ":/buttons/playlist/repeat_one" )
                                      : QIcon( ":/buttons/playlist/repeat_all" ) );
 }
+
+void AspectRatioComboBox::updateRatios() {
+    /* Clear the list before updating */
+    this->clear();
+    vlc_value_t val_list, text_list;
+    vout_thread_t* p_vout = THEMIM->getVout();
+    /* Disable if there is no vout */
+    if( p_vout == NULL ) {
+        addItem("Aspect Ratio");
+        setDisabled( true );
+        return;
+    }
+    var_Change( p_vout, "aspect-ratio", VLC_VAR_GETLIST, &val_list, &text_list );
+    for( int i = 0; i < val_list.p_list->i_count; i++ )
+        addItem( QString( text_list.p_list->p_values[i].psz_string ), QString( val_list.p_list->p_values[i].psz_string ) );
+    setEnabled( true );
+    var_FreeList( &val_list, &text_list );
+}
+
+void AspectRatioComboBox::updateAspectRatio( int x ) {
+    vout_thread_t* p_vout = THEMIM->getVout();
+    if( p_vout && x >= 0 ) var_SetString( p_vout, "aspect-ratio", qtu( itemData(x).toString() ) );
+}
diff --git a/modules/gui/qt4/components/controller_widget.hpp b/modules/gui/qt4/components/controller_widget.hpp
index 9b5af88..04663f5 100644
--- a/modules/gui/qt4/components/controller_widget.hpp
+++ b/modules/gui/qt4/components/controller_widget.hpp
@@ -29,9 +29,12 @@
 #endif
 
 #include "qt4.hpp"
+#include "input_manager.hpp"
+#include <vlc_vout.h>                       /* vout_thread_t for aspect ratio combobox */
 
 #include <QWidget>
 #include <QToolButton>
+#include <QComboBox>
 
 class QLabel;
 class QFrame;
@@ -67,6 +70,27 @@ private slots:
     void updateButtonIcons( bool, bool );
 };
 
+class AspectRatioComboBox : public QComboBox
+{
+    Q_OBJECT
+    public:
+    AspectRatioComboBox( intf_thread_t* _p_intf ) {
+        p_intf = _p_intf;
+        CONNECT( THEMIM->getIM(), voutChanged( bool ),
+                 this, updateRatios() );
+        CONNECT( this, currentIndexChanged( int ),
+                 this, updateAspectRatio( int ) );
+        this->updateRatios();
+    }
+
+    public slots:
+    void updateRatios();
+    void updateAspectRatio( int );
+
+    private:
+    intf_thread_t* p_intf;
+};
+
 #define VOLUME_MAX 200
 class SoundWidget : public QWidget
 {
diff --git a/modules/gui/qt4/dialogs/toolbar.cpp b/modules/gui/qt4/dialogs/toolbar.cpp
index 8f6bb09..43ebf09 100644
--- a/modules/gui/qt4/dialogs/toolbar.cpp
+++ b/modules/gui/qt4/dialogs/toolbar.cpp
@@ -35,6 +35,10 @@
 #include "util/buttons/BrowseButton.hpp"
 #include "util/buttons/RoundButton.hpp"
 
+#include "qt4.hpp"
+#include "input_manager.hpp"
+#include <vlc_vout.h>                       /* vout_thread_t for aspect ratio combobox */
+
 #include <QScrollArea>
 #include <QGroupBox>
 #include <QLabel>
@@ -441,6 +445,10 @@ WidgetListing::WidgetListing( intf_thread_t *p_intf, QWidget *_parent )
             }
             widgetItem->setText( qtr("Playback Buttons") );
             break;
+        case ASPECT_RATIO_COMBOBOX:
+            widget = new AspectRatioComboBox( p_intf );
+            widgetItem->setText( qtr("Aspect ratio selector") );
+            break;
         default:
             msg_Warn( p_intf, "This should not happen %i", i );
             break;



More information about the vlc-commits mailing list