From 63a053f549f0694d29b7ed7030e370e4f6d24092 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Tue, 29 Oct 2013 12:28:42 +0000 Subject: refactoring git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3835 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmp/soundcore.cpp | 10 ++-------- src/qmmp/volumecontrol.cpp | 12 ++++++++++-- src/qmmp/volumecontrol_p.h | 4 ++++ 3 files changed, 16 insertions(+), 10 deletions(-) (limited to 'src') 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 @@ -52,6 +52,10 @@ public: * @param right Right channel volume level. It should be \b 0..100 */ void setVolume(int left, int right); + /*! + * Changes volume by \b delta percent + */ + void changeVolume(int delta); /*! * Returns left channel volume. */ -- cgit v1.2.3-13-gbd6f