* Added an attribute sent to the msg edit window that specifies that the mail has...
[modest] / src / gnome / modest-account-assistant.c
index 7283af5..02834ed 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), \
@@ -260,7 +263,7 @@ on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self
 {
        ModestAccountAssistantPrivate *priv;
        gchar *chosen;
-       ModestProtocol proto;
+       ModestTransportStoreProtocol proto;
        
        priv = MODEST_ACCOUNT_ASSISTANT_GET_PRIVATE(self);
        chosen = gtk_combo_box_get_active_text (GTK_COMBO_BOX(combo));
@@ -268,7 +271,7 @@ on_receiving_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self
                gtk_container_remove (GTK_CONTAINER(priv->store_holder),
                                      priv->store_widget);
 
-       proto = modest_protocol_info_get_protocol (chosen);
+       proto = modest_protocol_info_get_transport_store_protocol (chosen);
        
        /* FIXME: we could have these widgets cached instead of
           creating them every time */
@@ -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_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);
@@ -355,7 +360,7 @@ on_sending_combo_box_changed (GtkComboBox *combo, ModestAccountAssistant *self)
                gtk_container_remove (GTK_CONTAINER(priv->transport_holder),
                                      priv->transport_widget);
        priv->transport_widget =
-               modest_transport_widget_new (modest_protocol_info_get_protocol(chosen));
+               modest_transport_widget_new (modest_protocol_info_get_transport_store_protocol(chosen));
 
        gtk_container_add (GTK_CONTAINER(priv->transport_holder),
                           priv->transport_widget);
@@ -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_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);
 }
@@ -562,7 +572,7 @@ on_close (ModestAccountAssistant *self, gpointer user_data)
  * somewhere else
  */
 static gchar*
-get_account_uri (ModestProtocol proto, const gchar* path)
+get_account_uri (ModestTransportStoreProtocol proto, const gchar* path)
 {
        CamelURL *url;
        gchar *uri;
@@ -583,7 +593,7 @@ get_account_uri (ModestProtocol proto, const gchar* path)
 }
 
 static gchar*
-get_new_server_account_name (ModestAccountMgr* acc_mgr, ModestProtocol proto,
+get_new_server_account_name (ModestAccountMgr* acc_mgr, ModestTransportStoreProtocol proto,
                             const gchar* username, const gchar *servername)
 {
        gchar *name;
@@ -591,7 +601,7 @@ get_new_server_account_name (ModestAccountMgr* acc_mgr, ModestProtocol proto,
        
        while (TRUE) {
                name = g_strdup_printf ("%s:%d",
-                                       modest_protocol_info_get_protocol_name(proto), i++);
+                                       modest_protocol_info_get_transport_store_protocol_name(proto), i++);
                if (modest_account_mgr_account_exists (acc_mgr, name, TRUE))
                        g_free (name);
                else
@@ -605,9 +615,9 @@ static void
 on_apply (ModestAccountAssistant *self, gpointer user_data)
 {
        ModestAccountAssistantPrivate *priv;
-       ModestProtocol proto = MODEST_PROTOCOL_UNKNOWN;
-       ModestSecureConnection security = MODEST_PROTOCOL_SECURITY_NONE;
-       ModestSecureAuthentication auth = MODEST_PROCOTOL_AUTH_NONE;
+       ModestTransportStoreProtocol proto = MODEST_PROTOCOL_TRANSPORT_STORE_UNKNOWN;
+       ModestAuthProtocol security = MODEST_PROTOCOL_CONNECTION_NORMAL;
+       ModestConnectionProtocol auth = MODEST_PROTOCOL_AUTH_NONE;
        gchar *store_name, *transport_name;
        const gchar *account_name, *username, *servername, *path;
        ModestStoreWidget *store;
@@ -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);