* Dim the "Move to" icon and menu entry when a message is
[modest] / src / gnome / modest-account-assistant.c
index 3ee5f5f..9e0d614 100644 (file)
@@ -64,7 +64,10 @@ struct _ModestAccountAssistantPrivate {
        GtkWidget *transport_widget;
 
        GtkWidget *transport_holder;
-       GtkWidget *store_holder;        
+       GtkWidget *store_holder;
+
+       ModestPairList *receiving_transport_store_protos;
+       ModestPairList *sending_transport_store_protos;
 };
 
 #define MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
@@ -293,7 +296,6 @@ static void
 add_receiving_page (ModestAccountAssistant *self)
 {
        GtkWidget *page, *box, *combo;
-       ModestPairList *protos;
        ModestAccountAssistantPrivate *priv;
 
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);      
@@ -308,9 +310,12 @@ add_receiving_page (ModestAccountAssistant *self)
                            gtk_label_new(_("Server type")),
                            FALSE,FALSE,6);
 
-       protos = modest_protocol_info_get_transport_store_protocol_pair_list (MODEST_PROTOCOL_TYPE_STORE);
-       combo = modest_combo_box_new (protos, g_str_equal);
-       modest_pair_list_free (protos);
+       /* Note: This ModestPairList* must exist for as long as the combo
+        * that uses it, because the ModestComboBox uses the ID opaquely, 
+        * so it can't know how to manage its memory. */
+       priv->receiving_transport_store_protos = 
+               modest_protocol_info_get_transport_store_protocol_pair_list ();
+       combo = modest_combo_box_new (priv->receiving_transport_store_protos, g_str_equal);
        
        g_signal_connect (G_OBJECT(combo), "changed",
                          G_CALLBACK(on_receiving_combo_box_changed), self);
@@ -369,7 +374,6 @@ static void
 add_sending_page (ModestAccountAssistant *self)
 {
        GtkWidget *page, *box, *combo;
-       ModestPairList *protos;
        ModestAccountAssistantPrivate *priv;
 
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
@@ -384,9 +388,11 @@ add_sending_page (ModestAccountAssistant *self)
                            gtk_label_new(_("Server type")),
                            FALSE,FALSE,0);
        
-       protos = modest_protocol_info_get_transport_store_protocol_pair_list (MODEST_PROTOCOL_TYPE_TRANSPORT);
-       combo = modest_combo_box_new (protos, g_str_equal);
-       modest_pair_list_free (protos);
+       /* Note: This ModestPairList* must exist for as long as the combo
+        * that uses it, because the ModestComboBox uses the ID opaquely, 
+        * so it can't know how to manage its memory. */
+       priv->sending_transport_store_protos = modest_protocol_info_get_transport_store_protocol_pair_list ();
+       combo = modest_combo_box_new (priv->sending_transport_store_protos, g_str_equal);
 
        g_signal_connect (G_OBJECT(combo), "changed",
                          G_CALLBACK(on_sending_combo_box_changed), self);
@@ -476,6 +482,10 @@ modest_account_assistant_finalize (GObject *obj)
                g_object_unref (G_OBJECT(priv->account_mgr));
                priv->account_mgr = NULL;
        }
+       
+       /* These had to stay alive for as long as the comboboxes that used them: */
+       modest_pair_list_free (priv->receiving_transport_store_protos);
+       modest_pair_list_free (priv->sending_transport_store_protos);
 
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
@@ -606,7 +616,7 @@ on_apply (ModestAccountAssistant *self, gpointer user_data)
 {
        ModestAccountAssistantPrivate *priv;
        ModestTransportStoreProtocol proto = MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN;
-       ModestAuthProtocol security = MODEST_PROTOCOL_SECURITY_NONE;
+       ModestAuthProtocol security = MODEST_PROTOCOL_CONNECTION_NORMAL;
        ModestConnectionProtocol auth = MODEST_PROTOCOL_AUTH_NONE;
        gchar *store_name, *transport_name;
        const gchar *account_name, *username, *servername, *path;
@@ -631,8 +641,15 @@ on_apply (ModestAccountAssistant *self, gpointer user_data)
                modest_account_mgr_add_server_account_uri (priv->account_mgr, store_name, proto, uri);
                g_free (uri);
        } else
-               modest_account_mgr_add_server_account (priv->account_mgr, store_name, servername,
-                                                      username, NULL, proto, security, auth);
+               modest_account_mgr_add_server_account (priv->account_mgr,
+                                                      store_name, 
+                                                      servername,
+                                                      0, /* FIXME: does this mean default?*/
+                                                      username,
+                                                      NULL, 
+                                                      proto, 
+                                                      security, 
+                                                      auth);
                
        /* create server account -> transport */
        transport = MODEST_TRANSPORT_WIDGET(priv->transport_widget);
@@ -647,9 +664,10 @@ on_apply (ModestAccountAssistant *self, gpointer user_data)
        
        transport_name = get_new_server_account_name (priv->account_mgr, proto,username, servername);
        modest_account_mgr_add_server_account (priv->account_mgr,
-                                               transport_name, servername,
-                                               username, NULL,
-                                               proto, security, auth);
+                                              transport_name,  servername,
+                                              0, /* FIXME: does this mean default?*/
+                                              username, NULL,
+                                              proto, security, auth);
 
        /* create account */
        account_name = get_account_name (self);
@@ -657,14 +675,11 @@ on_apply (ModestAccountAssistant *self, gpointer user_data)
                                        account_name,
                                        store_name,
                                        transport_name, TRUE);
-       modest_account_mgr_set_string (priv->account_mgr,
-                                      account_name,
-                                      MODEST_ACCOUNT_FULLNAME,
-                                      get_fullname(self), FALSE);
-       modest_account_mgr_set_string (priv->account_mgr,
-                                      account_name,
-                                      MODEST_ACCOUNT_EMAIL,
-                                      get_email(self), FALSE);
+
+       modest_account_mgr_set_server_account_user_fullname (priv->account_mgr, account_name,
+                                                            get_fullname (self));
+       modest_account_mgr_set_server_account_user_email (priv->account_mgr, account_name, 
+                                                         get_email (self));
 
        /* Frees */     
        g_free (store_name);