Refactored some maemo utils to toolkit utils
[modest] / src / hildon2 / modest-easysetup-wizard-dialog.c
index 42474d1..c9b8ad6 100644 (file)
@@ -38,9 +38,6 @@
 #include <gtk/gtkbutton.h>
 #include <gtk/gtkmessagedialog.h>
 #include <gtk/gtkseparator.h>
-#include "modest-country-picker.h"
-#include "modest-provider-picker.h"
-#include "modest-servertype-picker.h"
 #include "widgets/modest-validating-entry.h"
 #include "modest-text-utils.h"
 #include "modest-conf.h"
@@ -61,6 +58,7 @@
 #include "modest-address-book.h"
 #include <modest-scrollable.h>
 #include <modest-toolkit-factory.h>
+#include <modest-toolkit-utils.h>
 
 /* Include config.h so that _() works: */
 #ifdef HAVE_CONFIG_H
@@ -114,8 +112,8 @@ struct _ModestEasysetupWizardDialogPrivate
        gboolean destroyed;
 
        GtkWidget *page_account_details;
-       GtkWidget *account_country_picker;
-       GtkWidget *account_serviceprovider_picker;
+       GtkWidget *account_country_selector;
+       GtkWidget *account_serviceprovider_selector;
        GtkWidget *entry_account_title;
        GtkWidget *caption_account_title;
 
@@ -128,7 +126,7 @@ struct _ModestEasysetupWizardDialogPrivate
        GtkWidget *page_complete_easysetup;
 
        GtkWidget *page_custom_incoming;
-       GtkWidget *incoming_servertype_picker;
+       GtkWidget *incoming_servertype_selector;
        GtkWidget *caption_incoming;
        GtkWidget *entry_incomingserver;
 
@@ -246,7 +244,9 @@ create_subsequent_easysetup_pages (ModestEasysetupWizardDialog *self);
 static void
 set_default_custom_servernames(ModestEasysetupWizardDialog *dialog);
 
+#ifdef HILDON_PICKER_BUTTON
 static void on_servertype_selector_changed(HildonTouchSelector *selector, gint column, gpointer user_data);
+#endif
 
 static gint
 get_port_from_protocol (ModestProtocolType server_type,
@@ -307,7 +307,7 @@ on_caption_combobox_changed (GtkComboBox *widget, gpointer user_data)
 }
 
 static void
-on_picker_button_value_changed (HildonPickerButton *widget, gpointer user_data)
+on_picker_button_value_changed (GtkWidget *widget, gpointer user_data)
 {
        ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
        g_assert(self);
@@ -315,13 +315,13 @@ on_picker_button_value_changed (HildonPickerButton *widget, gpointer user_data)
 }
 
 static void
-on_serviceprovider_picker_button_value_changed (HildonPickerButton *widget, gpointer user_data)
+on_serviceprovider_selector_value_changed (GtkWidget *widget, gpointer user_data)
 {
        gchar* default_account_name_start;
        gchar* default_account_name;
        ModestEasysetupWizardDialog *self;
        ModestEasysetupWizardDialogPrivate *priv;
-       ModestProviderPickerIdType provider_id_type;
+       ModestProviderSelectorIdType provider_id_type;
        ModestProtocol *protocol;
        gchar *proto_name;
        ModestProtocolType proto_type;
@@ -330,19 +330,15 @@ on_serviceprovider_picker_button_value_changed (HildonPickerButton *widget, gpoi
        self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
 
-       on_picker_button_value_changed (widget, user_data);
+       on_picker_button_value_changed (GTK_WIDGET (widget), user_data);
 
-       provider_id_type = modest_provider_picker_get_active_id_type (
-               MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker));
-       if (provider_id_type == MODEST_PROVIDER_PICKER_ID_OTHER) {
+       provider_id_type = modest_provider_selector_get_active_id_type (
+               priv->account_serviceprovider_selector);
+       if (provider_id_type == MODEST_PROVIDER_SELECTOR_ID_OTHER) {
                default_account_name_start = g_strdup (_("mcen_ia_emailsetup_defaultname"));
        } else {
-               GtkWidget *selector;
-
-               selector = GTK_WIDGET (hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (widget)));
-               default_account_name_start =
-                       g_strdup (hildon_touch_selector_get_current_text (HILDON_TOUCH_SELECTOR (selector)));
-
+               /* obtain properly the account name! */
+               default_account_name_start = modest_provider_selector_get_active_provider_label (widget);
        }
        default_account_name = modest_account_mgr_get_unused_account_display_name (
                priv->account_manager, default_account_name_start);
@@ -350,7 +346,7 @@ on_serviceprovider_picker_button_value_changed (HildonPickerButton *widget, gpoi
        default_account_name_start = NULL;
 
        hide_account_title = FALSE;
-       proto_name = modest_provider_picker_get_active_provider_id (MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker));
+       proto_name = modest_provider_selector_get_active_provider_id (priv->account_serviceprovider_selector);
        if (proto_name != NULL) {
                protocol = modest_protocol_registry_get_protocol_by_name (modest_runtime_get_protocol_registry (),
                                                                          MODEST_PROTOCOL_REGISTRY_PROVIDER_PROTOCOLS,
@@ -374,7 +370,7 @@ on_serviceprovider_picker_button_value_changed (HildonPickerButton *widget, gpoi
        else
                gtk_widget_show (priv->caption_account_title);
 
-       hildon_entry_set_text (HILDON_ENTRY (priv->entry_account_title), default_account_name);
+       modest_entry_set_text (priv->entry_account_title, default_account_name);
        g_free (default_account_name);
 }
 
@@ -391,9 +387,9 @@ create_captioned (ModestEasysetupWizardDialog *self,
 {
 
        GtkWidget *result;
-       result = modest_maemo_utils_create_captioned_with_size_type (title_size_group, value_size_group,
-                                                                    value, use_markup, control,
-                                                                    MODEST_EDITABLE_SIZE);
+       result = modest_toolkit_utils_create_captioned_with_size_type (title_size_group, value_size_group,
+                                                                      value, use_markup, control,
+                                                                      MODEST_EDITABLE_SIZE);
 
        /* Connect to the appropriate changed signal for the widget,
         * so we can ask for the prev/next buttons to be enabled/disabled appropriately:
@@ -451,7 +447,7 @@ create_page_welcome (ModestEasysetupWizardDialog *self)
 }
 
 static void
-on_account_country_selector_changed (HildonTouchSelector *widget, gpointer user_data)
+on_account_country_selector_changed (GtkWidget *widget, gpointer user_data)
 {
        ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
        g_assert(self);
@@ -459,12 +455,10 @@ on_account_country_selector_changed (HildonTouchSelector *widget, gpointer user_
 
        priv->dirty = TRUE;
 
-       /* Fill the providers picker, based on the selected country: */
+       /* Fill the providers selector, based on the selected country: */
        if (priv->presets != NULL) {
-               gint mcc = modest_country_picker_get_active_country_mcc (
-                       MODEST_COUNTRY_PICKER (priv->account_country_picker));
-               modest_provider_picker_fill (
-                       MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker), priv->presets, mcc);
+               gint mcc = modest_country_selector_get_active_country_mcc (priv->account_country_selector);
+               modest_provider_selector_fill (priv->account_serviceprovider_selector, priv->presets, mcc);
        }
 }
 
@@ -478,8 +472,8 @@ update_user_email_from_provider (ModestEasysetupWizardDialog *self)
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
 
        /* Fill the providers combo, based on the selected country: */
-       provider_id = modest_provider_picker_get_active_provider_id (
-               MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker));
+       provider_id = modest_provider_selector_get_active_provider_id (
+               priv->account_serviceprovider_selector);
 
        if (provider_id) {
                gchar *domain_name = modest_presets_get_domain (priv->presets, provider_id);
@@ -492,14 +486,28 @@ update_user_email_from_provider (ModestEasysetupWizardDialog *self)
                with_at = g_strdup (MODEST_EXAMPLE_EMAIL_ADDRESS);
 
        if (priv->entry_user_email)
-               hildon_entry_set_text (HILDON_ENTRY (priv->entry_user_email), with_at);
+               modest_entry_set_text (priv->entry_user_email, with_at);
 
        g_free (with_at);
        g_free (provider_id);
 }
 
+#ifdef HILDON_PICKER_BUTTON
 static void
-on_account_serviceprovider_selector_changed (HildonTouchSelector *widget, gint column, gpointer user_data)
+on_account_serviceprovider_selector_changed (GtkWidget *widget, gint column, gpointer user_data)
+{
+       ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
+       g_assert(self);
+       ModestEasysetupWizardDialogPrivate *priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
+
+       priv->dirty = TRUE;
+
+       update_user_email_from_provider (self);
+}
+#endif
+
+static void
+on_account_serviceprovider_selector_combo_box_changed (GtkWidget *widget, gpointer user_data)
 {
        ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
        g_assert(self);
@@ -538,25 +546,49 @@ create_page_account_details (ModestEasysetupWizardDialog *self)
        GtkSizeGroup* value_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
        /* The country widgets: */
-       priv->account_country_picker = GTK_WIDGET (modest_country_picker_new (MODEST_EDITABLE_SIZE,
-                                                                             HILDON_BUTTON_ARRANGEMENT_HORIZONTAL));
-       modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup,
-                                              _("mcen_fi_country"), priv->account_country_picker);
-       g_signal_connect (G_OBJECT (priv->account_country_picker), "value-changed",
-                         G_CALLBACK (on_picker_button_value_changed), self);
-       gtk_box_pack_start (GTK_BOX (box), priv->account_country_picker, FALSE, FALSE, MODEST_MARGIN_HALF);
-       gtk_widget_show (priv->account_country_picker);
+       priv->account_country_selector = modest_toolkit_factory_create_country_selector (modest_runtime_get_toolkit_factory ());
+       if (GTK_IS_COMBO_BOX (priv->account_country_selector)) {
+               GtkWidget *captioned;
+               g_signal_connect (G_OBJECT (priv->account_country_selector), "changed",
+                                 G_CALLBACK (on_picker_button_value_changed), self);
+               captioned = modest_toolkit_utils_create_captioned (title_sizegroup, value_sizegroup,
+                                                                  _("mcen_fi_country"), FALSE,
+                                                                  priv->account_country_selector);
+               
+               gtk_box_pack_start (GTK_BOX (box), captioned, FALSE, FALSE, MODEST_MARGIN_HALF);
+               gtk_widget_show (captioned);
+       } else {
+               modest_toolkit_utils_set_hbutton_layout (title_sizegroup, value_sizegroup,
+                                                        _("mcen_fi_country"), priv->account_country_selector);
+               g_signal_connect (G_OBJECT (priv->account_country_selector), "value-changed",
+                                 G_CALLBACK (on_picker_button_value_changed), self);
+               gtk_box_pack_start (GTK_BOX (box), priv->account_country_selector, FALSE, FALSE, MODEST_MARGIN_HALF);
+       }
+       gtk_widget_show (priv->account_country_selector);
 
        /* The service provider widgets: */
-       priv->account_serviceprovider_picker = GTK_WIDGET (modest_provider_picker_new (MODEST_EDITABLE_SIZE,
-                                                                                      HILDON_BUTTON_ARRANGEMENT_HORIZONTAL));
-       modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup,
-                                              _("mcen_fi_serviceprovider"),
-                                              priv->account_serviceprovider_picker);
-       g_signal_connect (G_OBJECT (priv->account_serviceprovider_picker), "value-changed",
-                         G_CALLBACK (on_serviceprovider_picker_button_value_changed), self);
-       gtk_box_pack_start (GTK_BOX (box), priv->account_serviceprovider_picker, FALSE, FALSE, 0);
-       gtk_widget_show (priv->account_serviceprovider_picker);
+       priv->account_serviceprovider_selector = modest_toolkit_factory_create_provider_selector (modest_runtime_get_toolkit_factory ());
+       if (GTK_IS_COMBO_BOX (priv->account_serviceprovider_selector)) {
+               GtkWidget *captioned;
+               g_signal_connect (G_OBJECT (priv->account_serviceprovider_selector), "changed",
+                                 G_CALLBACK (on_serviceprovider_selector_value_changed), self);
+               captioned = modest_toolkit_utils_create_captioned (title_sizegroup, value_sizegroup,
+                                                                  _("mcen_fi_serviceprovider"), FALSE,
+                                                                  priv->account_serviceprovider_selector);
+               
+               g_signal_connect (G_OBJECT (priv->account_serviceprovider_selector), "changed",
+                                 G_CALLBACK (on_serviceprovider_selector_value_changed), self);
+               gtk_box_pack_start (GTK_BOX (box), captioned, FALSE, FALSE, MODEST_MARGIN_HALF);
+               gtk_widget_show (captioned);
+       } else {
+               modest_toolkit_utils_set_hbutton_layout (title_sizegroup, value_sizegroup,
+                                                        _("mcen_fi_serviceprovider"),
+                                                        priv->account_serviceprovider_selector);
+               g_signal_connect (G_OBJECT (priv->account_serviceprovider_selector), "value-changed",
+                                 G_CALLBACK (on_serviceprovider_selector_value_changed), self);
+               gtk_box_pack_start (GTK_BOX (box), priv->account_serviceprovider_selector, FALSE, FALSE, 0);
+       }
+       gtk_widget_show (priv->account_serviceprovider_selector);
 
        /* The description widgets: */
        priv->entry_account_title = GTK_WIDGET (modest_validating_entry_new ());
@@ -573,7 +605,7 @@ create_page_account_details (ModestEasysetupWizardDialog *self)
        g_free (default_account_name_start);
        default_account_name_start = NULL;
 
-       hildon_entry_set_text (HILDON_ENTRY (priv->entry_account_title), default_account_name);
+       modest_entry_set_text (priv->entry_account_title, default_account_name);
        g_free (default_account_name);
        default_account_name = NULL;
 
@@ -608,7 +640,7 @@ create_page_account_details (ModestEasysetupWizardDialog *self)
        g_list_free (list_prevent);
        list_prevent = NULL;
        modest_validating_entry_set_func(MODEST_VALIDATING_ENTRY(priv->entry_account_title),
-                                                                                                                                        modest_utils_on_entry_invalid_character, self);
+                                        modest_utils_on_entry_invalid_character, self);
 
        /* Set max length as in the UI spec:
         * The UI spec seems to want us to show a dialog if we hit the maximum. */
@@ -638,15 +670,15 @@ on_user_username_changed(GtkWidget* widget, ModestEasysetupWizardDialog *self)
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
 
        /* Work out the user email address */
-       provider_id = modest_provider_picker_get_active_provider_id (
-               MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker));
+       provider_id = modest_provider_selector_get_active_provider_id (
+               priv->account_serviceprovider_selector);
 
        if (provider_id) {
                const gchar *current_username;
                gchar *email_address;
                gchar *domain_name = modest_presets_get_domain (priv->presets, provider_id);
 
-               current_username = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_username));
+               current_username = modest_entry_get_text (priv->entry_user_username);
 
                if (current_username && strstr (current_username, "@")) {
                        email_address = g_strdup (current_username);
@@ -657,7 +689,7 @@ on_user_username_changed(GtkWidget* widget, ModestEasysetupWizardDialog *self)
                }
 
                /* Update the email address */
-               hildon_entry_set_text (HILDON_ENTRY (priv->entry_user_email), email_address);
+               modest_entry_set_text (priv->entry_user_email, email_address);
 
                g_free (email_address);
                g_free (domain_name);
@@ -748,7 +780,7 @@ create_page_user_details (ModestEasysetupWizardDialog *self)
                                              on_entry_max, self);
 
        /* The password widgets: */
-       priv->entry_user_password = hildon_entry_new (MODEST_EDITABLE_SIZE);
+       priv->entry_user_password = modest_toolkit_factory_create_entry (modest_runtime_get_toolkit_factory ());
        /* Auto-capitalization is the default, so let's turn it off: */
        hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_user_password),
                                         HILDON_GTK_INPUT_MODE_FULL | HILDON_GTK_INPUT_MODE_INVISIBLE);
@@ -841,8 +873,8 @@ update_incoming_server_title (ModestEasysetupWizardDialog *self)
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE(self);
        protocol_registry = modest_runtime_get_protocol_registry ();
 
-       protocol_type = modest_servertype_picker_get_active_servertype (
-               MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker));
+       protocol_type = modest_servertype_selector_get_active_servertype (
+               priv->incoming_servertype_selector);
 
        /* This could happen when the combo box has still no active iter */
        if (protocol_type != MODEST_PROTOCOL_REGISTRY_TYPE_INVALID) {
@@ -857,7 +889,7 @@ update_incoming_server_title (ModestEasysetupWizardDialog *self)
                incomingserver_title = g_strconcat (_("mcen_li_emailsetup_servertype"), "\n<small>(",
                                                    protocol_display_name, ")</small>", NULL);
 
-               modest_maemo_utils_captioned_set_label (priv->caption_incoming, incomingserver_title, TRUE);
+               modest_toolkit_utils_captioned_set_label (priv->caption_incoming, incomingserver_title, TRUE);
 
                g_free(incomingserver_title);
        }
@@ -870,14 +902,12 @@ static void
 update_incoming_server_security_choices (ModestEasysetupWizardDialog *self)
 {
        ModestEasysetupWizardDialogPrivate *priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE(self);
-       ModestServertypePicker *server_type_picker;
+       GtkWidget *server_type_selector;
        ModestProtocolType protocol_type;
        ModestSecurityOptionsView *view;
 
-       server_type_picker =
-               MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker);
-       protocol_type =
-               modest_servertype_picker_get_active_servertype (server_type_picker);
+       server_type_selector = priv->incoming_servertype_selector;
+       protocol_type = modest_servertype_selector_get_active_servertype (server_type_selector);
 
        /* Fill the combo with appropriately titled choices for all
           those protocols */
@@ -885,6 +915,7 @@ update_incoming_server_security_choices (ModestEasysetupWizardDialog *self)
        modest_security_options_view_set_server_type (view, protocol_type);
 }
 
+#ifdef HILDON_PICKER_BUTTON
 static void
 on_servertype_selector_changed(HildonTouchSelector *selector, gint column, gpointer user_data)
 {
@@ -902,6 +933,25 @@ on_servertype_selector_changed(HildonTouchSelector *selector, gint column, gpoin
 
        set_default_custom_servernames (self);
 }
+#endif
+
+static void
+on_servertype_combo_changed(GtkWidget *selector, gpointer user_data)
+{
+       ModestEasysetupWizardDialog *self = MODEST_EASYSETUP_WIZARD_DIALOG (user_data);
+       ModestEasysetupWizardDialogPrivate *priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE(self);
+
+       priv->dirty = TRUE;
+
+       /* Update title */
+       update_incoming_server_title (self);
+
+       /* Update security options if needed */
+       update_incoming_server_security_choices (self);
+       gtk_widget_show (priv->incoming_security);
+
+       set_default_custom_servernames (self);
+}
 
 static void
 on_entry_incoming_servername_changed(GtkEntry *entry, gpointer user_data)
@@ -946,18 +996,30 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self)
        value_sizegroup = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
        /* The incoming server widgets: */
-       priv->incoming_servertype_picker = GTK_WIDGET (modest_servertype_picker_new (MODEST_EDITABLE_SIZE,
-                                                                                    HILDON_BUTTON_ARRANGEMENT_HORIZONTAL,
-                                                                                    TRUE));
-       modest_maemo_utils_set_hbutton_layout (title_sizegroup, value_sizegroup,
-                                              _("mcen_li_emailsetup_type"),
-                                              priv->incoming_servertype_picker);
-       g_signal_connect (G_OBJECT (priv->incoming_servertype_picker), "value-changed",
-                         G_CALLBACK (on_picker_button_value_changed), self);
-       gtk_box_pack_start (GTK_BOX (box), priv->incoming_servertype_picker, FALSE, FALSE, 0);
-       gtk_widget_show (priv->incoming_servertype_picker);
-
-       priv->entry_incomingserver = hildon_entry_new (MODEST_EDITABLE_SIZE);
+       priv->incoming_servertype_selector = 
+               modest_toolkit_factory_create_servertype_selector (modest_runtime_get_toolkit_factory (), 
+                                                                  TRUE);
+       if (GTK_IS_COMBO_BOX (priv->incoming_servertype_selector)) {
+               GtkWidget *captioned;
+               g_signal_connect (G_OBJECT (priv->incoming_servertype_selector), "changed",
+                                 G_CALLBACK (on_picker_button_value_changed), self);
+               captioned = modest_toolkit_utils_create_captioned (title_sizegroup, value_sizegroup,
+                                                                  _("mcen_fi_country"), FALSE,
+                                                                  priv->incoming_servertype_selector);
+               
+               gtk_box_pack_start (GTK_BOX (box), captioned, FALSE, FALSE, MODEST_MARGIN_HALF);
+               gtk_widget_show (captioned);
+       } else {
+               modest_toolkit_utils_set_hbutton_layout (title_sizegroup, value_sizegroup,
+                                                        _("mcen_li_emailsetup_type"),
+                                                        priv->incoming_servertype_selector);
+               g_signal_connect (G_OBJECT (priv->incoming_servertype_selector), "value-changed",
+                                 G_CALLBACK (on_picker_button_value_changed), self);
+               gtk_box_pack_start (GTK_BOX (box), priv->incoming_servertype_selector, FALSE, FALSE, 0);
+       }
+       gtk_widget_show (priv->incoming_servertype_selector);
+
+       priv->entry_incomingserver = modest_toolkit_factory_create_entry (modest_runtime_get_toolkit_factory ());
 
        /* Auto-capitalization is the default, so let's turn it off: */
        hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_incomingserver), HILDON_GTK_INPUT_MODE_FULL);
@@ -979,26 +1041,33 @@ create_page_custom_incoming (ModestEasysetupWizardDialog *self)
 
        /* The secure connection widgets. These are only valid for
           protocols with security */
-       priv->incoming_security =
-               modest_maemo_security_options_view_new (MODEST_SECURITY_OPTIONS_INCOMING,
-                                                       FALSE, title_sizegroup, value_sizegroup);
+       priv->incoming_security = modest_toolkit_factory_create_security_options_view (modest_runtime_get_toolkit_factory (),
+                                                                                      MODEST_SECURITY_OPTIONS_INCOMING,
+                                                                                      FALSE, title_sizegroup, value_sizegroup);
        gtk_box_pack_start (GTK_BOX (box), priv->incoming_security,
                            FALSE, FALSE, 0);
        gtk_widget_show (priv->incoming_security);
 
        /* Set default selection */
-       modest_servertype_picker_set_active_servertype (
-               MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker),
-               MODEST_PROTOCOLS_STORE_POP);
+       modest_servertype_selector_set_active_servertype (priv->incoming_servertype_selector,
+                                                         MODEST_PROTOCOLS_STORE_POP);
        update_incoming_server_title (self);
        update_incoming_server_security_choices (self);
        set_default_custom_servernames (self);
 
        /* Change the caption title when the servertype changes,
         * as in the UI spec: */
-       g_signal_connect (G_OBJECT (hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (priv->incoming_servertype_picker))),
-                         "changed",
-                         G_CALLBACK (on_servertype_selector_changed), self);
+       if (GTK_IS_COMBO_BOX (priv->incoming_servertype_selector)) {
+               g_signal_connect (priv->incoming_servertype_selector,
+                                 "changed",
+                                 G_CALLBACK (on_servertype_combo_changed), self);
+       } else {
+#ifdef HILDON_PICKER_BUTTON
+               g_signal_connect (G_OBJECT (hildon_picker_button_get_selector (HILDON_PICKER_BUTTON (priv->incoming_servertype_selector))),
+                                 "changed",
+                                 G_CALLBACK (on_servertype_selector_changed), self);
+#endif
+       }
 
        align = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
        gtk_alignment_set_padding (GTK_ALIGNMENT (align), 0, 0, MODEST_MARGIN_DOUBLE, 0);
@@ -1089,7 +1158,7 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self)
 
        /* The outgoing server widgets: */
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
-       priv->entry_outgoingserver = hildon_entry_new (MODEST_EDITABLE_SIZE);
+       priv->entry_outgoingserver = modest_toolkit_factory_create_entry (modest_runtime_get_toolkit_factory ());
 
        /* Auto-capitalization is the default, so let's turn it off: */
        hildon_gtk_entry_set_input_mode (GTK_ENTRY (priv->entry_outgoingserver), HILDON_GTK_INPUT_MODE_FULL);
@@ -1105,8 +1174,9 @@ create_page_custom_outgoing (ModestEasysetupWizardDialog *self)
        /* The secure connection widgets. These are only valid for
           protocols with security */
        priv->outgoing_security =
-               modest_maemo_security_options_view_new (MODEST_SECURITY_OPTIONS_OUTGOING,
-                                                       FALSE, title_sizegroup, value_sizegroup);
+               modest_toolkit_factory_create_security_options_view (modest_runtime_get_toolkit_factory (),
+                                                                    MODEST_SECURITY_OPTIONS_OUTGOING,
+                                                                    FALSE, title_sizegroup, value_sizegroup);
        gtk_box_pack_start (GTK_BOX (box), priv->outgoing_security,
                            FALSE, FALSE, 0);
        gtk_widget_show (priv->outgoing_security);
@@ -1288,31 +1358,41 @@ fill_providers (ModestEasysetupWizardDialog *self)
 {
        ModestEasysetupWizardDialogPrivate *priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
 
-       if (MODEST_IS_COUNTRY_PICKER (priv->account_country_picker)) {
+       if (priv->account_country_selector) {
 /*             gint mcc = get_default_country_code(); */
                gint mcc;
                /* Fill the combo in an idle call, as it takes a lot of time */
-               modest_country_picker_load_data(
-                       MODEST_COUNTRY_PICKER (priv->account_country_picker));
+               modest_country_selector_load_data(priv->account_country_selector);
                /* connect to country picker's changed signal, so we can fill the provider picker: */
-               g_signal_connect ((GObject *) priv->account_country_picker,
-                                 "value-changed",
-                                 G_CALLBACK (on_account_country_selector_changed), self);
-
-               modest_country_picker_set_active_country_locale (
-                       MODEST_COUNTRY_PICKER (priv->account_country_picker));
-               mcc = modest_country_picker_get_active_country_mcc (
-                       MODEST_COUNTRY_PICKER (priv->account_country_picker));
-               modest_provider_picker_fill (
-                       MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker),
+               if (GTK_IS_COMBO_BOX (priv->account_country_selector)) {
+                       g_signal_connect ((GObject *) priv->account_country_selector,
+                                         "changed",
+                                         G_CALLBACK (on_account_country_selector_changed), self);
+               } else {
+                       g_signal_connect ((GObject *) priv->account_country_selector,
+                                         "value-changed",
+                                         G_CALLBACK (on_account_country_selector_changed), self);
+               }
+
+               modest_country_selector_set_active_country_locale (priv->account_country_selector);
+               mcc = modest_country_selector_get_active_country_mcc (priv->account_country_selector);
+               modest_provider_selector_fill (
+                       priv->account_serviceprovider_selector,
                        priv->presets, mcc);
                /* connect to providers picker's changed signal, so we can fill the email address: */
-               g_signal_connect (G_OBJECT (hildon_picker_button_get_selector
-                                           (HILDON_PICKER_BUTTON (priv->account_serviceprovider_picker))),
-                                 "changed",
-                                 G_CALLBACK (on_account_serviceprovider_selector_changed), self);
-
-               modest_provider_picker_set_others_provider (MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker));
+               if (GTK_IS_COMBO_BOX (priv->account_serviceprovider_selector)) {
+                       g_signal_connect (priv->account_serviceprovider_selector,
+                                         "changed",
+                                         G_CALLBACK (on_account_serviceprovider_selector_combo_box_changed), self);
+               } else {
+#ifdef HILDON_PICKER_BUTTON
+                       g_signal_connect (G_OBJECT (hildon_picker_button_get_selector
+                                                   (HILDON_PICKER_BUTTON (priv->account_serviceprovider_selector))),
+                                         "changed",
+                                         G_CALLBACK (on_account_serviceprovider_selector_changed), self);
+#endif
+               }
+               modest_provider_selector_set_others_provider (priv->account_serviceprovider_selector);
        }
 
        priv->dirty = FALSE;
@@ -1416,7 +1496,7 @@ static void
 init_incoming_page (ModestEasysetupWizardDialogPrivate *priv)
 {
        priv->page_custom_incoming = NULL;
-       priv->incoming_servertype_picker = NULL;
+       priv->incoming_servertype_selector = NULL;
        priv->caption_incoming = NULL;
        priv->entry_incomingserver = NULL;
        priv->entry_user_email = NULL;
@@ -1654,23 +1734,23 @@ static void
 create_subsequent_pages (ModestEasysetupWizardDialog *self)
 {
        ModestEasysetupWizardDialogPrivate *priv;
-       ModestProviderPicker *picker;
-        ModestProviderPickerIdType id_type;
+       GtkWidget *picker;
+        ModestProviderSelectorIdType id_type;
        GtkNotebook *notebook;
 
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
-       picker = MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker);
-       id_type = modest_provider_picker_get_active_id_type (picker);
+       picker = priv->account_serviceprovider_selector;
+       id_type = modest_provider_selector_get_active_id_type (picker);
        g_object_get (self, "wizard-notebook", &notebook, NULL);
 
        /* Remove the response override handler for non-plugin
           protocols. For plugins it'll be overriden later */
-       if (id_type != MODEST_PROVIDER_PICKER_ID_PLUGIN_PROTOCOL)
+       if (id_type != MODEST_PROVIDER_SELECTOR_ID_PLUGIN_PROTOCOL)
                modest_wizard_dialog_set_response_override_handler (MODEST_WIZARD_DIALOG (self),
                                                                    NULL);
 
 
-       if (id_type == MODEST_PROVIDER_PICKER_ID_OTHER) {
+       if (id_type == MODEST_PROVIDER_SELECTOR_ID_OTHER) {
                /* "Other..." was selected: */
 
                /* If we come from a rollbacked easysetup */
@@ -1700,14 +1780,14 @@ create_subsequent_pages (ModestEasysetupWizardDialog *self)
                }
 
                /* It's a pluggable protocol and not a provider with presets */
-               if (id_type == MODEST_PROVIDER_PICKER_ID_PLUGIN_PROTOCOL) {
+               if (id_type == MODEST_PROVIDER_SELECTOR_ID_PLUGIN_PROTOCOL) {
                        ModestProtocol *protocol;
                        gchar *proto_name;
                        ModestProtocolType proto_type;
                        ModestWizardDialogResponseOverrideFunc response_override;
 
                        /* Get protocol data */
-                       proto_name = modest_provider_picker_get_active_provider_id (picker);
+                       proto_name = modest_provider_selector_get_active_provider_id (picker);
                        protocol = modest_protocol_registry_get_protocol_by_name (modest_runtime_get_protocol_registry (),
                                                                                  MODEST_PROTOCOL_REGISTRY_PROVIDER_PROTOCOLS,
                                                                                  proto_name);
@@ -1842,18 +1922,18 @@ set_default_custom_servernames (ModestEasysetupWizardDialog *self)
         */
        if (priv->entry_user_email
            && ((priv->server_changes & MODEST_EASYSETUP_WIZARD_DIALOG_INCOMING_CHANGED) == 0)) {
-               const ModestProtocolType protocol_type = modest_servertype_picker_get_active_servertype (
-                       MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker));
+               const ModestProtocolType protocol_type = modest_servertype_selector_get_active_servertype (
+                       priv->incoming_servertype_selector);
 
                /* This could happen when the combo box has still no active iter */
                if (protocol_type != MODEST_PROTOCOL_REGISTRY_TYPE_INVALID) {
-                       const gchar* email_address = hildon_entry_get_text (HILDON_ENTRY(priv->entry_user_email));
+                       const gchar* email_address = modest_entry_get_text (priv->entry_user_email);
                        gchar* servername = util_get_default_servername_from_email_address (email_address,
                                                                                            protocol_type);
 
                        /* Do not set the INCOMING_CHANGED flag because of this edit */
                        g_signal_handlers_block_by_func (G_OBJECT (priv->entry_incomingserver), G_CALLBACK (on_entry_incoming_servername_changed), self);
-                       hildon_entry_set_text (HILDON_ENTRY (priv->entry_incomingserver), servername);
+                       modest_entry_set_text (priv->entry_incomingserver, servername);
                        g_signal_handlers_unblock_by_func (G_OBJECT (priv->entry_incomingserver), G_CALLBACK (on_entry_incoming_servername_changed), self);
 
                        g_free (servername);
@@ -1868,13 +1948,13 @@ set_default_custom_servernames (ModestEasysetupWizardDialog *self)
 
        if (priv->entry_user_email
            && ((priv->server_changes & MODEST_EASYSETUP_WIZARD_DIALOG_OUTGOING_CHANGED) == 0)) {
-               const gchar* email_address = hildon_entry_get_text (HILDON_ENTRY(priv->entry_user_email));
+               const gchar* email_address = modest_entry_get_text (priv->entry_user_email);
 
                gchar* servername = util_get_default_servername_from_email_address (email_address, MODEST_PROTOCOLS_TRANSPORT_SMTP);
 
                /* Do not set the OUTGOING_CHANGED flag because of this edit */
                g_signal_handlers_block_by_func (G_OBJECT (priv->entry_outgoingserver), G_CALLBACK (on_entry_outgoing_servername_changed), self);
-               hildon_entry_set_text (HILDON_ENTRY (priv->entry_outgoingserver), servername);
+               modest_entry_set_text (priv->entry_outgoingserver, servername);
                g_signal_handlers_unblock_by_func (G_OBJECT (priv->entry_outgoingserver), G_CALLBACK (on_entry_outgoing_servername_changed), self);
 
                g_free (servername);
@@ -1888,7 +1968,7 @@ get_entered_account_title (ModestEasysetupWizardDialog *self)
        const gchar* account_title;
 
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE(self);
-       account_title = hildon_entry_get_text (HILDON_ENTRY (priv->entry_account_title));
+       account_title = modest_entry_get_text (priv->entry_account_title);
 
        if (!account_title || (g_utf8_strlen (account_title, -1) == 0)) {
                return NULL;
@@ -1955,7 +2035,7 @@ on_before_next (ModestWizardDialog *dialog, GtkWidget *current_page, GtkWidget *
 
        } else if (current_page == priv->page_user_details) {
                /* Check that the email address is valud: */
-               const gchar* email_address = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_email));
+               const gchar* email_address = modest_entry_get_text (priv->entry_user_email);
                if ((!email_address) || (g_utf8_strlen (email_address, -1) == 0))
                        return FALSE;
 
@@ -2030,7 +2110,7 @@ static gboolean entry_is_empty (GtkWidget *entry)
        if (!entry)
                return FALSE;
 
-       const gchar* text = hildon_entry_get_text (HILDON_ENTRY (entry));
+       const gchar* text = modest_entry_get_text (entry);
        if ((!text) || (g_utf8_strlen (text, -1) == 0))
                return TRUE;
        else {
@@ -2193,20 +2273,20 @@ save_to_settings (ModestEasysetupWizardDialog *self)
        ModestProtocolType store_auth_protocol, transport_auth_protocol;
        ModestServerAccountSettings *store_settings, *transport_settings;
        const gchar *fullname, *email_address;
-       ModestProviderPicker *picker;
-       ModestProviderPickerIdType id_type;
+       GtkWidget *picker;
+       ModestProviderSelectorIdType id_type;
 
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
-       picker = MODEST_PROVIDER_PICKER (priv->account_serviceprovider_picker);
+       picker = priv->account_serviceprovider_selector;
        protocol_registry = modest_runtime_get_protocol_registry ();
 
        /* Get details from the specified presets: */
-       id_type = modest_provider_picker_get_active_id_type (picker);
-       provider_id = modest_provider_picker_get_active_provider_id (picker);
+       id_type = modest_provider_selector_get_active_id_type (picker);
+       provider_id = modest_provider_selector_get_active_provider_id (picker);
 
        /* Let the plugin save the settings. We do a return in order
           to save an indentation level */
-       if (id_type == MODEST_PROVIDER_PICKER_ID_PLUGIN_PROTOCOL) {
+       if (id_type == MODEST_PROVIDER_SELECTOR_ID_PLUGIN_PROTOCOL) {
                ModestProtocol *protocol;
 
                protocol = modest_protocol_registry_get_protocol_by_name (
@@ -2240,8 +2320,8 @@ save_to_settings (ModestEasysetupWizardDialog *self)
        }
 
        /* username and password (for both incoming and outgoing): */
-       username = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_username));
-       password = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_password));
+       username = modest_entry_get_text (priv->entry_user_username);
+       password = modest_entry_get_text (priv->entry_user_password);
 
        store_settings = modest_account_settings_get_store_settings (priv->settings);
        transport_settings = modest_account_settings_get_transport_settings (priv->settings);
@@ -2313,9 +2393,9 @@ save_to_settings (ModestEasysetupWizardDialog *self)
                        modest_server_account_settings_set_port (store_settings, store_port);
        } else {
                /* Use custom pages because no preset was specified: */
-               store_hostname = g_strdup (hildon_entry_get_text (HILDON_ENTRY (priv->entry_incomingserver) ));
-               store_protocol = modest_servertype_picker_get_active_servertype (
-                       MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker));
+               store_hostname = g_strdup (modest_entry_get_text (priv->entry_incomingserver ));
+               store_protocol = modest_servertype_selector_get_active_servertype (
+                       priv->incoming_servertype_selector);
 
                modest_security_options_view_save_settings (
                                    MODEST_SECURITY_OPTIONS_VIEW (priv->incoming_security),
@@ -2390,7 +2470,7 @@ save_to_settings (ModestEasysetupWizardDialog *self)
 
                registry = modest_runtime_get_protocol_registry ();
                /* Use custom pages because no preset was specified: */
-               transport_hostname = g_strdup (hildon_entry_get_text (HILDON_ENTRY (priv->entry_outgoingserver) ));
+               transport_hostname = g_strdup (modest_entry_get_text (priv->entry_outgoingserver ));
 
                store_proto = modest_protocol_registry_get_protocol_by_type (registry,
                                                                             store_protocol);
@@ -2419,8 +2499,8 @@ save_to_settings (ModestEasysetupWizardDialog *self)
        if (alternate_username)
                g_free (alternate_username);
 
-       fullname = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_name));
-       email_address = hildon_entry_get_text (HILDON_ENTRY (priv->entry_user_email));
+       fullname = modest_entry_get_text (priv->entry_user_name);
+       email_address = modest_entry_get_text (priv->entry_user_email);
        modest_account_settings_set_fullname (priv->settings, fullname);
        modest_account_settings_set_email_address (priv->settings, email_address);
        /* we don't set retrieve type to preserve advanced settings if
@@ -2486,8 +2566,8 @@ check_for_supported_auth_methods (ModestEasysetupWizardDialog* self)
 
        priv = MODEST_EASYSETUP_WIZARD_DIALOG_GET_PRIVATE (self);
        registry = modest_runtime_get_protocol_registry ();
-       protocol_type = modest_servertype_picker_get_active_servertype (
-               MODEST_SERVERTYPE_PICKER (priv->incoming_servertype_picker));
+       protocol_type = modest_servertype_selector_get_active_servertype (
+               priv->incoming_servertype_selector);
        hostname = gtk_entry_get_text(GTK_ENTRY(priv->entry_incomingserver));
        username = gtk_entry_get_text(GTK_ENTRY(priv->entry_user_username));
        security_protocol_incoming_type = modest_security_options_view_get_connection_protocol
@@ -2710,6 +2790,8 @@ check_support_of_protocols (ModestEasysetupWizardDialog *self)
                g_signal_connect (priv->check_support_cancel_note, "response", G_CALLBACK (on_check_support_cancel), self);
        } else {
                priv->check_support_done = TRUE;
+               if (priv->presets)
+                       fill_providers (self);
        }
        invoke_enable_buttons_vfunc (self);
 }