<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="http://svn.reviewboard.kde.org/r/6587/">http://svn.reviewboard.kde.org/r/6587/</a>
</td>
</tr>
</table>
<br />
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://svn.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
<tr>
<td>
<div>Review request for Plasma and Diego Casella.</div>
<div>By Igor Poboiko.</div>
<p style="color: grey;"><i>Updated April 7, 2011, 8:40 a.m.</i></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Changed QDBusObjectPath everywhere to QString, since not all software supports DBus OBJECT_PATH.</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This patch reworks KMix DBus API and adds a plasma dataengine+service as a frontend to information provided by DBus.
New DBus structure is:
- /Mixers
used to get some global information, such as available mixers list and global master mixer
- /Mixers/MIXER_ID
used to get information about mixer with id=MIXER_ID. It provides such information as list of available controls, name of this mixer, id, etc
- /Mixers/MIXER_ID/CONTROL_ID
used to get and set information about control. Such information as volume level, mute, name of control, etc.
It also adds a DBus signals which are emitted when new mixer/control appears, or volume level changes.
It also splits all dbus-related code to separate class, DBus{KMix,Mixer,Control}Wrapper.
The Plasma Dataengine:
By default, the only available source is "KMix". It provides information global information about KMix: is KMix running, and list of available mixers. (its IDs)
Source for every mixer is called by it's ID (for example, "ALSA::HDA_Intel:1"). This source provides such information about current Mixer as: it's readable name, is it opened, its balance and list of available controls. It also adds basic sources for every control, which provides only information about its readable name
Sources for controls are called by 'MIXER_ID/CONTROL_ID' (for example, "ALSA::HDA_Intel:1/Master:0"). If you request this source, it will provide such information as its readable name, is it muted and its volume level (which are updates automatically, using DBus signals).
There is a service available for controls sources. It provides such methods as setVolume() and setMute().
It doesn't close bug 171287, but it becomes one step closer to its solving :)
And, I'm not very familiar with CMake, but it would be great idea to make plasma part optional.
</pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">KMix from KDE SC 4.6.0 compiles ok with this patch, and patch applies to current trunk.
Tested on system with one card and with ALSA backend, so I don't know is plasma dataengine works correctly with plugging/unplugging mixers (but it should).
All DBus methods/properties works fine, signals are emitted, volume can be set using DBus methods.
Plasma dataengine was tested using plasmaengineexplorer.
All works fine except the one thing. When I request an source for Mixer, it also adds soucres for controls. And then when I request source for already available Control, it doesn't react anyhow. But when I set "Update every % ms", and click "Reqeust", it works fine. If I request a source for control BEFORE requesting the source for mixer, all works fine too (without setting "Update every % ms"). I don't know is it a plasmaengineexplorer bug, or my.</pre>
</td>
</tr>
</table>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Bugs: </b>
<a href="https://bugs.kde.org/show_bug.cgi?id=171287">171287</a>
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> (updated)</h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>/trunk/KDE/kdemultimedia/kmix/core/mixdevice.h <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/apps/kmix.cpp <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/CMakeLists.txt <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/core/mixdevice.cpp <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/core/mixer.h <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/core/mixer.cpp <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/dbuscontrolwrapper.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/dbuscontrolwrapper.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/dbusmixerwrapper.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/dbusmixerwrapper.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/dbusmixsetwrapper.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/dbusmixsetwrapper.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/org.kde.kmix.control.xml <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/org.kde.kmix.mixer.xml <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/dbus/org.kde.kmix.mixset.xml <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/gui/kmixdockwidget.cpp <span style="color: grey">(1225808)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/mixer.operations <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerengine.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerengine.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerservice.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/mixerservice.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/plasma/engine/plasma-engine-mixer.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>/trunk/KDE/kdemultimedia/kmix/tests/CMakeLists.txt <span style="color: grey">(1225808)</span></li>
</ul>
<p><a href="http://svn.reviewboard.kde.org/r/6587/diff/" style="margin-left: 3em;">View Diff</a></p>
</td>
</tr>
</table>
</div>
</body>
</html>