elide the text on track button if it's too lon... (#3328)
* Elide the text on track button if it's too long * Remove setText() from paintEvent * Dynamic trackLabelButton width
This commit is contained in:
committed by
Tres Finocchiaro
parent
2c8e9a0957
commit
5863752988
@@ -44,6 +44,7 @@ public:
|
||||
public slots:
|
||||
void rename();
|
||||
void renameFinished();
|
||||
void nameChanged();
|
||||
|
||||
|
||||
protected:
|
||||
@@ -53,6 +54,7 @@ protected:
|
||||
virtual void mouseDoubleClickEvent( QMouseEvent * _me );
|
||||
virtual void mouseReleaseEvent( QMouseEvent * _me );
|
||||
virtual void paintEvent( QPaintEvent * _pe );
|
||||
virtual void resizeEvent( QResizeEvent * _re );
|
||||
|
||||
|
||||
private:
|
||||
@@ -60,6 +62,7 @@ private:
|
||||
QString m_iconName;
|
||||
QLineEdit * m_renameLineEdit;
|
||||
QRect m_buttonRect;
|
||||
QString elideName( const QString &name );
|
||||
|
||||
} ;
|
||||
|
||||
|
||||
@@ -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() ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -109,11 +108,14 @@ 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,6 +123,14 @@ void TrackLabelButton::renameFinished()
|
||||
|
||||
|
||||
|
||||
void TrackLabelButton::nameChanged()
|
||||
{
|
||||
setText( elideName( m_trackView->getTrack()->name() ) );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void TrackLabelButton::dragEnterEvent( QDragEnterEvent * _dee )
|
||||
{
|
||||
m_trackView->dragEnterEvent( _dee );
|
||||
@@ -138,6 +148,7 @@ void TrackLabelButton::dropEvent( QDropEvent * _de )
|
||||
|
||||
|
||||
|
||||
|
||||
void TrackLabelButton::mousePressEvent( QMouseEvent * _me )
|
||||
{
|
||||
if( _me->button() == Qt::RightButton )
|
||||
@@ -193,14 +204,31 @@ void TrackLabelButton::paintEvent( QPaintEvent * _pe )
|
||||
}
|
||||
}
|
||||
}
|
||||
if( ConfigManager::inst()->value( "ui", "compacttrackbuttons" ).toInt() )
|
||||
{
|
||||
setText( " " );
|
||||
setToolTip( m_trackView->getTrack()->displayName() );
|
||||
}
|
||||
else
|
||||
{
|
||||
setText( m_trackView->getTrack()->displayName() );
|
||||
}
|
||||
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 )
|
||||
{
|
||||
setToolTip( m_trackView->getTrack()->displayName() );
|
||||
return QString( " " );
|
||||
}
|
||||
setToolTip( "" );
|
||||
QFontMetrics metrics( font() );
|
||||
QString elidedName = metrics.elidedText( name, Qt::ElideRight, maxTextWidth );
|
||||
return elidedName;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user