Use same format for notifications as for now playing widget.

Closes #1222
This commit is contained in:
Craig Drummond
2018-02-25 21:53:46 +00:00
committed by Craig Drummond
parent c40f6a5691
commit f736b6fb67
6 changed files with 52 additions and 52 deletions

View File

@@ -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
-----

View File

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

View File

@@ -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

View File

@@ -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("<b>")+albumText+QLatin1String("</b>"));
return QLatin1String("<b>")+albumText+QLatin1String("</b>");
}
QString descr=artist.isEmpty()
return artist.isEmpty()
? QObject::tr("<b>%1</b> on <b>%2</b>", "Song on Album").arg(title).arg(albumText)
: QObject::tr("<b>%1</b> by <b>%2</b> on <b>%3</b>", "Song by Artist on Album").arg(title).arg(artist).arg(albumText);
}
if (!withMarkup) {
descr=descr.replace("<b>", "");
descr=descr.replace("</b>", "");
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

View File

@@ -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;

View File

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