From kde-commits Tue Aug 09 20:26:31 2011 From: Christian Esken Date: Tue, 09 Aug 2011 20:26:31 +0000 To: kde-commits Subject: KDE/kdemultimedia/kmix Message-Id: <20110809202631.DAF31AC871 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=131292162515100 SVN commit 1246045 by esken: FEATURE: 196886 Elegant unute handling: Automatic unmuting on volume increase M +1 -0 core/mixdevice.cpp M +1 -0 core/mixdevice.h M +15 -5 gui/mdwslider.cpp M +1 -1 gui/mdwslider.h --- trunk/KDE/kdemultimedia/kmix/core/mixdevice.cpp #1246044:1246045 @@ -209,6 +209,7 @@ void MixDevice::setMuted(bool value) { _playbackVolume.setSwitch( ! value ); } void MixDevice::toggleMute() { setMuted( !isMuted() ); } bool MixDevice::isRecSource() { return ( _captureVolume.hasSwitch() && _captureVolume.isSwitchActivated() ); } +bool MixDevice::isNotRecSource() { return ( _captureVolume.hasSwitch() && !_captureVolume.isSwitchActivated() ); } void MixDevice::setRecSource(bool value) { _captureVolume.setSwitch( value ); } bool MixDevice::isEnum() { return ( ! _enumValues.empty() ); } --- trunk/KDE/kdemultimedia/kmix/core/mixdevice.h #1246044:1246045 @@ -160,6 +160,7 @@ virtual void setMuted(bool value); virtual void toggleMute(); virtual bool isRecSource(); + virtual bool isNotRecSource(); virtual void setRecSource(bool value); virtual bool isEnum(); /** --- trunk/KDE/kdemultimedia/kmix/gui/mdwslider.cpp #1246044:1246045 @@ -68,7 +68,6 @@ , ProfControl* par_ctl ) : MixDeviceWidget(md,small,orientation,parent,view, par_ctl), -// MixDeviceWidget(md,true,orientation,parent,view, par_ctl), m_linked(true), muteButtonSpacer(0), captureSpacer(0), labelSpacer(0), m_iconLabelSimple(0), m_qcb(0), m_muteText(0), m_label( 0 ), /*m_captureLED( 0 ),*/ @@ -999,6 +998,12 @@ debugMe =true; if (debugMe) kDebug(67100) << ( decrease ? "decrease by " : "increase by " ) << inc ; + if ( !decrease && m_mixdevice->isMuted()) + { // increasing form muted state: unmute and start with a low volume level + m_mixdevice->setMuted(false); + volP.setAllVolumes(inc); + } + else volP.changeAllVolumes(inc); Volume& volC = m_mixdevice->captureVolume(); @@ -1036,10 +1041,11 @@ */ void MDWSlider::update() { + if ( m_slidersPlayback.count() != 0 || m_mixdevice->playbackVolume().hasSwitch() ) - updateInternal(m_mixdevice->playbackVolume(), m_slidersPlayback); + updateInternal(m_mixdevice->playbackVolume(), m_slidersPlayback, m_mixdevice->isMuted() ); if ( m_slidersCapture.count() != 0 || m_mixdevice->captureVolume().hasSwitch() ) - updateInternal(m_mixdevice->captureVolume(), m_slidersCapture); + updateInternal(m_mixdevice->captureVolume(), m_slidersCapture, m_mixdevice->isNotRecSource() ); if (m_label) { QLabel *l; VerticalText *v; @@ -1050,12 +1056,16 @@ } } -void MDWSlider::updateInternal(Volume& vol, QList& ref_sliders) +void MDWSlider::updateInternal(Volume& vol, QList& ref_sliders, bool muted) { for( int i=0; iblockSignals( true ); slider->setValue( useVolume ); --- trunk/KDE/kdemultimedia/kmix/gui/mdwslider.h #1246044:1246045 @@ -136,7 +136,7 @@ void setStereoLinkedInternal( QList< QAbstractSlider* >& ref_sliders); void setTicksInternal( QList< QAbstractSlider* >& ref_sliders, bool ticks ); void volumeChangeInternal(Volume& vol, QList< QAbstractSlider* >& ref_sliders ); - void updateInternal(Volume& vol, QList< QAbstractSlider* >& ref_sliders); + void updateInternal(Volume& vol, QList< QAbstractSlider* >& ref_sliders, bool muted); QWidget* createLabel(QWidget* parent, QString& label, QBoxLayout *layout, bool);