aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-config-druid.c
diff options
context:
space:
mode:
Diffstat (limited to 'mail/mail-config-druid.c')
-rw-r--r--mail/mail-config-druid.c460
1 files changed, 246 insertions, 214 deletions
diff --git a/mail/mail-config-druid.c b/mail/mail-config-druid.c
index c7791e3646..6afa19b642 100644
--- a/mail/mail-config-druid.c
+++ b/mail/mail-config-druid.c
@@ -23,7 +23,6 @@
*
*/
-
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -33,25 +32,29 @@
#include <string.h>
#include <unistd.h>
-#include <glade/glade.h>
-#include <gtkhtml/gtkhtml.h>
#include <libgnomeui/gnome-dialog.h>
#include <libgnomeui/gnome-dialog-util.h>
#include <libgnomeui/gnome-druid.h>
#include <libgnomeui/gnome-druid-page-standard.h>
-#include <bonobo/bonobo-exception.h>
-
+#include <glade/glade.h>
+#include <gtkhtml/gtkhtml.h>
+#include <gal/widgets/e-unicode.h>
#include "mail-config-druid.h"
#include "mail-config.h"
#include "mail-ops.h"
#include "mail.h"
#include "mail-session.h"
+#include <bonobo/bonobo-exception.h>
+#include <bonobo/bonobo-control.h>
+#include <bonobo/bonobo-widget.h>
+#include <bonobo/bonobo-generic-factory.h>
+#include <bonobo/bonobo-context.h>
+
#include <evolution-wizard.h>
-#include <e-util/e-account.h>
static void mail_config_druid_class_init (MailConfigDruidClass *class);
-static void mail_config_druid_destroy (GtkObject *obj);
+static void mail_config_druid_finalize (GtkObject *obj);
static GtkWindowClass *parent_class;
@@ -74,7 +77,7 @@ typedef enum {
typedef struct {
MailAccountGui *gui;
- EAccount *account;
+ MailConfigAccount *account;
EvolutionWizard *wizard;
gboolean identity_copied;
@@ -85,20 +88,20 @@ typedef struct {
GtkType
mail_config_druid_get_type (void)
{
- static GType type = 0;
+ static GtkType type = 0;
if (!type) {
- GTypeInfo type_info = {
- sizeof (MailConfigDruidClass),
- NULL, NULL,
- (GClassInitFunc) mail_config_druid_class_init,
- NULL, NULL,
+ GtkTypeInfo type_info = {
+ "MailConfigDruid",
sizeof (MailConfigDruid),
- 0,
- (GInstanceInitFunc) NULL,
+ sizeof (MailConfigDruidClass),
+ (GtkClassInitFunc) mail_config_druid_class_init,
+ (GtkObjectInitFunc) NULL,
+ (GtkArgSetFunc) NULL,
+ (GtkArgGetFunc) NULL
};
-
- type = g_type_register_static (gtk_window_get_type (), "MailConfigDruid", &type_info, 0);
+
+ type = gtk_type_unique (gtk_window_get_type (), &type_info);
}
return type;
@@ -110,32 +113,28 @@ mail_config_druid_class_init (MailConfigDruidClass *class)
GtkObjectClass *object_class;
object_class = (GtkObjectClass *) class;
- parent_class = g_type_class_ref(gtk_window_get_type ());
+ parent_class = gtk_type_class (gtk_window_get_type ());
/* override methods */
- object_class->destroy = mail_config_druid_destroy;
+ object_class->finalize = mail_config_druid_finalize;
}
static void
-mail_config_druid_destroy (GtkObject *obj)
+mail_config_druid_finalize (GtkObject *obj)
{
MailConfigDruid *druid = (MailConfigDruid *) obj;
CORBA_Environment ev;
- if (druid->xml) {
- g_object_unref(druid->xml);
- druid->xml = NULL;
+ gtk_object_destroy (GTK_OBJECT (druid->xml));
- CORBA_exception_init (&ev);
- Bonobo_EventSource_removeListener ((Bonobo_EventSource) druid->event_source,
- bonobo_object_corba_objref(BONOBO_OBJECT(druid->listener)), &ev);
- CORBA_exception_free (&ev);
+ CORBA_exception_init (&ev);
+ Bonobo_EventSource_removeListener ((Bonobo_EventSource) druid->event_source, druid->id, &ev);
+ CORBA_exception_free (&ev);
- bonobo_object_release_unref ((Bonobo_Unknown) druid->event_source, &ev);
- bonobo_object_unref (BONOBO_OBJECT (druid->listener));
- }
+ bonobo_object_release_unref ((Bonobo_Unknown) druid->event_source, &ev);
+ bonobo_object_unref (BONOBO_OBJECT (druid->listener));
- ((GtkObjectClass *)(parent_class))->destroy(obj);
+ ((GtkObjectClass *)(parent_class))->finalize (obj);
}
@@ -213,7 +212,7 @@ druid_finish (GnomeDruidPage *page, gpointer arg1, gpointer user_data)
{
MailConfigDruid *druid = user_data;
- g_object_set_data(G_OBJECT(account_wizard), "account-data", NULL);
+ gtk_object_set_data (GTK_OBJECT (account_wizard), "account-data", NULL);
if (page_list != NULL) {
g_list_free (page_list);
page_list = NULL;
@@ -271,13 +270,12 @@ identity_next (EvolutionWizard *wizard, gpointer data)
if (!gui->identity_copied) {
char *username;
- const char *user;
-
+
/* Copy the username part of the email address into
* the Username field of the source and transport pages.
*/
- user = gtk_entry_get_text (gui->gui->email_address);
- username = g_strndup (user, strcspn (user, "@"));
+ username = gtk_entry_get_text (gui->gui->email_address);
+ username = g_strndup (username, strcspn (username, "@"));
gtk_entry_set_text (gui->gui->source.username, username);
gtk_entry_set_text (gui->gui->transport.username, username);
g_free (username);
@@ -398,7 +396,7 @@ static gboolean
management_check (MailConfigWizard *wizard)
{
gboolean next_sensitive;
- const char *text;
+ char *text;
text = gtk_entry_get_text (wizard->gui->account_name);
next_sensitive = text && *text;
@@ -422,7 +420,7 @@ management_prepare (EvolutionWizard *wizard, gpointer data)
text = gtk_entry_get_text (gui->gui->account_name);
if (!text || *text == '\0') {
- name = gtk_entry_get_text(gui->gui->email_address);
+ name = e_utf8_gtk_entry_get_text (gui->gui->email_address);
if (name && *name) {
if (mail_config_get_account_by_name (name)) {
char *template;
@@ -440,7 +438,7 @@ management_prepare (EvolutionWizard *wizard, gpointer data)
} while (mail_config_get_account_by_name (name) && i != 0);
}
- gtk_entry_set_text(gui->gui->account_name, name);
+ e_utf8_gtk_entry_set_text (gui->gui->account_name, name);
}
}
@@ -460,27 +458,24 @@ management_changed (GtkWidget *widget, gpointer data)
gtk_widget_grab_focus (GTK_WIDGET (gui->gui->account_name));
}
-static EAccount *
+static MailConfigAccount *
make_account (void)
{
- const char *name, *user;
- EAccountService *xport;
+ MailConfigAccount *account;
+ char *name, *user;
struct utsname uts;
- EAccount *account;
- account = e_account_new ();
- account->enabled = TRUE;
+ account = g_new0 (MailConfigAccount, 1);
+ account->id = g_new0 (MailConfigIdentity, 1);
name = g_get_real_name ();
- account->id->name = g_strdup (name);
+ account->id->name = e_utf8_from_locale_string (name);
user = g_get_user_name ();
if (user && !uname (&uts) && strchr (uts.nodename, '.'))
account->id->address = g_strdup_printf ("%s@%s", user, uts.nodename);
- if ((xport = mail_config_get_default_transport ())) {
- account->transport->url = g_strdup (xport->url);
- account->transport->save_passwd = xport->save_passwd;
- }
+ if (mail_config_get_default_transport ())
+ account->transport = service_copy (mail_config_get_default_transport ());
return account;
}
@@ -492,7 +487,6 @@ static const char *pages[] = {
"transport_page",
"management_page",
"finish_page",
- "druidpagestart1",
NULL
};
@@ -606,8 +600,7 @@ wizard_listener_event (BonoboListener *listener,
gnome_druid_set_buttons_sensitive (GNOME_DRUID (druid->druid),
(buttons & 4) >> 2,
(buttons & 2) >> 1,
- (buttons & 1),
- FALSE);
+ (buttons & 1));
} else if (strcmp (event_name, EVOLUTION_WIZARD_SET_SHOW_FINISH) == 0) {
gnome_druid_set_show_finish (GNOME_DRUID (druid->druid),
(gboolean) *((CORBA_boolean *)event_data->_value));
@@ -630,11 +623,11 @@ construct (MailConfigDruid *druid)
/* Start account wizard */
CORBA_exception_init (&ev);
- corba_wizard = bonobo_activation_activate_from_id ("OAFIID:GNOME_Evolution_Mail_Wizard", 0, NULL, &ev);
+ corba_wizard = oaf_activate_from_id ("OAFIID:GNOME_Evolution_Mail_Wizard", 0, NULL, &ev);
CORBA_exception_free (&ev);
g_assert (account_wizard != NULL);
- druid->xml = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", NULL, NULL);
+ druid->xml = glade_xml_new (EVOLUTION_GLADEDIR "/mail-config.glade", NULL);
/* get our toplevel widget and reparent it */
widget = glade_xml_get_widget (druid->xml, "druid");
gtk_widget_reparent (widget, GTK_WIDGET (druid));
@@ -645,17 +638,17 @@ construct (MailConfigDruid *druid)
gtk_window_set_title (GTK_WINDOW (druid), _("Evolution Account Assistant"));
gtk_window_set_policy (GTK_WINDOW (druid), FALSE, TRUE, FALSE);
gtk_window_set_modal (GTK_WINDOW (druid), FALSE);
- g_object_set (G_OBJECT (druid), "type", GTK_WINDOW_TOPLEVEL, NULL);
+ gtk_object_set (GTK_OBJECT (druid), "type", GTK_WINDOW_DIALOG, NULL);
druid->listener = bonobo_listener_new (NULL, NULL);
- g_signal_connect(druid->listener, "event-notify",
- G_CALLBACK (wizard_listener_event), druid);
+ gtk_signal_connect (GTK_OBJECT (druid->listener), "event-notify",
+ GTK_SIGNAL_FUNC (wizard_listener_event), druid);
corba_listener = bonobo_object_corba_objref (BONOBO_OBJECT (druid->listener));
CORBA_exception_init (&ev);
druid->event_source = (Bonobo_Unknown) bonobo_object_query_interface (
- BONOBO_OBJECT (account_wizard), "IDL:Bonobo/EventSource:1.0", NULL);
+ BONOBO_OBJECT (account_wizard), "IDL:Bonobo/EventSource:1.0");
g_assert (druid->event_source != CORBA_OBJECT_NIL);
- Bonobo_EventSource_addListener ((Bonobo_EventSource) druid->event_source, corba_listener, &ev);
+ druid->id = Bonobo_EventSource_addListener ((Bonobo_EventSource) druid->event_source, corba_listener, &ev);
if (BONOBO_EX (&ev)) {
g_warning ("Error adding listener (%s)",
CORBA_exception_id (&ev));
@@ -675,12 +668,17 @@ construct (MailConfigDruid *druid)
g_hash_table_insert (page_hash, page, GINT_TO_POINTER (i));
page_list = g_list_append (page_list, page);
- g_signal_connect(page, "next", G_CALLBACK (next_func), druid);
- g_signal_connect(page, "prepare", G_CALLBACK (prepare_func), druid);
- g_signal_connect(page, "back", G_CALLBACK (back_func), druid);
- g_signal_connect(page, "finish", G_CALLBACK (finish_func), druid);
+ gtk_signal_connect (GTK_OBJECT (page), "next",
+ GTK_SIGNAL_FUNC (next_func), druid);
+ gtk_signal_connect (GTK_OBJECT (page), "prepare",
+ GTK_SIGNAL_FUNC (prepare_func), druid);
+ gtk_signal_connect (GTK_OBJECT (page), "back",
+ GTK_SIGNAL_FUNC (back_func), druid);
+
+ gtk_signal_connect (GTK_OBJECT (page), "finish",
+ GTK_SIGNAL_FUNC (finish_func), druid);
- if (i < 5) {
+ if (i != 5) {
Bonobo_Control control;
GtkWidget *w;
CORBA_Environment ev;
@@ -690,20 +688,22 @@ construct (MailConfigDruid *druid)
CORBA_exception_init (&ev);
control = GNOME_Evolution_Wizard_getControl (corba_wizard, i, &ev);
if (BONOBO_EX (&ev)) {
- g_warning ("Error getting page %d: %s", i, CORBA_exception_id (&ev));
+ g_warning ("Error getting page %d: %s", i,
+ CORBA_exception_id (&ev));
CORBA_exception_free (&ev);
continue;
}
- w = bonobo_widget_new_control_from_objref (control, CORBA_OBJECT_NIL);
- gtk_box_pack_start (GTK_BOX (dpage->vbox), w, TRUE, TRUE, 0);
+ w = bonobo_widget_new_control_from_objref (control,
+ CORBA_OBJECT_NIL);
+ gtk_box_pack_start (GTK_BOX (dpage->vbox), w, TRUE,
+ TRUE, 0);
+ gtk_widget_show_all (w);
}
- gtk_widget_show_all (page);
-
}
- g_signal_connect(druid->druid, "cancel", G_CALLBACK(druid_cancel), druid);
+ gtk_signal_connect (GTK_OBJECT (druid->druid), "cancel", druid_cancel, druid);
- gnome_druid_set_buttons_sensitive (druid->druid, FALSE, TRUE, TRUE, FALSE);
+ gnome_druid_set_buttons_sensitive (druid->druid, FALSE, TRUE, TRUE);
}
MailConfigDruid *
@@ -711,7 +711,7 @@ mail_config_druid_new (GNOME_Evolution_Shell shell)
{
MailConfigDruid *new;
- new = (MailConfigDruid *) g_object_new(mail_config_druid_get_type(), NULL);
+ new = (MailConfigDruid *) gtk_type_new (mail_config_druid_get_type ());
construct (new);
new->shell = shell;
@@ -764,74 +764,75 @@ management_activate_cb (GtkEntry *ent, gpointer user_data)
static BonoboControl *
get_fn (EvolutionWizard *wizard,
- int page_num,
- void *closure)
+ int page_num,
+ void *closure)
{
- MailConfigWizard *gui = closure;
- BonoboControl *control;
- GtkWidget *vbox, *widget;
+ MailConfigWizard *gui = closure;
+ BonoboControl *control;
+ GtkWidget *vbox, *widget;
static gboolean first_time = TRUE;
- if (gui->gui == NULL) {
+ if (gui->gui == NULL) {
if (gui->account == NULL) {
gui->account = make_account ();
- g_object_set_data ((GObject *) wizard, "account-data", gui->account);
+ gtk_object_set_data (GTK_OBJECT (wizard), "account-data",
+ gui->account);
}
gui->gui = mail_account_gui_new (gui->account, NULL);
/* set up signals, etc */
- g_signal_connect (gui->gui->account_name, "changed",
- G_CALLBACK (management_changed), gui);
- g_signal_connect (gui->gui->full_name, "changed",
- G_CALLBACK (identity_changed), gui);
- g_signal_connect (gui->gui->email_address, "changed",
- G_CALLBACK (identity_changed), gui);
- g_signal_connect (gui->gui->reply_to,"changed",
- G_CALLBACK (identity_changed), gui);
- g_signal_connect (gui->gui->source.hostname, "changed",
- G_CALLBACK (source_changed), gui);
- g_signal_connect (gui->gui->source.username, "changed",
- G_CALLBACK (source_changed), gui);
- g_signal_connect (gui->gui->source.path, "changed",
- G_CALLBACK (source_changed), gui);
- g_signal_connect (gui->gui->transport.hostname, "changed",
- G_CALLBACK (transport_changed), gui);
- g_signal_connect (gui->gui->transport.username, "changed",
- G_CALLBACK (transport_changed), gui);
- g_signal_connect (gui->gui->transport_needs_auth, "toggled",
- G_CALLBACK (transport_changed), gui);
-
- g_signal_connect (gui->gui->account_name, "activate",
- G_CALLBACK (management_activate_cb), gui);
-
- g_signal_connect (gui->gui->full_name, "activate",
- G_CALLBACK (identity_activate_cb), gui);
- g_signal_connect (gui->gui->email_address, "activate",
- G_CALLBACK (identity_activate_cb), gui);
- g_signal_connect (gui->gui->reply_to,"activate",
- G_CALLBACK (identity_activate_cb), gui);
- g_signal_connect (gui->gui->organization, "activate",
- G_CALLBACK (identity_activate_cb), gui);
-
- g_signal_connect (gui->gui->source.hostname, "activate",
- G_CALLBACK (source_activate_cb), gui);
- g_signal_connect (gui->gui->source.username, "activate",
- G_CALLBACK (source_activate_cb), gui);
- g_signal_connect (gui->gui->source.path, "activate",
- G_CALLBACK (source_activate_cb), gui);
-
- g_signal_connect (gui->gui->transport.hostname, "activate",
- G_CALLBACK (transport_activate_cb), gui);
- g_signal_connect (gui->gui->transport.username, "activate",
- G_CALLBACK (transport_activate_cb), gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->account_name),
+ "changed", management_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->full_name),
+ "changed", identity_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->email_address),
+ "changed", identity_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->reply_to),
+ "changed", identity_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->source.hostname),
+ "changed", source_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->source.username),
+ "changed", source_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->source.path),
+ "changed", source_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->transport.hostname),
+ "changed", transport_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->transport.username),
+ "changed", transport_changed, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->transport_needs_auth),
+ "toggled", transport_changed, gui);
+
+ gtk_signal_connect (GTK_OBJECT (gui->gui->account_name),
+ "activate", management_activate_cb, gui);
+
+ gtk_signal_connect (GTK_OBJECT (gui->gui->full_name),
+ "activate", identity_activate_cb, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->email_address),
+ "activate", identity_activate_cb, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->reply_to),
+ "activate", identity_activate_cb, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->organization),
+ "activate", identity_activate_cb, gui);
+
+ gtk_signal_connect (GTK_OBJECT (gui->gui->source.hostname),
+ "activate", source_activate_cb, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->source.username),
+ "activate", source_activate_cb, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->source.path),
+ "activate", source_activate_cb, gui);
+
+ gtk_signal_connect (GTK_OBJECT (gui->gui->transport.hostname),
+ "activate", transport_activate_cb, gui);
+ gtk_signal_connect (GTK_OBJECT (gui->gui->transport.username),
+ "activate", transport_activate_cb, gui);
first_time = TRUE;
- }
+ }
- /* Fill in the druid pages */
+ /* Fill in the druid pages */
vbox = gtk_vbox_new (FALSE, 0);
- switch (page_num) {
- case 0:
+ switch (page_num) {
+ case 0:
widget = create_label ("identity_html");
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
widget = glade_xml_get_widget (gui->gui->xml, "identity_required_frame");
@@ -840,89 +841,93 @@ get_fn (EvolutionWizard *wizard,
widget = glade_xml_get_widget (gui->gui->xml, "identity_optional_frame");
gtk_widget_reparent (widget, vbox);
gtk_box_set_child_packing (GTK_BOX (vbox), widget, FALSE, FALSE, 0, GTK_PACK_START);
- break;
- case 1:
+ break;
+
+ case 1:
widget = create_label ("source_html");
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
widget = glade_xml_get_widget (gui->gui->xml, "source_vbox");
- gtk_widget_reparent (widget, vbox);
+ gtk_widget_reparent (widget, vbox);
gtk_widget_show (widget);
- break;
- case 2:
+ break;
+
+ case 2:
widget = create_label ("extra_html");
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
- widget = glade_xml_get_widget (gui->gui->xml, "extra_vbox");
- gtk_widget_reparent (widget, vbox);
- break;
- case 3:
+ widget = glade_xml_get_widget (gui->gui->xml, "extra_vbox");
+ gtk_widget_reparent (widget, vbox);
+ break;
+
+ case 3:
widget = create_label ("transport_html");
gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
- widget = glade_xml_get_widget (gui->gui->xml, "transport_vbox");
- gtk_widget_reparent (widget, vbox);
+ widget = glade_xml_get_widget (gui->gui->xml, "transport_vbox");
+ gtk_widget_reparent (widget, vbox);
gtk_widget_show (widget);
- break;
- case 4:
+ break;
+
+ case 4:
widget = glade_xml_get_widget (gui->gui->xml, "management_frame");
gtk_widget_reparent (widget, vbox);
break;
- default:
- return NULL;
- }
+
+ default:
+ return NULL;
+ }
- gtk_widget_show (vbox);
- control = bonobo_control_new (vbox);
+ gtk_widget_show (vbox);
+ control = bonobo_control_new (vbox);
if (first_time) {
mail_account_gui_setup (gui->gui, NULL);
first_time = FALSE;
}
- return control;
+ return control;
}
typedef gboolean (*NextFunc)(EvolutionWizard *wizard, gpointer data);
-typedef void (*PrepFunc)(EvolutionWizard *wizard, gpointer data);
static struct {
- NextFunc next_func;
- PrepFunc prepare_func;
- NextFunc back_func;
- GtkSignalFunc finish_func;
- GtkSignalFunc help_func;
+ NextFunc next_func;
+ GtkSignalFunc prepare_func;
+ NextFunc back_func;
+ GtkSignalFunc finish_func;
+ GtkSignalFunc help_func;
} wizard_pages[] = {
- { identity_next,
- identity_prepare,
- NULL,
- G_CALLBACK (NULL),
- G_CALLBACK (NULL) },
- { source_next,
- source_prepare,
- NULL,
- G_CALLBACK (NULL),
- G_CALLBACK (NULL) },
- { NULL,
- extra_prepare,
- NULL,
- G_CALLBACK (NULL),
- G_CALLBACK (NULL) },
- { transport_next,
- transport_prepare,
- transport_back,
- G_CALLBACK (NULL),
- G_CALLBACK (NULL) },
- { NULL,
- management_prepare,
- NULL,
- G_CALLBACK (NULL),
- G_CALLBACK (NULL) }
+ { identity_next,
+ GTK_SIGNAL_FUNC (identity_prepare),
+ NULL,
+ GTK_SIGNAL_FUNC (NULL),
+ GTK_SIGNAL_FUNC (NULL) },
+ { source_next,
+ GTK_SIGNAL_FUNC (source_prepare),
+ NULL,
+ GTK_SIGNAL_FUNC (NULL),
+ GTK_SIGNAL_FUNC (NULL) },
+ { NULL,
+ GTK_SIGNAL_FUNC (extra_prepare),
+ NULL,
+ GTK_SIGNAL_FUNC (NULL),
+ GTK_SIGNAL_FUNC (NULL) },
+ { transport_next,
+ GTK_SIGNAL_FUNC (transport_prepare),
+ transport_back,
+ GTK_SIGNAL_FUNC (NULL),
+ GTK_SIGNAL_FUNC (NULL) },
+ { NULL,
+ GTK_SIGNAL_FUNC (management_prepare),
+ NULL,
+ GTK_SIGNAL_FUNC (NULL),
+ GTK_SIGNAL_FUNC (NULL) }
};
static void
wizard_next_cb (EvolutionWizard *wizard,
- int page_num,
- MailConfigWizard *gui)
+ int page_num,
+ MailConfigWizard *gui)
{
- if (wizard_pages[page_num].next_func == NULL
+ if (wizard_pages[page_num].next_func == NULL
|| !(wizard_pages[page_num].next_func (wizard, gui))) {
if (page_num < 5-1) {
evolution_wizard_set_page(wizard, page_num+1, NULL);
@@ -932,26 +937,26 @@ wizard_next_cb (EvolutionWizard *wizard,
static void
wizard_prepare_cb (EvolutionWizard *wizard,
- int page_num,
- MailConfigWizard *gui)
+ int page_num,
+ MailConfigWizard *gui)
{
- if (wizard_pages[page_num].prepare_func != NULL) {
- wizard_pages[page_num].prepare_func (wizard, gui);
- }
+ if (wizard_pages[page_num].prepare_func != NULL) {
+ wizard_pages[page_num].prepare_func (wizard, gui);
+ }
}
static void
wizard_back_cb (EvolutionWizard *wizard,
- int page_num,
- MailConfigWizard *gui)
+ int page_num,
+ MailConfigWizard *gui)
{
if (page_num >= 5)
evolution_wizard_set_page(wizard, 4, NULL);
- else if (wizard_pages[page_num].back_func == NULL
+ else if (wizard_pages[page_num].back_func == NULL
|| !(wizard_pages[page_num].back_func (wizard, gui))) {
if (page_num > 0)
evolution_wizard_set_page(wizard, page_num-1, NULL);
- }
+ }
}
static void
@@ -960,12 +965,15 @@ wizard_finish_cb (EvolutionWizard *wizard,
MailConfigWizard *w)
{
MailAccountGui *gui = w->gui;
-
+
/* Save the settings for that account */
if (mail_account_gui_save (gui) == FALSE)
/* problem. Um, how to keep the druid alive? */
return;
+ if (gui->account->source)
+ gui->account->source->enabled = TRUE;
+
/* Write out the config info */
mail_config_write ();
mail_account_gui_destroy (gui);
@@ -975,8 +983,8 @@ wizard_finish_cb (EvolutionWizard *wizard,
static void
wizard_cancel_cb (EvolutionWizard *wizard,
- int page_num,
- MailConfigWizard *gui)
+ int page_num,
+ MailConfigWizard *gui)
{
mail_account_gui_destroy (gui->gui);
gui->gui = NULL;
@@ -984,8 +992,8 @@ wizard_cancel_cb (EvolutionWizard *wizard,
static void
wizard_help_cb (EvolutionWizard *wizard,
- int page_num,
- MailConfigWizard *gui)
+ int page_num,
+ MailConfigWizard *gui)
{
}
@@ -1001,35 +1009,59 @@ wizard_free (MailConfigWizard *wizard)
g_free (wizard);
}
-BonoboObject *
-evolution_mail_config_wizard_new (void)
+static BonoboObject *
+evolution_mail_config_wizard_factory_fn (BonoboGenericFactory *factory,
+ void *closure)
{
EvolutionWizard *wizard;
- MailConfigWizard *gui;
- EAccount *account;
+ MailConfigAccount *account;
+ MailConfigWizard *gui;
- account = make_account ();
+ account = make_account ();
- gui = g_new (MailConfigWizard, 1);
+ gui = g_new (MailConfigWizard, 1);
gui->gui = NULL;
- gui->account = account;
+ gui->account = account;
gui->identity_copied = FALSE;
gui->last_source = NULL;
gui->page = MAIL_CONFIG_WIZARD_PAGE_NONE;
- wizard = evolution_wizard_new (get_fn, 5, gui);
+ wizard = evolution_wizard_new (get_fn, 5, gui);
account_wizard = wizard;
- g_object_set_data_full ((GObject *) account_wizard, "account-data", gui,
- (GDestroyNotify) wizard_free);
+ gtk_object_set_data_full (GTK_OBJECT (account_wizard),
+ "account-data", gui,
+ (GtkDestroyNotify) wizard_free);
gui->wizard = wizard;
- g_signal_connect (wizard, "next", G_CALLBACK (wizard_next_cb), gui);
- g_signal_connect (wizard, "prepare", G_CALLBACK (wizard_prepare_cb), gui);
- g_signal_connect (wizard, "back", G_CALLBACK (wizard_back_cb), gui);
- g_signal_connect (wizard, "finish", G_CALLBACK (wizard_finish_cb), gui);
- g_signal_connect (wizard, "cancel", G_CALLBACK (wizard_cancel_cb), gui);
- g_signal_connect (wizard, "help", G_CALLBACK (wizard_help_cb), gui);
-
- return BONOBO_OBJECT (wizard);
+ gtk_signal_connect (GTK_OBJECT (wizard), "next",
+ GTK_SIGNAL_FUNC (wizard_next_cb), gui);
+ gtk_signal_connect (GTK_OBJECT (wizard), "prepare",
+ GTK_SIGNAL_FUNC (wizard_prepare_cb), gui);
+ gtk_signal_connect (GTK_OBJECT (wizard), "back",
+ GTK_SIGNAL_FUNC (wizard_back_cb), gui);
+ gtk_signal_connect (GTK_OBJECT (wizard), "finish",
+ GTK_SIGNAL_FUNC (wizard_finish_cb), gui);
+ gtk_signal_connect (GTK_OBJECT (wizard), "cancel",
+ GTK_SIGNAL_FUNC (wizard_cancel_cb), gui);
+ gtk_signal_connect (GTK_OBJECT (wizard), "help",
+ GTK_SIGNAL_FUNC (wizard_help_cb), gui);
+
+ return BONOBO_OBJECT (wizard);
+}
+
+void
+evolution_mail_config_wizard_init (void)
+{
+ BonoboGenericFactory *factory;
+
+ factory = bonobo_generic_factory_new (WIZARD_IID,
+ evolution_mail_config_wizard_factory_fn, NULL);
+
+ if (factory == NULL) {
+ g_warning ("Error starting factory");
+ return;
+ }
+
+ bonobo_running_context_auto_exit_unref (BONOBO_OBJECT (factory));
}