evolution r36878 - trunk/shell



Author: mbarnes
Date: Mon Dec 15 04:51:33 2008
New Revision: 36878
URL: http://svn.gnome.org/viewvc/evolution?rev=36878&view=rev

Log:
2008-12-14  Matthew Barnes  <mbarnes redhat com>

	** Fixes bug #564416

	* shell/e-shell-nm.c:
	We've been listening for obsolete D-Bus signals.
	Update to NetworkManager's current D-Bus API.



Modified:
   trunk/shell/ChangeLog
   trunk/shell/e-shell-nm.c

Modified: trunk/shell/e-shell-nm.c
==============================================================================
--- trunk/shell/e-shell-nm.c	(original)
+++ trunk/shell/e-shell-nm.c	Mon Dec 15 04:51:33 2008
@@ -36,11 +36,6 @@
 #include <dbus/dbus-glib.h>
 #include <NetworkManager/NetworkManager.h>
 
-typedef enum _ShellLineStatus {
-	E_SHELL_LINE_DOWN,
-	E_SHELL_LINE_UP
-} ShellLineStatus;
-
 gboolean e_shell_dbus_initialise (EShell *shell);
 
 static DBusConnection *dbus_connection = NULL;
@@ -63,11 +58,11 @@
                          DBusMessage *message, void *user_data)
 {
 	const char *object;
-	ShellLineStatus status;
 	EShell *shell = user_data;
 	GNOME_Evolution_ShellState shell_state;
 	EShellLineStatus line_status;
 	DBusError error = DBUS_ERROR_INIT;
+	guint32 state;
 
 	object = dbus_message_get_path (message);
 
@@ -81,23 +76,25 @@
 		return DBUS_HANDLER_RESULT_HANDLED;
 	}
 
-	if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceNoLongerActive"))
-		status = E_SHELL_LINE_DOWN;
-	else if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceNowActive"))
-		status = E_SHELL_LINE_UP;
-	else
+	if (!dbus_message_is_signal (message, NM_DBUS_INTERFACE, "StateChanged"))
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 
-	if (!dbus_message_get_args (message, &error, DBUS_TYPE_OBJECT_PATH,
-				    &object, DBUS_TYPE_INVALID))
+	dbus_message_get_args (
+		message, &error,
+		DBUS_TYPE_UINT32, &state,
+		DBUS_TYPE_INVALID);
+
+	if (dbus_error_is_set (&error)) {
+		g_warning ("%s", error.message);
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+	}
 
 	line_status = e_shell_get_line_status (shell);
 
-	if (line_status == E_SHELL_LINE_STATUS_ONLINE && status == E_SHELL_LINE_DOWN) {
+	if (line_status == E_SHELL_LINE_STATUS_ONLINE && state == NM_STATE_DISCONNECTED) {
 		shell_state = GNOME_Evolution_FORCED_OFFLINE;
 		e_shell_set_line_status (shell, shell_state);
-	} else if (line_status == E_SHELL_LINE_STATUS_FORCED_OFFLINE && status == E_SHELL_LINE_UP) {
+	} else if (line_status == E_SHELL_LINE_STATUS_FORCED_OFFLINE && state == NM_STATE_CONNECTED) {
 		shell_state = GNOME_Evolution_USER_ONLINE;
 		e_shell_set_line_status (shell, shell_state);
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]