* accounts are created with new identities and different
[modest] / src / gtk-glade / modest-ui-wizard.c
index dbf20b2..bf8c556 100644 (file)
@@ -55,7 +55,6 @@ gchar *get_text_from_combobox (GtkWidget *combobox)
 
 gboolean advance_sanity_check(GtkWindow *parent, GladeXML *glade_xml, gint cp)
 {
-        GtkDialog *DenyDialog;
         gchar *tmptext;
 
        /* FIXME:
@@ -112,61 +111,86 @@ gboolean advance_sanity_check(GtkWindow *parent, GladeXML *glade_xml, gint cp)
         return FALSE;
 }
 
-gboolean wizard_account_add(GladeXML *glade_xml, ModestUIPrivate *priv)
+gchar *search_unused_account_or_idenitity_name(gpointer mgr, gchar *draft)
+{
+       GString *tmpaccount_name;
+       gint counter;
+
+       tmpaccount_name=g_string_new("");
+       g_string_printf(tmpaccount_name, "%s", draft);
+       g_message("mgr is account_mgr: %d", MODEST_IS_ACCOUNT_MGR(mgr));
+       if(MODEST_IS_ACCOUNT_MGR(mgr))
+       {
+               g_message("acc_mgr_acc_exists for '%s': %d", tmpaccount_name->str, modest_account_mgr_server_account_exists(mgr, tmpaccount_name->str, NULL));
+               for(counter=0; modest_account_mgr_account_exists(mgr, tmpaccount_name->str, NULL); counter++)
+                       g_string_printf(tmpaccount_name, "%s%d", draft, counter);
+       }
+       else
+       {
+               g_message("id_mgr_id_exists for '%s': %d", tmpaccount_name->str, modest_identity_mgr_identity_exists(mgr, tmpaccount_name->str, NULL));
+               for(counter=0;      modest_identity_mgr_identity_exists(mgr, tmpaccount_name->str, NULL); counter++)
+                       g_string_printf(tmpaccount_name, "%s%d", draft, counter);
+       }
+
+       return g_string_free(tmpaccount_name, FALSE);
+}
+
+gboolean wizard_account_add(GladeXML *glade_xml, ModestUI *modest_ui)
 {
        ModestAccountMgr *acc_mgr;
        ModestIdentityMgr *id_mgr;
-       const gchar *account_name="default";
-       ModestConf *conf=priv->modest_conf;
+       gchar *tmpaccount_name;
+       ModestUIPrivate *priv;
+       ModestConf *conf;
        gchar *tmptext;
+       gchar *tmptext2;
+
+       g_return_val_if_fail (MODEST_IS_UI(modest_ui), FALSE);
+       priv = MODEST_UI_GET_PRIVATE(MODEST_UI(modest_ui));
+       conf = priv->modest_conf;
 
-       g_return_if_fail (conf);
 
        acc_mgr = MODEST_ACCOUNT_MGR(modest_account_mgr_new (conf));
        if (!acc_mgr) {
                g_warning ("failed to instantiate account mgr");
-               return;
+               return FALSE;
        }
 
-       if (modest_account_mgr_account_exists (acc_mgr, account_name, NULL)) {
-               if (!modest_account_mgr_remove_account(acc_mgr, account_name, NULL)) {
-                       g_warning ("could not delete existing account");
-               }
-       }
-
-       if (!modest_account_mgr_add_account (acc_mgr, account_name, "defaultstore", "defaulttransport", NULL))
-               g_warning ("failed to add default account");
-       else
-       {
-               tmptext=get_text_from_combobox(glade_xml_get_widget(glade_xml, "AWMailboxtypeComboBox"));
-               modest_account_mgr_add_server_account (acc_mgr, "defaultstore",
-                                                      gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWInServerComboEntry"))),
-                                                      gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWUserNameEntry"))),
-                                                      NULL,
-                                                      tmptext);
-               free(tmptext);
-               modest_account_mgr_add_server_account (acc_mgr, "defaulttransport",
-                                                      gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWOutServerComboEntry"))),
-                                                      NULL,
-                                                      NULL,
-                                                      "smtp");
+       tmptext2=get_text_from_combobox(glade_xml_get_widget(glade_xml, "AWMailboxtypeComboBox"));
+       tmptext=g_utf8_strdown(tmptext2, -1);
+       g_free(tmptext2);
+
+       tmpaccount_name=search_unused_account_or_idenitity_name(acc_mgr, "incoming");
+       modest_account_mgr_add_server_account (acc_mgr,
+                                              tmpaccount_name,
+                                              gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWInServerComboEntry"))),
+                                              gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWUserNameEntry"))),
+                                              NULL,
+                                              tmptext);
+       g_free(tmpaccount_name);
+       g_free(tmptext);
+
+       tmpaccount_name=search_unused_account_or_idenitity_name(acc_mgr, "outgoing");
+       modest_account_mgr_add_server_account (acc_mgr,
+                                              tmpaccount_name,
+                                              gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWOutServerComboEntry"))),
+                                              NULL,
+                                              NULL,
+                                              "smtp");
+       g_free(tmpaccount_name);
 
-       }
        id_mgr = MODEST_IDENTITY_MGR(modest_identity_mgr_new (conf));
-       if (modest_identity_mgr_identity_exists(id_mgr, "defaultidentity", NULL)) {
-               if (!modest_identity_mgr_remove_identity(id_mgr, "defaultidentity", NULL)) {
-                       g_warning ("could not delete existing default identity");
-               }
-       }
+       tmpaccount_name=search_unused_account_or_idenitity_name(id_mgr, "default");
        if (!modest_identity_mgr_add_identity (id_mgr,
-                                              MODEST_IDENTITY_DEFAULT_IDENTITY,
+                                              tmpaccount_name,
                                               gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWEMailAddressEntry"))),
                                               "", "", FALSE, NULL, FALSE ))
                g_warning ("failed to add default identity");
 
+       g_free(tmpaccount_name);
        g_object_unref (G_OBJECT(acc_mgr));
        g_object_unref (G_OBJECT(id_mgr));
-
+       return TRUE;
 }
 
 
@@ -180,12 +204,11 @@ void wizard_account_dialog(ModestUI *modest_ui)
         GtkWidget *NextButton;
         GtkWidget *CancelButton;
         GtkWidget *Notebook;
-        GtkWidget *awidget;
         gint cp;
         gint result;
-       gint finishallowed=0;
-       gboolean account_added_successfully;
+       gboolean account_added_successfully=FALSE;
 
+       g_return_if_fail(MODEST_IS_UI(modest_ui));
        priv = MODEST_UI_GET_PRIVATE(MODEST_UI(modest_ui));
 
        glade_xml = glade_xml_new(MODEST_GLADE, "account_wizard", NULL);
@@ -238,7 +261,7 @@ void wizard_account_dialog(ModestUI *modest_ui)
                         gtk_notebook_prev_page(GTK_NOTEBOOK(Notebook));
                        break;
                case GTK_RESPONSE_ACCEPT:
-                       account_added_successfully=wizard_account_add(glade_xml, priv);
+                       account_added_successfully=wizard_account_add(glade_xml, modest_ui);
                        break;
                default:
                        account_added_successfully=FALSE;
@@ -253,7 +276,8 @@ void wizard_account_dialog(ModestUI *modest_ui)
 void new_wizard_account (GtkWidget *widget,
                         gpointer user_data)
 {
-       /* for now: */
+       /* This will probably never be used to modify any existing account. */
        wizard_account_dialog(MODEST_UI(user_data));
 }
 
+