* refactored account setup wizard (assistant), with specifics for transport/store
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Mon, 31 Jul 2006 06:38:12 +0000 (06:38 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Mon, 31 Jul 2006 06:38:12 +0000 (06:38 +0000)
    going to modest-store-widget and modest-transport widget.
* got assistant to work, still quite crude though
* various other updates

pmo-trunk-r432

13 files changed:
src/gtk2/Makefile.am
src/gtk2/modest-account-assistant.c
src/gtk2/modest-account-assistant.h
src/gtk2/modest-account-view-window.c
src/gtk2/modest-account-view-window.h
src/gtk2/modest-edit-msg-window.c
src/gtk2/modest-main-window.c
src/gtk2/modest-main-window.h
src/gtk2/modest-store-widget.c [new file with mode: 0644]
src/gtk2/modest-store-widget.h [new file with mode: 0644]
src/gtk2/modest-transport-widget.c [new file with mode: 0644]
src/gtk2/modest-transport-widget.h [new file with mode: 0644]
src/gtk2/modest-ui.c

index 5e874cb..c0086e4 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Makefile.am
-# Time-stamp: <2006-07-25 08:52:20 (djcb)>
+# Time-stamp: <2006-07-29 20:47:31 (djcb)>
 #
 #
 # use Automake 'trick' ==> convenience static libraries, which
@@ -29,7 +29,11 @@ libmodest_ui_la_SOURCES=              \
        modest-account-assistant.c    \
        modest-account-assistant.h    \
        modest-edit-msg-window.c      \
-       modest-edit-msg-window.h
+       modest-edit-msg-window.h      \
+       modest-transport-widget.c     \
+       modest-transport-widget.h     \
+       modest-store-widget.c         \
+       modest-store-widget.h
 
 LDADD = \
        $(MODEST_GSTUFF_LIBS) \
index 19b5703..ddd89c9 100644 (file)
@@ -28,6 +28,9 @@
  */
 
 #include "modest-account-assistant.h"
+#include "modest-store-widget.h"
+#include "modest-transport-widget.h"
+
 #include <string.h>
 
 /* 'private'/'protected' functions */
@@ -44,36 +47,19 @@ enum {
 
 typedef struct _ModestAccountAssistantPrivate ModestAccountAssistantPrivate;
 struct _ModestAccountAssistantPrivate {
+
        ModestWidgetFactory *factory;
-       
+       ModestAccountMgr *account_mgr;
+
+       GtkWidget *account_name;
        GtkWidget *fullname;
        GtkWidget *email;
+       
+       GtkWidget *store_widget;
+       GtkWidget *transport_widget;
 
-       /* sending */
-       GtkWidget *servertype_s;
-       GtkWidget *servername_s;
-       GtkWidget *username_s;
-       GtkWidget *server_type_s;
-
-       /* receiving */
-       GtkWidget *servertype_r;
-       GtkWidget *servername_r;
-       GtkWidget *username_r;
-       GtkWidget *server_type_r;
-
-       GtkWidget *remember_pwd;
-       GtkWidget *maildir_chooser;
-       GtkWidget *mbox_chooser;
-
-       GtkWidget *maildir_config;
-       GtkWidget *mbox_config;
-       GtkWidget *imap_pop_config;
-       GtkWidget *smtp_config;
-
-       GtkWidget *receiving_subwidget;
-       GtkWidget *sending_subwidget;   
-       GtkWidget *receiving_child;
-       GtkWidget *sending_child;
+       GtkWidget *transport_holder;
+       GtkWidget *store_holder;        
 };
 
 #define MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
@@ -132,8 +118,7 @@ modest_account_assistant_class_init (ModestAccountAssistantClass *klass)
 static void
 add_intro_page (ModestAccountAssistant *assistant)
 {
-       GtkWidget *page;
-       GtkWidget *label;
+       GtkWidget *page, *label;
        
        page = gtk_vbox_new (FALSE, 6);
        
@@ -195,10 +180,7 @@ identity_page_update_completeness (GtkEditable *editable,
 static void
 add_identity_page (ModestAccountAssistant *self)
 {
-       GtkWidget *page;
-       GtkWidget *label;
-       GtkWidget *table;
-
+       GtkWidget *page, *label, *table;
        ModestAccountAssistantPrivate *priv;
 
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
@@ -243,138 +225,6 @@ add_identity_page (ModestAccountAssistant *self)
 }      
 
 
-
-static GtkWidget *
-maildir_configuration (ModestAccountAssistant *self)
-{
-       ModestAccountAssistantPrivate *priv;
-       GtkWidget *label, *box, *hbox;
-       
-       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
-       box = gtk_vbox_new (FALSE, 6);
-       
-       label = gtk_label_new (NULL);
-       gtk_label_set_markup (GTK_LABEL(label),
-                             _("<b>Maildir configuration</b>"));       
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-       label = gtk_label_new (NULL);
-       gtk_label_set_markup (GTK_LABEL(label),
-                             _("Please select the path to your Maildir below"));       
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-       
-       label = gtk_label_new (_("Path:"));
-
-       priv->maildir_chooser =
-               gtk_file_chooser_button_new (_("(none)"),
-                                            GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
-
-       hbox = gtk_hbox_new (FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox), priv->maildir_chooser, FALSE, FALSE, 6);
-
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);       
-
-       return box;
-}
-
-
-static GtkWidget*
-mbox_configuration (ModestAccountAssistant *self)
-{
-       ModestAccountAssistantPrivate *priv;
-       GtkWidget *label, *box, *hbox;
-       
-       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
-       box = gtk_vbox_new (FALSE, 6);
-       
-       label = gtk_label_new (NULL);
-       gtk_label_set_markup (GTK_LABEL(label),
-                             _("<b>Mbox configuration</b>"));  
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-       label = gtk_label_new (NULL);
-       gtk_label_set_markup (GTK_LABEL(label),
-                             _("Please select your mbox file below")); 
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-       
-       label = gtk_label_new (_("mbox:"));
-
-       priv->mbox_chooser =
-               gtk_file_chooser_button_new (_("(none)"),
-                                            GTK_FILE_CHOOSER_ACTION_OPEN);
-       hbox = gtk_hbox_new (FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox), priv->mbox_chooser, FALSE, FALSE, 6);
-
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);       
-
-       return box;
-}
-
-
-static GtkWidget*
-imap_pop_configuration (ModestAccountAssistant *self)
-{
-       ModestAccountAssistantPrivate *priv;
-       GtkWidget *label, *box, *hbox;
-
-       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
-       box = gtk_vbox_new (FALSE, 6);
-       
-       label = gtk_label_new (NULL);
-       gtk_label_set_markup (GTK_LABEL(label),_("<b>Server configuration</b>"));
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-
-       hbox    = gtk_hbox_new (FALSE, 6);
-       label   = gtk_label_new (_("Username:"));
-       if (!priv->username_r)
-               priv->username_r = gtk_entry_new_with_max_length (40);
-       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(hbox), priv->username_r,FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);       
-
-       hbox    = gtk_hbox_new (FALSE, 6);
-       label   = gtk_label_new (_("Server:"));
-       if (!priv->servername_r)
-               priv->servername_r = gtk_entry_new_with_max_length (40);
-       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(hbox), priv->servername_r,FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);       
-
-       label = gtk_label_new(NULL);
-       gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
-
-       hbox = gtk_hbox_new (FALSE, 6);
-       label = gtk_label_new(NULL);
-       gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
-       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(hbox),  modest_widget_factory_get_combo_box
-                           (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
-                           FALSE, FALSE,0);
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
-       
-       hbox = gtk_hbox_new (FALSE, 6);
-       label = gtk_label_new(NULL);
-
-       gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
-       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(hbox),   modest_widget_factory_get_combo_box
-                           (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
-                           FALSE, FALSE, 0);
-
-       priv->remember_pwd =
-               gtk_check_button_new_with_label (_("Remember password"));
-       gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
-                           FALSE, FALSE, 0);
-       
-
-       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
-
-       return box;
-}
-
-
-
 static void
 on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self)
 {
@@ -384,37 +234,16 @@ on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
        chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo));
 
-       if (priv->receiving_child)
-               gtk_container_remove (GTK_CONTAINER(priv->receiving_subwidget),
-                                     priv->receiving_child);
+       if (priv->store_widget)
+               gtk_container_remove (GTK_CONTAINER(priv->store_holder),
+                                     priv->store_widget);
        
-       if (strcmp (chosen, MODEST_PROTO_POP) == 0 ||
-           strcmp (chosen, MODEST_PROTO_IMAP) == 0) {
-               if (!priv->imap_pop_config)
-                       priv->imap_pop_config = imap_pop_configuration (self);
-               g_object_ref (G_OBJECT(priv->imap_pop_config));
-               priv->receiving_child  = priv->imap_pop_config;
-
-       } else if (strcmp (chosen, MODEST_PROTO_MAILDIR) == 0) {
-
-               if (!priv->maildir_config)
-                       priv->maildir_config = maildir_configuration (self);
-               g_object_ref (G_OBJECT(priv->maildir_config));
-               priv->receiving_child = priv->maildir_config;
-
-       }  else if (strcmp (chosen, MODEST_PROTO_MBOX) == 0) {
-               if (!priv->mbox_config)
-                       priv->mbox_config = mbox_configuration (self);
-               g_object_ref (G_OBJECT(priv->mbox_config));
-               priv->receiving_child = priv->mbox_config;
-       } else
-               priv->receiving_child = gtk_label_new (NULL);
+       priv->store_widget = modest_store_widget_new (priv->factory, chosen);
 
+       gtk_container_add (GTK_CONTAINER(priv->store_holder),
+                          priv->store_widget);
        
-       gtk_container_add (GTK_CONTAINER(priv->receiving_subwidget),
-                          priv->receiving_child);
-       
-       gtk_widget_show_all (priv->receiving_subwidget);
+       gtk_widget_show_all (priv->store_holder);
        
 }      
 
@@ -447,8 +276,8 @@ add_receiving_page (ModestAccountAssistant *self)
        
        gtk_box_pack_start (GTK_BOX(page), gtk_hseparator_new(), FALSE, FALSE, 0);
 
-       priv->receiving_subwidget = gtk_hbox_new (FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(page), priv->receiving_subwidget,
+       priv->store_holder = gtk_hbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(page), priv->store_holder,
                            TRUE, TRUE, 0);
        
        gtk_assistant_append_page (GTK_ASSISTANT(self), page);
@@ -457,29 +286,12 @@ add_receiving_page (ModestAccountAssistant *self)
                                      _("Receiving mail"));
        gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
                                     GTK_ASSISTANT_PAGE_INTRO);
-
        gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
                                         page, TRUE);
        gtk_widget_show_all (page);
 }
 
 
-static GtkWidget*
-smtp_configuration (ModestAccountAssistant *self)
-{
-       ModestAccountAssistantPrivate *priv;
-       GtkWidget *label, *box;
-       
-       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
-       box = gtk_vbox_new (FALSE, 6);
-       
-       label = gtk_label_new (NULL);
-       gtk_label_set_markup (GTK_LABEL(label),
-                             _("<b>SMTP configuration</b>"));  
-       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
-
-       return box;
-}
 
 
 static void
@@ -492,24 +304,17 @@ on_sending_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self)
 
        chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo));
 
-       if (priv->sending_child)
-               gtk_container_remove (GTK_CONTAINER(priv->sending_subwidget),
-                                     priv->sending_child);
+       if (priv->transport_widget)
+               gtk_container_remove (GTK_CONTAINER(priv->transport_holder),
+                                     priv->transport_widget);
        
-       if (strcmp (chosen, MODEST_PROTO_SENDMAIL) == 0) {
-               priv->sending_child = gtk_label_new (NULL);
+       priv->transport_widget = modest_transport_widget_new (priv->factory,
+                                                             chosen);
 
-       } else if (strcmp (chosen, MODEST_PROTO_SMTP) == 0) {
-               if (!priv->smtp_config)
-                       priv->smtp_config = smtp_configuration (self);
-               g_object_ref (G_OBJECT(priv->smtp_config));
-               priv->sending_child = priv->smtp_config;
-       } else
-               g_assert_not_reached ();
-       
-       gtk_container_add (GTK_CONTAINER(priv->sending_subwidget),
-                          priv->sending_child);
-       gtk_widget_show_all (priv->sending_subwidget);
+       gtk_container_add (GTK_CONTAINER(priv->transport_holder),
+                          priv->transport_widget);
+
+       gtk_widget_show_all (priv->transport_holder);
 }
 
 
@@ -527,25 +332,25 @@ add_sending_page (ModestAccountAssistant *self)
        gtk_box_pack_start (GTK_BOX(page),
                            gtk_label_new (
                                    _("Please select among the following options")),
-                           FALSE, FALSE, 6);
-       box = gtk_hbox_new (FALSE, 6);
+                           FALSE, FALSE, 0);
+       box = gtk_hbox_new (FALSE, 0);
        gtk_box_pack_start (GTK_BOX(box),
                            gtk_label_new(_("Server type")),
-                           FALSE,FALSE,6);
+                           FALSE,FALSE,0);
 
        combo = modest_widget_factory_get_combo_box (priv->factory,
                                                     MODEST_COMBO_BOX_TYPE_TRANSPORT_PROTOS);
        g_signal_connect (G_OBJECT(combo), "changed",
                          G_CALLBACK(on_sending_combo_box_changed), self);
 
-       gtk_box_pack_start (GTK_BOX(box), combo, FALSE,FALSE,6);
-       gtk_box_pack_start (GTK_BOX(page), box, FALSE,FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(box), combo, FALSE,FALSE,0);
+       gtk_box_pack_start (GTK_BOX(page), box, FALSE,FALSE, 0);
        
        gtk_box_pack_start (GTK_BOX(page), gtk_hseparator_new(), FALSE, FALSE, 0);
 
-       priv->sending_subwidget = gtk_hbox_new (FALSE, 0);
-       gtk_box_pack_start (GTK_BOX(page), priv->sending_subwidget,
-                           TRUE, TRUE, 0);
+       priv->transport_holder = gtk_hbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(page), priv->transport_holder,
+                           FALSE, FALSE, 0);
        
        gtk_assistant_append_page (GTK_ASSISTANT(self), page);
                
@@ -553,11 +358,50 @@ add_sending_page (ModestAccountAssistant *self)
                                      _("Sending mail"));
        gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
                                     GTK_ASSISTANT_PAGE_INTRO);
+       gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
+                                        page, TRUE);
+       gtk_widget_show_all (page);
+}
+
+
+
+static void
+add_final_page (ModestAccountAssistant *self)
+{
+       GtkWidget *page, *box;
+       ModestAccountAssistantPrivate *priv;
+
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+       page = gtk_vbox_new (FALSE, 6);
+       
+       gtk_box_pack_start (GTK_BOX(page),
+                           gtk_label_new (
+                                   _("We're almost done. Press 'Apply' to store this new account")),
+                           FALSE, FALSE, 6);
+       box = gtk_hbox_new (FALSE, 6);
+       priv->account_name =
+               gtk_entry_new_with_max_length (40);
+       gtk_entry_set_text (GTK_ENTRY(priv->account_name),
+                           gtk_entry_get_text(GTK_ENTRY(priv->email)));
+       gtk_box_pack_start (GTK_BOX(box),gtk_label_new(_("Account name:")),
+                           FALSE,FALSE,6);
+       gtk_box_pack_start (GTK_BOX(box),priv->account_name , FALSE,FALSE,6);
+       
+       gtk_box_pack_start (GTK_BOX(page), box, FALSE, FALSE, 6);
+       
+       gtk_assistant_append_page (GTK_ASSISTANT(self), page);
+               
+       gtk_assistant_set_page_title (GTK_ASSISTANT(self), page,
+                                     _("Account Management"));
+       gtk_assistant_set_page_type (GTK_ASSISTANT(self), page,
+                                    GTK_ASSISTANT_PAGE_CONFIRM);
 
        gtk_assistant_set_page_complete (GTK_ASSISTANT(self),
                                         page, TRUE);
        gtk_widget_show_all (page);
 }
+       
+
 
 
 static void
@@ -565,17 +409,12 @@ modest_account_assistant_init (ModestAccountAssistant *obj)
 {      
        ModestAccountAssistantPrivate *priv;
                
-       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj);
-       
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(obj);       
        priv->factory           = NULL;
+       priv->account_mgr       = NULL;
 
-       priv->maildir_config    = NULL;
-       priv->mbox_config       = NULL;
-       priv->imap_pop_config   = NULL;
-       priv->smtp_config       = NULL;
-       
-       priv->receiving_child   = NULL;
-       priv->sending_child     = NULL;
+       priv->store_widget      = NULL;
+       priv->transport_widget  = NULL;
 }
 
 static void
@@ -589,6 +428,13 @@ modest_account_assistant_finalize (GObject *obj)
                g_object_unref (G_OBJECT(priv->factory));
                priv->factory = NULL;
        }
+       
+       if (priv->account_mgr) {
+               g_object_unref (G_OBJECT(priv->account_mgr));
+               priv->account_mgr = NULL;
+       }
+
+
 
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
@@ -630,31 +476,112 @@ on_cancel (ModestAccountAssistant *self, gpointer user_data)
                break;
        default: g_assert_not_reached ();
 
-       };
-                            
+       };                           
+}
+
+static const gchar*
+get_account_name (ModestAccountAssistant *self)
+{
+       ModestAccountAssistantPrivate *priv;
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+       return gtk_entry_get_text (GTK_ENTRY(priv->account_name));
+}
+
+static const gchar*
+get_fullname (ModestAccountAssistant *self)
+{
+       ModestAccountAssistantPrivate *priv;
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+       return gtk_entry_get_text (GTK_ENTRY(priv->fullname));
+}
+
+
+
+static const gchar*
+get_email (ModestAccountAssistant *self)
+{
+       ModestAccountAssistantPrivate *priv;
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+       return gtk_entry_get_text (GTK_ENTRY(priv->email));
 }
 
 
+
+static void
+on_apply (ModestAccountAssistant *self, gpointer user_data)
+{
+       ModestAccountAssistantPrivate *priv;
+       gchar *store_name;
+       const gchar *account_name;
+       ModestStoreWidget *store;
+
+       priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+
+       /* create account */
+
+       /* create server account -> store */
+       store = MODEST_STORE_WIDGET(priv->store_widget);
+       store_name = g_strdup_printf ("%s:%s@%s",
+                                     modest_store_widget_get_proto (store),
+                                     modest_store_widget_get_username (store),
+                                     modest_store_widget_get_servername (store));
+       
+       modest_account_mgr_add_server_account (priv->account_mgr,
+                                               store_name,
+                                               modest_store_widget_get_servername (store),
+                                               modest_store_widget_get_username (store),
+                                               NULL,
+                                               modest_store_widget_get_proto (store));
+
+       /* create server account -> transport */
+       account_name = get_account_name (self);
+       modest_account_mgr_add_account (priv->account_mgr,
+                                       account_name,
+                                       store_name,
+                                       NULL, NULL);
+       modest_account_mgr_set_string (priv->account_mgr,
+                                      account_name,
+                                      MODEST_ACCOUNT_FULLNAME,
+                                      get_fullname(self), FALSE, NULL);
+       modest_account_mgr_set_string (priv->account_mgr,
+                                      account_name,
+                                      MODEST_ACCOUNT_EMAIL,
+                                      get_email(self), FALSE, NULL);
+       
+       g_free (store_name);
+}
+
+
+
 GtkWidget*
-modest_account_assistant_new (ModestWidgetFactory *factory)
+modest_account_assistant_new (ModestAccountMgr *account_mgr, ModestWidgetFactory *factory)
 {
        GObject *obj;
        ModestAccountAssistant *self;
        ModestAccountAssistantPrivate *priv;
                
        g_return_val_if_fail (factory, NULL);
+       g_return_val_if_fail (account_mgr, NULL);
        
        obj  = g_object_new(MODEST_TYPE_ACCOUNT_ASSISTANT, NULL);
        self = MODEST_ACCOUNT_ASSISTANT(obj);
 
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
+       
        g_object_ref (factory);
        priv->factory = factory;
        
+       g_object_ref (account_mgr);
+       priv->account_mgr = account_mgr;
+
        add_intro_page (self);
        add_identity_page (self); 
        add_receiving_page (self); 
-       add_sending_page (self); 
+       add_sending_page (self);
+       add_final_page (self);
 
        gtk_assistant_set_current_page (GTK_ASSISTANT(self), 0);
        gtk_window_set_title (GTK_WINDOW(self),
@@ -664,6 +591,8 @@ modest_account_assistant_new (ModestWidgetFactory *factory)
        
        gtk_window_set_modal (GTK_WINDOW(self), TRUE);
 
+       g_signal_connect (G_OBJECT(self), "apply",
+                         G_CALLBACK(on_apply), NULL);
        g_signal_connect (G_OBJECT(self), "cancel",
                          G_CALLBACK(on_cancel), NULL);
 
index 9f4f9e8..9fce688 100644 (file)
@@ -33,6 +33,7 @@
 #include <gtk/gtk.h>
 #include <glib/gi18n.h>
 #include <modest-widget-factory.h>
+#include <modest-account-mgr.h>
 
 G_BEGIN_DECLS
 
@@ -61,7 +62,8 @@ struct _ModestAccountAssistantClass {
 /* member functions */
 GType        modest_account_assistant_get_type    (void) G_GNUC_CONST;
 
-GtkWidget*    modest_account_assistant_new        (ModestWidgetFactory *factory);
+GtkWidget*    modest_account_assistant_new        (ModestAccountMgr* account_mgr,
+                                                  ModestWidgetFactory *factory);
 
 
 G_END_DECLS
index dd4d48f..0109396 100644 (file)
@@ -45,7 +45,7 @@ enum {
 
 typedef struct _ModestAccountViewWindowPrivate ModestAccountViewWindowPrivate;
 struct _ModestAccountViewWindowPrivate {
-       ModestConf          *conf;
+       ModestAccountMgr    *account_mgr;
        ModestWidgetFactory *widget_factory;
        GtkWidget           *edit_button, *remove_button;
 };
@@ -107,7 +107,7 @@ modest_account_view_window_init (ModestAccountViewWindow *obj)
                
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
 
-       priv->conf = NULL;
+       priv->account_mgr    = NULL;
        priv->widget_factory = NULL;
 }
 
@@ -118,9 +118,9 @@ modest_account_view_window_finalize (GObject *obj)
                
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
 
-       if (priv->conf) {
-               g_object_unref (G_OBJECT(priv->conf));
-               priv->conf = NULL;
+       if (priv->account_mgr) {
+               g_object_unref (G_OBJECT(priv->account_mgr));
+               priv->account_mgr = NULL;
        }
        
        if (priv->widget_factory) {
@@ -171,7 +171,8 @@ on_add_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
        
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
 
-       assistant = modest_account_assistant_new (priv->widget_factory);
+       assistant = modest_account_assistant_new (priv->account_mgr,
+                                                 priv->widget_factory);
        gtk_window_set_transient_for (GTK_WINDOW(assistant),
                                      GTK_WINDOW(self));
 
@@ -220,7 +221,7 @@ button_box_new (ModestAccountViewWindow *self)
        gtk_widget_set_sensitive (edit_button, FALSE);
        gtk_widget_set_sensitive (remove_button, FALSE);        
 
-       /* remember these, so we can deactivate them when nothing i
+       /* remember these, so we can deactivate them when nothing is
         * selected */
        priv->remove_button = remove_button;
        priv->edit_button   = edit_button;
@@ -275,19 +276,19 @@ window_vbox_new (ModestAccountViewWindow *self)
 
 
 GtkWidget*
-modest_account_view_window_new (ModestConf *conf, ModestWidgetFactory *factory)
+modest_account_view_window_new (ModestAccountMgr *account_mgr, ModestWidgetFactory *factory)
 {
        GObject *obj;
        ModestAccountViewWindowPrivate *priv;
 
-       g_return_val_if_fail (conf, NULL);
+       g_return_val_if_fail (account_mgr, NULL);
        g_return_val_if_fail (factory, NULL);
        
        obj  = g_object_new(MODEST_TYPE_ACCOUNT_VIEW_WINDOW, NULL);
        priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj);
 
-       g_object_ref (G_OBJECT(conf));
-       priv->conf = conf;
+       g_object_ref (G_OBJECT(account_mgr));
+       priv->account_mgr = account_mgr;
        
        g_object_ref (G_OBJECT(factory));
        priv->widget_factory = factory;
index 12bd393..8db09c4 100644 (file)
@@ -35,8 +35,7 @@ struct _ModestAccountViewWindowClass {
 /* member functions */
 GType        modest_account_view_window_get_type    (void) G_GNUC_CONST;
 
-
-GtkWidget*   modest_account_view_window_new         (ModestConf *conf,
+GtkWidget*   modest_account_view_window_new         (ModestAccountMgr *account_mgr,
                                                     ModestWidgetFactory *factory);
 
 G_END_DECLS
index 5811350..86c86d2 100644 (file)
@@ -32,9 +32,9 @@
 #include <modest-widget-memory.h>
 
 /* 'private'/'protected' functions */
-static void                        modest_edit_msg_window_class_init   (ModestEditMsgWindowClass *klass);
-static void                        modest_edit_msg_window_init         (ModestEditMsgWindow *obj);
-static void                        modest_edit_msg_window_finalize     (GObject *obj);
+static void  modest_edit_msg_window_class_init   (ModestEditMsgWindowClass *klass);
+static void  modest_edit_msg_window_init         (ModestEditMsgWindow *obj);
+static void  modest_edit_msg_window_finalize     (GObject *obj);
 
 /* list my signals */
 enum {
@@ -124,10 +124,14 @@ modest_edit_msg_window_init (ModestEditMsgWindow *obj)
        priv->subject_field = gtk_entry_new_with_max_length (40);
 
        header_table = gtk_table_new (4,2, FALSE);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), to_button,     0,1,0,1);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), cc_button,     0,1,1,2);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), bcc_button,    0,1,2,3);
-       gtk_table_attach_defaults (GTK_TABLE(header_table), subject_label, 0,1,3,4);
+       gtk_table_attach (GTK_TABLE(header_table), to_button,     0,1,0,1,
+                         GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), cc_button,     0,1,1,2,
+                         GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), bcc_button,    0,1,2,3,
+                         GTK_SHRINK, 0, 0, 0);
+       gtk_table_attach (GTK_TABLE(header_table), subject_label, 0,1,3,4,
+                         GTK_SHRINK, 0, 0, 0);
  
        gtk_table_attach_defaults (GTK_TABLE(header_table), priv->to_field,     1,2,0,1);
        gtk_table_attach_defaults (GTK_TABLE(header_table), priv->cc_field,     1,2,1,2);
@@ -138,7 +142,7 @@ modest_edit_msg_window_init (ModestEditMsgWindow *obj)
        
        main_vbox = gtk_vbox_new  (FALSE, 6);
 
-       gtk_box_pack_start (GTK_BOX(main_vbox), header_table, TRUE, TRUE, 6);
+       gtk_box_pack_start (GTK_BOX(main_vbox), header_table, FALSE, FALSE, 6);
        gtk_box_pack_start (GTK_BOX(main_vbox), priv->msg_body, TRUE, TRUE, 6);
 
        gtk_widget_show_all (GTK_WIDGET(main_vbox));
@@ -159,6 +163,21 @@ modest_edit_msg_window_finalize (GObject *obj)
 
 }
 
+static gboolean
+on_delete_event (GtkWidget *widget, GdkEvent *event, ModestEditMsgWindow *self)
+{
+       ModestEditMsgWindowPrivate *priv;
+       priv = MODEST_EDIT_MSG_WINDOW_GET_PRIVATE(self);
+
+       modest_widget_memory_save_settings (priv->conf,
+                                           GTK_WIDGET(priv->msg_body),
+                                           "modest-edit-msg-body");
+       gtk_widget_destroy (GTK_WIDGET(self));
+       return TRUE;
+}
+
+
+
 
 GtkWidget*
 modest_edit_msg_window_new (ModestConf *conf, ModestEditType type,
@@ -181,5 +200,9 @@ modest_edit_msg_window_new (ModestConf *conf, ModestEditType type,
        
        modest_widget_memory_restore_settings (priv->conf, GTK_WIDGET(priv->msg_body),
                                               "modest-edit-msg-body");
+
+       g_signal_connect (G_OBJECT(obj), "delete-event",
+                         G_CALLBACK(on_delete_event), obj);
+       
        return GTK_WIDGET (obj);
 }
index d53359c..90db766 100644 (file)
@@ -59,6 +59,7 @@ struct _ModestMainWindowPrivate {
        
        ModestWidgetFactory *widget_factory;
        ModestConf *conf;
+       ModestAccountMgr *account_mgr;
        
        ModestHeaderView *header_view;
        ModestFolderView *folder_view;
@@ -90,6 +91,7 @@ modest_main_window_get_type (void)
                        sizeof(ModestMainWindow),
                        1,              /* n_preallocs */
                        (GInstanceInitFunc) modest_main_window_init,
+                       NULL
                };
                my_type = g_type_register_static (GTK_TYPE_WINDOW,
                                                  "ModestMainWindow",
@@ -125,6 +127,8 @@ modest_main_window_init (ModestMainWindow *obj)
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(obj);
 
        priv->widget_factory = NULL;
+       priv->conf           = NULL;
+       priv->account_mgr    = NULL;
 }
 
 static void
@@ -136,10 +140,16 @@ modest_main_window_finalize (GObject *obj)
                g_object_unref (G_OBJECT(priv->widget_factory));
                priv->widget_factory = NULL;
        }
-       if (priv->conf) {
+       if (priv->conf) {
                g_object_unref (G_OBJECT(priv->conf));
                priv->conf = NULL;
        }               
+
+       if (priv->account_mgr) {
+               g_object_unref (G_OBJECT(priv->account_mgr));
+               priv->account_mgr = NULL;
+       }               
+
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -148,7 +158,10 @@ static void
 on_menu_about (GtkWidget *widget, gpointer data)
 {
        GtkWidget *about;
-
+       const gchar *authors[] = {
+               "Dirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>",
+               NULL
+       };      
        about = gtk_about_dialog_new ();
        gtk_about_dialog_set_name (GTK_ABOUT_DIALOG(about), PACKAGE_NAME);
        gtk_about_dialog_set_version (GTK_ABOUT_DIALOG(about),PACKAGE_VERSION);
@@ -157,7 +170,13 @@ on_menu_about (GtkWidget *widget, gpointer data)
                _("Copyright (c) 2006, Nokia Corporation\n"
                  "All rights reserved."));
        gtk_about_dialog_set_comments ( GTK_ABOUT_DIALOG(about),
-               _("a modest e-mail client"));
+               _("a modest e-mail client\n\n"
+                 "design and implementation: Dirk-Jan C. Binnema\n"
+                 "contributions from the fine people at KernelConcepts\n\n"
+                 "uses the tinymail email framework written by Philip van Hoof"));
+       gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG(about), authors);
+       gtk_about_dialog_set_website (GTK_ABOUT_DIALOG(about), "http://modest.garage.maemo.org");
+
        gtk_dialog_run (GTK_DIALOG (about));
        gtk_widget_destroy(about);
 }
@@ -173,7 +192,7 @@ on_menu_accounts (ModestMainWindow *self, guint action, GtkWidget *widget)
        g_return_if_fail (self);
        
        priv        = MODEST_MAIN_WINDOW_GET_PRIVATE(self);     
-       account_win = modest_account_view_window_new (priv->conf,
+       account_win = modest_account_view_window_new (priv->account_mgr,
                                                      priv->widget_factory);
 
        gtk_window_set_transient_for (GTK_WINDOW(account_win),
@@ -189,7 +208,6 @@ on_menu_new_message (ModestMainWindow *self, guint action, GtkWidget *widget)
        GtkWidget *msg_win;
        ModestMainWindowPrivate *priv;
 
-
        priv  = MODEST_MAIN_WINDOW_GET_PRIVATE(self);   
 
        msg_win = modest_edit_msg_window_new (priv->conf,
@@ -284,9 +302,7 @@ header_view_new (ModestMainWindow *self)
        ModestHeaderViewColumn cols[] = {
                MODEST_HEADER_VIEW_COLUMN_MSGTYPE,
                MODEST_HEADER_VIEW_COLUMN_ATTACH,
-               MODEST_HEADER_VIEW_COLUMN_FROM,
-               MODEST_HEADER_VIEW_COLUMN_SUBJECT,
-               MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE
+               MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER
        };
 
        priv = MODEST_MAIN_WINDOW_GET_PRIVATE(self);
@@ -367,6 +383,8 @@ static gboolean
 on_delete_event (GtkWidget *widget, GdkEvent  *event, ModestMainWindow *self)
 {
        save_sizes (self);
+       gtk_widget_destroy (GTK_WIDGET(self));
+
        return TRUE;
 }
 
@@ -374,7 +392,8 @@ on_delete_event (GtkWidget *widget, GdkEvent  *event, ModestMainWindow *self)
 
 
 GtkWidget*
-modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
+modest_main_window_new (ModestConf *conf, ModestAccountMgr *account_mgr,
+                       ModestWidgetFactory *factory)
 {
        GObject *obj;
        ModestMainWindowPrivate *priv;
@@ -394,6 +413,10 @@ modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
 
        g_object_ref (conf);
        priv->conf = conf;
+       
+       g_object_ref (account_mgr);
+       priv->account_mgr = account_mgr;
+
 
        /* widgets from factory */
        priv->folder_view = modest_widget_factory_get_folder_view (factory);
@@ -421,33 +444,37 @@ modest_main_window_new (ModestWidgetFactory *factory, ModestConf *conf)
        gtk_paned_add2 (GTK_PANED(priv->msg_paned), GTK_WIDGET(priv->msg_preview));
 
        gtk_widget_show (GTK_WIDGET(priv->header_view));
-               
+       gtk_tree_view_columns_autosize (GTK_TREE_VIEW(priv->header_view));
+
+       
        /* status bar / progress */
-       status_hbox = gtk_hbox_new (TRUE, 6);
+       status_hbox = gtk_hbox_new (FALSE, 0);
        gtk_box_pack_start (GTK_BOX(status_hbox),
                            modest_widget_factory_get_status_bar(factory),
-                           TRUE, TRUE, 6);
+                           TRUE, TRUE, 0);
        gtk_box_pack_start (GTK_BOX(status_hbox),
                            modest_widget_factory_get_progress_bar(factory),
-                           TRUE, FALSE, 6);
-       gtk_box_pack_end (GTK_BOX(status_hbox),
+                           FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(status_hbox),
                          modest_widget_factory_get_online_toggle(factory),
-                         FALSE, FALSE, 6);
+                         FALSE, FALSE, 0);
 
        /* putting it all together... */
        main_vbox = gtk_vbox_new (FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 6);
-       gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE, 6);
-       gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(main_vbox), priv->toolbar, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(main_vbox), priv->main_paned, TRUE, TRUE,0);
+       gtk_box_pack_start (GTK_BOX(main_vbox), status_hbox, FALSE, FALSE, 0);
        
        gtk_container_add (GTK_CONTAINER(obj), main_vbox);
        restore_sizes (MODEST_MAIN_WINDOW(obj));        
 
+       gtk_window_set_title (GTK_WINDOW(obj), "Modest");
+
        gtk_widget_show_all (main_vbox);
+       
        g_signal_connect (G_OBJECT(obj), "delete-event",
                          G_CALLBACK(on_delete_event), obj);
-
        
        return GTK_WIDGET(obj);
 }
index 578caf0..94c02ac 100644 (file)
@@ -7,6 +7,8 @@
 #include <gtk/gtkwindow.h>
 #include <glib/gi18n.h>
 #include <modest-widget-factory.h>
+#include <modest-conf.h>
+#include <modest-account-mgr.h>
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -40,7 +42,8 @@ struct _ModestMainWindowClass {
 GType        modest_main_window_get_type    (void) G_GNUC_CONST;
 
 
-GtkWidget*   modest_main_window_new         (ModestWidgetFactory *factory, ModestConf *conf);
+GtkWidget*   modest_main_window_new         (ModestConf *conf, ModestAccountMgr *account_mgr,
+                                            ModestWidgetFactory *factory);
 
 G_END_DECLS
 
diff --git a/src/gtk2/modest-store-widget.c b/src/gtk2/modest-store-widget.c
new file mode 100644 (file)
index 0000000..a537831
--- /dev/null
@@ -0,0 +1,354 @@
+/* Copyright (c) 2006, Nokia Corporation
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * * Neither the name of the Nokia Corporation nor the names of its
+ *   contributors may be used to endorse or promote products derived from
+ *   this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "modest-store-widget.h"
+#include <string.h>
+
+/* 'private'/'protected' functions */
+static void modest_store_widget_class_init (ModestStoreWidgetClass *klass);
+static void modest_store_widget_init       (ModestStoreWidget *obj);
+static void modest_store_widget_finalize   (GObject *obj);
+/* list my signals  */
+enum {
+       /* MY_SIGNAL_1, */
+       /* MY_SIGNAL_2, */
+       LAST_SIGNAL
+};
+
+typedef struct _ModestStoreWidgetPrivate ModestStoreWidgetPrivate;
+struct _ModestStoreWidgetPrivate {
+       
+       gchar* proto;
+       
+       GtkWidget *servername;
+       GtkWidget *username;
+       GtkWidget *security;
+       GtkWidget *auth;
+       GtkWidget *chooser;
+       GtkWidget *remember_pwd;
+       
+       ModestWidgetFactory *factory;
+};
+#define MODEST_STORE_WIDGET_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+                                                 MODEST_TYPE_STORE_WIDGET, \
+                                                 ModestStoreWidgetPrivate))
+/* globals */
+static GtkContainerClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_store_widget_get_type (void)
+{
+       static GType my_type = 0;
+       if (!my_type) {
+               static const GTypeInfo my_info = {
+                       sizeof(ModestStoreWidgetClass),
+                       NULL,           /* base init */
+                       NULL,           /* base finalize */
+                       (GClassInitFunc) modest_store_widget_class_init,
+                       NULL,           /* class finalize */
+                       NULL,           /* class data */
+                       sizeof(ModestStoreWidget),
+                       1,              /* n_preallocs */
+                       (GInstanceInitFunc) modest_store_widget_init,
+                       NULL
+               };
+               my_type = g_type_register_static (GTK_TYPE_VBOX,
+                                                 "ModestStoreWidget",
+                                                 &my_info, 0);
+       }
+       return my_type;
+}
+
+static void
+modest_store_widget_class_init (ModestStoreWidgetClass *klass)
+{
+       GObjectClass *gobject_class;
+       gobject_class = (GObjectClass*) klass;
+
+       parent_class            = g_type_class_peek_parent (klass);
+       gobject_class->finalize = modest_store_widget_finalize;
+
+       g_type_class_add_private (gobject_class, sizeof(ModestStoreWidgetPrivate));
+
+       /* signal definitions go here, e.g.: */
+/*     signals[MY_SIGNAL_1] = */
+/*             g_signal_new ("my_signal_1",....); */
+/*     signals[MY_SIGNAL_2] = */
+/*             g_signal_new ("my_signal_2",....); */
+/*     etc. */
+}
+
+static void
+modest_store_widget_init (ModestStoreWidget *obj)
+{
+       ModestStoreWidgetPrivate *priv;
+       
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj); 
+
+       priv->proto = NULL;
+}
+
+
+
+static GtkWidget *
+maildir_configuration (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+       GtkWidget *label, *box, *hbox;
+       
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+       box = gtk_vbox_new (FALSE, 6);
+       
+       label = gtk_label_new (NULL);
+       gtk_label_set_markup (GTK_LABEL(label),
+                             _("<b>Maildir configuration</b>"));       
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+       label = gtk_label_new (NULL);
+       gtk_label_set_markup (GTK_LABEL(label),
+                             _("Please select the path to your Maildir below"));       
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+       
+       label = gtk_label_new (_("Path:"));
+
+       priv->chooser = 
+               gtk_file_chooser_button_new (_("(none)"),
+                                            GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+
+       hbox = gtk_hbox_new (FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->chooser, FALSE, FALSE, 6);
+
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);       
+
+       return box;
+}
+
+
+static GtkWidget*
+mbox_configuration (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+       GtkWidget *label, *box, *hbox;
+       
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+       box = gtk_vbox_new (FALSE, 6);
+       
+       label = gtk_label_new (NULL);
+       gtk_label_set_markup (GTK_LABEL(label),
+                             _("<b>Mbox configuration</b>"));  
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+       label = gtk_label_new (NULL);
+       gtk_label_set_markup (GTK_LABEL(label),
+                             _("Please select your mbox file below")); 
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+       
+       label = gtk_label_new (_("mbox:"));
+
+       priv->chooser =
+               gtk_file_chooser_button_new (_("(none)"),
+                                            GTK_FILE_CHOOSER_ACTION_OPEN);
+       hbox = gtk_hbox_new (FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->chooser, FALSE, FALSE, 6);
+       
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 6);       
+
+       return box;
+}
+
+
+static GtkWidget*
+imap_pop_configuration (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+       GtkWidget *label, *box, *hbox;
+
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+       box = gtk_vbox_new (FALSE, 6);
+       
+       label = gtk_label_new (NULL);
+       gtk_label_set_markup (GTK_LABEL(label),_("<b>Server configuration</b>"));
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+       
+       hbox    = gtk_hbox_new (FALSE, 6);
+       label   = gtk_label_new (_("Username:"));
+       if (!priv->username)
+               priv->username = gtk_entry_new_with_max_length (40);
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->username,FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);       
+
+       hbox    = gtk_hbox_new (FALSE, 6);
+       label   = gtk_label_new (_("Server:"));
+       if (!priv->servername)
+               priv->servername = gtk_entry_new_with_max_length (40);
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->servername,FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);       
+
+       label = gtk_label_new(NULL);
+       gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
+
+       hbox = gtk_hbox_new (FALSE, 6);
+       label = gtk_label_new(NULL);
+       gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(hbox),  modest_widget_factory_get_combo_box
+                           (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
+                           FALSE, FALSE,0);
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+       
+       hbox = gtk_hbox_new (FALSE, 6);
+       label = gtk_label_new(NULL);
+
+       gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox),   modest_widget_factory_get_combo_box
+                           (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
+                           FALSE, FALSE, 0);
+
+       priv->remember_pwd =
+               gtk_check_button_new_with_label (_("Remember password"));
+       gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
+                           FALSE, FALSE, 0);
+       
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+
+       return box;
+}
+
+
+static void
+modest_store_widget_finalize (GObject *obj)
+{
+       ModestStoreWidgetPrivate *priv;
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(obj);
+       
+       if (priv->factory) {
+               g_object_unref (priv->factory);
+               priv->factory = NULL;
+       }
+
+       if (priv->proto) {
+               g_free (priv->proto);
+               priv->proto = NULL;
+       }
+
+       G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+
+
+GtkWidget*
+modest_store_widget_new (ModestWidgetFactory *factory, const gchar *proto)
+{
+       GObject *obj;
+       GtkWidget *w;
+       ModestStoreWidget *self;
+       ModestStoreWidgetPrivate *priv;
+       
+       g_return_val_if_fail (proto, NULL);
+       g_return_val_if_fail (factory, NULL);
+
+       obj = g_object_new(MODEST_TYPE_STORE_WIDGET, NULL);
+       self = MODEST_STORE_WIDGET(obj);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+       g_object_ref (factory);
+       priv->factory = factory;
+
+       priv->proto = g_strdup (proto);
+       
+       if (strcmp (proto, MODEST_PROTO_POP) == 0 ||
+           strcmp (proto, MODEST_PROTO_IMAP) == 0) {
+               w = imap_pop_configuration (self);
+       } else if (strcmp (proto, MODEST_PROTO_MAILDIR) == 0) {
+               w = maildir_configuration (self);
+       }  else if (strcmp (proto, MODEST_PROTO_MBOX) == 0) {
+               w = mbox_configuration (self);
+       } else
+               w = gtk_label_new ("");
+       
+       gtk_widget_show_all (w);
+       gtk_box_pack_start (GTK_BOX(self), w, FALSE, FALSE, 2);
+
+       return GTK_WIDGET(self);
+}
+
+
+gboolean
+modest_store_widget_get_remember_password (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, FALSE);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+}
+
+
+const gchar*
+modest_store_widget_get_username (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, NULL);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+       
+       return gtk_entry_get_text (GTK_ENTRY(priv->username));
+}
+
+const gchar*
+modest_store_widget_get_servername (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, NULL);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+       
+       return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+}
+
+
+const gchar*
+modest_store_widget_get_proto (ModestStoreWidget *self)
+{
+       ModestStoreWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, FALSE);
+       priv = MODEST_STORE_WIDGET_GET_PRIVATE(self);
+
+       return priv->proto;
+}
+
diff --git a/src/gtk2/modest-store-widget.h b/src/gtk2/modest-store-widget.h
new file mode 100644 (file)
index 0000000..4a3cbb8
--- /dev/null
@@ -0,0 +1,53 @@
+/* modest-store-widget.h */
+/* insert (c)/licensing information) */
+
+#ifndef __MODEST_STORE_WIDGET_H__
+#define __MODEST_STORE_WIDGET_H__
+
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <modest-widget-factory.h>
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_STORE_WIDGET             (modest_store_widget_get_type())
+#define MODEST_STORE_WIDGET(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_STORE_WIDGET,ModestStoreWidget))
+#define MODEST_STORE_WIDGET_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_STORE_WIDGET,GtkContainer))
+#define MODEST_IS_STORE_WIDGET(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_STORE_WIDGET))
+#define MODEST_IS_STORE_WIDGET_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_STORE_WIDGET))
+#define MODEST_STORE_WIDGET_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_STORE_WIDGET,ModestStoreWidgetClass))
+
+typedef struct _ModestStoreWidget      ModestStoreWidget;
+typedef struct _ModestStoreWidgetClass ModestStoreWidgetClass;
+
+struct _ModestStoreWidget {
+        GtkVBox parent;
+       /* insert public members, if any */
+};
+
+struct _ModestStoreWidgetClass {
+       GtkVBoxClass parent_class;
+       /* insert signal callback declarations, eg. */
+       /* void (* my_event) (ModestStoreWidget* obj); */
+};
+
+/* member functions */
+GType        modest_store_widget_get_type    (void) G_GNUC_CONST;
+
+GtkWidget*   modest_store_widget_new         (ModestWidgetFactory *factory,
+                                             const gchar* proto);
+
+gboolean       modest_store_widget_get_remember_password (ModestStoreWidget *self);
+const gchar*   modest_store_widget_get_username          (ModestStoreWidget *self);
+const gchar*   modest_store_widget_get_servername        (ModestStoreWidget *self);
+const gchar*   modest_store_widget_get_proto             (ModestStoreWidget *self);
+
+
+
+
+
+G_END_DECLS
+
+#endif /* __MODEST_STORE_WIDGET_H__ */
+
diff --git a/src/gtk2/modest-transport-widget.c b/src/gtk2/modest-transport-widget.c
new file mode 100644 (file)
index 0000000..c1ef272
--- /dev/null
@@ -0,0 +1,244 @@
+/* modest-transport-widget.c */
+
+/* insert (c)/licensing information) */
+
+#include "modest-transport-widget.h"
+#include <string.h>
+
+/* 'private'/'protected' functions */
+static void modest_transport_widget_class_init (ModestTransportWidgetClass *klass);
+static void modest_transport_widget_init       (ModestTransportWidget *obj);
+static void modest_transport_widget_finalize   (GObject *obj);
+/* list my signals  */
+enum {
+       /* MY_SIGNAL_1, */
+       /* MY_SIGNAL_2, */
+       LAST_SIGNAL
+};
+
+typedef struct _ModestTransportWidgetPrivate ModestTransportWidgetPrivate;
+struct _ModestTransportWidgetPrivate {
+
+       gchar *proto;
+       ModestWidgetFactory *factory;
+
+       GtkWidget *servername;
+       GtkWidget *username;
+       GtkWidget *auth;
+       GtkWidget *remember_pwd;
+
+};
+#define MODEST_TRANSPORT_WIDGET_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
+                                                     MODEST_TYPE_TRANSPORT_WIDGET, \
+                                                     ModestTransportWidgetPrivate))
+/* globals */
+static GtkContainerClass *parent_class = NULL;
+
+/* uncomment the following if you have defined any signals */
+/* static guint signals[LAST_SIGNAL] = {0}; */
+
+GType
+modest_transport_widget_get_type (void)
+{
+       static GType my_type = 0;
+       if (!my_type) {
+               static const GTypeInfo my_info = {
+                       sizeof(ModestTransportWidgetClass),
+                       NULL,           /* base init */
+                       NULL,           /* base finalize */
+                       (GClassInitFunc) modest_transport_widget_class_init,
+                       NULL,           /* class finalize */
+                       NULL,           /* class data */
+                       sizeof(ModestTransportWidget),
+                       1,              /* n_preallocs */
+                       (GInstanceInitFunc) modest_transport_widget_init,
+               };
+               my_type = g_type_register_static (GTK_TYPE_VBOX,
+                                                 "ModestTransportWidget",
+                                                 &my_info, 0);
+       }
+       return my_type;
+}
+
+static void
+modest_transport_widget_class_init (ModestTransportWidgetClass *klass)
+{
+       GObjectClass *gobject_class;
+       gobject_class = (GObjectClass*) klass;
+
+       parent_class            = g_type_class_peek_parent (klass);
+       gobject_class->finalize = modest_transport_widget_finalize;
+
+       g_type_class_add_private (gobject_class, sizeof(ModestTransportWidgetPrivate));
+
+       /* signal definitions go here, e.g.: */
+/*     signals[MY_SIGNAL_1] = */
+/*             g_signal_new ("my_signal_1",....); */
+/*     signals[MY_SIGNAL_2] = */
+/*             g_signal_new ("my_signal_2",....); */
+/*     etc. */
+}
+
+static void
+modest_transport_widget_init (ModestTransportWidget *obj)
+{
+       ModestTransportWidgetPrivate *priv;
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj); 
+       
+       priv->proto = NULL;
+}
+
+static void
+modest_transport_widget_finalize (GObject *obj)
+{
+       ModestTransportWidgetPrivate *priv;
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(obj);
+       
+       if (priv->factory) {
+               g_object_unref (priv->factory);
+               priv->factory = NULL;
+       }
+
+       if (priv->proto) {
+               g_free (priv->proto);
+               priv->proto = NULL;
+       }
+
+       G_OBJECT_CLASS(parent_class)->finalize (obj);
+}
+
+
+static GtkWidget*
+smtp_configuration (ModestTransportWidget *self)
+{
+       ModestTransportWidgetPrivate *priv;
+       GtkWidget *label, *box, *hbox;
+       
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+       box = gtk_vbox_new (FALSE, 6);
+       
+       label = gtk_label_new (NULL);
+       gtk_label_set_markup (GTK_LABEL(label),
+                             _("<b>SMTP configuration</b>"));  
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 6);
+
+       priv->servername = gtk_entry_new_with_max_length (40);
+       
+       hbox = gtk_hbox_new (FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), gtk_label_new (_("Servername: ")),
+                           FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox), priv->servername,
+                           TRUE, TRUE, 6);
+       gtk_box_pack_start (GTK_BOX(box), hbox, TRUE, TRUE, 6);
+
+       priv->auth = gtk_check_button_new_with_label (_("Requires authentication"));
+       gtk_box_pack_start (GTK_BOX(box), priv->auth, TRUE, FALSE, 6);
+       
+       label = gtk_label_new(NULL);
+       gtk_label_set_markup (GTK_LABEL(label),_("<b>Security</b>"));
+       gtk_box_pack_start (GTK_BOX(box), label, FALSE, FALSE, 0);
+
+       hbox = gtk_hbox_new (FALSE, 6);
+       label = gtk_label_new(NULL);
+       gtk_label_set_text (GTK_LABEL(label),_("Connection type:"));
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 0);
+       gtk_box_pack_start (GTK_BOX(hbox),  modest_widget_factory_get_combo_box
+                           (priv->factory, MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS),
+                           FALSE, FALSE,0);
+       gtk_box_pack_start (GTK_BOX(box), hbox, FALSE, FALSE, 0);
+       
+       hbox = gtk_hbox_new (FALSE, 6);
+       label = gtk_label_new(NULL);
+
+       gtk_label_set_text (GTK_LABEL(label),_("Authentication:"));
+       gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6);
+       gtk_box_pack_start (GTK_BOX(hbox),   modest_widget_factory_get_combo_box
+                           (priv->factory, MODEST_COMBO_BOX_TYPE_AUTH_PROTOS),
+                           FALSE, FALSE, 0);
+       priv->remember_pwd =
+               gtk_check_button_new_with_label (_("Remember password"));
+       gtk_box_pack_start (GTK_BOX(hbox),priv->remember_pwd,
+                           FALSE, FALSE, 0);   
+       return box;
+}
+
+
+
+GtkWidget*
+modest_transport_widget_new (ModestWidgetFactory *factory, const gchar* proto)
+{
+       GObject *obj;
+       GtkWidget *w;
+       ModestTransportWidget *self;
+       ModestTransportWidgetPrivate *priv;
+       
+       g_return_val_if_fail (proto, NULL);
+       g_return_val_if_fail (factory, NULL);
+
+       obj = g_object_new(MODEST_TYPE_TRANSPORT_WIDGET, NULL);
+       self = MODEST_TRANSPORT_WIDGET(obj);
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+       g_object_ref (factory);
+       priv->factory = factory;
+
+       priv->proto = g_strdup (proto);
+       
+       if (strcmp (proto, MODEST_PROTO_SMTP) == 0) {
+               w = smtp_configuration (self);
+       } else
+               w = gtk_label_new ("");
+       
+       gtk_widget_show_all (w);
+       gtk_box_pack_start (GTK_BOX(self), w, FALSE, FALSE, 2);
+
+       return GTK_WIDGET(self);
+}
+
+
+gboolean
+modest_transport_widget_get_remember_password (ModestTransportWidget *self)
+{
+       ModestTransportWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, FALSE);
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(priv->remember_pwd));
+}
+
+
+const gchar*
+modest_transport_widget_get_username (ModestTransportWidget *self)
+{
+       ModestTransportWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, NULL);
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+       
+       return gtk_entry_get_text (GTK_ENTRY(priv->username));
+}
+
+const gchar*
+modest_transport_widget_get_servername (ModestTransportWidget *self)
+{
+       ModestTransportWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, NULL);
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+       
+       return gtk_entry_get_text (GTK_ENTRY(priv->servername));
+}
+
+
+const gchar*
+modest_transport_widget_get_proto (ModestTransportWidget *self)
+{
+       ModestTransportWidgetPrivate *priv;
+
+       g_return_val_if_fail (self, FALSE);
+       priv = MODEST_TRANSPORT_WIDGET_GET_PRIVATE(self);
+
+       return priv->proto;
+}
+
diff --git a/src/gtk2/modest-transport-widget.h b/src/gtk2/modest-transport-widget.h
new file mode 100644 (file)
index 0000000..f72e971
--- /dev/null
@@ -0,0 +1,47 @@
+/* modest-transport-widget.h */
+/* insert (c)/licensing information) */
+
+#ifndef __MODEST_TRANSPORT_WIDGET_H__
+#define __MODEST_TRANSPORT_WIDGET_H__
+
+#include <gtk/gtk.h>
+#include <modest-widget-factory.h>
+
+G_BEGIN_DECLS
+
+/* convenience macros */
+#define MODEST_TYPE_TRANSPORT_WIDGET             (modest_transport_widget_get_type())
+#define MODEST_TRANSPORT_WIDGET(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_TRANSPORT_WIDGET,ModestTransportWidget))
+#define MODEST_TRANSPORT_WIDGET_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_TRANSPORT_WIDGET,GtkContainer))
+#define MODEST_IS_TRANSPORT_WIDGET(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_TRANSPORT_WIDGET))
+#define MODEST_IS_TRANSPORT_WIDGET_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_TRANSPORT_WIDGET))
+#define MODEST_TRANSPORT_WIDGET_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_TRANSPORT_WIDGET,ModestTransportWidgetClass))
+
+typedef struct _ModestTransportWidget      ModestTransportWidget;
+typedef struct _ModestTransportWidgetClass ModestTransportWidgetClass;
+
+struct _ModestTransportWidget {
+        GtkVBox parent;
+       /* insert public members, if any */
+};
+
+struct _ModestTransportWidgetClass {
+       GtkVBoxClass parent_class;
+       /* insert signal callback declarations, eg. */
+       /* void (* my_event) (ModestTransportWidget* obj); */
+};
+
+/* member functions */
+GType        modest_transport_widget_get_type    (void) G_GNUC_CONST;
+
+GtkWidget*   modest_transport_widget_new         (ModestWidgetFactory *factory, const gchar *proto);
+
+gboolean       modest_transport_widget_get_remember_password (ModestTransportWidget *self);
+const gchar*   modest_transport_widget_get_username          (ModestTransportWidget *self);
+const gchar*   modest_transport_widget_get_servername        (ModestTransportWidget *self);
+const gchar*   modest_transport_widget_get_proto             (ModestTransportWidget *self);
+
+G_END_DECLS
+
+#endif /* __MODEST_TRANSPORT_WIDGET_H__ */
+
index 2440089..9c221dc 100644 (file)
@@ -89,6 +89,7 @@ modest_ui_get_type (void)
                        sizeof(ModestUI),
                        1,              /* n_preallocs */
                        (GInstanceInitFunc) modest_ui_init,
+                       NULL
                };
                my_type = g_type_register_static (G_TYPE_OBJECT,
                                                  "ModestUI",
@@ -201,9 +202,12 @@ modest_ui_main_window (ModestUI *modest_ui)
        g_return_val_if_fail (modest_ui, NULL);
        priv = MODEST_UI_GET_PRIVATE(modest_ui);
 
-       win = modest_main_window_new (priv->widget_factory, priv->conf);
+       win = modest_main_window_new (priv->conf, priv->account_mgr,
+                                     priv->widget_factory);
        if (!win)
                g_printerr ("modest: could not create main window\n");
 
        return win;
 }
+
+