diff options
Diffstat (limited to 'plugins/mail-remote/client.c')
-rw-r--r-- | plugins/mail-remote/client.c | 89 |
1 files changed, 63 insertions, 26 deletions
diff --git a/plugins/mail-remote/client.c b/plugins/mail-remote/client.c index fae7401a36..0db3212426 100644 --- a/plugins/mail-remote/client.c +++ b/plugins/mail-remote/client.c @@ -6,17 +6,21 @@ #include "Evolution-DataServer-Mail.h" -#include "evolution-mail-listener.h" +#include "evolution-mail-sessionlistener.h" +#include "evolution-mail-storelistener.h" +#include "evolution-mail-folderlistener.h" #include <camel/camel-folder.h> -static EvolutionMailListener *listener; +static EvolutionMailSessionListener *listener_sess; +static EvolutionMailStoreListener *listener_store; +static EvolutionMailFolderListener *listener_folder; -static GNOME_Evolution_Mail_Session +static Evolution_Mail_Session get_session(void) { char *path, *ior; - GNOME_Evolution_Mail_Session sess = NULL; + Evolution_Mail_Session sess = NULL; CORBA_Environment ev = { 0 }; /* The new-improved bonobo-activation ... */ @@ -28,8 +32,10 @@ get_session(void) } if (sess != CORBA_OBJECT_NIL) { - listener = evolution_mail_listener_new(); - GNOME_Evolution_Mail_Session_addListener(sess, bonobo_object_corba_objref((BonoboObject *)listener), 0, &ev); + listener_sess = evolution_mail_sessionlistener_new(); + listener_store = evolution_mail_storelistener_new(); + listener_folder = evolution_mail_folderlistener_new(); + Evolution_Mail_Session_addListener(sess, bonobo_object_corba_objref((BonoboObject *)listener_sess), &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("AddListener failed: %s\n", ev._id); CORBA_exception_free(&ev); @@ -40,13 +46,13 @@ get_session(void) } static void -list_folder(GNOME_Evolution_Mail_Folder folder) +list_folder(Evolution_Mail_Folder folder) { CORBA_Environment ev = { 0 }; - GNOME_Evolution_Mail_MessageIterator iter; + Evolution_Mail_MessageIterator iter; int more, total = 0; - iter = GNOME_Evolution_Mail_Folder_getMessages(folder, "", &ev); + iter = Evolution_Mail_Folder_getMessages(folder, "", &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("getmessages failed: %s\n", ev._id); CORBA_exception_free(&ev); @@ -54,10 +60,10 @@ list_folder(GNOME_Evolution_Mail_Folder folder) } do { - GNOME_Evolution_Mail_MessageInfos *msgs; + Evolution_Mail_MessageInfos *msgs; int i; - msgs = GNOME_Evolution_Mail_MessageIterator_next(iter, 50, &ev); + msgs = Evolution_Mail_MessageIterator_next(iter, 50, &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("msgs.next(): %s\n", ev._id); CORBA_exception_free(&ev); @@ -66,19 +72,19 @@ list_folder(GNOME_Evolution_Mail_Folder folder) /* NB: set the first 50 messages in private to unseen */ if (total == 0) { - GNOME_Evolution_Mail_MessageInfoSets *changes; + Evolution_Mail_MessageInfoSets *changes; int j; - changes = GNOME_Evolution_Mail_MessageInfoSets__alloc(); + changes = Evolution_Mail_MessageInfoSets__alloc(); changes->_length = msgs->_length; changes->_maximum = msgs->_maximum; - changes->_buffer = GNOME_Evolution_Mail_MessageInfoSets_allocbuf(changes->_maximum); + changes->_buffer = Evolution_Mail_MessageInfoSets_allocbuf(changes->_maximum); for (j=0;j<msgs->_length;j++) { changes->_buffer[j].uid = CORBA_string_dup(msgs->_buffer[j].uid); changes->_buffer[j].flagSet = 0; changes->_buffer[j].flagMask = CAMEL_MESSAGE_SEEN; } - GNOME_Evolution_Mail_Folder_changeMessages(folder, changes, &ev); + Evolution_Mail_Folder_changeMessages(folder, changes, &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("changemessages failed: %s\n", ev._id); CORBA_exception_free(&ev); @@ -96,22 +102,47 @@ list_folder(GNOME_Evolution_Mail_Folder folder) CORBA_free(msgs); } while (more); + Evolution_Mail_MessageIterator_dispose(iter, &ev); CORBA_Object_release(iter, &ev); printf("Got %d messages total\n", total); } +static void +add_message(Evolution_Mail_Folder folder, const char *msg) +{ + BonoboObject *mem; + CORBA_Environment ev = { 0 }; + Evolution_Mail_MessageInfoSet mis = { 0 }; + + mis.uid = ""; + mis.flagSet = CAMEL_MESSAGE_SEEN; + mis.flagMask = CAMEL_MESSAGE_SEEN; + + mem = bonobo_stream_mem_create(msg, strlen(msg), TRUE, FALSE); + + printf("attempt send mail to store\n"); + Evolution_Mail_Folder_appendMessage(folder, &mis, bonobo_object_corba_objref(mem), &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + printf("appendmessage failed: %s\n", ev._id); + CORBA_exception_free(&ev); + CORBA_exception_init(&ev); + } + + bonobo_object_unref(mem); +} + static int domain(void *data) { - GNOME_Evolution_Mail_Session sess; - GNOME_Evolution_Mail_StoreInfos *stores; - GNOME_Evolution_Mail_FolderInfos *folders; + Evolution_Mail_Session sess; + Evolution_Mail_StoreInfos *stores; + Evolution_Mail_FolderInfos *folders; CORBA_Environment ev = { 0 }; int i, j, f; sess = get_session(); - stores = GNOME_Evolution_Mail_Session_getStores(sess, "", &ev); + stores = Evolution_Mail_Session_getStores(sess, "", bonobo_object_corba_objref((BonoboObject *)listener_store), &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("getStores failed: %s\n", ev._id); CORBA_exception_free(&ev); @@ -122,22 +153,22 @@ static int domain(void *data) printf("Got %d stores\n", stores->_length); for (i=0;i<stores->_length;i++) { #if 0 - GNOME_Evolution_Mail_PropertyName namesarray[] = { + Evolution_Mail_PropertyName namesarray[] = { "name", "uid" }; - GNOME_Evolution_Mail_PropertyNames names = { + Evolution_Mail_PropertyNames names = { 2, 2, namesarray, FALSE, }; - GNOME_Evolution_Mail_Properties *props; + Evolution_Mail_Properties *props; #endif - GNOME_Evolution_Mail_Store store = stores->_buffer[i].store; + Evolution_Mail_Store store = stores->_buffer[i].store; printf("store %p '%s' uid '%s'\n", store, stores->_buffer[i].name, stores->_buffer[i].uid); #if 0 - GNOME_Evolution_Mail_Store_getProperties(store, &names, &props, &ev); + Evolution_Mail_Store_getProperties(store, &names, &props, &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("getProperties failed\n"); return 1; @@ -167,7 +198,7 @@ static int domain(void *data) mem = bonobo_stream_mem_create(msg, strlen(msg), TRUE, FALSE); printf("attempt send mail to store\n"); - GNOME_Evolution_Mail_Store_sendMessage(store, bonobo_object_corba_objref(mem), &ev); + Evolution_Mail_Store_sendMessage(store, bonobo_object_corba_objref(mem), &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("sendmessage failed: %s\n", ev._id); CORBA_exception_free(&ev); @@ -178,7 +209,7 @@ static int domain(void *data) } #endif - folders = GNOME_Evolution_Mail_Store_getFolders(store, "", &ev); + folders = Evolution_Mail_Store_getFolders(store, "", bonobo_object_corba_objref((BonoboObject *)listener_folder), &ev); if (ev._major != CORBA_NO_EXCEPTION) { printf("getfolders failed\n"); /* FIXME: leaks ex data? */ @@ -190,7 +221,13 @@ static int domain(void *data) for (f = 0; f<folders->_length;f++) { if (!strcmp(folders->_buffer[f].full_name, "Private")) { + const char *msg = "To: notzed@novell.com\r\n" + "Subject: This is a test append from client\r\n" + "\r\n" + "Blah blah, test appended message!\r\n"; + list_folder(folders->_buffer[f].folder); + add_message(folders->_buffer[f].folder, msg); } } |