[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdemultimedia/kmix
From:       Christian Esken <esken () kde ! org>
Date:       2011-08-09 20:26:31
Message-ID: 20110809202631.DAF31AC871 () svn ! kde ! org
[Download RAW message or body]

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<QAbstractSlider *>& ref_sliders)
+void MDWSlider::updateInternal(Volume& vol, QList<QAbstractSlider *>& ref_sliders, \
bool muted)  {
 	for( int i=0; i<ref_sliders.count(); i++ ) {
 		QAbstractSlider *slider = ref_sliders.at( i );
 		Volume::ChannelID chid = extraData(slider).getChid();
-		long useVolume = vol.getVolume(chid);
+		long useVolume;
+		if ( muted )
+		    useVolume = 0;
+        else
+            useVolume = vol.getVolume(chid);
 
 		slider->blockSignals( 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);
 
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic