diff options
author | Andre Moreira Magalhaes (andrunko) <andre.magalhaes@collabora.co.uk> | 2011-04-14 01:40:55 -0300 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2011-04-20 17:41:00 +0100 |
commit | f99d23fb33e5c82132556a1228472a98a2bb2bda (patch) | |
tree | fb5fa7d2d4d790a0c4ae6796989cb2e977f2c4a1 /telepathy-glib/presence-mixin.c | |
parent | dd82637259edc5fc20d86d96fb192a77e55210bb (diff) | |
download | telepathy-glib-f99d23fb33e5c82132556a1228472a98a2bb2bda.tar.gz |
Add support for Conn.SimplePresence.MaximumStatusMessageLength.
Diffstat (limited to 'telepathy-glib/presence-mixin.c')
-rw-r--r-- | telepathy-glib/presence-mixin.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/telepathy-glib/presence-mixin.c b/telepathy-glib/presence-mixin.c index e528e0eb2..6039e9267 100644 --- a/telepathy-glib/presence-mixin.c +++ b/telepathy-glib/presence-mixin.c @@ -423,6 +423,7 @@ tp_presence_mixin_class_init (GObjectClass *obj_cls, mixin_cls->get_contact_statuses = get_contact_statuses; mixin_cls->set_own_status = set_own_status; mixin_cls->statuses = statuses; + mixin_cls->get_maximum_status_message_length = NULL; for (i = 0; statuses[i].name != NULL; i++) { @@ -1226,11 +1227,13 @@ tp_presence_mixin_iface_init (gpointer g_iface, gpointer iface_data) enum { MIXIN_DP_SIMPLE_STATUSES, + MIXIN_DP_SIMPLE_MAX_STATUS_MESSAGE_LENGTH, NUM_MIXIN_SIMPLE_DBUS_PROPERTIES }; static TpDBusPropertiesMixinPropImpl known_simple_presence_props[] = { { "Statuses", NULL, NULL }, + { "MaximumStatusMessageLength", NULL, NULL }, { NULL } }; @@ -1242,6 +1245,8 @@ tp_presence_mixin_get_simple_presence_dbus_property (GObject *object, gpointer unused G_GNUC_UNUSED) { + TpPresenceMixinClass *mixin_cls = + TP_PRESENCE_MIXIN_CLASS (G_OBJECT_GET_CLASS (object)); static GQuark q[NUM_MIXIN_SIMPLE_DBUS_PROPERTIES] = { 0, }; DEBUG ("called."); @@ -1249,14 +1254,14 @@ tp_presence_mixin_get_simple_presence_dbus_property (GObject *object, if (G_UNLIKELY (q[0] == 0)) { q[MIXIN_DP_SIMPLE_STATUSES] = g_quark_from_static_string ("Statuses"); + q[MIXIN_DP_SIMPLE_MAX_STATUS_MESSAGE_LENGTH] = + g_quark_from_static_string ("MaximumStatusMessageLength"); } g_return_if_fail (object != NULL); if (name == q[MIXIN_DP_SIMPLE_STATUSES]) { - TpPresenceMixinClass *mixin_cls = - TP_PRESENCE_MIXIN_CLASS (G_OBJECT_GET_CLASS (object)); GHashTable *ret; GValueArray *status; int i; @@ -1309,6 +1314,18 @@ tp_presence_mixin_get_simple_presence_dbus_property (GObject *object, } g_value_take_boxed (value, ret); } + else if (name == q[MIXIN_DP_SIMPLE_MAX_STATUS_MESSAGE_LENGTH]) + { + guint max_status_message_length = 0; + + g_assert (G_VALUE_HOLDS (value, G_TYPE_UINT)); + + if (mixin_cls->get_maximum_status_message_length != NULL) + max_status_message_length = + mixin_cls->get_maximum_status_message_length (object); + + g_value_set_uint (value, max_status_message_length); + } else { g_return_if_reached (); |