diff options
| -rw-r--r-- | src/qmmp/soundcore.cpp | 10 | ||||
| -rw-r--r-- | src/qmmp/volumecontrol.cpp | 12 | ||||
| -rw-r--r-- | src/qmmp/volumecontrol_p.h | 4 |
3 files changed, 16 insertions, 10 deletions
diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp index 85837588a..072542755 100644 --- a/src/qmmp/soundcore.cpp +++ b/src/qmmp/soundcore.cpp @@ -152,8 +152,6 @@ void SoundCore::setEqSettings(const EqSettings &settings) void SoundCore::setVolume(int L, int R) { setMuted(false); - L = qBound(0, L, 100); - R = qBound(0, R, 100); m_volumeControl->setVolume(L, R); } @@ -170,12 +168,8 @@ void SoundCore::setMuted(bool mute) void SoundCore::changeVolume(int delta) { - int left = leftVolume(); - int right = rightVolume(); - int volume = qMax(left, right); - int balance = volume > 0 ? (right - left)*100/volume : 0; - volume = delta > 0 ? qMin(100, volume + 5) : qMax(0, volume - 5); - setVolume(volume-qMax(balance,0)*volume/100, volume+qMin(balance,0)*volume/100); + setMuted(false); + m_volumeControl->changeVolume(delta); } int SoundCore::leftVolume() diff --git a/src/qmmp/volumecontrol.cpp b/src/qmmp/volumecontrol.cpp index 197c14828..98c2a3da7 100644 --- a/src/qmmp/volumecontrol.cpp +++ b/src/qmmp/volumecontrol.cpp @@ -51,12 +51,20 @@ int VolumeControl::left() void VolumeControl::setVolume(int left, int right) { VolumeSettings v; - v.left = left; - v.right = right; + v.left = qBound(0,left,100); + v.right = qBound(0,right,100); m_volume->setVolume(v); checkVolume(); } +void VolumeControl::changeVolume(int delta) +{ + int volume = qMax(m_left, m_right); + int balance = volume > 0 ? (m_right - m_left)*100/volume : 0; + volume = delta > 0 ? qMin(100, volume + 5) : qMax(0, volume - 5); + setVolume(volume-qMax(balance,0)*volume/100, volume+qMin(balance,0)*volume/100); +} + int VolumeControl::right() { return m_right; diff --git a/src/qmmp/volumecontrol_p.h b/src/qmmp/volumecontrol_p.h index 99f90c675..0c33f70d8 100644 --- a/src/qmmp/volumecontrol_p.h +++ b/src/qmmp/volumecontrol_p.h @@ -53,6 +53,10 @@ public: */ void setVolume(int left, int right); /*! + * Changes volume by \b delta percent + */ + void changeVolume(int delta); + /*! * Returns left channel volume. */ int left(); |
