diff --git a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp index c183bfe9e..a6cb7af00 100644 --- a/src/libtomahawk/playlist/PlaylistItemDelegate.cpp +++ b/src/libtomahawk/playlist/PlaylistItemDelegate.cpp @@ -672,20 +672,27 @@ PlaylistItemDelegate::drawTrack( QPainter* painter, const QStyleOptionViewItem& 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->save(); - painter->setPen( Qt::transparent ); - painter->setBrush( Qt::darkRed ); + double duration = (double)AudioEngine::instance()->currentTrackTotalTime(); + if ( duration <= 0 ) + duration = item->query()->track()->duration() * 1000; - QRect playBar = r.adjusted( 0, r.height() + 2, 0, 0 ); - playBar.setHeight( 2 ); - painter->setOpacity( 0.1 ); - painter->drawRect( playBar ); + if ( duration > 0 ) + { + painter->save(); + painter->setPen( Qt::transparent ); + painter->setBrush( Qt::darkRed ); - playBar.setWidth( ( (double)AudioEngine::instance()->currentTime() / (double)AudioEngine::instance()->currentTrackTotalTime() ) * (double)playBar.width() ); - painter->setOpacity( 1 ); - painter->drawRect( playBar ); + QRect playBar = r.adjusted( 0, r.height() + 2, 0, 0 ); + playBar.setHeight( 2 ); + 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 ) { diff --git a/src/tomahawk/AudioControls.cpp b/src/tomahawk/AudioControls.cpp index 80ea101b5..8bce3195a 100644 --- a/src/tomahawk/AudioControls.cpp +++ b/src/tomahawk/AudioControls.cpp @@ -269,7 +269,7 @@ AudioControls::onPlaybackStarted( const Tomahawk::result_ptr result ) qint64 duration = AudioEngine::instance()->currentTrackTotalTime(); - if ( duration == -1 || duration == 0 ) + if ( duration <= 0 ) duration = result.data()->track()->duration() * 1000; ui->seekSlider->setRange( 0, duration );