From 6bab4bfef92fef73852d6acd51d1ebf381a338e4 Mon Sep 17 00:00:00 2001 From: Johannes Schmid Date: Sun, 3 Jun 2007 14:20:52 +0000 Subject: [PATCH] 2007-06-03 Johannes Schmid * src/maemo/easysetup/modest-easysetup-wizard.c: (on_before_next): Added currently commented code to check for secure auth * src/maemo/modest-account-settings-dialog.c: (on_response), (save_configuration), (show_ok): Fixed projects.maemo.org bugs NB #59248 and #59251 * src/maemo/modest-maemo-utils.c: (on_camel_account_get_supported_secure_authentication_status), (on_camel_account_get_supported_secure_authentication), (modest_maemo_utils_get_supported_secure_authentication_methods): * src/maemo/modest-maemo-utils.h: Moved get_supported_secure_authentication() method here to be able to use it from easysetup wizard. * src/modest-pair.c: (on_pair_compare_as_string): Should compare string with first part of pair and not strcmp pairs which will crash. * src/modest-protocol-info.c: (modest_protocol_info_protocol_is_store): * src/modest-protocol-info.h: Added modest_protocol_info_get_auth_protocol_name() pmo-trunk-r2057 --- ChangeLog2 | 26 ++++ src/maemo/easysetup/modest-easysetup-wizard.c | 31 ++++ src/maemo/modest-account-settings-dialog.c | 201 ++++--------------------- src/maemo/modest-maemo-utils.c | 158 +++++++++++++++++++ src/maemo/modest-maemo-utils.h | 17 +++ src/modest-pair.c | 7 +- src/modest-protocol-info.c | 7 +- src/modest-protocol-info.h | 12 ++ src/widgets/modest-hbox-cell-renderer.c | 1 - 9 files changed, 278 insertions(+), 182 deletions(-) diff --git a/ChangeLog2 b/ChangeLog2 index 6369b48..abe6f87 100644 --- a/ChangeLog2 +++ b/ChangeLog2 @@ -1,3 +1,29 @@ +2007-06-03 Johannes Schmid + + * src/maemo/easysetup/modest-easysetup-wizard.c: (on_before_next): + Added currently commented code to check for secure auth + + * src/maemo/modest-account-settings-dialog.c: (on_response), + (save_configuration), (show_ok): + Fixed projects.maemo.org bugs NB #59248 and #59251 + + * src/maemo/modest-maemo-utils.c: + (on_camel_account_get_supported_secure_authentication_status), + (on_camel_account_get_supported_secure_authentication), + (modest_maemo_utils_get_supported_secure_authentication_methods): + * src/maemo/modest-maemo-utils.h: + Moved get_supported_secure_authentication() method here to be able + to use it from easysetup wizard. + + * src/modest-pair.c: (on_pair_compare_as_string): + Should compare string with first part of pair and not + strcmp pairs which will crash. + + * src/modest-protocol-info.c: + (modest_protocol_info_protocol_is_store): + * src/modest-protocol-info.h: + Added modest_protocol_info_get_auth_protocol_name() + 2007-06-03 Armin Burgmeier * src/modest-mail-operation.c: diff --git a/src/maemo/easysetup/modest-easysetup-wizard.c b/src/maemo/easysetup/modest-easysetup-wizard.c index 6ecd3c2..d747152 100644 --- a/src/maemo/easysetup/modest-easysetup-wizard.c +++ b/src/maemo/easysetup/modest-easysetup-wizard.c @@ -52,6 +52,7 @@ #include "maemo/modest-connection-specific-smtp-window.h" #include "widgets/modest-ui-constants.h" #include "maemo/modest-account-settings-dialog.h" +#include "maemo/modest-maemo-utils.h" #include #include /* For strlen(). */ @@ -1221,6 +1222,36 @@ on_before_next (ModestWizardDialog *dialog, GtkWidget *current_page, GtkWidget * } else if (next_page == account_wizard->page_custom_outgoing) { set_default_custom_servernames (account_wizard); + /* Check if the server support secure authentication */ + if (gtk_toggle_button_get_active ( + GTK_TOGGLE_BUTTON (account_wizard->checkbox_incoming_auth))) { +#if 0 + const ModestTransportStoreProtocol protocol = + easysetup_servertype_combo_box_get_active_servertype ( + EASYSETUP_SERVERTYPE_COMBO_BOX (account_wizard->combo_incoming_servertype)); + const gchar* hostname = gtk_entry_get_text(GTK_ENTRY(account_wizard->entry_incomingserver)); + /* FIXME: Get correct port */ + + int port_num = 22; + GList *list_auth_methods = + modest_maemo_utils_get_supported_secure_authentication_methods ( + protocol, + hostname, port_num, GTK_WINDOW (dialog)); + if (list_auth_methods) { + /* TODO: Select the correct method */ + g_list_free (list_auth_methods); + } + else + { + GtkWidget* error_dialog = gtk_message_dialog_new(GTK_WINDOW(dialog), + GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, _("Server does not support secure authentication!")); + gtk_dialog_run(GTK_DIALOG(error_dialog)); + gtk_widget_destroy(error_dialog); + return FALSE; + } +#endif + } } /* If this is the last page, and this is a click on Finish, diff --git a/src/maemo/modest-account-settings-dialog.c b/src/maemo/modest-account-settings-dialog.c index 50d747b..fd4ed07 100644 --- a/src/maemo/modest-account-settings-dialog.c +++ b/src/maemo/modest-account-settings-dialog.c @@ -50,13 +50,16 @@ #include "modest-account-mgr.h" #include "modest-account-mgr-helpers.h" /* For modest_account_mgr_get_account_data(). */ #include "modest-runtime.h" /* For modest_runtime_get_account_mgr(). */ +#include "modest-protocol-info.h" #include "maemo/modest-connection-specific-smtp-window.h" #include "maemo/modest-signature-editor-dialog.h" +#include "maemo/modest-maemo-utils.h" #include "widgets/modest-ui-constants.h" #include #include #include +#include #include #include /* For strlen(). */ @@ -884,9 +887,11 @@ on_response (GtkDialog *wizard_dialog, } if (response_id == GTK_RESPONSE_OK) { - /* Try to save the changes: */ - const gboolean saved = save_configuration (self); - if (saved) { + /* Try to save the changes if modified (NB #59251): */ + if (self->modified) + { + const gboolean saved = save_configuration (self); + if (saved) { /* Do not show the account-saved dialog if we are just saving this * temporarily, because from the user's point of view it will not * really be saved (saved + enabled) until later. @@ -895,9 +900,10 @@ on_response (GtkDialog *wizard_dialog, modest_account_mgr_get_enabled (self->account_manager, self->account_name); if (enabled) show_ok (GTK_WINDOW (self), _("mcen_ib_advsetup_settings_saved")); + } + else + show_error (GTK_WINDOW (self), _("mail_ib_setting_failed")); } - else - show_error (GTK_WINDOW (self), _("mail_ib_setting_failed")); } } @@ -1161,9 +1167,6 @@ void modest_account_settings_dialog_set_account_name (ModestAccountSettingsDialo dialog->modified = FALSE; } -static GList* get_supported_secure_authentication_methods (ModestTransportStoreProtocol proto, - const gchar* hostname, gint port, GtkWindow *parent_window); - static gboolean save_configuration (ModestAccountSettingsDialog *dialog) { @@ -1245,7 +1248,7 @@ save_configuration (ModestAccountSettingsDialog *dialog) if (gtk_toggle_button_get_active ( GTK_TOGGLE_BUTTON (dialog->checkbox_incoming_auth))) { GList *list_auth_methods = - get_supported_secure_authentication_methods (dialog->incoming_protocol, + modest_maemo_utils_get_supported_secure_authentication_methods (dialog->incoming_protocol, hostname, port_num, GTK_WINDOW (dialog)); if (list_auth_methods) { /* Use the first supported method. @@ -1255,7 +1258,17 @@ save_configuration (ModestAccountSettingsDialog *dialog) g_list_free (list_auth_methods); } else - g_warning ("%s: get_supported_secure_authentication_methods() returned NULL.\n", __FUNCTION__); + { + GtkWidget* error_dialog = gtk_message_dialog_new(GTK_WINDOW(dialog), + GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, _("Server does not support secure authentication!")); + gtk_dialog_run(GTK_DIALOG(error_dialog)); + gtk_widget_destroy(error_dialog); + /* This is a nasty hack. jschmid. */ + /* Don't let the dialog close */ + g_signal_stop_emission_by_name (dialog, "response"); + return FALSE; + } } @@ -1402,171 +1415,9 @@ show_error (GtkWindow *parent_window, const gchar* text) static void show_ok (GtkWindow *parent_window, const gchar* text) { - GtkDialog *dialog = GTK_DIALOG (hildon_note_new_information (parent_window, text)); - /* - GtkDialog *dialog = GTK_DIALOG (gtk_message_dialog_new (parent_window, - (GtkDialogFlags)0, - GTK_MESSAGE_INFO, - GTK_BUTTONS_OK, - text )); - */ - - gtk_dialog_run (dialog); - gtk_widget_destroy (GTK_WIDGET (dialog)); -} - -/* TODO: Enable this when tinymail has the API: */ -#if 0 -typedef struct -{ - gboolean finished; - GList *result; -} ModestGetSupportedAuthInfo; - -static void on_camel_account_get_supported_secure_authentication_status ( - GObject *self, TnyStatus *status, gpointer user_data) -{ - printf ("DEBUG: %s.\n", __FUNCTION__); -} - -static void -on_camel_account_get_supported_secure_authentication ( - TnyCamelAccount *self, gboolean cancelled, - GList *auth_types, GError **err, - gpointer user_data) -{ - printf ("DEBUG: %s.\n", __FUNCTION__); - - ModestGetSupportedAuthInfo *info = (ModestGetSupportedAuthInfo*)user_data; - g_return_if_fail (info); - - if (!auth_types) { - printf ("DEBUG: %s: auth_types is NULL.\n", __FUNCTION__); - info->finished = TRUE; /* We are blocking, waiting for this. */ - return; - } - - ModestPairList* pairs = modest_protocol_info_get_protocol_auth_pair_list (); - - /* Get the enum value for the strings: */ - GList *result = NULL; - GList* iter = auth_types; - while (iter) { - const gchar *auth_name = (const gchar*)iter->data; - printf("DEBUG: %s: auth_name=%s\n", __FUNCTION__, auth_name); - ModestPair *matching = modest_pair_list_find_by_first_as_string (pairs, - auth_name); - if (matching) - g_list_append (result, GINT_TO_POINTER((ModestConnectionProtocol)matching->second)); - - iter = g_list_next (iter); - } - - g_list_free (auth_types); - - modest_pair_list_free (pairs); - - info->result = result; - info->finished = TRUE; /* We are blocking, waiting for this. */ -} -#endif - - -static GList* get_supported_secure_authentication_methods (ModestTransportStoreProtocol proto, - const gchar* hostname, gint port, GtkWindow *parent_window) -{ - return NULL; - -/* TODO: Enable this when tinymail has the API: */ -#if 0 - g_return_val_if_fail (proto != MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN, NULL); - - /* - result = g_list_append (result, GINT_TO_POINTER (MODEST_PROTOCOL_AUTH_CRAMMD5)); - */ - - /* Create a TnyCamelAccount so we can use - * tny_camel_account_get_supported_secure_authentication(): */ - TnyAccount * tny_account = NULL; - switch (proto) { - case MODEST_PROTOCOL_TRANSPORT_SENDMAIL: - case MODEST_PROTOCOL_TRANSPORT_SMTP: - tny_account = TNY_ACCOUNT(tny_camel_transport_account_new ()); break; - case MODEST_PROTOCOL_STORE_POP: - tny_account = TNY_ACCOUNT(tny_camel_pop_store_account_new ()); break; - case MODEST_PROTOCOL_STORE_IMAP: - tny_account = TNY_ACCOUNT(tny_camel_imap_store_account_new ()); break; - case MODEST_PROTOCOL_STORE_MAILDIR: - case MODEST_PROTOCOL_STORE_MBOX: - tny_account = TNY_ACCOUNT(tny_camel_store_account_new()); break; - default: - tny_account = NULL; - } - - if (!tny_account) { - g_printerr ("%s could not create tny account.", __FUNCTION__); - return NULL; - } - - /* Set proto, so that the prepare_func() vfunc will work when we call - * set_session(): */ - /* TODO: Why isn't this done in account_new()? */ - tny_account_set_proto (tny_account, - modest_protocol_info_get_transport_store_protocol_name(proto)); - - /* Set the session for the account, so we can use it: */ - ModestTnyAccountStore *account_store = modest_runtime_get_account_store (); - TnySessionCamel *session = - modest_tny_account_store_get_session (TNY_ACCOUNT_STORE (account_store)); - g_return_val_if_fail (session, NULL); - tny_camel_account_set_session (TNY_CAMEL_ACCOUNT(tny_account), session); - - tny_account_set_hostname (tny_account, hostname); - - if(port > 0) - tny_account_set_port (tny_account, port); - - - /* Ask camel to ask the server, asynchronously: */ - ModestGetSupportedAuthInfo *info = g_slice_new (ModestGetSupportedAuthInfo); - info->finished = FALSE; - info->result = NULL; - - GtkDialog *dialog = GTK_DIALOG (hildon_note_new_information (parent_window, - _("Asking the server for supported secure authentication mechanisms."))); - gtk_dialog_run (dialog); - - printf ("DEBUG: %s: STARTING.\n", __FUNCTION__); - tny_camel_account_get_supported_secure_authentication ( - TNY_CAMEL_ACCOUNT (tny_account), - on_camel_account_get_supported_secure_authentication, - on_camel_account_get_supported_secure_authentication_status, - info); - - printf ("DEBUG: %s: AFTER STARTING.\n", __FUNCTION__); - - /* Block until the callback has been called, - * driving the main context, so that the (idle handler) callback can be - * called, and so that our dialog is clickable: */ - while (!(info->finished)) { - printf ("DEBUG: %s: finished is FALSE.\n", __FUNCTION__); - if (g_main_context_pending (NULL)) { - printf ("DEBUG: iterating\n"); - g_main_context_iteration (NULL, FALSE); - printf ("DEBUG: after iterating\n"); - } - } - - printf ("DEBUG: %s: FINISHED.\n", __FUNCTION__); - - gtk_widget_destroy (GTK_WIDGET (dialog)); - - GList *result = info->result; - g_slice_free (ModestGetSupportedAuthInfo, info); - info = NULL; - - return result; -#endif + /* Don't show a dialog but Banner (NB #59248) */ + hildon_banner_show_information(GTK_WIDGET( + gtk_widget_get_parent_window(GTK_WIDGET(parent_window))), NULL, text); } diff --git a/src/maemo/modest-maemo-utils.c b/src/maemo/modest-maemo-utils.c index 9aae77c..d085049 100644 --- a/src/maemo/modest-maemo-utils.c +++ b/src/maemo/modest-maemo-utils.c @@ -37,6 +37,12 @@ #include #include #include +#include +#include +#include +#include +#include +#include "modest-hildon-includes.h" #include "modest-maemo-utils.h" @@ -240,3 +246,155 @@ modest_maemo_utils_create_temp_stream (gchar **path) return TNY_FS_STREAM (tmp_fs_stream); } + +typedef struct +{ + gboolean finished; + GList *result; + GtkWidget* banner; +} ModestGetSupportedAuthInfo; + +#if 0 +static void on_camel_account_get_supported_secure_authentication_status ( + GObject *self, TnyStatus *status, gpointer user_data) +{ + + printf ("DEBUG: %s.\n", __FUNCTION__); + ModestGetSupportedAuthInfo* info = (ModestGetSupportedAuthInfo*) user_data; + GDK_THREADS_ENTER(); + hildon_banner_set_fraction(HILDON_BANNER(info->banner), tny_status_get_fraction(status)); + GDK_THREADS_LEAVE(); +} + +static void +on_camel_account_get_supported_secure_authentication ( + TnyCamelAccount *self, gboolean cancelled, + TnyList *auth_types, GError **err, + gpointer user_data) +{ + printf ("DEBUG: %s.\n", __FUNCTION__); + + ModestGetSupportedAuthInfo *info = (ModestGetSupportedAuthInfo*)user_data; + g_return_if_fail (info); + + if (!auth_types) { + printf ("DEBUG: %s: auth_types is NULL.\n", __FUNCTION__); + info->finished = TRUE; /* We are blocking, waiting for this. */ + return; + } + + ModestPairList* pairs = modest_protocol_info_get_auth_protocol_pair_list (); + + /* Get the enum value for the strings: */ + GList *result = NULL; + TnyIterator* iter = tny_list_create_iterator(auth_types); + while (!tny_iterator_is_done(iter)) { + const gchar *auth_name = tny_pair_get_name(TNY_PAIR(tny_iterator_get_current(iter))); + printf("DEBUG: %s: auth_name=%s\n", __FUNCTION__, auth_name); + ModestPair *matching = modest_pair_list_find_by_first_as_string (pairs, + auth_name); + if (matching) + { + result = g_list_append (result, GINT_TO_POINTER((ModestConnectionProtocol)matching->first)); + } + tny_iterator_next(iter); + } + + g_object_unref(auth_types); + + modest_pair_list_free (pairs); + + info->result = result; + printf("DEBUG: finished\n"); + info->finished = TRUE; /* We are blocking, waiting for this. */ +} +#endif + +GList* modest_maemo_utils_get_supported_secure_authentication_methods (ModestTransportStoreProtocol proto, + const gchar* hostname, gint port, GtkWindow *parent_window) +{ + return NULL; +/* FIXME: Activate when changes are merged into tinymail */ +#if 0 + g_return_val_if_fail (proto != MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN, NULL); + + /* + result = g_list_append (result, GINT_TO_POINTER (MODEST_PROTOCOL_AUTH_CRAMMD5)); + */ + + /* Create a TnyCamelAccount so we can use + * tny_camel_account_get_supported_secure_authentication(): */ + TnyAccount * tny_account = NULL; + switch (proto) { + case MODEST_PROTOCOL_TRANSPORT_SENDMAIL: + case MODEST_PROTOCOL_TRANSPORT_SMTP: + tny_account = TNY_ACCOUNT(tny_camel_transport_account_new ()); break; + case MODEST_PROTOCOL_STORE_POP: + tny_account = TNY_ACCOUNT(tny_camel_pop_store_account_new ()); break; + case MODEST_PROTOCOL_STORE_IMAP: + tny_account = TNY_ACCOUNT(tny_camel_imap_store_account_new ()); break; + case MODEST_PROTOCOL_STORE_MAILDIR: + case MODEST_PROTOCOL_STORE_MBOX: + tny_account = TNY_ACCOUNT(tny_camel_store_account_new()); break; + default: + tny_account = NULL; + } + + if (!tny_account) { + g_printerr ("%s could not create tny account.", __FUNCTION__); + return NULL; + } + + /* Set proto, so that the prepare_func() vfunc will work when we call + * set_session(): */ + /* TODO: Why isn't this done in account_new()? */ + tny_account_set_proto (tny_account, + modest_protocol_info_get_transport_store_protocol_name(proto)); + + /* Set the session for the account, so we can use it: */ + ModestTnyAccountStore *account_store = modest_runtime_get_account_store (); + TnySessionCamel *session = + modest_tny_account_store_get_session (TNY_ACCOUNT_STORE (account_store)); + g_return_val_if_fail (session, NULL); + tny_camel_account_set_session (TNY_CAMEL_ACCOUNT(tny_account), session); + + tny_account_set_hostname (tny_account, hostname); + + if(port > 0) + tny_account_set_port (tny_account, port); + + + /* Ask camel to ask the server, asynchronously: */ + ModestGetSupportedAuthInfo *info = g_slice_new (ModestGetSupportedAuthInfo); + info->finished = FALSE; + info->result = NULL; + GtkWidget* progressbar = gtk_progress_bar_new(); + info->banner = hildon_banner_show_progress (GTK_WIDGET(parent_window), + GTK_PROGRESS_BAR(progressbar), + _("Checking for supported authentification types")); + gtk_progress_bar_pulse(GTK_PROGRESS_BAR(progressbar)); + + + printf ("DEBUG: %s: STARTING.\n", __FUNCTION__); + tny_camel_account_get_supported_secure_authentication ( + TNY_CAMEL_ACCOUNT (tny_account), + on_camel_account_get_supported_secure_authentication, + on_camel_account_get_supported_secure_authentication_status, + info); + + /* Block until the callback has been called, + * driving the main context, so that the (idle handler) callback can be + * called, and so that our dialog is clickable: */ + while (!(info->finished)) { + gtk_main_iteration_do(FALSE); + } + + gtk_widget_destroy(info->banner); + + GList *result = info->result; + g_slice_free (ModestGetSupportedAuthInfo, info); + info = NULL; + + return result; +#endif +} diff --git a/src/maemo/modest-maemo-utils.h b/src/maemo/modest-maemo-utils.h index ff13926..9f1735f 100644 --- a/src/maemo/modest-maemo-utils.h +++ b/src/maemo/modest-maemo-utils.h @@ -32,6 +32,7 @@ #define __MODEST_MAEMO_UTILS_H__ #include +#include /** * modest_maemo_utils_menubar_to_menu: @@ -85,4 +86,20 @@ gboolean modest_maemo_utils_file_exists (const gchar *filename); */ TnyFsStream *modest_maemo_utils_create_temp_stream (gchar **path); +/** + * modest_protocol_info_protocol_is_local_store: + * @proto: the protocol + * @hostname: hostname of the mail server to check + * @port: mail server port + * @parent_window: a GtkWindow that can be used a parent for progress indication + * + * Get a list of supported authentication methods of the server + * + * Returns: GList* of the method names. This list needs to be freed using g_list_free. + * + */ + +GList* modest_maemo_utils_get_supported_secure_authentication_methods (ModestTransportStoreProtocol proto, + const gchar* hostname, gint port, GtkWindow *parent_window); + #endif /*__MODEST_MAEMO_UTILS_H__*/ diff --git a/src/modest-pair.c b/src/modest-pair.c index 05116a9..208ce9a 100644 --- a/src/modest-pair.c +++ b/src/modest-pair.c @@ -29,6 +29,7 @@ #include "modest-pair.h" #include /* For strcmp() */ +#include ModestPair* modest_pair_new (gpointer first, gpointer second, gboolean own) @@ -75,9 +76,9 @@ modest_pair_list_free (ModestPairList *pairs) static gint on_pair_compare_as_string(gconstpointer a, gconstpointer b) { const ModestPair* pair_a = (const ModestPair*)a; - const ModestPair* pair_b = (const ModestPair*)b; - - return strcmp ((const gchar*)pair_a->first, (const gchar*)pair_b->first); + const gchar* target = (const gchar*)b; + + return strcmp ((const gchar*)pair_a->first, target); } ModestPair* modest_pair_list_find_by_first_as_string (ModestPairList *pairs, diff --git a/src/modest-protocol-info.c b/src/modest-protocol-info.c index 7c3a4c7..8539f20 100644 --- a/src/modest-protocol-info.c +++ b/src/modest-protocol-info.c @@ -56,9 +56,12 @@ static const ProtocolInfo ConnectionProtocolMap[] = { { MODEST_PROTOCOL_CONNECTION_TLS_OP, "tls-op", N_("TLS when possible") } /* op stands for optional */ }; + + +/* 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_PASSWORD, "Password", N_("Password") }, { MODEST_PROTOCOL_AUTH_CRAMMD5, "cram-md5", N_("Cram MD5") } }; @@ -177,5 +180,3 @@ 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; } - - diff --git a/src/modest-protocol-info.h b/src/modest-protocol-info.h index 52e9737..3b567ff 100644 --- a/src/modest-protocol-info.h +++ b/src/modest-protocol-info.h @@ -140,6 +140,18 @@ modest_protocol_info_get_transport_store_protocol_name (ModestTransportStoreProt const gchar* modest_protocol_info_get_auth_protocol_name (ModestAuthProtocol proto); +/* + * modest_protocol_get_auth_protocol_pair_list: + * + * Get the list of support authentication methods supported by modest including + * the display names of those. + * + * Returns: List of method/display name pairs + */ + +ModestPairList* +modest_protocol_info_get_auth_protocol_pair_list (); + /** * modest_protocol_info_get_auth_protocol_name: * @proto: the protocol you are looking for diff --git a/src/widgets/modest-hbox-cell-renderer.c b/src/widgets/modest-hbox-cell-renderer.c index f177910..0d2b66f 100644 --- a/src/widgets/modest-hbox-cell-renderer.c +++ b/src/widgets/modest-hbox-cell-renderer.c @@ -30,7 +30,6 @@ #include #include - #include #include -- 1.7.9.5