diff options
author | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2008-10-13 17:15:59 +0100 |
---|---|---|
committer | Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> | 2008-10-16 11:19:19 +0100 |
commit | ca0e709d50df8933206a79d40263b3354bca6d5a (patch) | |
tree | 40eb7f659ce2da45c5f8e58fe39454335ddbbf8f /src/olpc-buddy-view.c | |
parent | 4b3dc71155f5f6aebb5b32e12a388469b4de4e27 (diff) | |
download | telepathy-gabble-ca0e709d50df8933206a79d40263b3354bca6d5a.tar.gz |
Implement multi criterias buddy view requests
Diffstat (limited to 'src/olpc-buddy-view.c')
-rw-r--r-- | src/olpc-buddy-view.c | 60 |
1 files changed, 21 insertions, 39 deletions
diff --git a/src/olpc-buddy-view.c b/src/olpc-buddy-view.c index 0901c1bd4..60e0adc31 100644 --- a/src/olpc-buddy-view.c +++ b/src/olpc-buddy-view.c @@ -264,59 +264,41 @@ gabble_olpc_buddy_view_send_request (GabbleOlpcView *view, GabbleOlpcBuddyView *self = GABBLE_OLPC_BUDDY_VIEW (view); GabbleOlpcBuddyViewPrivate *priv = GABBLE_OLPC_BUDDY_VIEW_GET_PRIVATE (self); LmMessage *query; + LmMessageNode *buddy_node; gchar *max_str, *id_str; max_str = g_strdup_printf ("%u", view->max_size); id_str = g_strdup_printf ("%u", view->id); - /* TODO: Implement multi criterias properties */ - /* TODO: Always use the max_size argument */ + query = lm_message_build_with_sub_type (view->conn->olpc_gadget_buddy, + LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_GET, + '(', "view", "", + '@', "xmlns", NS_OLPC_BUDDY, + '@', "id", id_str, + '@', "size", max_str, + '(', "buddy", "", + '*', &buddy_node, + ')', + ')', NULL); + + /* BuddyView.Properties */ if (g_hash_table_size (priv->properties) != 0) { LmMessageNode *properties_node; - query = lm_message_build_with_sub_type (view->conn->olpc_gadget_buddy, - LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_GET, - '(', "view", "", - '@', "xmlns", NS_OLPC_BUDDY, - '@', "id", id_str, - '@', "size", max_str, - '(', "buddy", "", - '(', "properties", "", - '*', &properties_node, - '@', "xmlns", NS_OLPC_BUDDY_PROPS, - ')', - ')', - ')', - NULL); + properties_node = lm_message_node_add_child (buddy_node, "properties", + NULL); + lm_message_node_set_attribute (properties_node, "xmlns", + NS_OLPC_BUDDY_PROPS); lm_message_node_add_children_from_properties (properties_node, priv->properties, "property"); } - else if (priv->alias != NULL) - { - query = lm_message_build_with_sub_type (view->conn->olpc_gadget_buddy, - LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_GET, - '(', "view", "", - '@', "xmlns", NS_OLPC_BUDDY, - '@', "id", id_str, - '@', "size", max_str, - '(', "buddy", "", - '@', "alias", priv->alias, - ')', - ')', - NULL); - } - else + + /* BuddyView.Alias */ + if (priv->alias != NULL) { - query = lm_message_build_with_sub_type (view->conn->olpc_gadget_buddy, - LM_MESSAGE_TYPE_IQ, LM_MESSAGE_SUB_TYPE_GET, - '(', "view", "", - '@', "xmlns", NS_OLPC_BUDDY, - '@', "id", id_str, - '@', "size", max_str, - ')', - NULL); + lm_message_node_set_attribute (buddy_node, "alias", priv->alias); } g_free (max_str); |