diff --git a/ChangeLog b/ChangeLog index f17749714..a40ca9f91 100644 --- a/ChangeLog +++ b/ChangeLog @@ -72,6 +72,7 @@ 52. Fetch missing covers from iTunes. 53. Make sidebar change pages on mouse wheel events. 54. Allow to specify the max age of files to use in smart playlists. +55. Use same format for notifications as for now playing widget. 2.2.0 ----- diff --git a/context/onlineview.cpp b/context/onlineview.cpp index e629492e8..ed85b1cf2 100644 --- a/context/onlineview.cpp +++ b/context/onlineview.cpp @@ -40,7 +40,7 @@ void OnlineView::update(const Song &song, bool force) needToUpdate=true; return; } - setHeader(song.describe(true)); + setHeader(song.describe()); Covers::Image cImg=Covers::self()->requestImage(song, true); if (!cImg.img.isNull()) { setHtml(createPicTag(cImg.img, cImg.fileName)); diff --git a/gui/trayitem.cpp b/gui/trayitem.cpp index 75fed23f8..87da2206e 100644 --- a/gui/trayitem.cpp +++ b/gui/trayitem.cpp @@ -212,11 +212,7 @@ void TrayItem::songChanged(const Song &song, bool isPlaying) ? !song.title.isEmpty() && !song.name().isEmpty() : !song.title.isEmpty() && !song.artist.isEmpty() && !song.album.isEmpty(); if (useable) { - QString text=song.describe(false); - if (song.time>0) { - text+=QString(" – ")+Utils::formatTime(song.time); - } - MacNotify::showMessage(tr("Now playing"), text, CurrentCover::self()->image()); + MacNotify::showMessage(song.mainText(), song.subText(), , CurrentCover::self()->image()); } } #else @@ -225,20 +221,13 @@ void TrayItem::songChanged(const Song &song, bool isPlaying) ? !song.title.isEmpty() && !song.name().isEmpty() : !song.title.isEmpty() && !song.artist.isEmpty() && !song.album.isEmpty(); if (useable) { - QString text=song.describe(false); - if (song.time>0) { - text+=QString(" – ")+Utils::formatTime(song.time); - } - if (trayItem) { + trayItem->setToolTip(QLatin1String("Cantata\n\n")+song.mainText()+"\n"+song.subText()); #if defined Q_OS_WIN || defined Q_OS_MAC || !defined QT_QTDBUS_FOUND - trayItem->setToolTip(tr("Cantata")+"\n\n"+text); // The pure Qt implementation needs both the tray icon and the setting checked. if (Settings::self()->showPopups() && isPlaying) { - trayItem->showMessage(tr("Now playing"), text, QSystemTrayIcon::Information, 5000); + trayItem->showMessage(song.mainText(), song.subText(), QSystemTrayIcon::Information, 5000); } - #else - trayItem->setToolTip(tr("Cantata")+"\n\n"+text); #endif } #ifdef QT_QTDBUS_FOUND @@ -246,11 +235,11 @@ void TrayItem::songChanged(const Song &song, bool isPlaying) if (!notification) { notification=new Notify(this); } - notification->show(tr("Now playing"), text, CurrentCover::self()->image()); + notification->show(song.mainText(), song.subText(), CurrentCover::self()->image()); } #endif } else if (trayItem) { - trayItem->setToolTip(tr("Cantata")); + trayItem->setToolTip(QLatin1String("Cantata")); } } #endif diff --git a/mpd-interface/song.cpp b/mpd-interface/song.cpp index b5b884a07..17004dc7e 100644 --- a/mpd-interface/song.cpp +++ b/mpd-interface/song.cpp @@ -785,22 +785,54 @@ QString Song::filePath(const QString &base) const return fileName; } -QString Song::describe(bool withMarkup) const +QString Song::describe() const { QString albumText=album.isEmpty() ? name() : displayAlbum(album, Song::albumYear(*this)); if (title.isEmpty()) { - return withMarkup ? albumText : (QLatin1String("")+albumText+QLatin1String("")); + return QLatin1String("")+albumText+QLatin1String(""); } - QString descr=artist.isEmpty() + return artist.isEmpty() ? QObject::tr("%1 on %2", "Song on Album").arg(title).arg(albumText) : QObject::tr("%1 by %2 on %3", "Song by Artist on Album").arg(title).arg(artist).arg(albumText); +} - if (!withMarkup) { - descr=descr.replace("", ""); - descr=descr.replace("", ""); +QString Song::mainText() const +{ + if (isEmpty()) { + return QString(); + } + + QString n = name(); + if (isStream() && !isCantataStream() && !isCdda() && !isDlnaStream()) { + return n.isEmpty() ? Song::unknown() : n; + } else if (title.isEmpty() && artist.isEmpty() && (!n.isEmpty() || !file.isEmpty())) { + return n.isEmpty() ? file : n; + } else { + return title+(origYear>0 && !Song::useOriginalYear() && origYear!=year ? QLatin1String(" (")+QString::number(origYear)+QLatin1Char(')') : QString()); + } +} + +QString Song::subText() const +{ + if (isEmpty()) { + return QString(); + } + + if (isStream() && !isCantataStream() && !isCdda() && !isDlnaStream()) { + if (artist.isEmpty() && title.isEmpty() && !name().isEmpty()) { + return QObject::tr("(Stream)"); + } else { + return artist.isEmpty() ? title : artistSong(); + } + } else if (album.isEmpty() && artist.isEmpty()) { + return mainText().isEmpty() ? QString() : Song::unknown(); + } else if (album.isEmpty()) { + return artist; + } else { + // Artist here is always artist, and not album artist or composer + return artist + QString(" – ")+displayAlbum(false); } - return descr; } bool Song::useComposer() const diff --git a/mpd-interface/song.h b/mpd-interface/song.h index bdfab5d87..d24412a82 100644 --- a/mpd-interface/song.h +++ b/mpd-interface/song.h @@ -225,7 +225,10 @@ struct Song QString basicArtist() const; QString filePath(const QString &base=QString()) const; QString displayAlbum(bool useComp=true) const { return displayAlbum(useComp ? albumName() : album, displayYear()); } - QString describe(bool withMarkup=false) const; + QString describe() const; + // Main text + sub text for now-playing and notifications + QString mainText() const; + QString subText() const; bool useComposer() const; void populateSorts(); // QString basicDescription() const; diff --git a/widgets/nowplayingwidget.cpp b/widgets/nowplayingwidget.cpp index 2d64162f6..fb15a0c60 100644 --- a/widgets/nowplayingwidget.cpp +++ b/widgets/nowplayingwidget.cpp @@ -319,37 +319,12 @@ NowPlayingWidget::NowPlayingWidget(QWidget *p) void NowPlayingWidget::update(const Song &song) { - QString name=song.name(); currentSongFile=song.file; ratingWidget->setEnabled(!song.isEmpty() && Song::Standard==song.type); ratingWidget->setValue(0); updateInfo(); - if (song.isEmpty()) { - track->setText(QString()); - artist->setText(QString()); - } else if (song.isStream() && !song.isCantataStream() && !song.isCdda() && !song.isDlnaStream()) { - track->setText(name.isEmpty() ? Song::unknown() : name); - if (song.artist.isEmpty() && song.title.isEmpty() && !name.isEmpty()) { - artist->setText(tr("(Stream)")); - } else { - artist->setText(song.artist.isEmpty() ? song.title : song.artistSong()); - } - } else { - if (song.title.isEmpty() && song.artist.isEmpty() && (!name.isEmpty() || !song.file.isEmpty())) { - track->setText(name.isEmpty() ? song.file : name); - } else { - track->setText(song.title+(song.origYear>0 && !Song::useOriginalYear() && song.origYear!=song.year ? QLatin1String(" (")+QString::number(song.origYear)+QLatin1Char(')') : QString())); - } - if (song.album.isEmpty() && song.artist.isEmpty()) { - artist->setText(track->fullText().isEmpty() ? QString() : Song::unknown()); - } else if (song.album.isEmpty()) { - artist->setText(song.artist); - } else { - // Artist here is always artist, and not album artist or composer - artist->setText(song.artist+QString(" – ")+song.displayAlbum(false)); - } - } - + track->setText(song.mainText()); + artist->setText(song.subText()); track->setContextMenuPolicy(track->fullText().isEmpty() ? Qt::NoContextMenu : Qt::ActionsContextMenu); artist->setContextMenuPolicy(artist->fullText().isEmpty() ? Qt::NoContextMenu : Qt::ActionsContextMenu); }