[Telepathy-commits] [telepathy-salut/master] add a requested attribute to muc-channel so muc that are created because of a tube channel request won't have requested set to TRUE

Guillaume Desmottes guillaume.desmottes at collabora.co.uk
Wed Nov 26 08:30:51 PST 2008


---
 src/salut-avahi-muc-channel.c                 |    4 +++-
 src/salut-avahi-muc-channel.h                 |    3 ++-
 src/salut-avahi-muc-manager.c                 |    5 +++--
 src/salut-muc-channel.c                       |    9 ++++++---
 src/salut-muc-manager.c                       |   14 +++++++++-----
 src/salut-muc-manager.h                       |    2 +-
 tests/twisted/avahi/test-request-muc-tubes.py |    4 ++--
 7 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/src/salut-avahi-muc-channel.c b/src/salut-avahi-muc-channel.c
index 0a30cac..da8579b 100644
--- a/src/salut-avahi-muc-channel.c
+++ b/src/salut-avahi-muc-channel.c
@@ -345,7 +345,8 @@ salut_avahi_muc_channel_new (SalutConnection *connection,
                        SalutAvahiDiscoveryClient *discovery_client,
                        TpHandle initiator,
                        gboolean creator,
-                       SalutXmppConnectionManager *xcm)
+                       SalutXmppConnectionManager *xcm,
+                       gboolean requested)
 {
   return g_object_new (SALUT_TYPE_AVAHI_MUC_CHANNEL,
       "connection", connection,
@@ -357,5 +358,6 @@ salut_avahi_muc_channel_new (SalutConnection *connection,
       "initiator-handle", initiator,
       "creator", creator,
       "xmpp-connection-manager", xcm,
+      "requested", requested,
       NULL);
 }
diff --git a/src/salut-avahi-muc-channel.h b/src/salut-avahi-muc-channel.h
index 4af06fb..ae9f151 100644
--- a/src/salut-avahi-muc-channel.h
+++ b/src/salut-avahi-muc-channel.h
@@ -65,7 +65,8 @@ GType salut_avahi_muc_channel_get_type (void);
 SalutAvahiMucChannel * salut_avahi_muc_channel_new (SalutConnection *connection,
     const gchar *path, GibberMucConnection *muc_connection, TpHandle handle,
     const gchar *name, SalutAvahiDiscoveryClient *discovery_client,
-    TpHandle initiator, gboolean creator, SalutXmppConnectionManager *xcm);
+    TpHandle initiator, gboolean creator, SalutXmppConnectionManager *xcm,
+    gboolean requested);
 
 G_END_DECLS
 
diff --git a/src/salut-avahi-muc-manager.c b/src/salut-avahi-muc-manager.c
index 8c64d14..ae2d15e 100644
--- a/src/salut-avahi-muc-manager.c
+++ b/src/salut-avahi-muc-manager.c
@@ -129,14 +129,15 @@ salut_avahi_muc_manager_create_muc_channel (
     const gchar *name,
     TpHandle initiator,
     gboolean creator,
-    SalutXmppConnectionManager *xcm)
+    SalutXmppConnectionManager *xcm,
+    gboolean requested)
 {
   SalutAvahiMucManager *self = SALUT_AVAHI_MUC_MANAGER (mgr);
   SalutAvahiMucManagerPrivate *priv = SALUT_AVAHI_MUC_MANAGER_GET_PRIVATE (self);
 
   return SALUT_MUC_CHANNEL (salut_avahi_muc_channel_new (connection,
         path, muc_connection, handle, name, priv->discovery_client, initiator,
-        creator, xcm));
+        creator, xcm, requested));
 }
 
 static void
diff --git a/src/salut-muc-channel.c b/src/salut-muc-channel.c
index adc4b9f..6249dd9 100644
--- a/src/salut-muc-channel.c
+++ b/src/salut-muc-channel.c
@@ -121,6 +121,7 @@ struct _SalutMucChannelPrivate
   GHashTable *senders;
   SalutMucManager *muc_manager;
   TpHandle initiator;
+  gboolean requested;
 };
 
 #define SALUT_MUC_CHANNEL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SALUT_TYPE_MUC_CHANNEL, SalutMucChannelPrivate))
@@ -201,8 +202,7 @@ salut_muc_channel_get_property (GObject    *object,
       }
       break;
     case PROP_REQUESTED:
-      g_value_set_boolean (value,
-          (priv->initiator == tp_base_connection_get_self_handle (base_conn)));
+      g_value_set_boolean (value, priv->requested);
       break;
       case PROP_CHANNEL_DESTROYED:
         /* TODO: this should be FALSE if there are still pending messages, so
@@ -276,6 +276,9 @@ salut_muc_channel_set_property (GObject     *object,
     case PROP_XMPP_CONNECTION_MANAGER:
       priv->xmpp_connection_manager = g_value_get_object (value);
       break;
+    case PROP_REQUESTED:
+      priv->requested = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
       break;
@@ -780,7 +783,7 @@ salut_muc_channel_class_init (SalutMucChannelClass *salut_muc_channel_class) {
   param_spec = g_param_spec_boolean ("requested", "Requested?",
       "True if this channel was requested by the local user",
       FALSE,
-      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+      G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
   g_object_class_install_property (object_class, PROP_REQUESTED, param_spec);
 
   param_spec = g_param_spec_uint ("initiator-handle", "Initiator's handle",
diff --git a/src/salut-muc-manager.c b/src/salut-muc-manager.c
index f1dd47b..01404d4 100644
--- a/src/salut-muc-manager.c
+++ b/src/salut-muc-manager.c
@@ -462,7 +462,8 @@ salut_muc_manager_new_muc_channel (SalutMucManager *mgr,
                                    TpHandle handle,
                                    GibberMucConnection *connection,
                                    TpHandle initiator,
-                                   gboolean new_connection)
+                                   gboolean new_connection,
+                                   gboolean requested)
 {
   SalutMucManagerPrivate *priv = SALUT_MUC_MANAGER_GET_PRIVATE(mgr);
   TpBaseConnection *base_connection = TP_BASE_CONNECTION(priv->connection);
@@ -484,7 +485,7 @@ salut_muc_manager_new_muc_channel (SalutMucManager *mgr,
 
   chan = SALUT_MUC_MANAGER_GET_CLASS (mgr)->create_muc_channel (mgr,
       priv->connection, path, connection, handle, name, initiator,
-      new_connection, priv->xmpp_connection_manager);
+      new_connection, priv->xmpp_connection_manager, requested);
   g_free (path);
 
   g_signal_connect (chan, "closed", G_CALLBACK (muc_channel_closed_cb), mgr);
@@ -556,6 +557,7 @@ salut_muc_manager_request_new_muc_channel (SalutMucManager *mgr,
   gboolean r;
   GSList *tokens = NULL;
   SalutRoomlistManager *roomlist_manager;
+  gboolean requested;
 
   g_object_get (priv->connection, "roomlist-manager", &roomlist_manager, NULL);
 
@@ -608,8 +610,11 @@ salut_muc_manager_request_new_muc_channel (SalutMucManager *mgr,
     }
   DEBUG ("Connect succeeded");
 
+  requested = (request_token != NULL);
+
   text_chan = salut_muc_manager_new_muc_channel (mgr, handle,
-      connection, base_connection->self_handle, params == NULL);
+      connection, base_connection->self_handle, params == NULL,
+      requested);
   r = salut_muc_channel_invited (text_chan,
         base_connection->self_handle, NULL, NULL);
   /* Inviting ourselves to a connected channel should always
@@ -645,7 +650,6 @@ create_tubes_channel (SalutMucManager *self,
   if (text_chan == NULL)
     {
       DEBUG ("have to create the text channel before the tubes one");
-      /* FIXME: this channel will come out with Requested: True. */
       text_chan = salut_muc_manager_request_new_muc_channel (self,
           handle, NULL, error);
 
@@ -940,7 +944,7 @@ invite_stanza_callback (SalutXmppConnectionManager *mgr,
         }
       /* Need to create a new one */
       chan = salut_muc_manager_new_muc_channel (self, room_handle,
-          connection, inviter_handle, FALSE);
+          connection, inviter_handle, FALSE, FALSE);
 
       tp_channel_manager_emit_new_channel (self, TP_EXPORTABLE_CHANNEL (chan),
           NULL);
diff --git a/src/salut-muc-manager.h b/src/salut-muc-manager.h
index 2c50066..38e57cf 100644
--- a/src/salut-muc-manager.h
+++ b/src/salut-muc-manager.h
@@ -42,7 +42,7 @@ struct _SalutMucManagerClass {
         SalutConnection *connection, const gchar *path,
         GibberMucConnection *muc_connection, TpHandle handle,
         const gchar *name, TpHandle initiator, gboolean creator,
-        SalutXmppConnectionManager *xcm);
+        SalutXmppConnectionManager *xcm, gboolean requested);
 };
 
 struct _SalutMucManager {
diff --git a/tests/twisted/avahi/test-request-muc-tubes.py b/tests/twisted/avahi/test-request-muc-tubes.py
index d2a7e90..2f1076a 100644
--- a/tests/twisted/avahi/test-request-muc-tubes.py
+++ b/tests/twisted/avahi/test-request-muc-tubes.py
@@ -66,7 +66,7 @@ def test(q, bus, conn):
     assert props[tp_name_prefix + '.Channel.TargetHandleType'] == HT_ROOM
     assert props[tp_name_prefix + '.Channel.TargetHandle'] == handle
     assert props[tp_name_prefix + '.Channel.TargetID'] == 'my-first-room'
-    assert props[tp_name_prefix + '.Channel.Requested'] == True
+    assert props[tp_name_prefix + '.Channel.Requested'] == False
     assert props[tp_name_prefix + '.Channel.InitiatorHandle'] \
             == conn.GetSelfHandle()
     assert props[tp_name_prefix + '.Channel.InitiatorID'] \
@@ -152,7 +152,7 @@ def test(q, bus, conn):
     assert text_props[tp_name_prefix + '.Channel.TargetHandleType'] == HT_ROOM
     assert text_props[tp_name_prefix + '.Channel.TargetHandle'] == handle
     assert text_props[tp_name_prefix + '.Channel.TargetID'] == 'my-second-room'
-    assert text_props[tp_name_prefix + '.Channel.Requested'] == True
+    assert text_props[tp_name_prefix + '.Channel.Requested'] == False
     assert text_props[tp_name_prefix + '.Channel.InitiatorHandle'] \
             == conn.GetSelfHandle()
     assert text_props[tp_name_prefix + '.Channel.InitiatorID'] \
-- 
1.5.6.5




More information about the Telepathy-commits mailing list