diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-07-14 15:59:01 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-07-15 16:22:17 +0100 |
commit | 1a82b6840c78862d1a312c420a7eadbc5617f8bf (patch) | |
tree | e9c2c984403ff938c6ab2be21b7e045e138d18ea /src/protocol.c | |
parent | 6bacd611596621c34ac96e4d9eac758f16a18a4e (diff) | |
download | telepathy-haze-1a82b6840c78862d1a312c420a7eadbc5617f8bf.tar.gz |
HazeProtocol: use PurplePlugin to get the English name for the protocol
Diffstat (limited to 'src/protocol.c')
-rw-r--r-- | src/protocol.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/protocol.c b/src/protocol.c index 744c779..79e053d 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -36,6 +36,7 @@ G_DEFINE_TYPE (HazeProtocol, haze_protocol, TP_TYPE_BASE_PROTOCOL) struct _HazeProtocolPrivate { + PurplePlugin *plugin; gchar *prpl_id; PurplePluginProtocolInfo *prpl_info; HazeParameterMapping *parameter_map; @@ -140,6 +141,7 @@ haze_protocol_build_list (void) /* default behaviour for unknown protocols */ protocol = g_object_new (HAZE_TYPE_PROTOCOL, "name", tp_name, + "plugin", plugin, "prpl-id", p_info->id, "prpl-info", prpl_info, NULL); @@ -148,6 +150,7 @@ haze_protocol_build_list (void) { protocol = g_object_new (HAZE_TYPE_PROTOCOL, "name", info->tp_protocol_name, + "plugin", plugin, "prpl-id", p_info->id, "prpl-info", prpl_info, "parameter-map", info->parameter_map, @@ -465,7 +468,8 @@ finally: enum { - PROP_PRPL_ID = 1, + PROP_PLUGIN = 1, + PROP_PRPL_ID, PROP_PRPL_INFO, PROP_PARAMETER_MAP, } HazeProtocolProperties; @@ -560,6 +564,10 @@ haze_protocol_get_property (GObject *object, g_value_set_pointer (value, self->priv->parameter_map); break; + case PROP_PLUGIN: + g_value_set_pointer (value, self->priv->plugin); + break; + case PROP_PRPL_ID: g_value_set_string (value, self->priv->prpl_id); break; @@ -589,6 +597,11 @@ haze_protocol_set_property (GObject *object, self->priv->parameter_map = g_value_get_pointer (value); break; + case PROP_PLUGIN: + g_assert (self->priv->plugin == NULL); /* construct-only */ + self->priv->plugin = g_value_get_pointer (value); + break; + case PROP_PRPL_ID: g_assert (self->priv->prpl_id == NULL); /* construct-only */ self->priv->prpl_id = g_value_dup_string (value); @@ -658,6 +671,8 @@ haze_protocol_get_connection_details (TpBaseProtocol *base, gchar **english_name, gchar **vcard_field) { + HazeProtocol *self = HAZE_PROTOCOL (base); + if (connection_interfaces != NULL) { *connection_interfaces = g_strdupv ( @@ -678,11 +693,11 @@ haze_protocol_get_connection_details (TpBaseProtocol *base, #endif } - /* stub implementations for now, clients have to be able to fall back */ - if (english_name != NULL) - *english_name = g_strdup (""); + *english_name = g_strdup (purple_plugin_get_name (self->priv->plugin)); + /* stub implementation for now, clients have to be able to fall back anyway + * (telepathy-glib uses im-$PROTOCOL) */ if (icon_name != NULL) *icon_name = g_strdup (""); @@ -709,6 +724,11 @@ haze_protocol_class_init (HazeProtocolClass *cls) object_class->set_property = haze_protocol_set_property; object_class->finalize = haze_protocol_finalize; + param_spec = g_param_spec_pointer ("plugin", "PurplePlugin", + "Purple plugin", + G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + g_object_class_install_property (object_class, PROP_PLUGIN, param_spec); + param_spec = g_param_spec_string ("prpl-id", "protocol plugin ID", "protocol plugin ID", NULL, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); |