2007-06-03 Johannes Schmid <johannes.schmid@openismus.com>
authorJohannes Schmid <johannes.schmid@openismus.com>
Sun, 3 Jun 2007 14:20:52 +0000 (14:20 +0000)
committerJohannes Schmid <johannes.schmid@openismus.com>
Sun, 3 Jun 2007 14:20:52 +0000 (14:20 +0000)
* 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
src/maemo/easysetup/modest-easysetup-wizard.c
src/maemo/modest-account-settings-dialog.c
src/maemo/modest-maemo-utils.c
src/maemo/modest-maemo-utils.h
src/modest-pair.c
src/modest-protocol-info.c
src/modest-protocol-info.h
src/widgets/modest-hbox-cell-renderer.c

index 6369b48..abe6f87 100644 (file)
@@ -1,3 +1,29 @@
+2007-06-03  Johannes Schmid <johannes.schmid@openismus.com>
+
+       * 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  <armin@openismus.com>
 
        * src/modest-mail-operation.c:
 2007-06-03  Armin Burgmeier  <armin@openismus.com>
 
        * src/modest-mail-operation.c:
index 6ecd3c2..d747152 100644 (file)
@@ -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-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 <gconf/gconf-client.h>
 #include <string.h> /* For strlen(). */
 
 #include <gconf/gconf-client.h>
 #include <string.h> /* 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);
        }
        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, 
        }
        
        /* If this is the last page, and this is a click on Finish, 
index 50d747b..fd4ed07 100644 (file)
 #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-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-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 <tny-camel-transport-account.h>
 #include <tny-camel-imap-store-account.h>
 #include <tny-camel-pop-store-account.h>
 #include "widgets/modest-ui-constants.h"
 
 #include <tny-camel-transport-account.h>
 #include <tny-camel-imap-store-account.h>
 #include <tny-camel-pop-store-account.h>
+#include <tny-status.h>
 
 #include <gconf/gconf-client.h>
 #include <string.h> /* For strlen(). */
 
 #include <gconf/gconf-client.h>
 #include <string.h> /* For strlen(). */
@@ -884,9 +887,11 @@ on_response (GtkDialog *wizard_dialog,
        }
                
        if (response_id == GTK_RESPONSE_OK) {
        }
                
        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.
                        /* 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"));
                                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;
 }
 
        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)
 {
 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 = 
        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.
                                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_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)
 {
 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);
 }
 
 
 }
 
 
index 9aae77c..d085049 100644 (file)
 #include <modest-runtime.h>
 #include <libgnomevfs/gnome-vfs.h>
 #include <tny-fs-stream.h>
 #include <modest-runtime.h>
 #include <libgnomevfs/gnome-vfs.h>
 #include <tny-fs-stream.h>
+#include <tny-camel-account.h>
+#include <tny-status.h>
+#include <tny-camel-transport-account.h>
+#include <tny-camel-imap-store-account.h>
+#include <tny-camel-pop-store-account.h>
+#include "modest-hildon-includes.h"
 
 #include "modest-maemo-utils.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);
 }
        
        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
+}
index ff13926..9f1735f 100644 (file)
@@ -32,6 +32,7 @@
 #define __MODEST_MAEMO_UTILS_H__
 
 #include <gtk/gtk.h>
 #define __MODEST_MAEMO_UTILS_H__
 
 #include <gtk/gtk.h>
+#include <modest-protocol-info.h>
 
 /**
  * modest_maemo_utils_menubar_to_menu:
 
 /**
  * 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);
 
  */
 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__*/
 #endif /*__MODEST_MAEMO_UTILS_H__*/
index 05116a9..208ce9a 100644 (file)
@@ -29,6 +29,7 @@
 
 #include "modest-pair.h"
 #include <string.h> /* For strcmp() */
 
 #include "modest-pair.h"
 #include <string.h> /* For strcmp() */
+#include <stdio.h>
 
 ModestPair*
 modest_pair_new     (gpointer first, gpointer second, gboolean own)
 
 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;
 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, 
 }
 
 ModestPair* modest_pair_list_find_by_first_as_string  (ModestPairList *pairs, 
index 7c3a4c7..8539f20 100644 (file)
@@ -56,9 +56,12 @@ static const ProtocolInfo ConnectionProtocolMap[] = {
        { MODEST_PROTOCOL_CONNECTION_TLS_OP,    "tls-op",   N_("TLS when possible") }
        /* op stands for optional */
 };
        { 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") },
 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") }
 };
 
        { 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;
 }
        return proto == MODEST_PROTOCOL_STORE_MBOX || proto == MODEST_PROTOCOL_STORE_MAILDIR ||
                proto == MODEST_PROTOCOL_STORE_POP || proto == MODEST_PROTOCOL_STORE_IMAP;
 }
-
-
index 52e9737..3b567ff 100644 (file)
@@ -140,6 +140,18 @@ modest_protocol_info_get_transport_store_protocol_name (ModestTransportStoreProt
 const gchar*
 modest_protocol_info_get_auth_protocol_name (ModestAuthProtocol proto);
 
 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
 /**
  * modest_protocol_info_get_auth_protocol_name:
  * @proto: the protocol you are looking for
index f177910..0d2b66f 100644 (file)
@@ -30,7 +30,6 @@
 #include <config.h>
 
 #include <glib/gi18n-lib.h>
 #include <config.h>
 
 #include <glib/gi18n-lib.h>
-
 #include <gtk/gtkwidget.h>
 
 #include <modest-text-utils.h>
 #include <gtk/gtkwidget.h>
 
 #include <modest-text-utils.h>