X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-protocol-info.c;h=684a5982c832013ee8306ccef49aa44c2fdf186f;hp=8539f20feed42dfac2dd49d9bf0ca95d3a4c7d49;hb=6d468b7495df51350ddbcca3b6cdf3b1a70dc24a;hpb=6bab4bfef92fef73852d6acd51d1ebf381a338e4 diff --git a/src/modest-protocol-info.c b/src/modest-protocol-info.c index 8539f20..684a598 100644 --- a/src/modest-protocol-info.c +++ b/src/modest-protocol-info.c @@ -31,7 +31,8 @@ #include /* strcmp */ #include #include - +#include +#include typedef struct { gint proto; @@ -49,6 +50,11 @@ static const ProtocolInfo TransportStoreProtocolMap[] = { { MODEST_PROTOCOL_STORE_MBOX, "mbox", N_("MBox") } }; +static const ProtocolInfo SupportedStoreProtocolMap[] = { + { MODEST_PROTOCOL_STORE_POP, "pop", N_("POP3") }, + { MODEST_PROTOCOL_STORE_IMAP, "imap", N_("IMAPv4") }, +}; + static const ProtocolInfo ConnectionProtocolMap[] = { { MODEST_PROTOCOL_CONNECTION_NORMAL, "none", N_("None") }, { MODEST_PROTOCOL_CONNECTION_SSL, "ssl", N_("SSL") }, @@ -60,12 +66,11 @@ static const ProtocolInfo ConnectionProtocolMap[] = { /* FIXME: these names must match those of tny_camel_account_get_supported_secure_auth */ static const ProtocolInfo AuthProtocolMap[] = { - { MODEST_PROTOCOL_AUTH_NONE, "none", N_("None") }, - { MODEST_PROTOCOL_AUTH_PASSWORD, "Password", N_("Password") }, - { MODEST_PROTOCOL_AUTH_CRAMMD5, "cram-md5", N_("Cram MD5") } + { MODEST_PROTOCOL_AUTH_NONE, MODEST_ACCOUNT_AUTH_MECH_VALUE_NONE, N_("None") }, + { MODEST_PROTOCOL_AUTH_PASSWORD, MODEST_ACCOUNT_AUTH_MECH_VALUE_PASSWORD, N_("Password") }, + { MODEST_PROTOCOL_AUTH_CRAMMD5, MODEST_ACCOUNT_AUTH_MECH_VALUE_CRAMMD5, N_("Cram MD5") } }; - static ModestPairList* get_protocol_pair_list (const ProtocolInfo* map, guint size) { @@ -84,49 +89,90 @@ get_protocol_pair_list (const ProtocolInfo* map, guint size) return proto_list; } +static gint +get_protocol_by_name (const ProtocolInfo* map, + guint size, + const gchar* query_name, + gint default_value, + gboolean case_sensitive) +{ + guint i; + + g_return_val_if_fail (map, default_value); + g_return_val_if_fail (query_name, default_value); + + for(i = 0; i < size; ++i) + if (modest_text_utils_utf8_strcmp (map[i].name, query_name, + !case_sensitive) == 0) + return map[i].proto; + + return default_value; +} ModestPairList* -modest_protocol_info_get_transport_store_protocol_pair_list () +modest_protocol_info_get_transport_store_protocol_pair_list (void) { return get_protocol_pair_list (TransportStoreProtocolMap, G_N_ELEMENTS(TransportStoreProtocolMap)); } ModestPairList* -modest_protocol_info_get_auth_protocol_pair_list () +modest_protocol_info_get_supported_store_protocol_pair_list (void) +{ + return get_protocol_pair_list (SupportedStoreProtocolMap, + G_N_ELEMENTS(SupportedStoreProtocolMap)); +} + + +ModestPairList* +modest_protocol_info_get_auth_protocol_pair_list (void) { return get_protocol_pair_list (AuthProtocolMap, G_N_ELEMENTS(AuthProtocolMap)); } ModestPairList* -modest_protocol_info_get_connection_protocol_pair_list () +modest_protocol_info_get_connection_protocol_pair_list (void) { return get_protocol_pair_list (ConnectionProtocolMap, G_N_ELEMENTS(ConnectionProtocolMap)); } - ModestTransportStoreProtocol modest_protocol_info_get_transport_store_protocol (const gchar* name) { - const ProtocolInfo *map = TransportStoreProtocolMap; - const guint size = G_N_ELEMENTS(TransportStoreProtocolMap); - int i; - g_return_val_if_fail (name, MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN); - g_return_val_if_fail (map, MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN); + return get_protocol_by_name(TransportStoreProtocolMap, + G_N_ELEMENTS(TransportStoreProtocolMap), + name, + MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN, + TRUE); +} - for (i = 0; i != size; ++i) { - const ProtocolInfo info = map[i]; - if (strcmp(name, info.name) == 0) - return info.proto; - } +ModestAuthProtocol +modest_protocol_info_get_auth_protocol (const gchar* name) +{ + g_return_val_if_fail (name, MODEST_PROTOCOL_AUTH_NONE); - return MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN; + return get_protocol_by_name(AuthProtocolMap, + G_N_ELEMENTS(AuthProtocolMap), + name, + MODEST_PROTOCOL_AUTH_NONE, + FALSE); } +ModestConnectionProtocol +modest_protocol_info_get_connection_protocol (const gchar* name) +{ + g_return_val_if_fail (name, MODEST_PROTOCOL_CONNECTION_NORMAL); + + return get_protocol_by_name(ConnectionProtocolMap, + G_N_ELEMENTS(ConnectionProtocolMap), + name, + MODEST_PROTOCOL_CONNECTION_NORMAL, + FALSE); +} /* get either the name or the display_name for the protocol */ @@ -180,3 +226,15 @@ modest_protocol_info_protocol_is_store (ModestTransportStoreProtocol proto) return proto == MODEST_PROTOCOL_STORE_MBOX || proto == MODEST_PROTOCOL_STORE_MAILDIR || proto == MODEST_PROTOCOL_STORE_POP || proto == MODEST_PROTOCOL_STORE_IMAP; } + +gboolean +modest_protocol_info_is_secure(ModestConnectionProtocol protocol) +{ + return (protocol == MODEST_PROTOCOL_CONNECTION_SSL || + protocol == MODEST_PROTOCOL_CONNECTION_TLS); +} + +gboolean modest_protocol_info_auth_is_secure(ModestAuthProtocol protocol) +{ + return (protocol == MODEST_PROTOCOL_AUTH_CRAMMD5); +}