aboutsummaryrefslogtreecommitdiffstats
path: root/mail/importers/evolution-mbox-importer.c
diff options
context:
space:
mode:
authorIain Holmes <iain@src.gnome.org>2001-05-09 06:53:41 +0800
committerIain Holmes <iain@src.gnome.org>2001-05-09 06:53:41 +0800
commitc64eccfe004f5c30932fe571bb506626bb0c186d (patch)
tree2260477f72c474e00ae9f2b0afa7f5242e60c5a5 /mail/importers/evolution-mbox-importer.c
parent9bcfef421b420061f7342e5517d226aa9f58dbdd (diff)
downloadgsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.tar
gsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.tar.gz
gsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.tar.bz2
gsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.tar.lz
gsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.tar.xz
gsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.tar.zst
gsoc2013-evolution-c64eccfe004f5c30932fe571bb506626bb0c186d.zip
Importer changes
svn path=/trunk/; revision=9722
Diffstat (limited to 'mail/importers/evolution-mbox-importer.c')
-rw-r--r--mail/importers/evolution-mbox-importer.c63
1 files changed, 60 insertions, 3 deletions
diff --git a/mail/importers/evolution-mbox-importer.c b/mail/importers/evolution-mbox-importer.c
index dcdf0f75ad..ef9b9f1ca5 100644
--- a/mail/importers/evolution-mbox-importer.c
+++ b/mail/importers/evolution-mbox-importer.c
@@ -115,6 +115,7 @@ process_item_fn (EvolutionImporter *eimporter,
}
camel_exception_free (ex);
+ g_print ("Notifying...\n");
GNOME_Evolution_ImporterListener_notifyResult (listener,
GNOME_Evolution_ImporterListener_OK,
!done, ev);
@@ -168,6 +169,40 @@ importer_destroy_cb (GtkObject *object,
g_free (mbi);
}
+static void
+folder_created_cb (BonoboListener *listener,
+ const char *event_name,
+ const BonoboArg *event_data,
+ CORBA_Environment *ev,
+ MailImporter *importer)
+{
+ char *fullpath;
+ GNOME_Evolution_Storage_FolderResult *result;
+ CamelException *ex;
+
+ if (strcmp (event_name, "evolution-shell:folder_created") != 0) {
+ return; /* Unknown event */
+ }
+
+ result = event_data->_value;
+ fullpath = g_strconcat ("file://", result->path, NULL);
+
+ ex = camel_exception_new ();
+ importer->folder = mail_tool_uri_to_folder (fullpath, ex);
+
+ if (camel_exception_is_set (ex)) {
+ g_warning ("Error opening %s", fullpath);
+ camel_exception_free (ex);
+
+ g_free (fullpath);
+ return;
+ }
+
+ g_warning ("%s created", fullpath);
+ g_free (fullpath);
+ bonobo_object_unref (BONOBO_OBJECT (listener));
+}
+
static gboolean
load_file_fn (EvolutionImporter *eimporter,
const char *filename,
@@ -178,6 +213,7 @@ load_file_fn (EvolutionImporter *eimporter,
MailImporter *importer;
int fd;
+ g_warning ("%s", __FUNCTION__);
mbi = (MboxImporter *) closure;
importer = (MailImporter *) mbi;
@@ -199,8 +235,28 @@ load_file_fn (EvolutionImporter *eimporter,
importer->mstream = NULL;
if (folderpath == NULL || *folderpath == '\0')
importer->folder = mail_tool_get_local_inbox (NULL);
- else
- importer->folder = mail_tool_uri_to_folder (folderpath, NULL);
+ else {
+ char *parent, *name;
+ BonoboListener *listener;
+
+ /* Make a new directory */
+ name = strrchr (folderpath, '/');
+ if (name == NULL) {
+ parent = g_strdup ("/");
+ name = folderpath;
+ } else {
+ name += 1;
+ parent = g_dirname (folderpath);
+ }
+
+ listener = bonobo_listener_new (NULL, NULL);
+ gtk_signal_connect (GTK_OBJECT (listener), "event-notify",
+ GTK_SIGNAL_FUNC (folder_created_cb),
+ importer);
+
+ mail_importer_create_folder (parent, name, NULL, listener);
+ g_free (parent);
+ }
if (importer->folder == NULL){
g_print ("Bad folder\n");
@@ -232,7 +288,8 @@ mbox_factory_fn (BonoboGenericFactory *_factory,
process_item_fn, NULL, mbox);
gtk_signal_connect (GTK_OBJECT (importer), "destroy",
GTK_SIGNAL_FUNC (importer_destroy_cb), mbox);
-
+
+ g_warning ("Returning");
return BONOBO_OBJECT (importer);
}