summaryrefslogtreecommitdiff
path: root/src/olpc-buddy-view.c
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2008-10-13 17:15:59 +0100
committerGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2008-10-16 11:19:19 +0100
commitca0e709d50df8933206a79d40263b3354bca6d5a (patch)
tree40eb7f659ce2da45c5f8e58fe39454335ddbbf8f /src/olpc-buddy-view.c
parent4b3dc71155f5f6aebb5b32e12a388469b4de4e27 (diff)
downloadtelepathy-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.c60
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);