From 1e28d8c9d32381799d82f5e1bc496cf28ab9ad53 Mon Sep 17 00:00:00 2001 From: Not Zed Date: Wed, 13 Jul 2005 05:47:39 +0000 Subject: re-write the importer stuff to use the eplugin stuff. 2005-07-13 Not Zed * startup-wizard.c (startup_wizard_importer_page) (startup_wizard_commit): re-write the importer stuff to use the eplugin stuff. svn path=/trunk/; revision=29747 --- plugins/startup-wizard/ChangeLog | 6 + plugins/startup-wizard/startup-wizard.c | 187 ++++++++++++++------------------ 2 files changed, 89 insertions(+), 104 deletions(-) (limited to 'plugins') diff --git a/plugins/startup-wizard/ChangeLog b/plugins/startup-wizard/ChangeLog index c6427baa89..cd5268d31b 100644 --- a/plugins/startup-wizard/ChangeLog +++ b/plugins/startup-wizard/ChangeLog @@ -1,3 +1,9 @@ +2005-07-13 Not Zed + + * startup-wizard.c (startup_wizard_importer_page) + (startup_wizard_commit): re-write the importer stuff to use the + eplugin stuff. + 2005-07-12 Not Zed * startup-wizard.c: removed all the importer stuff. fixed the diff --git a/plugins/startup-wizard/startup-wizard.c b/plugins/startup-wizard/startup-wizard.c index 9dc85f306f..6e159e72c4 100644 --- a/plugins/startup-wizard/startup-wizard.c +++ b/plugins/startup-wizard/startup-wizard.c @@ -22,11 +22,11 @@ #include #include #include -#include -#include #include "widgets/e-timezone-dialog/e-timezone-dialog.h" #include "e-util/e-icon-factory.h" #include "e-util/e-gtk-utils.h" +#include "e-util/e-error.h" +#include "e-util/e-import.h" #include "shell/es-event.h" #include "mail/em-config.h" #include "mail/em-account-editor.h" @@ -41,19 +41,11 @@ gboolean startup_wizard_check (EPlugin *ep, EConfigHookPageCheckData *check_data void startup_wizard_commit (EPlugin *ep, EMConfigTargetAccount *target); void startup_wizard_abort (EPlugin *ep, EMConfigTargetAccount *target); -static GList *useable_importers = NULL; -gboolean useable_importers_init = FALSE; - -static GList * -get_intelligent_importers (void) -{ - return NULL; -} - -static void -init_importers (void) -{ -} +static EImport *import; +static EImportTargetHome *import_target; +static EImportImporter *import_importer; +static GtkWidget *import_dialog, *import_progress, *import_label; +static GSList *import_iterator, *import_importers; static void startup_wizard_delete (void) { @@ -61,7 +53,6 @@ startup_wizard_delete (void) { _exit (0); } - void startup_wizard (EPlugin *ep, ESEventTargetUpgrade *target) { @@ -131,8 +122,19 @@ startup_wizard_timezone_page (EPlugin *ep, EConfigHookItemFactoryData *hook_data GtkWidget * startup_wizard_importer_page (EPlugin *ep, EConfigHookItemFactoryData *hook_data) { - return NULL; -#if 0 + GtkWidget *page, *label, *sep, *table; + GSList *l; + int row=0; + + if (import == NULL) { + import = e_import_new("org.gnome.evolution.shell.importer"); + import_target = e_import_target_new_home(import, g_get_home_dir()); + import_importers = e_import_get_importers(import, (EImportTarget *)import_target); + } + + if (import_importers == NULL) + return NULL; + page = gnome_druid_page_standard_new_with_vals ("Importing files", NULL, NULL); label = gtk_label_new (_("Please select the information that you would like to import:")); @@ -141,107 +143,69 @@ startup_wizard_importer_page (EPlugin *ep, EConfigHookItemFactoryData *hook_data sep = gtk_hseparator_new (); gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (page)->vbox), sep, FALSE, FALSE, 3); - table = gtk_table_new (g_list_length (useable_importers), 2, FALSE); - for (l = useable_importers, i = 0; l; l = l->next, i++) { - IntelligentImporterData *id = l->data; - GtkWidget *widget; + table = gtk_table_new(g_slist_length(import_importers), 2, FALSE); + for (l = import_importers; l; l = l->next) { + EImportImporter *eii = l->data; char *str; - - CORBA_Environment ev; - CORBA_exception_init (&ev); + GtkWidget *w, *label; - str = g_strdup_printf (_("From %s:"), id->name); - label = gtk_label_new (str); - g_free (str); - - gtk_misc_set_alignment (GTK_MISC (label), 0, .5); + w = e_import_get_widget(import, (EImportTarget *)import_target, eii); - widget = bonobo_widget_new_control_from_objref (id->control, CORBA_OBJECT_NIL); + str = g_strdup_printf(_("From %s:"), eii->name); + label = gtk_label_new(str); + gtk_widget_show(label); + g_free(str); - gtk_table_attach (GTK_TABLE (table), label, 0, 1, i, i + 1, GTK_FILL, 0, 0, 0); - gtk_table_attach (GTK_TABLE (table), widget, 1, 2, i, i + 1, GTK_FILL, 0, 3, 0); - gtk_widget_show_all (table); - - gtk_box_pack_start (GTK_BOX (GNOME_DRUID_PAGE_STANDARD (page)->vbox), table, - FALSE, FALSE, 0); + gtk_misc_set_alignment((GtkMisc *)label, 0, .5); + + gtk_table_attach((GtkTable *)table, label, 0, 1, row, row+1, GTK_FILL, 0, 0, 0); + if (w) + gtk_table_attach((GtkTable *)table, w, 1, 2, row, row+1, GTK_FILL, 0, 3, 0); + row++; } + gtk_widget_show(table); + gtk_box_pack_start((GtkBox *)((GnomeDruidPageStandard *)page)->vbox, table, FALSE, FALSE, 3); gnome_druid_append_page (GNOME_DRUID (hook_data->parent), GNOME_DRUID_PAGE (page)); - return GTK_WIDGET (page); -#endif + return page; } -#if 0 static void -start_importers (GList *p) +import_status(EImport *import, const char *what, int pc, void *d) { - CORBA_Environment ev; - - for (; p; p = p->next) { - SelectedImporterData *sid = p->data; - - CORBA_exception_init (&ev); - GNOME_Evolution_IntelligentImporter_importData (sid->importer, &ev); - if (BONOBO_EX (&ev)) { - g_warning ("Error importing %s\n%s", sid->iid, - CORBA_exception_id (&ev)); - } - CORBA_exception_free (&ev); - } + gtk_progress_bar_set_fraction((GtkProgressBar *)import_progress, (gfloat)(pc/100.0)); + gtk_progress_bar_set_text((GtkProgressBar *)import_progress, what); } static void -do_import () +import_dialog_response(GtkDialog *d, guint button, void *data) { - CORBA_Environment ev; - GList *l, *selected = NULL; - - for (l = useable_importers; l; l = l->next) { - IntelligentImporterData *importer_data; - SelectedImporterData *sid; - char *iid; - - importer_data = l->data; - iid = g_strdup (importer_data->iid); - - sid = g_new (SelectedImporterData, 1); - sid->iid = iid; - - CORBA_exception_init (&ev); - sid->importer = bonobo_object_dup_ref (importer_data->object, &ev); - if (BONOBO_EX (&ev)) { - g_warning ("Error duplication %s\n(%s)", iid, - CORBA_exception_id (&ev)); - g_free (iid); - CORBA_exception_free (&ev); - g_free (sid); - continue; - } - CORBA_exception_free (&ev); - - selected = g_list_prepend (selected, sid); - } - - free_importers (); - - if (selected != NULL) { - start_importers (selected); - - for (l = selected; l; l = l->next) { - SelectedImporterData *sid = l->data; - - CORBA_exception_init (&ev); - bonobo_object_release_unref (sid->importer, &ev); - CORBA_exception_free (&ev); + if (button == GTK_RESPONSE_CANCEL) + e_import_cancel(import, (EImportTarget *)import_target, import_importer); +} - g_free (sid->iid); - g_free (sid); - } - g_list_free (selected); +static void +import_done(EImport *ei, void *d) +{ + if (import_iterator && (import_iterator = import_iterator->next)) { + import_status(ei, "", 0, NULL); + import_importer = import_iterator->data; + e_import_import(import, (EImportTarget *)import_target, import_importer, import_status, import_done, NULL); + } else { + gtk_widget_destroy(import_dialog); + + g_slist_free(import_importers); + import_importers = NULL; + import_importer = NULL; + e_import_target_free(import, (EImportTarget *)import_target); + import_target = NULL; + g_object_unref(import); + import = NULL; + + gtk_main_quit(); } } -#endif void startup_wizard_commit (EPlugin *ep, EMConfigTargetAccount *target) @@ -250,8 +214,6 @@ startup_wizard_commit (EPlugin *ep, EMConfigTargetAccount *target) ETimezoneDialog *etd; icaltimezone *zone; - /*FIXME: do_import ();*/ - /* Set Timezone */ etd = g_object_get_data (G_OBJECT (ec), IMPORT_TIMEZONE_DIALOG); if (etd) { @@ -264,9 +226,23 @@ startup_wizard_commit (EPlugin *ep, EMConfigTargetAccount *target) g_object_unref (etd); g_object_set_data (G_OBJECT (ec), IMPORT_TIMEZONE_DIALOG, NULL); } - - gtk_main_quit (); + if (import_importers) { + import_iterator = import_importers; + import_importer = import_iterator->data; + + import_dialog = e_error_new(NULL, "shell:importing", _("Importing data."), NULL); + g_signal_connect(import_dialog, "response", G_CALLBACK(import_dialog_response), NULL); + import_label = gtk_label_new(_("Please wait")); + import_progress = gtk_progress_bar_new(); + gtk_box_pack_start(GTK_BOX(((GtkDialog *)import_dialog)->vbox), import_label, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(((GtkDialog *)import_dialog)->vbox), import_progress, FALSE, FALSE, 0); + gtk_widget_show_all(import_dialog); + + e_import_import(import, (EImportTarget *)import_target, import_importer, import_status, import_done, NULL); + } else { + gtk_main_quit(); + } } void @@ -275,6 +251,9 @@ startup_wizard_abort (EPlugin *ep, EMConfigTargetAccount *target) EConfig *ec = ((EConfigTarget *)target)->config; ETimezoneDialog *etd; + /* We're doing an _exit(), so i dont see why we're bothering to do + any cleanup whatsoever here ... */ + etd = g_object_get_data (G_OBJECT (ec), IMPORT_TIMEZONE_DIALOG); if (etd) { /* Need to do this otherwise the timezone widget gets destroyed but the -- cgit