Attached is a proposed patch to fix a couple of bugs and provide access to some information that was already indexed internally.<br><br>Index: libs/solid/control/networkinterface.h<br>===================================================================<br>
--- libs/solid/control/networkinterface.h&nbsp;&nbsp;&nbsp; (revision 782822)<br>+++ libs/solid/control/networkinterface.h&nbsp;&nbsp;&nbsp; (working copy)<br>@@ -203,6 +203,14 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NetworkList networks() const;<br>&nbsp;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * Retrieves the active network on the device<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * For wired network interfaces this will always be the same network,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * but for wireless networks this will be the associated AP.<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QString activeNetwork() const;<br>+<br><br>This provides data that was stored in activeNetPath under NetworkManager-networkinterface.<br><br><br><br><br>Index: solid/networkmanager-0.6/NetworkManager-networkinterface.cpp<br>
===================================================================<br>--- solid/networkmanager-0.6/NetworkManager-networkinterface.cpp&nbsp;&nbsp;&nbsp; (revision 782822)<br>+++ solid/networkmanager-0.6/NetworkManager-networkinterface.cpp&nbsp;&nbsp;&nbsp; (working copy)<br>
@@ -53,27 +53,27 @@<br>&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; //kDebug(1441) &lt;&lt; /*&quot;deserialize args: &quot; &lt;&lt; message.arguments() &lt;&lt; */&quot;signature: &quot; &lt;&lt; message.signature();<br>&nbsp;&nbsp;&nbsp;&nbsp; QList&lt;QVariant&gt; args = message.arguments();<br>
-&nbsp;&nbsp;&nbsp; device.path.setPath(args.takeFirst().toString());<br>-&nbsp;&nbsp;&nbsp; device.interface = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; device.type = args.takeFirst().toUInt();<br>-&nbsp;&nbsp;&nbsp; device.udi = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; device.active = args.takeFirst().toBool();<br>
-&nbsp;&nbsp;&nbsp; device.activationStage = args.takeFirst().toUInt();<br>-&nbsp;&nbsp;&nbsp; network.ipv4Address = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; network.subnetMask = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; network.broadcast = args.takeFirst().toString();<br>
-&nbsp;&nbsp;&nbsp; device.hardwareAddress = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; network.route = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; network.primaryDNS = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; network.secondaryDNS = args.takeFirst().toString();<br>
-&nbsp;&nbsp;&nbsp; device.mode = args.takeFirst().toInt();<br>-&nbsp;&nbsp;&nbsp; device.strength = args.takeFirst().toInt();<br>-&nbsp;&nbsp;&nbsp; device.linkActive = args.takeFirst().toBool();<br>-&nbsp;&nbsp;&nbsp; device.speed = args.takeFirst().toInt();<br>-&nbsp;&nbsp;&nbsp; device.capabilities = args.takeFirst().toUInt();<br>
-&nbsp;&nbsp;&nbsp; device.capabilitiesType = args.takeFirst().toUInt();<br>-&nbsp;&nbsp;&nbsp; device.activeNetPath = args.takeFirst().toString();<br>-&nbsp;&nbsp;&nbsp; device.networks = args.takeFirst().toStringList();<br>+&nbsp;&nbsp;&nbsp; device.path.setPath((args.size() != 0) ? args.takeFirst().toString() : QString());<br>
+&nbsp;&nbsp;&nbsp; device.interface = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>+&nbsp;&nbsp;&nbsp; device.type = (args.size() != 0) ? args.takeFirst().toUInt() : 0;<br>+&nbsp;&nbsp;&nbsp; device.udi = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>
+&nbsp;&nbsp;&nbsp; device.active = (args.size() != 0) ? args.takeFirst().toBool() : false;<br>+&nbsp;&nbsp;&nbsp; device.activationStage = (args.size() != 0) ? args.takeFirst().toUInt() : 0;<br>+&nbsp;&nbsp;&nbsp; network.ipv4Address = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>
+&nbsp;&nbsp;&nbsp; network.subnetMask = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>+&nbsp;&nbsp;&nbsp; network.broadcast = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>+&nbsp;&nbsp;&nbsp; device.hardwareAddress = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>
+&nbsp;&nbsp;&nbsp; network.route = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>+&nbsp;&nbsp;&nbsp; network.primaryDNS = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>+&nbsp;&nbsp;&nbsp; network.secondaryDNS = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>
+&nbsp;&nbsp;&nbsp; device.mode = (args.size() != 0) ? args.takeFirst().toInt() : 0;<br>+&nbsp;&nbsp;&nbsp; device.strength = (args.size() != 0) ? args.takeFirst().toInt() : 0;<br>+&nbsp;&nbsp;&nbsp; device.linkActive = (args.size() != 0) ? args.takeFirst().toBool() : false;<br>
+&nbsp;&nbsp;&nbsp; device.speed = (args.size() != 0) ? args.takeFirst().toInt() : 0;<br>+&nbsp;&nbsp;&nbsp; device.capabilities = (args.size() != 0) ? args.takeFirst().toUInt() : 0;<br>+&nbsp;&nbsp;&nbsp; device.capabilitiesType = (args.size() != 0) ? args.takeFirst().toUInt() : 0;<br>
+&nbsp;&nbsp;&nbsp; device.activeNetPath = (args.size() != 0) ? args.takeFirst().toString() : QString();<br>+&nbsp;&nbsp;&nbsp; device.networks = (args.size() != 0) ? args.takeFirst().toStringList() : QStringList();<br><br><br>This prevents a crash when trying to create a networkinterface device with an invalid uni.<br>
<br><br>@@ -183,7 +183,7 @@<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (d-&gt;type == Solid::Control::NetworkInterface::Ieee8023)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net = new NMNetwork(uni);<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net-&gt;setActivated(true);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //net-&gt;setActivated(true);<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if (d-&gt;type == Solid::Control::NetworkInterface::Ieee80211)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br><br>this prevents ethernet from becoming the active network which would make knetworkmanager do a little dance if ethernet was unplugged.<br>
<br>Let me know you thoughts,<br>Chris<br>