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);
}