#include <string.h> /* strcmp */
#include <modest-protocol-info.h>
#include <modest-pair.h>
-
+#include <modest-defs.h>
+#include <modest-text-utils.h>
typedef struct {
gint proto;
{ 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") },
/* 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)
{
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 */
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);
+}