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);