diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index bc840a12a..04b1430bc 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -492,6 +492,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSD *osd, co connect(app_->player(), SIGNAL(Stopped()), ui_->playlist, SLOT(ActiveStopped())); connect(app_->player(), SIGNAL(Paused()), osd_, SLOT(Paused())); + connect(app_->player(), SIGNAL(Resumed()), osd_, SLOT(Resumed())); connect(app_->player(), SIGNAL(Stopped()), osd_, SLOT(Stopped())); connect(app_->player(), SIGNAL(PlaylistFinished()), osd_, SLOT(PlaylistFinished())); connect(app_->player(), SIGNAL(VolumeChanged(int)), osd_, SLOT(VolumeChanged(int))); diff --git a/src/core/player.cpp b/src/core/player.cpp index b2713a96a..53d162456 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -450,6 +450,7 @@ void Player::PlayPause() { switch (engine_->state()) { case Engine::Paused: engine_->Unpause(); + emit Resumed(); break; case Engine::Playing: { diff --git a/src/core/player.h b/src/core/player.h index 3fc70f044..072b34c26 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -104,6 +104,8 @@ class PlayerInterface : public QObject { signals: void Playing(); void Paused(); + // Emitted only when playback is manually resumed + void Resumed(); void Stopped(); void Error(); void PlaylistFinished(); diff --git a/src/settings/notificationssettingspage.cpp b/src/settings/notificationssettingspage.cpp index b46a3ccc1..45691bc52 100644 --- a/src/settings/notificationssettingspage.cpp +++ b/src/settings/notificationssettingspage.cpp @@ -169,6 +169,7 @@ void NotificationsSettingsPage::Load() { ui_->notifications_volume->setChecked( s.value("ShowOnVolumeChange", false).toBool()); ui_->notifications_play_mode->setChecked( s.value("ShowOnPlayModeChange", true).toBool()); ui_->notifications_pause->setChecked(s.value("ShowOnPausePlayback", true).toBool()); + ui_->notifications_resume->setChecked(s.value("ShowOnResumePlayback", false).toBool()); ui_->notifications_art->setChecked(s.value("ShowArt", true).toBool()); ui_->notifications_custom_text_enabled->setChecked(s.value("CustomTextEnabled", false).toBool()); ui_->notifications_custom_text1->setText(s.value("CustomText1").toString()); @@ -211,6 +212,7 @@ void NotificationsSettingsPage::Save() { s.setValue("ShowOnVolumeChange", ui_->notifications_volume->isChecked()); s.setValue("ShowOnPlayModeChange", ui_->notifications_play_mode->isChecked()); s.setValue("ShowOnPausePlayback", ui_->notifications_pause->isChecked()); + s.setValue("ShowOnResumePlayback", ui_->notifications_resume->isChecked()); s.setValue("ShowArt", ui_->notifications_art->isChecked()); s.setValue("CustomTextEnabled", ui_->notifications_custom_text_enabled->isChecked()); s.setValue("CustomText1", ui_->notifications_custom_text1->text()); diff --git a/src/settings/notificationssettingspage.ui b/src/settings/notificationssettingspage.ui index 00e98dd75..1003bf61a 100644 --- a/src/settings/notificationssettingspage.ui +++ b/src/settings/notificationssettingspage.ui @@ -147,6 +147,13 @@ + + + + Show a notification when I resume playback + + + diff --git a/src/widgets/osd.cpp b/src/widgets/osd.cpp index 415e26062..1007d8262 100644 --- a/src/widgets/osd.cpp +++ b/src/widgets/osd.cpp @@ -58,6 +58,7 @@ OSD::OSD(SystemTrayIcon *tray_icon, Application *app, QObject *parent) show_art_(true), show_on_play_mode_change_(true), show_on_pause_(true), + show_on_resume_(false), use_custom_text_(false), custom_text1_(QString()), custom_text2_(QString()), @@ -90,6 +91,7 @@ void OSD::ReloadSettings() { show_art_ = s.value("ShowArt", true).toBool(); show_on_play_mode_change_ = s.value("ShowOnPlayModeChange", true).toBool(); show_on_pause_ = s.value("ShowOnPausePlayback", true).toBool(); + show_on_resume_ = s.value("ShowOnResumePlayback", false).toBool(); use_custom_text_ = s.value(("CustomTextEnabled"), false).toBool(); custom_text1_ = s.value("CustomText1").toString(); custom_text2_ = s.value("CustomText2").toString(); @@ -183,6 +185,12 @@ void OSD::Paused() { } } +void OSD::Resumed() { + if (show_on_resume_) { + AlbumArtLoaded(last_song_, last_image_uri_, last_image_); + } +} + void OSD::Stopped() { if (tray_icon_) tray_icon_->ClearNowPlaying(); if (ignore_next_stopped_) { diff --git a/src/widgets/osd.h b/src/widgets/osd.h index 5bb994b92..3b636250e 100644 --- a/src/widgets/osd.h +++ b/src/widgets/osd.h @@ -80,6 +80,7 @@ class OSD : public QObject { void ReloadSettings(); void Paused(); + void Resumed(); void Stopped(); void StopAfterToggle(bool stop); void PlaylistFinished(); @@ -115,6 +116,7 @@ class OSD : public QObject { bool show_art_; bool show_on_play_mode_change_; bool show_on_pause_; + bool show_on_resume_; bool use_custom_text_; QString custom_text1_; QString custom_text2_;