9ec25145e93696dab7d38ea84382db0a2bbbefff
[modest] / src / gtk-glade / modest-ui-wizard.c
1 /* modest-ui-wizard.c */
2
3 /* insert (c)/licensing information) */
4
5 #include <gtk/gtk.h>
6 #include <glade/glade.h>
7 #include <glib/gi18n.h>
8 #include <string.h>
9
10 #ifdef HAVE_CONFIG_H
11 #include <config.h>
12 #endif /*HAVE_CONFIG_H*/
13
14 #include "../modest-account-mgr.h"
15
16 #include "modest-ui-glade.h"
17 #include "modest-ui-wizard.h"
18
19 void wizard_missing_notification(GtkWindow *parent, gchar *info_message)
20 {
21         GtkWidget *DenyDialog;
22
23         DenyDialog=gtk_message_dialog_new(parent,
24                                           GTK_DIALOG_MODAL,
25                                           GTK_MESSAGE_INFO,
26                                           GTK_BUTTONS_OK,
27                                           "%s",
28                                           info_message);
29
30         gtk_dialog_run(GTK_DIALOG(DenyDialog));
31
32         gtk_widget_destroy(DenyDialog);
33 }
34
35 gchar *gtk_combo_box_get_entry_text (GtkWidget *combobox)
36 {
37         /* Remember to free the returned variable after usage! */
38
39         GtkTreeModel *model = gtk_combo_box_get_model(GTK_COMBO_BOX(combobox));
40         GtkTreeIter iter;
41
42         gchar *value;
43
44         if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combobox), &iter))
45         {
46                 gtk_tree_model_get(GTK_TREE_MODEL(model),
47                                    &iter,
48                                    0, &value,
49                                    -1);
50         }
51
52         return value;
53 }
54
55
56 gboolean advance_sanity_check(GtkWindow *parent, GladeXML *glade_xml, gint cp)
57 {
58         GtkDialog *DenyDialog;
59         gchar *bla;
60
61         switch (cp)
62         {
63         case 0:
64                 if (strlen(gtk_entry_get_text(GTK_ENTRY(glade_xml_get_widget(glade_xml, "AWMailboxnameEntry"))))==0)
65                 {
66                         /* FIXME:
67                          * all calls to wizard_missing_notification lack the parent window.
68                          */
69                         wizard_missing_notification(NULL, "Please enter mailbox name");
70                         return FALSE;
71                 }
72                 bla=gtk_combo_box_get_active_text(GTK_COMBO_BOX(glade_xml_get_widget(glade_xml, "AWMailboxtypeComboBox")));
73                 if (bla==NULL)
74                 {
75                         wizard_missing_notification(NULL, "Please select mailbox type");
76                         return FALSE;
77                 }
78                 return TRUE;
79                 break;
80
81         }
82
83         return FALSE;
84 }
85
86 void on_new_account1_activate (GtkMenuItem *menuitem,
87                                gpointer user_data)
88 {
89         GladeXML *glade_xml;
90         GtkWidget *dialog;
91         ModestUIPrivate *priv;
92         GtkWidget *FinishButton;
93         GtkWidget *BackButton;
94         GtkWidget *NextButton;
95         GtkWidget *CancelButton;
96         GtkWidget *Notebook;
97         GtkWidget *awidget;
98         gint cp;
99         gint result;
100         gint finishallowed=0;
101
102         priv = MODEST_UI_GET_PRIVATE(MODEST_UI(user_data));
103
104         glade_xml = glade_xml_new(MODEST_GLADE, "account_wizard", NULL);
105
106         dialog = glade_xml_get_widget(glade_xml, "account_wizard");
107
108         gtk_widget_show_all(dialog);
109
110         FinishButton=glade_xml_get_widget(glade_xml, "AWFinishButton");
111         BackButton=glade_xml_get_widget(glade_xml, "AWBackButton");
112         NextButton=glade_xml_get_widget(glade_xml, "AWNextButton");
113         CancelButton=glade_xml_get_widget(glade_xml, "AWCancelButton");
114         Notebook=glade_xml_get_widget(glade_xml, "AWNotebook");
115
116         gtk_widget_set_sensitive(FinishButton, FALSE);
117
118         do
119         {
120                 cp=gtk_notebook_get_current_page(GTK_NOTEBOOK(Notebook));
121                 switch (cp)
122                 {
123                 case 0:
124                         gtk_widget_set_sensitive(BackButton, FALSE);
125                         break;
126                 case 1:
127                         gtk_widget_set_sensitive(BackButton, TRUE);
128                         break;
129                 case 2:
130                         gtk_widget_set_sensitive(FinishButton, FALSE);
131                         gtk_widget_set_sensitive(NextButton, TRUE);
132                         break;
133                 case 3:
134                         gtk_widget_set_sensitive(FinishButton, TRUE);
135                         gtk_widget_set_sensitive(NextButton, FALSE);
136                         break;
137                 default:
138                         g_error("I'm on page %d of notebook AWNotebook, which shouldn't have happened. Pulling Emeregency breaks.", cp);
139                         break;
140                 }
141
142                 result=gtk_dialog_run(GTK_DIALOG(dialog));
143
144                 switch (result)
145                 {
146                 case 1:
147                         if (advance_sanity_check(NULL, glade_xml, cp)==TRUE)
148                                 gtk_notebook_next_page(GTK_NOTEBOOK(Notebook));
149                         break;
150                 case 2:
151                         gtk_notebook_prev_page(GTK_NOTEBOOK(Notebook));
152                         break;
153                 }
154         }
155         while(result!=GTK_RESPONSE_DELETE_EVENT && result!=GTK_RESPONSE_ACCEPT && result!=GTK_RESPONSE_CANCEL);
156
157         if (result==GTK_RESPONSE_ACCEPT)
158         {
159                 /* Do someting with the DATA from the widget */
160         }
161
162         gtk_widget_destroy(dialog);
163         g_object_unref(glade_xml);
164 }
165