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

List:       kde-commits
Subject:    KDE/kdemultimedia/kmix
From:       Igor Poboiko <igor.poboiko () gmail ! com>
Date:       2012-01-24 23:03:51
Message-ID: 20120124230351.235EAAC892 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1275737 by poboiko:

Record source (the "capture" switch) can be changed from plasma dataengine now


 M  +16 -17    dbus/dbuscontrolwrapper.cpp  
 M  +2 -0      dbus/dbuscontrolwrapper.h  
 M  +1 -0      dbus/org.kde.kmix.control.xml  
 M  +5 -0      plasma/engine/mixer.operations  
 M  +21 -17    plasma/engine/mixerengine.cpp  
 M  +1 -0      plasma/engine/mixerengine.h  
 M  +5 -1      plasma/engine/mixerservice.cpp  


--- trunk/KDE/kdemultimedia/kmix/dbus/dbuscontrolwrapper.cpp #1275736:1275737
@@ -24,8 +24,6 @@
 #include "core/mixer.h"
 #include "core/volume.h"
 
-#include <QDebug>
-
 DBusControlWrapper::DBusControlWrapper(MixDevice* parent, QString path)
 	: QObject(parent)
 	, m_dbusPath(path)
@@ -65,7 +63,8 @@
 
 int DBusControlWrapper::volume()
 {
-	return m_md->playbackVolume().getAvgVolumePercent(Volume::MALL);
+	Volume &useVolume = (m_md->playbackVolume().count() != 0) ? m_md->playbackVolume() \
: m_md->captureVolume(); +	return useVolume.getAvgVolumePercent(Volume::MALL);
 }
 
 void DBusControlWrapper::increaseVolume()
@@ -80,30 +79,27 @@
 
 long DBusControlWrapper::absoluteVolumeMin()
 {
-	// @todo Is hardcoded do playbackVolume
-	return m_md->playbackVolume().minVolume();
+	Volume &useVolume = (m_md->playbackVolume().count() != 0) ? m_md->playbackVolume() \
: m_md->captureVolume(); +	return useVolume.minVolume();
 }
 
 long DBusControlWrapper::absoluteVolumeMax()
 {
-	// @todo Is hardcoded do playbackVolume
-	return m_md->playbackVolume().maxVolume();
+	Volume &useVolume = (m_md->playbackVolume().count() != 0) ? m_md->playbackVolume() \
: m_md->captureVolume(); +	return useVolume.maxVolume();
 }
 
 void DBusControlWrapper::setAbsoluteVolume(long absoluteVolume)
 {
-	Volume& volP = m_md->playbackVolume();
-	Volume& volC = m_md->captureVolume();
-	volP.setAllVolumes( absoluteVolume );
-	volC.setAllVolumes( absoluteVolume );
+	m_md->playbackVolume().setAllVolumes( absoluteVolume );
+	m_md->captureVolume().setAllVolumes( absoluteVolume );
 	m_md->mixer()->commitVolumeChange( m_md );
 }
 
 long DBusControlWrapper::absoluteVolume()
 {
-	// @todo hardcoded
-	Volume& vol = m_md->playbackVolume();
-	qreal avgVol= vol.getAvgVolume( Volume::MMAIN );
+	Volume &useVolume = (m_md->playbackVolume().count() != 0) ? m_md->playbackVolume() \
: m_md->captureVolume(); +	qreal avgVol= useVolume.getAvgVolume( Volume::MALL );
 	long avgVolRounded = avgVol <0 ? avgVol-.5 : avgVol+.5;
 	return avgVolRounded;
 }
@@ -137,8 +133,11 @@
 
 void DBusControlWrapper::setRecordSource(bool on)
 {
-	MixDevice* md = m_md->mixer()->getMixdeviceById(m_md->id());
-	if ( md != 0 )
-		md->setRecSource(on);
+	m_md->setRecSource(on);
 	m_md->mixer()->commitVolumeChange( m_md );
 }
+
+bool DBusControlWrapper::hasCaptureSwitch()
+{
+	return m_md->captureVolume().hasSwitch();
+}
--- trunk/KDE/kdemultimedia/kmix/dbus/dbuscontrolwrapper.h #1275736:1275737
@@ -38,6 +38,7 @@
 	Q_PROPERTY(bool mute READ isMuted WRITE setMute)
 	Q_PROPERTY(bool recordSource READ isRecordSource WRITE setRecordSource)
 	Q_PROPERTY(bool canMute READ canMute)
+	Q_PROPERTY(bool hasCaptureSwitch READ hasCaptureSwitch)
 
 	public:
 		DBusControlWrapper(MixDevice* parent, QString path);
@@ -65,6 +66,7 @@
 		void setMute(bool muted);
 		bool isMuted();
 
+		bool hasCaptureSwitch();
 		void setRecordSource(bool on);
 		bool isRecordSource();
 };
--- trunk/KDE/kdemultimedia/kmix/dbus/org.kde.kmix.control.xml #1275736:1275737
@@ -8,6 +8,7 @@
     <property access="readwrite" name="mute" type="b"/>
     <property access="read" name="canMute" type="b"/>
     <property access="readwrite" name="recordSource" type="b"/>
+    <property access="read" name="hasCaptureSwitch" type="b"/>
     <property access="readwrite" name="volume" type="i"/>
     <property access="readwrite" name="absoluteVolume" type="i"/>
     <property access="read" name="absoluteVolumeMin" type="i"/>
--- trunk/KDE/kdemultimedia/kmix/plasma/engine/mixer.operations #1275736:1275737
@@ -12,4 +12,9 @@
 	  <label>Mute</label>
 	</entry>
   </group>
+  <group name="setRecordSource">
+    <entry name="recordSource" type="Bool">
+      <label>Record Source</label>
+    </entry>
+  </group>
 </kcfg>
--- trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerengine.cpp #1275736:1275737
@@ -118,6 +118,8 @@
 		Q_FOREACH( QString controlPath, curmi->iface->controls() )
 			createControlInfo( curmi->id, controlPath );
 	}
+	// Update "Mixers" source
+	getMixersData();
 }
 
 void MixerEngine::clearInternalData(bool removeSources)
@@ -162,7 +164,6 @@
 	QStringList mixerIds;
 	if ( interface->isServiceRegistered( KMIX_DBUS_SERVICE ) )
 	{
-		// 'Unused' flag is used for cleanup
 		Q_FOREACH( MixerInfo* mi, m_mixers )
 			mixerIds.append( mi->id );
 		setData( "Mixers", "Mixers", mixerIds );
@@ -234,14 +235,23 @@
 		return false;
 	// Setting data
 	curci->updateRequired = true;
-	setData( source, "Can Be Muted", curci->iface->canMute() );
-	setData( source, "Volume", curci->iface->volume() );
-	setData( source, "Mute", curci->iface->mute() );
-	setData( source, "Readable Name", curci->iface->readableName() );
-	setData( source, "Icon", KIcon(curci->iface->iconName()) );
+	setControlData( curci );
 	return true;
 }
 
+void MixerEngine::setControlData(ControlInfo* ci)
+{
+	QString source = ci->mixerId + '/' + ci->id;
+	setData( source, "Volume", ci->iface->volume() );
+	setData( source, "Mute", ci->iface->mute() );
+	setData( source, "Can Be Muted", ci->iface->canMute() );
+	setData( source, "Readable Name", ci->iface->readableName() );
+	setData( source, "Icon", KIcon(ci->iface->iconName()) );
+	setData( source, "Record Source", ci->iface->recordSource() );
+	setData( source, "Has Capture Switch", ci->iface->hasCaptureSwitch() );
+}
+
+
 void MixerEngine::slotServiceRegistered( const QString &serviceName)
 {
 	// Let's give KMix some time to load
@@ -253,7 +263,8 @@
 {
 	if ( serviceName == KMIX_DBUS_SERVICE )
 		clearInternalData(true);
-	removeData( "Mixers", "Mixers" );
+	// Updating 'Mixers' source
+	getMixersData();
 }
 
 void MixerEngine::slotControlChanged()
@@ -265,14 +276,8 @@
 	// Updating all controls that might change
 	Q_FOREACH( ControlInfo* ci, m_controls.values( curmi->id ) )
 		if ( ci->updateRequired )
-		{
-			QString source = ci->mixerId + '/' + ci->id;
-			setData( source, "Can Be Muted", ci->iface->canMute() );
-			setData( source, "Volume", ci->iface->volume() );
-			setData( source, "Mute", ci->iface->mute() );
-			setData( source, "Readable Name", ci->iface->readableName() );
+			setControlData( ci );
 		}
-}
 
 void MixerEngine::slotControlsReconfigured()
 {
@@ -312,9 +317,8 @@
 		}
 	if ( curmi->updateRequired )
 	{
-		QString source = curmi->id;
-		setData( source, "Controls", controlIds );
-		setData( source, "Controls Readable Names", controlReadableNames );
+		setData( curmi->id, "Controls", controlIds );
+		setData( curmi->id, "Controls Readable Names", controlReadableNames );
 	}
 }
 
--- trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerengine.h #1275736:1275737
@@ -87,6 +87,7 @@
 	bool getMixersData();
 	bool getMixerData( const QString &source );
 	bool getControlData( const QString &source );
+	void setControlData( ControlInfo *ci );
 private slots:
 	void getInternalData();
 	void updateInternalMixersData();
--- trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerservice.cpp #1275736:1275737
@@ -60,7 +60,11 @@
 		setResult( res );
 		return;
 	}
-
+	else if ( operation == "setRecordSource" ) {
+		bool res = m_service->iface()->setProperty( "recordSource", \
parameters().value("recordSource").toBool() ); +		setResult( res );
+		return;
 }
+}
 
 #include "mixerservice.moc"


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

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