diff --git a/src/core/mainwindow.cpp b/src/core/mainwindow.cpp index a6191bb73..1be8ebda8 100644 --- a/src/core/mainwindow.cpp +++ b/src/core/mainwindow.cpp @@ -399,8 +399,8 @@ MainWindow::MainWindow(Application *app, std::shared_ptr tray_ic app_->player()->SetEqualizer(equalizer_.get()); app_->player()->Init(); EngineChanged(app_->player()->engine()->type()); - int volume = static_cast(app_->player()->GetVolume()); - ui_->volume->setValue(volume); + const uint volume = app_->player()->GetVolume(); + ui_->volume->SetValueFromVolume(volume); VolumeChanged(volume); // Models @@ -583,7 +583,7 @@ MainWindow::MainWindow(Application *app, std::shared_ptr tray_ic ui_->stop_button->setMenu(stop_menu); // Player connections - QObject::connect(ui_->volume, &VolumeSlider::valueChanged, app_->player(), &Player::SetVolume); + QObject::connect(ui_->volume, &VolumeSlider::valueChanged, app_->player(), &Player::SetVolumeFromValue); QObject::connect(app_->player(), &Player::EngineChanged, this, &MainWindow::EngineChanged); QObject::connect(app_->player(), &Player::Error, this, &MainWindow::ShowErrorDialog); @@ -606,7 +606,7 @@ MainWindow::MainWindow(Application *app, std::shared_ptr tray_ic QObject::connect(app_->player(), &Player::Stopped, osd_, &OSDBase::Stopped); QObject::connect(app_->player(), &Player::PlaylistFinished, osd_, &OSDBase::PlaylistFinished); QObject::connect(app_->player(), &Player::VolumeChanged, osd_, &OSDBase::VolumeChanged); - QObject::connect(app_->player(), &Player::VolumeChanged, ui_->volume, &VolumeSlider::setValue); + QObject::connect(app_->player(), &Player::VolumeChanged, ui_->volume, &VolumeSlider::SetValueFromVolume); QObject::connect(app_->player(), &Player::ForceShowOSD, this, &MainWindow::ForceShowOSD); QObject::connect(app_->playlist_manager(), &PlaylistManager::CurrentSongChanged, this, &MainWindow::SongChanged); @@ -1351,7 +1351,7 @@ void MainWindow::SendNowPlaying() { } -void MainWindow::VolumeChanged(const int volume) { +void MainWindow::VolumeChanged(const uint volume) { ui_->action_mute->setChecked(volume == 0); tray_icon_->MuteButtonStateChanged(volume == 0); } diff --git a/src/core/mainwindow.h b/src/core/mainwindow.h index 8b7f27844..bdacfbbbb 100644 --- a/src/core/mainwindow.h +++ b/src/core/mainwindow.h @@ -187,7 +187,7 @@ class MainWindow : public QMainWindow, public PlatformInterface { void StopAfterCurrent(); void SongChanged(const Song &song); - void VolumeChanged(const int volume); + void VolumeChanged(const uint volume); void CopyFilesToCollection(const QList &urls); void MoveFilesToCollection(const QList &urls); diff --git a/src/core/player.cpp b/src/core/player.cpp index 77cac78c7..37c86e70d 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -641,16 +641,21 @@ uint Player::GetVolume() const { } -void Player::SetVolume(const uint value) { +void Player::SetVolumeFromValue(const int value) { + + SetVolume(static_cast(std::max(0, value))); + +} + +void Player::SetVolume(const uint volume) { uint old_volume = engine_->volume(); + uint new_volume = qBound(0U, volume, 100U); + settings_.setValue("volume", new_volume); + engine_->SetVolume(new_volume); - uint volume = qBound(0U, value, 100U); - settings_.setValue("volume", volume); - engine_->SetVolume(volume); - - if (volume != old_volume) { - emit VolumeChanged(volume); + if (new_volume != old_volume) { + emit VolumeChanged(new_volume); } } diff --git a/src/core/player.h b/src/core/player.h index 615a504de..23ff78dbf 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -84,7 +84,8 @@ class PlayerInterface : public QObject { virtual void Next() = 0; virtual void Previous() = 0; virtual void PlayPlaylist(const QString &playlist_name) = 0; - virtual void SetVolume(const uint value) = 0; + virtual void SetVolumeFromValue(const int value) = 0; + virtual void SetVolume(const uint volume) = 0; virtual void VolumeUp() = 0; virtual void VolumeDown() = 0; virtual void SeekTo(const quint64 seconds) = 0; @@ -166,6 +167,7 @@ class Player : public PlayerInterface { void Next() override; void Previous() override; void PlayPlaylist(const QString &playlist_name) override; + void SetVolumeFromValue(const int value) override; void SetVolume(const uint value) override; void VolumeUp() override; void VolumeDown() override; diff --git a/src/lyrics/lyricsprovider.h b/src/lyrics/lyricsprovider.h index 959b19f4b..4e3142161 100644 --- a/src/lyrics/lyricsprovider.h +++ b/src/lyrics/lyricsprovider.h @@ -62,7 +62,7 @@ class LyricsProvider : public QObject { void AuthenticationComplete(bool, QStringList = QStringList()); void AuthenticationSuccess(); void AuthenticationFailure(QStringList); - void SearchFinished(quint64 id, LyricsSearchResults results); + void SearchFinished(int id, LyricsSearchResults results); protected: NetworkAccessManager *network_; diff --git a/src/osd/osdbase.cpp b/src/osd/osdbase.cpp index e2f091df2..0ebfece19 100644 --- a/src/osd/osdbase.cpp +++ b/src/osd/osdbase.cpp @@ -265,7 +265,7 @@ void OSDBase::Stopped() { } -void OSDBase::StopAfterToggle(bool stop) { +void OSDBase::StopAfterToggle(const bool stop) { ShowMessage(app_name_, tr("Stop playing after track: %1").arg(stop ? tr("On") : tr("Off"))); } @@ -278,7 +278,7 @@ void OSDBase::PlaylistFinished() { } -void OSDBase::VolumeChanged(int value) { +void OSDBase::VolumeChanged(const uint value) { if (!show_on_volume_change_) return; @@ -338,7 +338,7 @@ void OSDBase::ShowMessage(const QString &summary, const QString &message, const } -void OSDBase::ShuffleModeChanged(PlaylistSequence::ShuffleMode mode) { +void OSDBase::ShuffleModeChanged(const PlaylistSequence::ShuffleMode mode) { if (show_on_play_mode_change_) { QString current_mode = QString(); @@ -353,7 +353,7 @@ void OSDBase::ShuffleModeChanged(PlaylistSequence::ShuffleMode mode) { } -void OSDBase::RepeatModeChanged(PlaylistSequence::RepeatMode mode) { +void OSDBase::RepeatModeChanged(const PlaylistSequence::RepeatMode mode) { if (show_on_play_mode_change_) { QString current_mode = QString(); @@ -435,7 +435,7 @@ void OSDBase::ShowPreview(const Behaviour type, const QString &line1, const QStr } -void OSDBase::SetPrettyOSDToggleMode(bool toggle) { +void OSDBase::SetPrettyOSDToggleMode(const bool toggle) { pretty_popup_->set_toggle_mode(toggle); } diff --git a/src/osd/osdbase.h b/src/osd/osdbase.h index e2f50ac00..0ded8f1bc 100644 --- a/src/osd/osdbase.h +++ b/src/osd/osdbase.h @@ -72,11 +72,11 @@ class OSDBase : public QObject { void Paused(); void Resumed(); void Stopped(); - void StopAfterToggle(bool stop); + void StopAfterToggle(const bool stop); void PlaylistFinished(); - void VolumeChanged(int value); - void RepeatModeChanged(PlaylistSequence::RepeatMode mode); - void ShuffleModeChanged(PlaylistSequence::ShuffleMode mode); + void VolumeChanged(const uint value); + void RepeatModeChanged(const PlaylistSequence::RepeatMode mode); + void ShuffleModeChanged(const PlaylistSequence::ShuffleMode mode); void ReshowCurrentSong(); diff --git a/src/widgets/trackslider.cpp b/src/widgets/trackslider.cpp index fd7e438b6..f2f536367 100644 --- a/src/widgets/trackslider.cpp +++ b/src/widgets/trackslider.cpp @@ -185,7 +185,7 @@ void TrackSlider::ValueMaybeChanged(const int value) { if (setting_value_) return; UpdateTimes(static_cast(value / kMsecPerSec)); - emit ValueChangedSeconds(static_cast(value / kMsecPerSec)); + emit ValueChangedSeconds(static_cast(value / kMsecPerSec)); } diff --git a/src/widgets/trackslider.h b/src/widgets/trackslider.h index 9c3947e0f..c8b999402 100644 --- a/src/widgets/trackslider.h +++ b/src/widgets/trackslider.h @@ -66,7 +66,7 @@ class TrackSlider : public QWidget { signals: void ValueChanged(int value); - void ValueChangedSeconds(int value); + void ValueChangedSeconds(quint64 value); void SeekForward(); void SeekBackward(); diff --git a/src/widgets/volumeslider.cpp b/src/widgets/volumeslider.cpp index a21693caa..e0f79c3de 100644 --- a/src/widgets/volumeslider.cpp +++ b/src/widgets/volumeslider.cpp @@ -141,14 +141,21 @@ void SliderSlider::mouseReleaseEvent(QMouseEvent*) { } -void SliderSlider::setValue(int newValue) { - // don't adjust the slider while the user is dragging it! +void SliderSlider::SetValueFromVolume(const uint value) { + + setValue(static_cast(value)); + +} + +void SliderSlider::setValue(int value) { + + // Don't adjust the slider while the user is dragging it! if (!sliding_ || outside_) { - QSlider::setValue(adjustValue(newValue)); + QSlider::setValue(adjustValue(value)); } else { - prev_value_ = newValue; + prev_value_ = value; } } diff --git a/src/widgets/volumeslider.h b/src/widgets/volumeslider.h index a8630c1e3..16cdbc6b1 100644 --- a/src/widgets/volumeslider.h +++ b/src/widgets/volumeslider.h @@ -44,7 +44,8 @@ class SliderSlider : public QSlider { public: explicit SliderSlider(const Qt::Orientation, QWidget*, const int max = 0); - virtual void setValue(int); + virtual void SetValueFromVolume(const uint value); + virtual void setValue(int value); // WARNING non-virtual - and thus only really intended for internal use this is a major flaw in the class presently, however it suits our current needs fine int value() const { return adjustValue(QSlider::value()); }