diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 2eb8bce21..e27c68dd8 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -1602,26 +1602,7 @@ void MainWindow::updateCurrentSong(const Song &song) } positionSlider->setEnabled(!currentIsStream()); - - // Determine if album cover should be updated - const QString &albumArtist=current.albumArtist(); - QString covArtist=coverWidget->property("artist").toString(); - QString covAlbum=coverWidget->property("album").toString(); - if (covArtist!= albumArtist || covAlbum != current.album || (covArtist.isEmpty() && covAlbum.isEmpty())) { - if (!albumArtist.isEmpty() && !current.album.isEmpty()) { - Covers::Image img=Covers::self()->get(song, MPDParseUtils::groupSingle() && MusicLibraryModel::self()->isFromSingleTracks(song)); - if (!img.img.isNull()) { - coverSong=current; - coverWidget->setPixmap(QPixmap::fromImage(img.img).scaled(coverWidget->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); - coverFileName=img.fileName; - emit coverFile(img.fileName); - } - } else { - coverWidget->setPixmap(currentIsStream() ? noStreamCover : noCover); - } - coverWidget->setProperty("artist", albumArtist); - coverWidget->setProperty("album", current.album); - } + updateCurrentCover(); if (current.name.isEmpty()) { trackLabel->setText(current.title); @@ -1732,6 +1713,32 @@ void MainWindow::updateCurrentSong(const Song &song) } } +void MainWindow::updateCurrentCover() +{ + // Determine if album cover should be updated + const QString &albumArtist=current.albumArtist(); + QString covArtist=coverWidget->property("artist").toString(); + QString covAlbum=coverWidget->property("album").toString(); + if (covArtist!= albumArtist || covAlbum != current.album || (covArtist.isEmpty() && covAlbum.isEmpty())) { + if (!albumArtist.isEmpty() && !current.album.isEmpty()) { + Covers::Image img=Covers::self()->get(current, MPDParseUtils::groupSingle() && MusicLibraryModel::self()->isFromSingleTracks(current)); + if (!img.img.isNull()) { + coverSong=current; + coverWidget->setPixmap(QPixmap::fromImage(img.img).scaled(coverWidget->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation)); + coverFileName=img.fileName; + emit coverFile(img.fileName); + } + } else { + coverWidget->setPixmap(currentIsStream() ? noStreamCover : noCover); + if (dock && dock->enabled()) { + emit coverFile(QString()); + } + } + coverWidget->setProperty("artist", albumArtist); + coverWidget->setProperty("album", current.album); + } +} + void MainWindow::scrollPlayQueue() { if (autoScrollPlayQueue && MPDState_Playing==MPDStatus::self()->state() && !playQueueModel.isGrouped()) { @@ -1849,8 +1856,12 @@ void MainWindow::updateStatus() stopTrackAction->setEnabled(false); nextTrackAction->setEnabled(false); prevTrackAction->setEnabled(false); - trackLabel->setText(QString()); - artistLabel->setText(QString()); + if (!playPauseTrackAction->isEnabled()) { + trackLabel->setText(QString()); + artistLabel->setText(QString()); + current=Song(); + updateCurrentCover(); + } setWindowTitle("Cantata"); current.id=0; diff --git a/gui/mainwindow.h b/gui/mainwindow.h index 0e5eac34c..a526a3a95 100644 --- a/gui/mainwindow.h +++ b/gui/mainwindow.h @@ -242,6 +242,7 @@ private Q_SLOTS: void realSearchPlaylist(); void updatePlaylist(const QList &songs); void updateCurrentSong(const Song &song); + void updateCurrentCover(); void scrollPlayQueue(); void updateStats(); void updateStatus();