[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