1 /* modest-ui-wizard.c */
3 /* insert (c)/licensing information) */
6 #include <glade/glade.h>
7 #include <glib/gi18n.h>
12 #endif /*HAVE_CONFIG_H*/
14 #include "../modest-account-mgr.h"
16 #include "modest-ui-glade.h"
17 #include "modest-ui-wizard.h"
19 void wizard_missing_notification(GtkWindow *parent, gchar *info_message)
21 GtkWidget *DenyDialog;
23 DenyDialog=gtk_message_dialog_new(parent,
30 gtk_dialog_run(GTK_DIALOG(DenyDialog));
32 gtk_widget_destroy(DenyDialog);
35 gchar *get_text_from_combobox (GtkWidget *combobox)
37 /* Remember to free the returned variable after usage! */
39 GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(combobox));
44 if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combobox), &iter))
46 gtk_tree_model_get(GTK_TREE_MODEL(model),
56 gboolean advance_sanity_check(GtkWindow *parent, GladeXML *glade_xml, gint cp)
61 * all calls to wizard_missing_notification lack the parent window.
67 /* Only needed if the "mailbox name" field is used in the first page of the wizard.
68 * if (strlen(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWMailboxnameEntry"))))==0)
70 * wizard_missing_notification(NULL, "Please enter mailbox name");
74 tmptext=gtk_combo_box_get_active_text(GTK_COMBO_BOX(glade_xml_get_widget(glade_xml, "AWMailboxtypeComboBox")));
77 wizard_missing_notification(NULL, "Please select mailbox type.");
84 if (strlen(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWUserNameEntry"))))==0)
86 wizard_missing_notification(NULL, "Please enter user name.");
89 if (strlen(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWEMailAddressEntry"))))==0)
91 wizard_missing_notification(NULL, "Please enter the E-Mail address.");
97 if (strlen(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWInServerComboEntry"))))==0)
99 wizard_missing_notification(NULL, "Please specify incoming server adress.");
102 if (strlen(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWOutServerComboEntry"))))==0)
104 wizard_missing_notification(NULL, "Please specify outgoing server address.");
114 gchar *search_unused_account_or_idenitity_name(gpointer mgr, gchar *draft)
116 GString *tmpaccount_name;
119 tmpaccount_name=g_string_new("");
120 g_string_printf(tmpaccount_name, "%s", draft);
121 if(MODEST_IS_ACCOUNT_MGR(mgr))
123 for(counter=0; modest_account_mgr_server_account_exists(mgr, tmpaccount_name->str, NULL); counter++)
124 g_string_printf(tmpaccount_name, "%s%d", draft, counter);
127 for(counter=0; modest_identity_mgr_identity_exists(mgr, tmpaccount_name->str, NULL); counter++)
128 g_string_printf(tmpaccount_name, "%s%d", draft, counter);
130 return g_string_free(tmpaccount_name, FALSE);
133 gboolean wizard_account_add(GladeXML *glade_xml, ModestUI *modest_ui)
135 ModestAccountMgr *acc_mgr;
136 ModestIdentityMgr *id_mgr;
137 gchar *tmpaccount_name;
138 ModestUIPrivate *priv;
143 g_return_val_if_fail (MODEST_IS_UI(modest_ui), FALSE);
144 priv = MODEST_UI_GET_PRIVATE(MODEST_UI(modest_ui));
145 conf = priv->modest_conf;
147 acc_mgr = priv->modest_acc_mgr;
148 id_mgr = priv->modest_id_mgr;
150 tmptext2=get_text_from_combobox(glade_xml_get_widget(glade_xml, "AWMailboxtypeComboBox"));
151 tmptext=g_utf8_strdown(tmptext2, -1);
154 tmpaccount_name=search_unused_account_or_idenitity_name(acc_mgr, "incoming");
155 modest_account_mgr_add_server_account (acc_mgr,
157 gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWInServerComboEntry"))),
158 gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWUserNameEntry"))),
161 g_free(tmpaccount_name);
164 tmpaccount_name=search_unused_account_or_idenitity_name(acc_mgr, "outgoing");
165 modest_account_mgr_add_server_account (acc_mgr,
167 gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWOutServerComboEntry"))),
171 g_free(tmpaccount_name);
173 tmpaccount_name=search_unused_account_or_idenitity_name(id_mgr, "default");
174 if (!modest_identity_mgr_add_identity (id_mgr,
176 gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWEMailAddressEntry"))),
177 "", "", FALSE, NULL, FALSE ))
178 g_warning ("failed to add default identity");
180 g_free(tmpaccount_name);
185 void wizard_account_dialog(ModestUI *modest_ui)
189 ModestUIPrivate *priv;
190 GtkWidget *FinishButton;
191 GtkWidget *BackButton;
192 GtkWidget *NextButton;
193 GtkWidget *CancelButton;
197 gboolean account_added_successfully=FALSE;
199 g_return_if_fail(MODEST_IS_UI(modest_ui));
200 priv = MODEST_UI_GET_PRIVATE(MODEST_UI(modest_ui));
202 glade_xml = glade_xml_new(MODEST_GLADE, "account_wizard", NULL);
204 dialog = glade_xml_get_widget(glade_xml, "account_wizard");
206 gtk_widget_show_all(dialog);
208 FinishButton=glade_xml_get_widget(glade_xml, "AWFinishButton");
209 BackButton=glade_xml_get_widget(glade_xml, "AWBackButton");
210 NextButton=glade_xml_get_widget(glade_xml, "AWNextButton");
211 CancelButton=glade_xml_get_widget(glade_xml, "AWCancelButton");
212 Notebook=glade_xml_get_widget(glade_xml, "AWNotebook");
214 gtk_widget_set_sensitive(FinishButton, FALSE);
218 cp=gtk_notebook_get_current_page(GTK_NOTEBOOK(Notebook));
222 gtk_widget_set_sensitive(BackButton, FALSE);
225 gtk_widget_set_sensitive(BackButton, TRUE);
228 gtk_widget_set_sensitive(FinishButton, FALSE);
229 gtk_widget_set_sensitive(NextButton, TRUE);
232 gtk_widget_set_sensitive(FinishButton, TRUE);
233 gtk_widget_set_sensitive(NextButton, FALSE);
236 g_error("I'm on page %d of notebook AWNotebook, which shouldn't have happened. Pulling emergency breaks.", cp);
240 result=gtk_dialog_run(GTK_DIALOG(dialog));
245 if (advance_sanity_check(NULL, glade_xml, cp)==TRUE)
246 gtk_notebook_next_page(GTK_NOTEBOOK(Notebook));
249 gtk_notebook_prev_page(GTK_NOTEBOOK(Notebook));
251 case GTK_RESPONSE_ACCEPT:
252 account_added_successfully=wizard_account_add(glade_xml, modest_ui);
255 account_added_successfully=FALSE;
258 while(result!=GTK_RESPONSE_DELETE_EVENT && result!=GTK_RESPONSE_CANCEL && account_added_successfully!=TRUE);
260 gtk_widget_destroy(dialog);
261 g_object_unref(glade_xml);
264 void new_wizard_account (GtkWidget *widget,
267 /* This will probably never be used to modify any existing account. */
268 wizard_account_dialog(MODEST_UI(user_data));