Skip to content

Commit

Permalink
elide the text on track button if it's too lon... (#3328)
Browse files Browse the repository at this point in the history
* Elide the text on track button if it's too long
* Remove setText() from paintEvent
* Dynamic trackLabelButton width
  • Loading branch information
BaraMGB authored and tresf committed Feb 20, 2017
1 parent 2c8e9a0 commit 5863752
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 13 deletions.
3 changes: 3 additions & 0 deletions include/TrackLabelButton.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class TrackLabelButton : public QToolButton
public slots:
void rename();
void renameFinished();
void nameChanged();


protected:
Expand All @@ -53,13 +54,15 @@ public slots:
virtual void mouseDoubleClickEvent( QMouseEvent * _me );
virtual void mouseReleaseEvent( QMouseEvent * _me );
virtual void paintEvent( QPaintEvent * _pe );
virtual void resizeEvent( QResizeEvent * _re );


private:
TrackView * m_trackView;
QString m_iconName;
QLineEdit * m_renameLineEdit;
QRect m_buttonRect;
QString elideName( const QString &name );

} ;

Expand Down
54 changes: 41 additions & 13 deletions src/gui/widgets/TrackLabelButton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,9 @@ TrackLabelButton::TrackLabelButton( TrackView * _tv, QWidget * _parent ) :
m_renameLineEdit->hide();
connect( m_renameLineEdit, SIGNAL( editingFinished() ), this, SLOT( renameFinished() ) );
}

setIconSize( QSize( 24, 24 ) );
setText( " " );
connect( m_trackView->getTrack(), SIGNAL( dataChanged() ), this, SLOT( update() ) );
connect( m_trackView->getTrack(), SIGNAL( nameChanged() ), this, SLOT( nameChanged() ) );
}


Expand Down Expand Up @@ -109,18 +108,29 @@ void TrackLabelButton::renameFinished()
if( !( ConfigManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() ) )
{
m_renameLineEdit->hide();
if( m_renameLineEdit->text() != text() )
if( m_renameLineEdit->text() != "" )
{
setText( m_renameLineEdit->text() );
m_trackView->getTrack()->setName( m_renameLineEdit->text() );
Engine::getSong()->setModified();
if( m_renameLineEdit->text() != m_trackView->getTrack()->name() )
{
setText( elideName( m_renameLineEdit->text() ) );
m_trackView->getTrack()->setName( m_renameLineEdit->text() );
Engine::getSong()->setModified();
}
}
}
}




void TrackLabelButton::nameChanged()
{
setText( elideName( m_trackView->getTrack()->name() ) );
}




void TrackLabelButton::dragEnterEvent( QDragEnterEvent * _dee )
{
m_trackView->dragEnterEvent( _dee );
Expand All @@ -138,6 +148,7 @@ void TrackLabelButton::dropEvent( QDropEvent * _de )




void TrackLabelButton::mousePressEvent( QMouseEvent * _me )
{
if( _me->button() == Qt::RightButton )
Expand Down Expand Up @@ -193,14 +204,31 @@ void TrackLabelButton::paintEvent( QPaintEvent * _pe )
}
}
}
if( ConfigManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() )
QToolButton::paintEvent( _pe );
}




void TrackLabelButton::resizeEvent(QResizeEvent *_re)
{
setText( elideName( m_trackView->getTrack()->displayName() ) );
}




QString TrackLabelButton::elideName( const QString &name )
{
const int spacing = 16;
const int maxTextWidth = width() - spacing - iconSize().width();
if( maxTextWidth < 1 )
{
setText( " " );
setToolTip( m_trackView->getTrack()->displayName() );
return QString( " " );
}
else
{
setText( m_trackView->getTrack()->displayName() );
}
QToolButton::paintEvent( _pe );
setToolTip( "" );
QFontMetrics metrics( font() );
QString elidedName = metrics.elidedText( name, Qt::ElideRight, maxTextWidth );
return elidedName;
}

0 comments on commit 5863752

Please sign in to comment.