1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-12 17:14:00 +02:00

* Fixed in-playlist progress bar for tracks with unknown stream duration, like tracks resolved to Beats.

This commit is contained in:
Christian Muehlhaeuser
2014-09-20 09:56:27 +02:00
parent 0f8be31c28
commit 022bc7c66a
2 changed files with 19 additions and 12 deletions

View File

@@ -672,20 +672,27 @@ PlaylistItemDelegate::drawTrack( QPainter* painter, const QStyleOptionViewItem&
QRect playIconRect = extraRect.adjusted( extraRect.width() - h - 8, h / 2, -8, -h / 2 ); QRect playIconRect = extraRect.adjusted( extraRect.width() - h - 8, h / 2, -8, -h / 2 );
painter->drawPixmap( playIconRect, ImageRegistry::instance()->pixmap( RESPATH "images/play.svg", playIconRect.size() ) ); painter->drawPixmap( playIconRect, ImageRegistry::instance()->pixmap( RESPATH "images/play.svg", playIconRect.size() ) );
painter->save(); double duration = (double)AudioEngine::instance()->currentTrackTotalTime();
painter->setPen( Qt::transparent ); if ( duration <= 0 )
painter->setBrush( Qt::darkRed ); duration = item->query()->track()->duration() * 1000;
QRect playBar = r.adjusted( 0, r.height() + 2, 0, 0 ); if ( duration > 0 )
playBar.setHeight( 2 ); {
painter->setOpacity( 0.1 ); painter->save();
painter->drawRect( playBar ); painter->setPen( Qt::transparent );
painter->setBrush( Qt::darkRed );
playBar.setWidth( ( (double)AudioEngine::instance()->currentTime() / (double)AudioEngine::instance()->currentTrackTotalTime() ) * (double)playBar.width() ); QRect playBar = r.adjusted( 0, r.height() + 2, 0, 0 );
painter->setOpacity( 1 ); playBar.setHeight( 2 );
painter->drawRect( playBar ); painter->setOpacity( 0.1 );
painter->drawRect( playBar );
painter->restore(); playBar.setWidth( ( (double)AudioEngine::instance()->currentTime() / duration ) * (double)playBar.width() );
painter->setOpacity( 1 );
painter->drawRect( playBar );
painter->restore();
}
} }
else if ( track->duration() > 0 ) else if ( track->duration() > 0 )
{ {

View File

@@ -269,7 +269,7 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr result )
qint64 duration = AudioEngine::instance()->currentTrackTotalTime(); qint64 duration = AudioEngine::instance()->currentTrackTotalTime();
if ( duration == -1 || duration == 0 ) if ( duration <= 0 )
duration = result.data()->track()->duration() * 1000; duration = result.data()->track()->duration() * 1000;
ui->seekSlider->setRange( 0, duration ); ui->seekSlider->setRange( 0, duration );