diff --git a/src/core/player.cpp b/src/core/player.cpp index 9a960e8f..0dc1fc99 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -80,6 +80,7 @@ Player::Player(Application *app, QObject *parent) #endif analyzer_(nullptr), equalizer_(nullptr), + timer_save_volume_(new QTimer(this)), stream_change_type_(EngineBase::TrackChangeType::First), autoscroll_(Playlist::AutoScroll::Maybe), last_state_(EngineBase::State::Empty), @@ -100,6 +101,10 @@ Player::Player(Application *app, QObject *parent) CreateEngine(enginetype); + timer_save_volume_->setSingleShot(true); + timer_save_volume_->setInterval(5000); + QObject::connect(timer_save_volume_, &QTimer::timeout, this, &Player::SaveVolume); + } EngineBase::Type Player::CreateEngine(EngineBase::Type enginetype) { @@ -659,6 +664,7 @@ void Player::SetVolumeFromSlider(const int value) { volume_ = volume; engine_->SetVolume(volume); emit VolumeChanged(volume); + timer_save_volume_->start(); } } @@ -669,6 +675,7 @@ void Player::SetVolumeFromEngine(const uint volume) { if (new_volume != volume_) { volume_ = new_volume; emit VolumeChanged(new_volume); + timer_save_volume_->start(); } } @@ -680,6 +687,7 @@ void Player::SetVolume(const uint volume) { volume_ = new_volume; engine_->SetVolume(new_volume); emit VolumeChanged(new_volume); + timer_save_volume_->start(); } } diff --git a/src/core/player.h b/src/core/player.h index 8c51224e..9902ac5e 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -39,6 +39,7 @@ #include "playlist/playlistitem.h" #include "settings/behavioursettingspage.h" +class QTimer; class Application; class Song; class AnalyzerContainer; @@ -223,6 +224,7 @@ class Player : public PlayerInterface { #endif AnalyzerContainer *analyzer_; SharedPtr equalizer_; + QTimer *timer_save_volume_; PlaylistItemPtr current_item_;