[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