From d398c86b0c61393f22f632052e46e4278a5b5d48 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Thu, 4 Apr 2024 16:49:53 +0200 Subject: [PATCH] Make showing song progress on taskbar optional --- src/core/mainwindow.cpp | 33 ++++++++++++++++++++++---- src/core/mainwindow.h | 5 +++- src/settings/behavioursettingspage.cpp | 10 ++++++++ src/settings/behavioursettingspage.ui | 7 ++++++ 4 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index 5130cdff..027532be 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -339,6 +339,9 @@ MainWindow::MainWindow(Application *app, SharedPtr tray_icon, OS track_slider_timer_(new QTimer(this)), keep_running_(false), playing_widget_(true), +#ifdef HAVE_DBUS + taskbar_progress_(false), +#endif doubleclick_addmode_(BehaviourSettingsPage::AddBehaviour::Append), doubleclick_playmode_(BehaviourSettingsPage::PlayBehaviour::Never), doubleclick_playlist_addmode_(BehaviourSettingsPage::PlaylistAddBehaviour::Play), @@ -1108,6 +1111,9 @@ void MainWindow::ReloadSettings() { keep_running_ = keeprunning_available && s.value("keeprunning", false).toBool(); playing_widget_ = s.value("playing_widget", true).toBool(); bool trayicon_progress = s.value("trayicon_progress", false).toBool(); +#ifdef HAVE_DBUS + const bool taskbar_progress = s.value("taskbar_progress", true).toBool(); +#endif if (playing_widget_ != ui_->widget_playing->IsEnabled()) TabSwitched(); doubleclick_addmode_ = static_cast(s.value("doubleclick_addmode", static_cast(BehaviourSettingsPage::AddBehaviour::Append)).toInt()); doubleclick_playmode_ = static_cast(s.value("doubleclick_playmode", static_cast(BehaviourSettingsPage::PlayBehaviour::Never)).toInt()); @@ -1121,6 +1127,13 @@ void MainWindow::ReloadSettings() { tray_icon_->SetTrayiconProgress(trayicon_progress); +#ifdef HAVE_DBUS + if (taskbar_progress_ && !taskbar_progress) { + UpdateTaskbarProgress(false); + } + taskbar_progress_ = taskbar_progress; +#endif + ui_->back_button->setIconSize(QSize(iconsize, iconsize)); ui_->pause_play_button->setIconSize(QSize(iconsize, iconsize)); ui_->stop_button->setIconSize(QSize(iconsize, iconsize)); @@ -1277,7 +1290,9 @@ void MainWindow::Exit() { } #ifdef HAVE_DBUS - UpdateTaskbarProgress(false, 0, 0); + if (taskbar_progress_) { + UpdateTaskbarProgress(false); + } #endif DoExit(); @@ -1333,7 +1348,9 @@ void MainWindow::MediaStopped() { tray_icon_->SetStopped(); #ifdef HAVE_DBUS - UpdateTaskbarProgress(false, 0, 0); + if (taskbar_progress_) { + UpdateTaskbarProgress(false); + } #endif song_playing_ = Song(); @@ -1413,7 +1430,9 @@ void MainWindow::SongChanged(const Song &song) { tray_icon_->SetProgress(0); #ifdef HAVE_DBUS - UpdateTaskbarProgress(false, 0, 0); + if (taskbar_progress_) { + UpdateTaskbarProgress(false); + } #endif SendNowPlaying(); @@ -1706,7 +1725,9 @@ void MainWindow::Seeked(const qint64 microseconds) { tray_icon_->SetProgress(static_cast(static_cast(position) / static_cast(length) * 100.0)); #ifdef HAVE_DBUS - UpdateTaskbarProgress(true, position, length); + if (taskbar_progress_) { + UpdateTaskbarProgress(true, position, length); + } #endif } @@ -1724,7 +1745,9 @@ void MainWindow::UpdateTrackPosition() { if (position % 10 == 0) tray_icon_->SetProgress(static_cast(static_cast(position) / static_cast(length) * 100.0)); #ifdef HAVE_DBUS - UpdateTaskbarProgress(true, position, length); + if (taskbar_progress_) { + UpdateTaskbarProgress(true, position, length); + } #endif // Send Scrobble diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index 05bda24b..1f033f2d 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -293,7 +293,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void SetToggleScrobblingIcon(const bool value); #ifdef HAVE_DBUS - void UpdateTaskbarProgress(const bool visible, const double position, const double length); + void UpdateTaskbarProgress(const bool visible, const double position = 0, const double length = 0); #endif private: @@ -383,6 +383,9 @@ class MainWindow : public QMainWindow, public PlatformInterface { bool keep_running_; bool playing_widget_; +#ifdef HAVE_DBUS + bool taskbar_progress_; +#endif BehaviourSettingsPage::AddBehaviour doubleclick_addmode_; BehaviourSettingsPage::PlayBehaviour doubleclick_playmode_; BehaviourSettingsPage::PlaylistAddBehaviour doubleclick_playlist_addmode_; diff --git a/src/settings/behavioursettingspage.cpp b/src/settings/behavioursettingspage.cpp index bbf5fd92..3d1407a9 100644 --- a/src/settings/behavioursettingspage.cpp +++ b/src/settings/behavioursettingspage.cpp @@ -69,6 +69,10 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog *dialog, QWidget *pa ui_->checkbox_showtrayicon->hide(); ui_->checkbox_trayicon_progress->hide(); ui_->groupbox_startup->hide(); +#else +# ifndef HAVE_DBUS + ui_->checkbox_taskbar_progress->hide(); +# endif #endif #ifdef HAVE_TRANSLATIONS @@ -156,6 +160,9 @@ void BehaviourSettingsPage::Load() { ui_->checkbox_trayicon_progress->setEnabled(systemtray_available && ui_->checkbox_showtrayicon->isChecked()); ui_->checkbox_trayicon_progress->setChecked(systemtray_available && ui_->checkbox_showtrayicon->isChecked() && s.value("trayicon_progress", false).toBool()); ui_->radiobutton_hide->setEnabled(systemtray_available && ui_->checkbox_showtrayicon->isChecked()); +#ifdef HAVE_DBUS + ui_->checkbox_taskbar_progress->setChecked(s.value("taskbar_progress", true).toBool()); +#endif #endif ui_->checkbox_resumeplayback->setChecked(s.value("resumeplayback", false).toBool()); @@ -222,6 +229,9 @@ void BehaviourSettingsPage::Save() { s.setValue("showtrayicon", ui_->checkbox_showtrayicon->isChecked()); s.setValue("keeprunning", ui_->checkbox_keeprunning->isChecked()); s.setValue("trayicon_progress", ui_->checkbox_trayicon_progress->isChecked()); +#if defined(HAVE_DBUS) && !defined(Q_OS_MACOS) + s.setValue("taskbar_progress", ui_->checkbox_taskbar_progress->isChecked()); +#endif s.setValue("resumeplayback", ui_->checkbox_resumeplayback->isChecked()); s.setValue("playing_widget", ui_->checkbox_playingwidget->isChecked()); diff --git a/src/settings/behavioursettingspage.ui b/src/settings/behavioursettingspage.ui index 480af77e..b5456ed1 100644 --- a/src/settings/behavioursettingspage.ui +++ b/src/settings/behavioursettingspage.ui @@ -41,6 +41,13 @@ + + + + Show song progress on taskbar + + +