Statistics
| Revision:

root / src / setup.c @ 2455

History | View | Annotate | Download (31.2 kB)

1
/*
2
 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3
 * Copyright (C) 1999-2010 Hiroyuki Yamamoto
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
 */
19
20
#ifdef HAVE_CONFIG_H
21
#  include "config.h"
22
#endif
23
24
#include <glib.h>
25
#include <glib/gi18n.h>
26
#include <gtk/gtk.h>
27
28
#include "inputdialog.h"
29
#include "alertpanel.h"
30
#include "mainwindow.h"
31
#include "folderview.h"
32
#include "manage_window.h"
33
#include "account_dialog.h"
34
#include "gtkutils.h"
35
#include "filesel.h"
36
#include "prefs_common.h"
37
#include "stock_pixmap.h"
38
#include "account.h"
39
40
static PangoFontDescription *font_desc;
41
42
static void scan_tree_func(Folder *folder, FolderItem *item, gpointer data);
43
44
45
static void button_toggled(GtkToggleButton *button, GtkWidget *widget)
46
{
47
        gboolean is_active;
48
49
        is_active = gtk_toggle_button_get_active(button);
50
        gtk_widget_set_sensitive(widget, is_active);
51
}
52
53
static void sel_btn_clicked(GtkButton *button, GtkWidget *entry)
54
{
55
        gchar *folder;
56
        gchar *utf8_folder;
57
        gchar *base;
58
59
        folder = filesel_select_dir(NULL);
60
        if (folder) {
61
                utf8_folder = conv_filename_to_utf8(folder);
62
                base = g_path_get_basename(utf8_folder);
63
                if (!g_ascii_strcasecmp(base, "Mail")) {
64
                        gtk_entry_set_text(GTK_ENTRY(entry), utf8_folder);
65
                } else {
66
                        gchar *text;
67
68
                        text = g_strconcat(utf8_folder, G_DIR_SEPARATOR_S, "Mail", NULL);
69
                        gtk_entry_set_text(GTK_ENTRY(entry), text);
70
                        g_free(text);
71
                }
72
                g_free(base);
73
                g_free(utf8_folder);
74
                g_free(folder);
75
        }
76
}
77
78
#ifdef G_OS_WIN32
79
#define MODIFY_LABEL_STYLE() \
80
        { \
81
                GtkStyle *style; \
82
                style = gtk_widget_get_style(dialog); \
83
                gtk_widget_modify_base(label, GTK_STATE_ACTIVE, \
84
                                       &style->base[GTK_STATE_SELECTED]); \
85
                gtk_widget_modify_text(label, GTK_STATE_ACTIVE, \
86
                                       &style->text[GTK_STATE_SELECTED]); \
87
        }
88
#else
89
#define MODIFY_LABEL_STYLE()
90
#endif
91
92
void setup_mailbox(void)
93
{
94
        MainWindow *mainwin;
95
        GtkWidget *dialog;
96
        GtkWidget *hbox;
97
        GtkWidget *image;
98
        GtkWidget *vbox;
99
        GtkWidget *label;
100
        GtkWidget *radio;
101
        GtkWidget *entry;
102
        GtkWidget *sel_btn;
103
        GtkWidget *ok_btn;
104
        gchar *path = NULL;
105
        gchar *fullpath;
106
        Folder *folder;
107
        gint result;
108
109
        mainwin = main_window_get();
110
        manage_window_focus_in(mainwin->window, NULL, NULL);
111
112
        dialog = gtk_dialog_new();
113
        gtk_window_set_title(GTK_WINDOW(dialog), _("Mailbox setting"));
114
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
115
        gtk_widget_set_size_request(dialog, 540, -1);
116
        gtk_window_set_position(GTK_WINDOW(dialog),
117
                                GTK_WIN_POS_CENTER_ON_PARENT);
118
        gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
119
        manage_window_set_transient(GTK_WINDOW(dialog));
120
        gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);
121
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog);
122
        gtk_widget_realize(dialog);
123
124
        hbox = gtk_hbox_new(FALSE, 12);
125
        gtk_container_set_border_width(GTK_CONTAINER(hbox), 12);
126
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
127
                           hbox, FALSE, FALSE, 0);
128
129
        image = stock_pixbuf_widget(dialog, STOCK_PIXMAP_SYLPHEED);
130
131
        gtk_misc_set_alignment(GTK_MISC(image), 0.5, 0.0);
132
        gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
133
134
        vbox = gtk_vbox_new(FALSE, 12);
135
        gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
136
137
        label = gtk_label_new(_("Mailbox setting"));
138
        gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
139
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
140
        gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
141
142
        if (!font_desc) {
143
                gint size;
144
145
                size = pango_font_description_get_size
146
                        (label->style->font_desc);
147
                font_desc = pango_font_description_new();
148
                pango_font_description_set_weight
149
                        (font_desc, PANGO_WEIGHT_BOLD);
150
                pango_font_description_set_size
151
                        (font_desc, size * PANGO_SCALE_LARGE);
152
        }
153
        if (font_desc)
154
                gtk_widget_modify_font(label, font_desc);
155
156
        label = gtk_label_new(_("This dialog will make initial setup of mailbox."));
157
        gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
158
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
159
        gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
160
        gtk_label_set_selectable(GTK_LABEL(label), TRUE);
161
        GTK_WIDGET_UNSET_FLAGS(label, GTK_CAN_FOCUS);
162
        MODIFY_LABEL_STYLE();
163
164
        vbox = gtk_vbox_new(FALSE, 8);
165
        gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
166
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox,
167
                           TRUE, TRUE, 0);
168
169
        radio = gtk_radio_button_new_with_label
170
                (NULL, _("Create mailbox at the following default location:"));
171
        gtk_box_pack_start(GTK_BOX(vbox), radio, FALSE, FALSE, 0);
172
173
        fullpath = g_strdup_printf("%s%cMail", get_mail_base_dir(),
174
                                   G_DIR_SEPARATOR);
175
176
        label = gtk_label_new(fullpath);
177
        gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
178
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
179
        gtk_label_set_line_wrap(GTK_LABEL(label), FALSE);
180
#if GTK_CHECK_VERSION(2, 6, 0)
181
        gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_MIDDLE);
182
#endif
183
        gtk_label_set_selectable(GTK_LABEL(label), TRUE);
184
        GTK_WIDGET_UNSET_FLAGS(label, GTK_CAN_FOCUS);
185
        MODIFY_LABEL_STYLE();
186
187
        g_free(fullpath);
188
189
        radio = gtk_radio_button_new_with_label_from_widget
190
                (GTK_RADIO_BUTTON(radio), _("Create mailbox at the following location:\n(enter folder name or full folder path)"));
191
        gtk_box_pack_start(GTK_BOX(vbox), radio, FALSE, FALSE, 0);
192
193
        hbox = gtk_hbox_new(FALSE, 4);
194
        gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
195
196
        entry = gtk_entry_new();
197
        gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0);
198
199
        sel_btn = gtk_button_new_with_label("...");
200
        gtk_box_pack_start(GTK_BOX(hbox), sel_btn, FALSE, FALSE, 0);
201
        g_signal_connect(G_OBJECT(sel_btn), "clicked",
202
                         G_CALLBACK(sel_btn_clicked), entry);
203
204
        gtk_widget_set_sensitive(hbox, FALSE);
205
        g_signal_connect(G_OBJECT(radio), "toggled", G_CALLBACK(button_toggled),
206
                         hbox);
207
208
        label = gtk_label_new(_("If you want to add a mailbox at another location afterward, please select 'File - Mailbox - Add mailbox...' in the menu."));
209
        gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
210
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
211
        gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
212
        gtk_label_set_selectable(GTK_LABEL(label), TRUE);
213
        GTK_WIDGET_UNSET_FLAGS(label, GTK_CAN_FOCUS);
214
        MODIFY_LABEL_STYLE();
215
216
        if (prefs_common.comply_gnome_hig) {
217
                gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
218
                ok_btn = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
219
        } else {
220
                ok_btn = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
221
                gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
222
        }
223
        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
224
        gtk_widget_grab_focus(ok_btn);
225
226
        gtk_widget_show_all(dialog);
227
228
        do {
229
                result = gtk_dialog_run(GTK_DIALOG(dialog));
230
                if (result != GTK_RESPONSE_OK) {
231
                        if (alertpanel(_("Cancel"), _("Continue without creating mailbox?"), GTK_STOCK_YES, GTK_STOCK_NO, NULL) == G_ALERTDEFAULT)
232
                                break;
233
                        else
234
                                continue;
235
                }
236
237
                if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(radio))) {
238
                        path = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);
239
                        g_strstrip(path);
240
                        if (*path == '\0') {
241
                                alertpanel_error(_("Please input folder name or full folder path."));
242
                                g_free(path);
243
                                path = NULL;
244
                        }
245
                } else
246
                        path = g_strdup("Mail");
247
248
                if (path) {
249
                        if (folder_find_from_path(path)) {
250
                                alertpanel_error(_("The mailbox '%s' already exists."), path);
251
                                g_warning("The mailbox '%s' already exists.", path);
252
                                g_free(path);
253
                                path = NULL;
254
                        } else if (is_path_parent(path, get_rc_dir()) ||
255
                                   is_path_parent(path, get_mail_base_dir())) {
256
                                alertpanel_error(_("The location '%s' includes settings folder. Please specify another location."), path);
257
                                g_warning("The location '%s' includes settings folder.", path);
258
                                g_free(path);
259
                                path = NULL;
260
                        }
261
                }
262
        } while (path == NULL);
263
264
        gtk_widget_destroy(dialog);
265
        if (path == NULL)
266
                return;
267
268
        if (!strcmp(g_basename(path), "Mail"))
269
                folder = folder_new(F_MH, _("Mailbox"), path);
270
        else
271
                folder = folder_new(F_MH, g_basename(path), path);
272
        g_free(path);
273
274
        if (folder->klass->create_tree(folder) < 0) {
275
                alertpanel_error(_("Creation of the mailbox failed.\n"
276
                                   "Maybe some files already exist, or you don't have the permission to write there."));
277
                folder_destroy(folder);
278
                return;
279
        }
280
281
        folder_add(folder);
282
        folder_set_ui_func(folder, scan_tree_func, mainwin);
283
        folder->klass->scan_tree(folder);
284
        folder_set_ui_func(folder, NULL, NULL);
285
286
        folderview_set(mainwin->folderview);
287
}
288
289
static void scan_tree_func(Folder *folder, FolderItem *item, gpointer data)
290
{
291
        MainWindow *mainwin = (MainWindow *)data;
292
        gchar *str;
293
294
        if (item->path)
295
                str = g_strdup_printf(_("Scanning folder %s%c%s ..."),
296
                                      LOCAL_FOLDER(folder)->rootpath,
297
                                      G_DIR_SEPARATOR,
298
                                      item->path);
299
        else
300
                str = g_strdup_printf(_("Scanning folder %s ..."),
301
                                      LOCAL_FOLDER(folder)->rootpath);
302
303
        gtk_statusbar_push(GTK_STATUSBAR(mainwin->statusbar),
304
                           mainwin->mainwin_cid, str);
305
        gtkut_widget_draw_now(mainwin->statusbar);
306
        gtk_statusbar_pop(GTK_STATUSBAR(mainwin->statusbar),
307
                          mainwin->mainwin_cid);
308
        g_free(str);
309
}
310
311
static struct
312
{
313
        GtkWidget *dialog;
314
        GtkWidget *notebook;
315
        GtkWidget *prev_btn;
316
        GtkWidget *next_btn;
317
        GtkWidget *cancel_btn;
318
        GtkWidget *pop3_radio;
319
        GtkWidget *imap_radio;
320
        GtkWidget *pop3g_radio;
321
        GtkWidget *imapg_radio;
322
        GtkWidget *name_entry;
323
        GtkWidget *addr_entry;
324
        GtkWidget *id_entry;
325
        GtkWidget *serv_entry;
326
        GtkWidget *smtp_entry;
327
        GtkWidget *servssl_chkbtn;
328
        GtkWidget *smtpauth_chkbtn;
329
        GtkWidget *smtpssl_chkbtn;
330
        GtkWidget *serv_label_name1;
331
        GtkWidget *serv_label_name2;
332
        GtkWidget *name_label;
333
        GtkWidget *addr_label;
334
        GtkWidget *id_label;
335
        GtkWidget *serv_label;
336
        GtkWidget *smtp_label;
337
        gboolean finished;
338
        gboolean cancelled;
339
340
        gint type;
341
        gchar *name;
342
        gchar *addr;
343
        gchar *userid;
344
        gchar *serv;
345
        gchar *smtpserv;
346
        gushort serv_port;
347
        gushort smtp_port;
348
        gboolean serv_ssl;
349
        gboolean smtp_ssl;
350
        gboolean smtp_auth;
351
} setupac;
352
353
enum
354
{
355
        SETUP_PAGE_START,
356
        SETUP_PAGE_ADDRESS,
357
        SETUP_PAGE_ACCOUNT,
358
        SETUP_PAGE_FINISH
359
};
360
361
enum
362
{
363
        SETUP_TYPE_POP3,
364
        SETUP_TYPE_IMAP,
365
        SETUP_TYPE_POP3G,
366
        SETUP_TYPE_IMAPG
367
};
368
369
#define GMAIL_POP3_SERVER        "pop.gmail.com"
370
#define GMAIL_IMAP_SERVER        "imap.gmail.com"
371
#define GMAIL_SMTP_SERVER        "smtp.gmail.com"
372
#define POP3_PORT                110
373
#define IMAP_PORT                143
374
#define SMTP_PORT                25
375
#define POP3S_PORT                995
376
#define IMAPS_PORT                993
377
#define SMTPS_PORT                465
378
379
static void entry_changed(GtkEditable *editable, gpointer data)
380
{
381
        const gchar *name, *addr, *userid, *serv, *smtp;
382
        gint page;
383
        gboolean next_enable = FALSE;
384
385
        page = gtk_notebook_get_current_page(GTK_NOTEBOOK(setupac.notebook));
386
        if (page != SETUP_PAGE_ADDRESS && page != SETUP_PAGE_ACCOUNT)
387
                return;
388
389
        name = gtk_entry_get_text(GTK_ENTRY(setupac.name_entry));
390
        addr = gtk_entry_get_text(GTK_ENTRY(setupac.addr_entry));
391
        userid = gtk_entry_get_text(GTK_ENTRY(setupac.id_entry));
392
        serv = gtk_entry_get_text(GTK_ENTRY(setupac.serv_entry));
393
        smtp = gtk_entry_get_text(GTK_ENTRY(setupac.smtp_entry));
394
395
        if (setupac.type == SETUP_TYPE_POP3G ||
396
            setupac.type == SETUP_TYPE_IMAPG) {
397
                if (GTK_WIDGET(editable) == setupac.addr_entry)
398
                        gtk_entry_set_text(GTK_ENTRY(setupac.id_entry), addr);
399
        }
400
401
        if (page == SETUP_PAGE_ADDRESS && name && *name && addr && *addr)
402
                next_enable = TRUE;
403
        else if (page == SETUP_PAGE_ACCOUNT &&
404
                 userid && *userid && serv && *serv && smtp && *smtp)
405
                next_enable = TRUE;
406
407
        gtk_dialog_set_response_sensitive(GTK_DIALOG(setupac.dialog),
408
                                          GTK_RESPONSE_ACCEPT, next_enable);
409
}
410
411
#define GET_STR(s, m) \
412
{ \
413
        setupac.s = gtk_editable_get_chars(GTK_EDITABLE(setupac.m), 0, -1); \
414
        g_strstrip(setupac.s); \
415
}
416
417
static void setup_account_response_cb(GtkDialog *dialog, gint response_id,
418
                                      gpointer data)
419
{
420
        gint page, prev_page;
421
        gboolean next_enable = TRUE;
422
        gboolean prev_enable = TRUE;
423
        gchar buf[1024];
424
425
        prev_page = page =
426
                gtk_notebook_get_current_page(GTK_NOTEBOOK(setupac.notebook));
427
428
        g_print("response_id = %d\n", response_id);
429
        g_print("page = %d\n", page);
430
431
        if (response_id == GTK_RESPONSE_CANCEL ||
432
            response_id == GTK_RESPONSE_DELETE_EVENT) {
433
                setupac.finished = TRUE;
434
                if (page != SETUP_PAGE_FINISH)
435
                        setupac.cancelled = TRUE;
436
        } else if (response_id == GTK_RESPONSE_ACCEPT) {
437
                if (prev_page == SETUP_PAGE_ADDRESS &&
438
                    (setupac.type == SETUP_TYPE_POP3G ||
439
                     setupac.type == SETUP_TYPE_IMAPG)) {
440
                        gtk_notebook_set_current_page
441
                                (GTK_NOTEBOOK(setupac.notebook),
442
                                 SETUP_PAGE_FINISH);
443
                } else {
444
                        gtk_notebook_set_current_page
445
                                (GTK_NOTEBOOK(setupac.notebook), page + 1);
446
                }
447
                if (prev_page == SETUP_PAGE_START) {
448
                        setupac.type = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.pop3_radio)) ? SETUP_TYPE_POP3
449
                                : gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.imap_radio)) ? SETUP_TYPE_IMAP
450
                                : gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.pop3g_radio)) ? SETUP_TYPE_POP3G
451
                                : gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.imapg_radio)) ? SETUP_TYPE_IMAPG : SETUP_TYPE_POP3;
452
                }
453
        } else if (response_id == GTK_RESPONSE_REJECT) {
454
                gtk_notebook_set_current_page(GTK_NOTEBOOK(setupac.notebook),
455
                                              page - 1);
456
        } else {
457
                g_warning("setup_account_response_cb: invalid response_id: %d\n", response_id);
458
        }
459
460
        page = gtk_notebook_get_current_page(GTK_NOTEBOOK(setupac.notebook));
461
        g_print("new page = %d\n", page);
462
463
        if (page == SETUP_PAGE_START)
464
                prev_enable = FALSE;
465
        else if (page == SETUP_PAGE_ADDRESS || page == SETUP_PAGE_ACCOUNT) {
466
                switch (setupac.type) {
467
                case SETUP_TYPE_POP3:
468
                        gtk_widget_set_sensitive(setupac.id_entry, TRUE);
469
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name1), _("POP3 server:"));
470
                        gtk_widget_set_sensitive(setupac.serv_entry, TRUE);
471
                        gtk_widget_set_sensitive(setupac.smtp_entry, TRUE);
472
                        break;
473
                case SETUP_TYPE_POP3G:
474
                        if (prev_page == SETUP_PAGE_START)
475
                                gtk_entry_set_text(GTK_ENTRY(setupac.addr_entry), "(username)@gmail.com");
476
                        gtk_widget_set_sensitive(setupac.id_entry, FALSE);
477
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name1), _("POP3 server:"));
478
                        gtk_entry_set_text(GTK_ENTRY(setupac.serv_entry), GMAIL_POP3_SERVER);
479
                        gtk_widget_set_sensitive(setupac.serv_entry, FALSE);
480
                        gtk_entry_set_text(GTK_ENTRY(setupac.smtp_entry), GMAIL_SMTP_SERVER);
481
                        gtk_widget_set_sensitive(setupac.smtp_entry, FALSE);
482
                        break;
483
                case SETUP_TYPE_IMAP:
484
                        gtk_widget_set_sensitive(setupac.id_entry, TRUE);
485
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name1), _("IMAP4 server:"));
486
                        gtk_widget_set_sensitive(setupac.serv_entry, TRUE);
487
                        gtk_widget_set_sensitive(setupac.smtp_entry, TRUE);
488
                        break;
489
                case SETUP_TYPE_IMAPG:
490
                        if (prev_page == SETUP_PAGE_START)
491
                                gtk_entry_set_text(GTK_ENTRY(setupac.addr_entry), "(username)@gmail.com");
492
                        gtk_widget_set_sensitive(setupac.id_entry, FALSE);
493
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name1), _("IMAP4 server:"));
494
                        gtk_entry_set_text(GTK_ENTRY(setupac.serv_entry), GMAIL_IMAP_SERVER);
495
                        gtk_widget_set_sensitive(setupac.serv_entry, FALSE);
496
                        gtk_entry_set_text(GTK_ENTRY(setupac.smtp_entry), GMAIL_SMTP_SERVER);
497
                        gtk_widget_set_sensitive(setupac.smtp_entry, FALSE);
498
                        break;
499
                }
500
        } else if (page == SETUP_PAGE_FINISH) {
501
                prev_enable = FALSE;
502
                next_enable = FALSE;
503
                gtk_button_set_label(GTK_BUTTON(setupac.cancel_btn),
504
                                     GTK_STOCK_CLOSE);
505
506
                switch (setupac.type) {
507
                case SETUP_TYPE_POP3:
508
                        setupac.serv_ssl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.servssl_chkbtn));
509
                        setupac.smtp_ssl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.smtpssl_chkbtn));
510
                        setupac.smtp_auth = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.smtpauth_chkbtn));
511
                        setupac.serv_port = setupac.serv_ssl ? POP3S_PORT : POP3_PORT;
512
                        setupac.smtp_port = setupac.smtp_ssl ? SMTPS_PORT : SMTP_PORT;
513
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name2), _("POP3 server:"));
514
                        break;
515
                case SETUP_TYPE_POP3G:
516
                        setupac.serv_ssl = TRUE;
517
                        setupac.smtp_ssl = TRUE;
518
                        setupac.smtp_auth = TRUE;
519
                        setupac.serv_port = POP3S_PORT;
520
                        setupac.smtp_port = SMTPS_PORT;
521
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name2), _("POP3 server:"));
522
                        break;
523
                case SETUP_TYPE_IMAP:
524
                        setupac.serv_ssl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.servssl_chkbtn));
525
                        setupac.smtp_ssl = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.smtpssl_chkbtn));
526
                        setupac.smtp_auth = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(setupac.smtpauth_chkbtn));
527
                        setupac.serv_port = setupac.serv_ssl ? IMAPS_PORT : IMAP_PORT;
528
                        setupac.smtp_port = setupac.smtp_ssl ? SMTPS_PORT : SMTP_PORT;
529
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name2), _("IMAP4 server:"));
530
                        break;
531
                case SETUP_TYPE_IMAPG:
532
                        setupac.serv_ssl = TRUE;
533
                        setupac.smtp_ssl = TRUE;
534
                        setupac.smtp_auth = TRUE;
535
                        setupac.serv_port = IMAPS_PORT;
536
                        setupac.smtp_port = SMTPS_PORT;
537
                        gtk_label_set_text(GTK_LABEL(setupac.serv_label_name2), _("IMAP4 server:"));
538
                        break;
539
                }
540
541
                GET_STR(name, name_entry);
542
                GET_STR(addr, addr_entry);
543
                GET_STR(userid, id_entry);
544
                GET_STR(serv, serv_entry);
545
                GET_STR(smtpserv, smtp_entry);
546
                gtk_label_set_text(GTK_LABEL(setupac.name_label), setupac.name);
547
                gtk_label_set_text(GTK_LABEL(setupac.addr_label), setupac.addr);
548
                gtk_label_set_text(GTK_LABEL(setupac.id_label), setupac.userid);
549
                if (setupac.serv_ssl)
550
                        g_snprintf(buf, sizeof(buf), "%s:%u (SSL)",
551
                                   setupac.serv, setupac.serv_port);
552
                else
553
                        g_snprintf(buf, sizeof(buf), "%s:%u",
554
                                   setupac.serv, setupac.serv_port);
555
                gtk_label_set_text(GTK_LABEL(setupac.serv_label), buf);
556
                if (setupac.smtp_ssl)
557
                        g_snprintf(buf, sizeof(buf), "%s:%u (SSL)",
558
                                   setupac.smtpserv, setupac.smtp_port);
559
                else
560
                        g_snprintf(buf, sizeof(buf), "%s:%u",
561
                                   setupac.smtpserv, setupac.smtp_port);
562
                gtk_label_set_text(GTK_LABEL(setupac.smtp_label), buf);
563
        }
564
565
        gtk_dialog_set_response_sensitive(GTK_DIALOG(setupac.dialog),
566
                                          GTK_RESPONSE_REJECT, prev_enable);
567
        gtk_dialog_set_response_sensitive(GTK_DIALOG(setupac.dialog),
568
                                          GTK_RESPONSE_ACCEPT, next_enable);
569
570
        if (page == SETUP_PAGE_ADDRESS || page == SETUP_PAGE_ACCOUNT)
571
                entry_changed(GTK_EDITABLE(setupac.addr_entry), NULL);
572
}
573
574
PrefsAccount *setup_account(void)
575
{
576
        MainWindow *mainwin;
577
        GtkWidget *dialog;
578
        GtkWidget *hbox;
579
        GtkWidget *image;
580
        GtkWidget *vbox;
581
        GtkWidget *vbox2;
582
        GtkWidget *label;
583
        GtkWidget *table;
584
        GtkWidget *chkbtn;
585
        gint result;
586
        PrefsAccount *ac;
587
588
        mainwin = main_window_get();
589
        manage_window_focus_in(mainwin->window, NULL, NULL);
590
591
        dialog = gtk_dialog_new_with_buttons(_("New account setup"), NULL, GTK_DIALOG_MODAL, NULL);
592
        setupac.dialog = dialog;
593
594
        setupac.prev_btn = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_GO_BACK, GTK_RESPONSE_REJECT);
595
        setupac.next_btn = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_GO_FORWARD, GTK_RESPONSE_ACCEPT);
596
        setupac.cancel_btn = gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
597
598
        gtk_window_set_policy(GTK_WINDOW(dialog), FALSE, FALSE, FALSE);
599
        gtk_widget_set_size_request(dialog, 540, -1);
600
        gtk_window_set_position(GTK_WINDOW(dialog),
601
                                GTK_WIN_POS_CENTER_ON_PARENT);
602
        //gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
603
        manage_window_set_transient(GTK_WINDOW(dialog));
604
        gtk_dialog_set_has_separator(GTK_DIALOG(dialog), TRUE);
605
        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
606
        gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog),
607
                                          GTK_RESPONSE_REJECT, FALSE);
608
        MANAGE_WINDOW_SIGNALS_CONNECT(dialog);
609
        gtk_widget_realize(dialog);
610
611
        g_signal_connect(dialog, "response",
612
                         G_CALLBACK(setup_account_response_cb), NULL);
613
614
        hbox = gtk_hbox_new(FALSE, 12);
615
        gtk_container_set_border_width(GTK_CONTAINER(hbox), 12);
616
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox),
617
                           hbox, FALSE, FALSE, 0);
618
619
        image = stock_pixbuf_widget(dialog, STOCK_PIXMAP_SYLPHEED);
620
621
        gtk_misc_set_alignment(GTK_MISC(image), 0.5, 0.0);
622
        gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
623
624
        vbox = gtk_vbox_new(FALSE, 12);
625
        gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
626
627
        label = gtk_label_new(_("New account setup"));
628
        gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
629
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
630
        gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
631
632
        if (!font_desc) {
633
                gint size;
634
635
                size = pango_font_description_get_size
636
                        (label->style->font_desc);
637
                font_desc = pango_font_description_new();
638
                pango_font_description_set_weight
639
                        (font_desc, PANGO_WEIGHT_BOLD);
640
                pango_font_description_set_size
641
                        (font_desc, size * PANGO_SCALE_LARGE);
642
        }
643
        if (font_desc)
644
                gtk_widget_modify_font(label, font_desc);
645
646
        label = gtk_label_new(_("This dialog will make initial setup of new mail account."));
647
        gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
648
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
649
        gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
650
        gtk_label_set_selectable(GTK_LABEL(label), TRUE);
651
        GTK_WIDGET_UNSET_FLAGS(label, GTK_CAN_FOCUS);
652
        MODIFY_LABEL_STYLE();
653
654
        vbox = gtk_vbox_new(FALSE, 8);
655
        //gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
656
        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), vbox,
657
                           TRUE, TRUE, 0);
658
659
        setupac.notebook = gtk_notebook_new();
660
        gtk_notebook_set_show_border(GTK_NOTEBOOK(setupac.notebook), FALSE);
661
        gtk_notebook_set_show_tabs(GTK_NOTEBOOK(setupac.notebook), FALSE);
662
        gtk_box_pack_start(GTK_BOX(vbox), setupac.notebook, TRUE, TRUE, 0);
663
664
        /* Page 1 */
665
        vbox = gtk_vbox_new(FALSE, 12);
666
        gtk_notebook_append_page(GTK_NOTEBOOK(setupac.notebook), vbox, NULL);
667
        gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
668
669
        label = gtk_label_new(_("Select account type:"));
670
        gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 8);
671
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
672
673
        setupac.pop3_radio = gtk_radio_button_new_with_label(NULL, "POP3");
674
        gtk_box_pack_start(GTK_BOX(vbox), setupac.pop3_radio, FALSE, FALSE, 0);
675
        setupac.imap_radio = gtk_radio_button_new_with_label_from_widget
676
                (GTK_RADIO_BUTTON(setupac.pop3_radio), "IMAP4");
677
        gtk_box_pack_start(GTK_BOX(vbox), setupac.imap_radio, FALSE, FALSE, 0);
678
        setupac.pop3g_radio = gtk_radio_button_new_with_label_from_widget
679
                (GTK_RADIO_BUTTON(setupac.pop3_radio), "POP3 (Gmail)");
680
        gtk_box_pack_start(GTK_BOX(vbox), setupac.pop3g_radio, FALSE, FALSE, 0);
681
        setupac.imapg_radio = gtk_radio_button_new_with_label_from_widget
682
                (GTK_RADIO_BUTTON(setupac.pop3_radio), "IMAP4 (Gmail)");
683
        gtk_box_pack_start(GTK_BOX(vbox), setupac.imapg_radio, FALSE, FALSE, 0);
684
685
        /* Page 2 */
686
        vbox = gtk_vbox_new(FALSE, 12);
687
        gtk_notebook_append_page(GTK_NOTEBOOK(setupac.notebook), vbox, NULL);
688
        gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
689
690
        label = gtk_label_new(_("Input your name and mail address:"));
691
        gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 8);
692
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
693
694
        table = gtk_table_new(4, 4, FALSE);
695
        gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
696
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
697
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
698
699
        label = gtk_label_new(_("Display name:"));
700
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
701
                         GTK_FILL, GTK_FILL, 0, 0);
702
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
703
        label = gtk_label_new(_("E-mail address:"));
704
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4,
705
                         GTK_FILL, GTK_FILL, 0, 0);
706
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
707
708
        setupac.name_entry = gtk_entry_new();
709
        gtk_table_attach(GTK_TABLE(table), setupac.name_entry, 1, 2, 0, 1,
710
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 0, 0);
711
        g_signal_connect(setupac.name_entry, "changed",
712
                         G_CALLBACK(entry_changed), NULL);
713
        setupac.addr_entry = gtk_entry_new();
714
        gtk_table_attach(GTK_TABLE(table), setupac.addr_entry, 1, 2, 3, 4,
715
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 0, 0);
716
        g_signal_connect(setupac.addr_entry, "changed",
717
                         G_CALLBACK(entry_changed), NULL);
718
719
        label = gtk_label_new(_("This name will be seen at the side of recipients."));
720
        gtk_table_attach(GTK_TABLE(table), label, 1, 2, 1, 2,
721
                         GTK_FILL, GTK_FILL, 0, 0);
722
        gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
723
724
        /* Page 3 */
725
        vbox = gtk_vbox_new(FALSE, 12);
726
        gtk_notebook_append_page(GTK_NOTEBOOK(setupac.notebook), vbox, NULL);
727
        gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
728
        gtk_widget_show_all(dialog);
729
730
        label = gtk_label_new(_("Input user ID and mail server:"));
731
        gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 8);
732
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
733
734
        table = gtk_table_new(6, 2, FALSE);
735
        gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
736
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
737
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
738
739
        label = gtk_label_new(_("User ID:"));
740
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
741
                         GTK_FILL, GTK_FILL, 0, 0);
742
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
743
        label = gtk_label_new(_("POP3 server:"));
744
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
745
                         GTK_FILL, GTK_FILL, 0, 0);
746
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
747
        setupac.serv_label_name1 = label;
748
        label = gtk_label_new(_("SMTP server:"));
749
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
750
                         GTK_FILL, GTK_FILL, 0, 0);
751
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
752
753
        setupac.id_entry = gtk_entry_new();
754
        gtk_table_attach(GTK_TABLE(table), setupac.id_entry, 1, 2, 0, 1,
755
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 0, 0);
756
        g_signal_connect(setupac.id_entry, "changed",
757
                         G_CALLBACK(entry_changed), NULL);
758
        setupac.serv_entry = gtk_entry_new();
759
        gtk_table_attach(GTK_TABLE(table), setupac.serv_entry, 1, 2, 1, 2,
760
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 0, 0);
761
        g_signal_connect(setupac.serv_entry, "changed",
762
                         G_CALLBACK(entry_changed), NULL);
763
        setupac.smtp_entry = gtk_entry_new();
764
        gtk_table_attach(GTK_TABLE(table), setupac.smtp_entry, 1, 2, 4, 5,
765
                         GTK_EXPAND|GTK_FILL, GTK_FILL, 0, 0);
766
        g_signal_connect(setupac.smtp_entry, "changed",
767
                         G_CALLBACK(entry_changed), NULL);
768
769
        hbox = gtk_hbox_new(FALSE, 12);
770
        gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 2, 3,
771
                         GTK_FILL, GTK_FILL, 0, 0);
772
        chkbtn = gtk_check_button_new_with_mnemonic(_("Use SSL"));
773
        gtk_box_pack_start(GTK_BOX(hbox), chkbtn, FALSE, FALSE, 0);
774
        setupac.servssl_chkbtn = chkbtn;
775
776
        hbox = gtk_hbox_new(FALSE, 12);
777
        gtk_table_attach(GTK_TABLE(table), hbox, 1, 2, 5, 6,
778
                         GTK_FILL, GTK_FILL, 0, 0);
779
        chkbtn = gtk_check_button_new_with_mnemonic(_("Use SMTP authentication"));
780
        gtk_box_pack_start(GTK_BOX(hbox), chkbtn, FALSE, FALSE, 0);
781
        setupac.smtpauth_chkbtn = chkbtn;
782
        chkbtn = gtk_check_button_new_with_mnemonic(_("Use SSL"));
783
        gtk_box_pack_start(GTK_BOX(hbox), chkbtn, FALSE, FALSE, 0);
784
        setupac.smtpssl_chkbtn = chkbtn;
785
786
        /* Page 4 */
787
        vbox = gtk_vbox_new(FALSE, 12);
788
        gtk_notebook_append_page(GTK_NOTEBOOK(setupac.notebook), vbox, NULL);
789
        gtk_container_set_border_width(GTK_CONTAINER(vbox), 12);
790
791
        vbox2 = gtk_vbox_new(FALSE, 8);
792
        gtk_box_pack_start(GTK_BOX(vbox), vbox2, FALSE, FALSE, 8);
793
794
        label = gtk_label_new(_("Your new mail accout has been set up with the following setting."));
795
        gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
796
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
797
        label = gtk_label_new(_("If you want to modify the settings, select\n"
798
                                "'Configuration - Preferences for current account' or\n"
799
                                "'Configuration - Edit accounts' in the main menu."));
800
        gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 0);
801
        gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
802
        //gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
803
804
        table = gtk_table_new(5, 2, FALSE);
805
        gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
806
        gtk_table_set_row_spacings(GTK_TABLE(table), 8);
807
        gtk_table_set_col_spacings(GTK_TABLE(table), 8);
808
809
        label = gtk_label_new(_("Display name:"));
810
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1,
811
                         GTK_FILL, GTK_FILL, 0, 0);
812
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
813
        label = gtk_label_new(_("E-mail address:"));
814
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2,
815
                         GTK_FILL, GTK_FILL, 0, 0);
816
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
817
        label = gtk_label_new(_("User ID:"));
818
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3,
819
                         GTK_FILL, GTK_FILL, 0, 0);
820
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
821
        setupac.serv_label_name2 = gtk_label_new(_("POP3 server:"));
822
        gtk_table_attach(GTK_TABLE(table), setupac.serv_label_name2, 0, 1, 3, 4,
823
                         GTK_FILL, GTK_FILL, 0, 0);
824
        gtk_misc_set_alignment(GTK_MISC(setupac.serv_label_name2), 1, 0.5);
825
        label = gtk_label_new(_("SMTP server:"));
826
        gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5,
827
                         GTK_FILL, GTK_FILL, 0, 0);
828
        gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5);
829
830
        setupac.name_label = gtk_label_new("");
831
        gtk_table_attach(GTK_TABLE(table), setupac.name_label, 1, 2, 0, 1,
832
                         GTK_FILL, GTK_FILL, 0, 0);
833
        gtk_misc_set_alignment(GTK_MISC(setupac.name_label), 0, 0.5);
834
        setupac.addr_label = gtk_label_new("");
835
        gtk_table_attach(GTK_TABLE(table), setupac.addr_label, 1, 2, 1, 2,
836
                         GTK_FILL, GTK_FILL, 0, 0);
837
        gtk_misc_set_alignment(GTK_MISC(setupac.addr_label), 0, 0.5);
838
        setupac.id_label = gtk_label_new("");
839
        gtk_table_attach(GTK_TABLE(table), setupac.id_label, 1, 2, 2, 3,
840
                         GTK_FILL, GTK_FILL, 0, 0);
841
        gtk_misc_set_alignment(GTK_MISC(setupac.id_label), 0, 0.5);
842
        setupac.serv_label = gtk_label_new("");
843
        gtk_table_attach(GTK_TABLE(table), setupac.serv_label, 1, 2, 3, 4,
844
                         GTK_FILL, GTK_FILL, 0, 0);
845
        gtk_misc_set_alignment(GTK_MISC(setupac.serv_label), 0, 0.5);
846
        setupac.smtp_label = gtk_label_new("");
847
        gtk_table_attach(GTK_TABLE(table), setupac.smtp_label, 1, 2, 4, 5,
848
                         GTK_FILL, GTK_FILL, 0, 0);
849
        gtk_misc_set_alignment(GTK_MISC(setupac.smtp_label), 0, 0.5);
850
851
852
        gtk_widget_show_all(dialog);
853
854
        while (!setupac.finished)
855
                result = gtk_dialog_run(GTK_DIALOG(dialog));
856
857
        gtk_widget_destroy(dialog);
858
859
        if (setupac.cancelled) {
860
                memset(&setupac, 0, sizeof(setupac));
861
                return NULL;
862
        }
863
864
        /* Create account */
865
        ac = prefs_account_new();
866
867
        if (!cur_account) {
868
                account_set_as_default(ac);
869
                cur_account = ac;
870
        }
871
        g_free(ac->account_name);
872
        ac->account_name = g_strdup(setupac.addr);
873
        g_free(ac->name);
874
        ac->name = g_strdup(setupac.name);
875
        g_free(ac->address);
876
        ac->address = g_strdup(setupac.addr);
877
        g_free(ac->recv_server);
878
        ac->recv_server = g_strdup(setupac.serv);
879
        g_free(ac->smtp_server);
880
        ac->smtp_server = g_strdup(setupac.smtpserv);
881
        g_free(ac->userid);
882
        ac->userid = g_strdup(setupac.userid);
883
        if (setupac.smtp_ssl)
884
                ac->ssl_smtp = SSL_TUNNEL;
885
        ac->smtpport = setupac.smtp_port;
886
        ac->use_smtp_auth = setupac.smtp_auth;
887
888
        switch (setupac.type) {
889
        case SETUP_TYPE_POP3:
890
                ac->protocol = A_POP3;
891
                if (setupac.serv_ssl)
892
                        ac->ssl_pop = SSL_TUNNEL;
893
                ac->popport = setupac.serv_port;
894
                break;
895
        case SETUP_TYPE_POP3G:
896
                ac->protocol = A_POP3;
897
                ac->ssl_pop = SSL_TUNNEL;
898
                ac->popport = setupac.serv_port;
899
                break;
900
        case SETUP_TYPE_IMAP:
901
                ac->protocol = A_IMAP4;
902
                if (setupac.serv_ssl)
903
                        ac->ssl_imap = SSL_TUNNEL;
904
                ac->imapport = setupac.serv_port;
905
                break;
906
        case SETUP_TYPE_IMAPG:
907
                ac->protocol = A_IMAP4;
908
                ac->ssl_imap = SSL_TUNNEL;
909
                ac->imapport = setupac.serv_port;
910
                break;
911
        }
912
913
        g_free(ac->sig_text);
914
        ac->sig_text = g_strdup_printf("%s <%s>\\n", ac->name, ac->address);
915
916
        account_append(ac);
917
918
        g_free(setupac.name);
919
        g_free(setupac.addr);
920
        g_free(setupac.serv);
921
        g_free(setupac.smtpserv);
922
        g_free(setupac.userid);
923
        memset(&setupac, 0, sizeof(setupac));
924
925
        return ac;
926
}