[polari] room: Add add_member/remove_member functions



commit 415997ae671dc70b7251a7ee8fe8a1a65837204d
Author: Florian Müllner <florian muellner gmail com>
Date:   Tue Jul 23 02:51:20 2013 +0200

    room: Add add_member/remove_member functions

 src/lib/polari-room.c |   48 +++++++++++++++++++++++++++++++++++++++++++++++-
 src/lib/polari-room.h |    3 +++
 2 files changed, 50 insertions(+), 1 deletions(-)
---
diff --git a/src/lib/polari-room.c b/src/lib/polari-room.c
index 8589e49..4f5fc14 100644
--- a/src/lib/polari-room.c
+++ b/src/lib/polari-room.c
@@ -107,10 +107,56 @@ polari_room_set_topic (PolariRoom *room,
   g_return_if_fail (POLARI_IS_ROOM (room));
 
   tp_cli_channel_interface_subject_call_set_subject (room->priv->channel, -1,
-      topic, NULL, NULL, NULL, G_OBJECT (room));
+      topic, NULL, NULL, NULL, NULL);
 
 }
 
+void
+polari_room_add_member (PolariRoom *room,
+                        TpContact  *member)
+{
+  TpChannel *channel;
+
+  g_return_if_fail (POLARI_IS_ROOM (room));
+
+  channel = room->priv->channel;
+
+  if (!tp_proxy_has_interface_by_id (TP_PROXY (channel),
+                                     TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP))
+    return;
+
+  {
+    TpHandle handle = tp_contact_get_handle (member);
+    GArray handles = { (char *)&handle, 1 };
+
+    tp_cli_channel_interface_group_call_add_members (channel,
+                                   -1, &handles, NULL, NULL, NULL, NULL, NULL);
+  }
+}
+
+void
+polari_room_remove_member (PolariRoom *room,
+                           TpContact  *member)
+{
+  TpChannel *channel;
+
+  g_return_if_fail (POLARI_IS_ROOM (room));
+
+  channel = room->priv->channel;
+
+  if (!tp_proxy_has_interface_by_id (TP_PROXY (channel),
+                                     TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP))
+    return;
+
+  {
+    TpHandle handle = tp_contact_get_handle (member);
+    GArray handles = { (char *)&handle, 1 };
+
+    tp_cli_channel_interface_group_call_remove_members (channel,
+                                   -1, &handles, NULL, NULL, NULL, NULL, NULL);
+  }
+}
+
 int
 polari_room_compare (PolariRoom *room,
                      PolariRoom *other)
diff --git a/src/lib/polari-room.h b/src/lib/polari-room.h
index 057ce49..4570a01 100644
--- a/src/lib/polari-room.h
+++ b/src/lib/polari-room.h
@@ -53,6 +53,9 @@ gboolean polari_room_should_highlight_message (PolariRoom *room,
 
 void  polari_room_set_topic (PolariRoom *room, const char *topic);
 
+void  polari_room_add_member    (PolariRoom *room, TpContact *member);
+void  polari_room_remove_member (PolariRoom *room, TpContact *member);
+
 int   polari_room_compare (PolariRoom *room, PolariRoom *other);
 
 G_END_DECLS


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