diff --git a/.classpath b/.classpath
index 8f6a8dafe..785f7a0a5 100644
--- a/.classpath
+++ b/.classpath
@@ -1,94 +1,98 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/installer-exclude/libdbus-java-2.7.jar b/lib/installer-exclude/libdbus-java-2.7.jar
index e58e513ed..8dfd64242 100644
Binary files a/lib/installer-exclude/libdbus-java-2.7.jar and b/lib/installer-exclude/libdbus-java-2.7.jar differ
diff --git a/src/net/java/sip/communicator/impl/sysactivity/DBusNetworkManager.java b/src/net/java/sip/communicator/impl/sysactivity/DBusNetworkManager.java
new file mode 100644
index 000000000..c7c99e925
--- /dev/null
+++ b/src/net/java/sip/communicator/impl/sysactivity/DBusNetworkManager.java
@@ -0,0 +1,136 @@
+/*
+ * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.impl.sysactivity;
+
+import org.freedesktop.dbus.*;
+import org.freedesktop.dbus.exceptions.*;
+
+/**
+ * NetworkManager D-Bus Interface
+ *
+ * @author Damian Minkov
+ * @author Ingo Bauersachs
+ */
+@DBusInterfaceName("org.freedesktop.NetworkManager")
+public interface DBusNetworkManager
+ extends DBusInterface
+{
+ /*
+ * Types of NetworkManager states for versions < 0.9
+ */
+ public static final int NM_STATE_UNKNOWN = 0;
+ public static final int NM_STATE_ASLEEP = 1;
+ public static final int NM_STATE_CONNECTING = 2;
+ public static final int NM_STATE_CONNECTED = 3;
+ public static final int NM_STATE_DISCONNECTED = 4;
+
+ /*
+ * Types of NetworkManager states for versions >= 0.9
+ */
+ public static final int NM9_STATE_UNKNOWN = 0;
+ public static final int NM9_STATE_ASLEEP = 10;
+ public static final int NM9_STATE_DISCONNECTED = 20;
+ public static final int NM9_STATE_DISCONNECTING = 30;
+ public static final int NM9_STATE_CONNECTING = 40;
+ public static final int NM9_STATE_CONNECTED_LOCAL = 50;
+ public static final int NM9_STATE_CONNECTED_SITE = 60;
+ public static final int NM9_STATE_CONNECTED_GLOBAL = 70;
+
+ /**
+ * State change signal.
+ */
+ public class StateChange extends DBusSignal
+ {
+ /**
+ * The name of the signal.
+ */
+ public final String name;
+
+ /**
+ * The current status it holds.
+ */
+ public final UInt32 status;
+
+ /**
+ * Creates status change.
+ * @param path the path
+ * @param status the status
+ * @throws DBusException
+ */
+ public StateChange(String path, UInt32 status)
+ throws DBusException
+ {
+ super(path, status);
+ name = path;
+ this.status = status;
+ }
+
+ /**
+ * The current status.
+ * @return
+ */
+ public int getStatus()
+ {
+ return status.intValue();
+ }
+
+ /**
+ * Returns status description
+ * @return
+ */
+ public String getStatusName()
+ {
+ switch(status.intValue())
+ {
+ case NM_STATE_ASLEEP : return "Asleep";
+ case NM_STATE_CONNECTING : return "Connecting";
+ case NM_STATE_CONNECTED : return "Connected";
+ case NM_STATE_DISCONNECTED : return "Disconnected";
+ default : return "Unknown";
+ }
+ }
+ }
+
+ /**
+ * State changed signal.
+ */
+ public static class StateChanged extends StateChange
+ {
+ /**
+ * Creates status changed.
+ * @param path the path
+ * @param status the status
+ * @throws DBusException
+ */
+ public StateChanged(String path, UInt32 status)
+ throws DBusException
+ {
+ super(path, status);
+ }
+
+ /**
+ * Returns status description
+ * @return
+ */
+ @Override
+ public String getStatusName()
+ {
+ switch(status.intValue())
+ {
+ case NM9_STATE_UNKNOWN: return "Unknown";
+ case NM9_STATE_ASLEEP: return "Asleep";
+ case NM9_STATE_DISCONNECTED: return "Disconnected";
+ case NM9_STATE_DISCONNECTING: return "Disconnecting";
+ case NM9_STATE_CONNECTING: return "Connecting";
+ case NM9_STATE_CONNECTED_LOCAL: return "LocalConnectivity";
+ case NM9_STATE_CONNECTED_SITE: return "SiteConnectivity";
+ case NM9_STATE_CONNECTED_GLOBAL: return "GlobalConnectivity";
+ default : return "Unknown";
+ }
+ }
+ }
+}
diff --git a/src/net/java/sip/communicator/impl/sysactivity/NetworkManagerListenerImpl.java b/src/net/java/sip/communicator/impl/sysactivity/NetworkManagerListenerImpl.java
index 96bed151f..6208a8439 100644
--- a/src/net/java/sip/communicator/impl/sysactivity/NetworkManagerListenerImpl.java
+++ b/src/net/java/sip/communicator/impl/sysactivity/NetworkManagerListenerImpl.java
@@ -18,6 +18,7 @@
*
* @author Damian Minkov
*/
+@SuppressWarnings("rawtypes")
public class NetworkManagerListenerImpl
implements DBusSigHandler
{
@@ -77,7 +78,8 @@ public void start()
try
{
dbusConn.addSigHandler(DBus.NameOwnerChanged.class, this);
- dbusConn.addSigHandler(NetworkManager.StateChange.class, this);
+ dbusConn.addSigHandler(DBusNetworkManager.StateChange.class, this);
+ dbusConn.addSigHandler(DBusNetworkManager.StateChanged.class, this);
}
catch(DBusException e)
{
@@ -98,7 +100,10 @@ public void stop()
try
{
dbusConn.removeSigHandler(DBus.NameOwnerChanged.class, this);
- dbusConn.removeSigHandler(NetworkManager.StateChange.class, this);
+ dbusConn.removeSigHandler(
+ DBusNetworkManager.StateChange.class, this);
+ dbusConn.removeSigHandler(
+ DBusNetworkManager.StateChanged.class, this);
}
catch(DBusException e)
{
@@ -117,7 +122,7 @@ public void handle(DBusSignal dBusSignal)
DBus.NameOwnerChanged nameOwnerChanged =
(DBus.NameOwnerChanged)dBusSignal;
- if(nameOwnerChanged.name.equals(NetworkManager.class.getName()))
+ if(nameOwnerChanged.name.equals("org.freedesktop.NetworkManager"))
{
boolean b1 = nameOwnerChanged.old_owner != null
&& nameOwnerChanged.old_owner.length() > 0;
@@ -134,21 +139,26 @@ public void handle(DBusSignal dBusSignal)
}
}
}
- else if(dBusSignal instanceof NetworkManager.StateChange)
+ else if(dBusSignal instanceof DBusNetworkManager.StateChange)
{
- NetworkManager.StateChange stateChange =
- (NetworkManager.StateChange)dBusSignal;
+ DBusNetworkManager.StateChange stateChange =
+ (DBusNetworkManager.StateChange)dBusSignal;
SystemActivityEvent evt = null;
switch(stateChange.getStatus())
{
- case NetworkManager.NM_STATE_CONNECTED:
- case NetworkManager.NM_STATE_DISCONNECTED:
+ case DBusNetworkManager.NM_STATE_CONNECTED:
+ case DBusNetworkManager.NM_STATE_DISCONNECTED:
+ case DBusNetworkManager.NM9_STATE_DISCONNECTED:
+ case DBusNetworkManager.NM9_STATE_CONNECTED_LOCAL:
+ case DBusNetworkManager.NM9_STATE_CONNECTED_SITE:
+ case DBusNetworkManager.NM9_STATE_CONNECTED_GLOBAL:
evt = new SystemActivityEvent(
SysActivityActivator.getSystemActivityService(),
SystemActivityEvent.EVENT_NETWORK_CHANGE);
break;
- case NetworkManager.NM_STATE_ASLEEP:
+ case DBusNetworkManager.NM_STATE_ASLEEP:
+ case DBusNetworkManager.NM9_STATE_ASLEEP:
evt = new SystemActivityEvent(
SysActivityActivator.getSystemActivityService(),
SystemActivityEvent.EVENT_SLEEP);