]> git.0d.be Git - empathy.git/commitdiff
Implement _set_property
authorXavier Claessens <xclaesse@src.gnome.org>
Tue, 11 Mar 2008 12:23:08 +0000 (12:23 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Tue, 11 Mar 2008 12:23:08 +0000 (12:23 +0000)
svn path=/trunk/; revision=773

libempathy-gtk/empathy-group-chat.c
libempathy/empathy-tp-chat.c
libempathy/empathy-tp-chat.h

index a775d97d5eb73587d0dc63f72ded60541b57bd9d..e9a4b1700f825ff6e4dde25efae74a1f77edf063 100644 (file)
@@ -391,7 +391,7 @@ group_chat_topic_response_cb (GtkWidget       *dialog,
                        g_value_init (&value, G_TYPE_STRING);
                        g_value_set_string (&value, topic);
                        empathy_tp_chat_set_property (EMPATHY_TP_CHAT (priv->tp_chat),
-                                                     &value);
+                                                     "subject", &value);
                        g_value_unset (&value);
                }
        }
index 1579979f6edaa88cb755553a7f7b55b5f39fc94f..7ae3168c1146a84dbccc9078cab47c86cac68a6b 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <telepathy-glib/channel.h>
 #include <telepathy-glib/dbus.h>
+#include <telepathy-glib/util.h>
 
 #include "empathy-tp-chat.h"
 #include "empathy-contact-factory.h"
@@ -395,6 +396,10 @@ tp_chat_properties_changed_cb (TpProxy         *proxy,
        EmpathyTpChatPriv *priv = GET_PRIV (chat);
        guint              i, j;
 
+       if (!priv->had_properties_list || !properties) {
+               return;
+       }
+
        for (i = 0; i < properties->len; i++) {
                GValueArray    *prop_struct;
                TpChatProperty *property;
@@ -492,9 +497,44 @@ tp_chat_list_properties_cb (TpProxy         *proxy,
 
 void
 empathy_tp_chat_set_property (EmpathyTpChat *chat,
+                             const gchar   *name,
                              const GValue  *value)
 {
-       /* FIXME: not implemented */
+       EmpathyTpChatPriv *priv = GET_PRIV (chat);
+       TpChatProperty    *property;
+       guint              i;
+
+       for (i = 0; i < priv->properties->len; i++) {
+               property = g_ptr_array_index (priv->properties, i);
+               if (!tp_strdiff (property->name, name)) {
+                       GPtrArray   *properties;
+                       GValueArray *prop;
+                       GValue       id = {0, };
+                       GValue       dest_value = {0, };
+
+                       g_value_init (&id, G_TYPE_UINT);
+                       g_value_init (&dest_value, G_TYPE_VALUE);
+                       g_value_set_uint (&id, property->id);
+                       g_value_set_boxed (&dest_value, value);
+
+                       prop = g_value_array_new (2);
+                       g_value_array_append (prop, &id);
+                       g_value_array_append (prop, &dest_value);
+
+                       properties = g_ptr_array_sized_new (1);
+                       g_ptr_array_add (properties, prop);
+
+                       empathy_debug (DEBUG_DOMAIN, "Set property %s", name);
+                       tp_cli_properties_interface_call_set_properties (priv->channel, -1,
+                                                                        properties,
+                                                                        (tp_cli_properties_interface_callback_for_set_properties)
+                                                                        tp_chat_async_cb,
+                                                                        "Seting property", NULL,
+                                                                        G_OBJECT (chat));
+
+                       break;
+               }
+       }
 }
 
 static gboolean
index fd988ec2e547c6c9a64ceaa61b38539262a6c319..0f47d12c173979e4fcfe18acb0523e2a5d5be809 100644 (file)
@@ -69,6 +69,7 @@ void           empathy_tp_chat_set_state            (EmpathyTpChat      *chat,
                                                     TpChannelChatState  state);
 const gchar *  empathy_tp_chat_get_id               (EmpathyTpChat      *chat);
 void           empathy_tp_chat_set_property         (EmpathyTpChat      *chat,
+                                                    const gchar        *name,
                                                     const GValue       *value);
 
 G_END_DECLS