[Galago-commits] r2923 - in branches/libgalago/push-presence: . libgalago

galago-commits at freedesktop.org galago-commits at freedesktop.org
Sun Oct 8 12:17:40 PDT 2006


Author: chipx86
Date: 2006-10-08 12:17:33 -0700 (Sun, 08 Oct 2006)
New Revision: 2923

Modified:
   branches/libgalago/push-presence/ChangeLog
   branches/libgalago/push-presence/libgalago/galago-presence.c
Log:
Add some basic code for get_enabled_statuses and get_status_enabled.


Modified: branches/libgalago/push-presence/ChangeLog
===================================================================
--- branches/libgalago/push-presence/ChangeLog	2006-10-08 18:21:33 UTC (rev 2922)
+++ branches/libgalago/push-presence/ChangeLog	2006-10-08 19:17:33 UTC (rev 2923)
@@ -1,3 +1,8 @@
+Sun Oct 08 15:15:27 EDT 2006  Christian Hammond <chipx86 at chipx86.com>
+
+	* libgalago/galago-presence.c:
+	  - Add some basic code for get_enabled_statuses and get_status_enabled.
+
 Mon Jul 03 02:07:00 PDT 2006  Christian Hammond <chipx86 at chipx86.com>
 
 	* libgalago/galago-presence.c:

Modified: branches/libgalago/push-presence/libgalago/galago-presence.c
===================================================================
--- branches/libgalago/push-presence/libgalago/galago-presence.c	2006-10-08 18:21:33 UTC (rev 2922)
+++ branches/libgalago/push-presence/libgalago/galago-presence.c	2006-10-08 19:17:33 UTC (rev 2923)
@@ -575,6 +575,8 @@
 													  "EnableStatus",
 													  FALSE, &iter);
 
+		dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &status_id);
+
 		va_start(args, attr_value);
 		append_attributes(&iter, attr_id, attr_value, args);
 		va_end(args);
@@ -598,27 +600,79 @@
 	if (GALAGO_OBJECT_IS_LOCAL(presence) && galago_is_connected() &&
 		galago_is_feed())
 	{
+		galago_dbus_send_message(GALAGO_OBJECT(presence), "DisableStatus",
+								 galago_value_new(GALAGO_VALUE_TYPE_STRING,
+												  &status_id, NULL));
 	}
 }
 
 GList *
 galago_presence_get_enabled_statuses(const GalagoPresence *presence)
 {
-	g_return_val_if_fail(presence != NULL,                        NULL);
-	g_return_val_if_fail(GALAGO_IS_PRESENCE(presence),            NULL);
+	g_return_val_if_fail(presence != NULL,             NULL);
+	g_return_val_if_fail(GALAGO_IS_PRESENCE(presence), NULL);
 
-	return NULL;
+	if (query && GALAGO_OBJECT_IS_REMOTE(presence) &&
+		!galago_is_daemon() && galago_is_connected())
+	{
+		DBusMessageIter *iter;
+		DBusMessage *message, *reply;
+		DBusError error;
+		GList *statuses;
+
+		message = galago_dbus_message_new_method_call(GALAGO_OBJECT(presence),
+													  "GetEnabledStatuses",
+													  FALSE, NULL);
+
+		dbus_error_init(&error);
+		reply = dbus_connection_send_with_reply_and_block(
+			galago_get_dbus_conn(), message, -1, &error);
+		dbus_message_unref(message);
+
+		if (dbus_error_is_set(&error))
+		{
+			g_warning("Error sending GetEnabledStatuses: %s", error.message);
+			return;
+		}
+
+		g_assert(reply != NULL);
+
+		dbus_message_iter_init(reply, &iter);
+		dbus_message_iter_recurse(&iter, &array_iter);
+
+		while (dbus_message_iter_get_arg_type(&array_iter) != DBUS_TYPE_INVALID)
+	}
+
+	return presence->priv->enabled_statuses;
 }
 
 gboolean
 galago_presence_get_status_enabled(const GalagoPresence *presence,
 								   const char *status_id)
 {
+	gboolean enabled = FALSE;
+
 	g_return_val_if_fail(presence != NULL,                        FALSE);
 	g_return_val_if_fail(GALAGO_IS_PRESENCE(presence),            FALSE);
 	g_return_val_if_fail(status_id != NULL && *status_id != '\0', FALSE);
 
-	return FALSE;
+	if (GALAGO_OBJECT_IS_LOCAL(presence))
+	{
+		GList *l;
+
+		for (l = presence->priv->statuses; l != NULL; l = l->next)
+		{
+		}
+	}
+	else if (GALAGO_OBJECT_IS_REMOTE(presence) && galago_is_connected())
+	{
+		enabled = GPOINTER_TO_INT(galago_dbus_send_message_with_reply(
+			GALAGO_OBJECT(presence), "GetStatusEnabled",
+			galago_value_new(GALAGO_VALUE_TYPE_STRING, &status_id, NULL),
+			NULL));
+	}
+
+	return enabled;
 }
 
 static void



More information about the galago-commits mailing list