[vlc-devel] commit: Qt: locationBar: buttons adjustment (Jakob Leben )

git version control git at videolan.org
Thu Feb 4 18:07:37 CET 2010


vlc | branch: master | Jakob Leben <jleben at videolan.org> | Thu Feb  4 18:05:42 2010 +0100| [702a970ee7ce38d2a9f07ad62ca0ee9f3de3ee61] | committer: Jakob Leben 

Qt: locationBar: buttons adjustment

now also the text is not elided if not necessary

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

 .../gui/qt4/components/playlist/standardpanel.cpp  |   39 +++++++++++---------
 .../gui/qt4/components/playlist/standardpanel.hpp  |    5 ++-
 2 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/modules/gui/qt4/components/playlist/standardpanel.cpp b/modules/gui/qt4/components/playlist/standardpanel.cpp
index 58c2b5f..1213498 100644
--- a/modules/gui/qt4/components/playlist/standardpanel.cpp
+++ b/modules/gui/qt4/components/playlist/standardpanel.cpp
@@ -483,8 +483,9 @@ void LocationBar::setIndex( const QModelIndex &index )
         char *fb_name = input_item_GetTitleFbName( item->inputItem() );
         QString text = qfu(fb_name);
         free(fb_name);
-        QToolButton *btn = new LocationButton( text, bold );
-        box->insertWidget( 0, btn );
+        QAbstractButton *btn = new LocationButton( text, bold, i.isValid() );
+        if( bold ) btn->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
+        box->insertWidget( 0, btn, bold ? 1 : 0 );
         buttons.append( btn );
 
         mapper->setMapping( btn, item->id() );
@@ -504,37 +505,41 @@ void LocationBar::invoke( int i_id )
     emit invoked ( index );
 }
 
-LocationButton::LocationButton( const QString &text, bool bold )
+LocationButton::LocationButton( const QString &text, bool bold, bool arrow )
+  : b_arrow( arrow )
 {
     QFont font;
     font.setBold( bold );
     setFont( font );
-    metrics = new QFontMetrics( font );
-    setText( metrics->elidedText( text, Qt::ElideRight, 150 ) );
+    setText( text );
 }
 
 void LocationButton::paintEvent ( QPaintEvent * event )
 {
     QStyleOptionButton option;
     option.initFrom( this );
-    option.rect = rect();
-    option.text = text();
-    option.features = QStyleOptionButton::Flat;
+    //option.rect = rect();
+    //option.features = QStyleOptionButton::Flat;
     option.state |= QStyle::State_Enabled;
-    option.state |= isChecked() ? QStyle::State_On : QStyle::State_Off;
-    if( isDown() ) option.state |= QStyle::State_Sunken;
+    //option.state |= isChecked() ? QStyle::State_On : QStyle::State_Off;
+    //if( isDown() ) option.state |= QStyle::State_Sunken;
     QPainter p( this );
-    style()->drawControl( QStyle::CE_PushButtonBevel, &option, &p );
-    option.rect.setLeft( 18 );
+    if( underMouse() )
+        style()->drawControl( QStyle::CE_PushButtonBevel, &option, &p );
+    if( b_arrow ) option.rect.setLeft( 18 );
+    else option.rect.setLeft( 6 );
     p.drawText( option.rect, Qt::AlignVCenter,
-                metrics->elidedText( text(), Qt::ElideRight, option.rect.width() - 5 ) );
-    option.rect = QRect( 0, 0, 18, height() );
-    style()->drawPrimitive( QStyle::PE_IndicatorArrowRight, &option, &p );
+                fontMetrics().elidedText( text(), Qt::ElideRight, option.rect.width() - 3 ) );
+    if( b_arrow )
+    {
+        option.rect = QRect( 0, 0, 18, height() );
+        style()->drawPrimitive( QStyle::PE_IndicatorArrowRight, &option, &p );
+    }
 }
 
 QSize LocationButton::sizeHint() const
 {
-    QSize s( metrics->boundingRect( text() ).size() );
-    s += QSize( 25, 10 );
+    QSize s( fontMetrics().boundingRect( text() ).size() );
+    s += QSize( b_arrow ? 24 : 12, 15 );
     return s;
 }
diff --git a/modules/gui/qt4/components/playlist/standardpanel.hpp b/modules/gui/qt4/components/playlist/standardpanel.hpp
index 0aedccf..dd868b2 100644
--- a/modules/gui/qt4/components/playlist/standardpanel.hpp
+++ b/modules/gui/qt4/components/playlist/standardpanel.hpp
@@ -127,14 +127,15 @@ private:
     QList<QWidget*> buttons;
 };
 
-class LocationButton : public QToolButton
+class LocationButton : public QPushButton
 {
   public:
-      LocationButton( const QString &, bool bold );
+      LocationButton( const QString &, bool bold, bool arrow );
   private:
       void paintEvent ( QPaintEvent * event );
       QSize sizeHint() const;
       QFontMetrics *metrics;
+      bool b_arrow;
 };
 
 #endif




More information about the vlc-devel mailing list