[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