[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