diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-07-14 16:12:28 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2010-07-15 16:22:17 +0100 |
commit | 2c51943ebd9a7b728d4939fb281b061d2b951708 (patch) | |
tree | a86692de31ef58acff49205ce45ded50de438bb7 /src/protocol.c | |
parent | 13edbeedb228fca8e3b3bfe2abde9789d844bf49 (diff) | |
download | telepathy-haze-2c51943ebd9a7b728d4939fb281b061d2b951708.tar.gz |
HazeProtocol: store the KnownProtocolInfo, not just the parameter map
Diffstat (limited to 'src/protocol.c')
-rw-r--r-- | src/protocol.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/src/protocol.c b/src/protocol.c index 46a07aa..24a6fba 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -55,8 +55,8 @@ struct _HazeProtocolPrivate { PurplePlugin *plugin; gchar *prpl_id; PurplePluginProtocolInfo *prpl_info; - HazeParameterMapping *parameter_map; TpCMParamSpec *paramspecs; + const KnownProtocolInfo *known_protocol; }; /* For some protocols, removing the "prpl-" prefix from its name in libpurple @@ -169,7 +169,7 @@ haze_protocol_build_list (void) "plugin", plugin, "prpl-id", p_info->id, "prpl-info", prpl_info, - "parameter-map", info->parameter_map, + "known-protocol", info, NULL); } @@ -233,9 +233,17 @@ haze_protocol_lookup_param ( { const HazeParameterMapping *m; - for (m = self->priv->parameter_map; m != NULL && m->purple_name != NULL; m++) - if (!tp_strdiff (m->purple_name, purple_name)) - return m; + if (self->priv->known_protocol == NULL || + self->priv->known_protocol->parameter_map == NULL) + return NULL; + + for (m = self->priv->known_protocol->parameter_map; + m->purple_name != NULL; + m++) + { + if (!tp_strdiff (m->purple_name, purple_name)) + return m; + } return NULL; } @@ -282,7 +290,7 @@ _translate_protocol_usersplits (HazeProtocol *self, } /* Populates a TpCMParamSpec from a PurpleAccountOption, possibly renaming the - * parameter as specified in hpi->parameter_map. paramspec is assumed to be + * parameter as specified in parameter_map. paramspec is assumed to be * zeroed out. * * Returns: %TRUE on success, and %FALSE if paramspec could not be populated @@ -487,7 +495,7 @@ enum PROP_PLUGIN = 1, PROP_PRPL_ID, PROP_PRPL_INFO, - PROP_PARAMETER_MAP, + PROP_KNOWN_PROTOCOL, } HazeProtocolProperties; static void @@ -576,8 +584,8 @@ haze_protocol_get_property (GObject *object, switch (property_id) { - case PROP_PARAMETER_MAP: - g_value_set_pointer (value, self->priv->parameter_map); + case PROP_KNOWN_PROTOCOL: + g_value_set_pointer (value, (gpointer) self->priv->known_protocol); break; case PROP_PLUGIN: @@ -608,9 +616,9 @@ haze_protocol_set_property (GObject *object, switch (property_id) { - case PROP_PARAMETER_MAP: - g_assert (self->priv->parameter_map == NULL); /* construct-only */ - self->priv->parameter_map = g_value_get_pointer (value); + case PROP_KNOWN_PROTOCOL: + g_assert (self->priv->known_protocol == NULL); /* construct-only */ + self->priv->known_protocol = g_value_get_pointer (value); break; case PROP_PLUGIN: @@ -755,9 +763,9 @@ haze_protocol_class_init (HazeProtocolClass *cls) G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_object_class_install_property (object_class, PROP_PRPL_INFO, param_spec); - param_spec = g_param_spec_pointer ("parameter-map", "HazeParameterMap", - "protocol parameter map", + param_spec = g_param_spec_pointer ("known-protocol", "KnownProtocolInfo", + "optional hard-coded info to override Haze's default guesses", G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); - g_object_class_install_property (object_class, PROP_PARAMETER_MAP, + g_object_class_install_property (object_class, PROP_KNOWN_PROTOCOL, param_spec); } |