aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/mail-remote/e-corba-utils.c
diff options
context:
space:
mode:
authorNot Zed <NotZed@Ximian.com>2005-05-24 17:39:24 +0800
committerMichael Zucci <zucchi@src.gnome.org>2005-05-24 17:39:24 +0800
commitc33282a6549d7f7d64a27a9d14e6e99b114053b9 (patch)
treea1e58438c102e24de7a38cb86cce1896802f4df2 /plugins/mail-remote/e-corba-utils.c
parent0822a01317ed088a14aa9268f1d086ff73cb423c (diff)
downloadgsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.tar
gsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.tar.gz
gsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.tar.bz2
gsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.tar.lz
gsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.tar.xz
gsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.tar.zst
gsoc2013-evolution-c33282a6549d7f7d64a27a9d14e6e99b114053b9.zip
Lots more work. Now implements a full listener interface. Filled out api.
2005-05-24 Not Zed <NotZed@Ximian.com> * Lots more work. Now implements a full listener interface. Filled out api. svn path=/trunk/; revision=29406
Diffstat (limited to 'plugins/mail-remote/e-corba-utils.c')
-rw-r--r--plugins/mail-remote/e-corba-utils.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/plugins/mail-remote/e-corba-utils.c b/plugins/mail-remote/e-corba-utils.c
index d10c95e771..545ac425e3 100644
--- a/plugins/mail-remote/e-corba-utils.c
+++ b/plugins/mail-remote/e-corba-utils.c
@@ -2,6 +2,9 @@
#include "e-corba-utils.h"
#include "evolution-mail-store.h"
+#include "evolution-mail-folder.h"
+
+#include <camel/camel-folder-summary.h>
void
e_mail_property_set_string(GNOME_Evolution_Mail_Property *prop, const char *name, const char *val)
@@ -29,3 +32,82 @@ e_mail_storeinfo_set_store(GNOME_Evolution_Mail_StoreInfo *si, EvolutionMailStor
si->store = CORBA_Object_duplicate(bonobo_object_corba_objref((BonoboObject *)store), NULL);
}
+void
+e_mail_messageinfo_set_message(GNOME_Evolution_Mail_MessageInfo *mi, CamelMessageInfo *info)
+{
+ const CamelTag *tag;
+ const CamelFlag *flag;
+ int i;
+
+ mi->uid = CORBA_string_dup(camel_message_info_uid(info));
+ mi->subject = CORBA_string_dup(camel_message_info_subject(info));
+ mi->to = CORBA_string_dup(camel_message_info_to(info));
+ mi->from = CORBA_string_dup(camel_message_info_from(info));
+ mi->flags = camel_message_info_flags(info);
+
+ flag = camel_message_info_user_flags(info);
+ mi->userFlags._maximum = camel_flag_list_size((CamelFlag **)&flag);
+ mi->userFlags._length = mi->userFlags._maximum;
+ if (mi->userFlags._maximum) {
+ mi->userFlags._buffer = GNOME_Evolution_Mail_UserFlags_allocbuf(mi->userFlags._maximum);
+ CORBA_sequence_set_release(&mi->userFlags, CORBA_TRUE);
+
+ for (i=0;flag;flag = flag->next,i++) {
+ mi->userFlags._buffer[i] = CORBA_string_dup(flag->name);
+ g_assert(mi->userFlags._buffer[i]);
+ }
+ }
+
+ tag = camel_message_info_user_tags(info);
+ mi->userTags._maximum = camel_tag_list_size((CamelTag **)&tag);
+ mi->userTags._length = mi->userTags._maximum;
+ if (mi->userTags._maximum) {
+ mi->userTags._buffer = GNOME_Evolution_Mail_UserTags_allocbuf(mi->userTags._maximum);
+ CORBA_sequence_set_release(&mi->userFlags, CORBA_TRUE);
+
+ for (i=0;tag;tag = tag->next,i++) {
+ mi->userTags._buffer[i].name = CORBA_string_dup(tag->name);
+ mi->userTags._buffer[i].value = CORBA_string_dup(tag->value);
+ g_assert(mi->userTags._buffer[i].name);
+ g_assert(mi->userTags._buffer[i].value);
+ }
+ }
+}
+
+void
+e_mail_folderinfo_set_folder(GNOME_Evolution_Mail_FolderInfo *fi, EvolutionMailFolder *emf)
+{
+ fi->name = CORBA_string_dup(emf->name);
+ fi->full_name = CORBA_string_dup(emf->full_name);
+ fi->folder = CORBA_Object_duplicate(bonobo_object_corba_objref((BonoboObject *)emf), NULL);
+}
+
+int
+e_stream_bonobo_to_camel(Bonobo_Stream in, CamelStream *out)
+{
+ Bonobo_Stream_iobuf *buf;
+ CORBA_Environment ev;
+ int go;
+
+ do {
+ Bonobo_Stream_read(in, 4096, &buf, &ev);
+ if (ev._major != CORBA_NO_EXCEPTION) {
+ printf("stream read failed: %s\n", ev._id);
+ CORBA_exception_free(&ev);
+ return -1;
+ }
+
+ go = buf->_length > 0;
+ if (go && camel_stream_write(out, buf->_buffer, buf->_length) == -1) {
+ CORBA_free(buf);
+ return -1;
+ }
+
+ CORBA_free(buf);
+ } while (go);
+
+ camel_stream_reset(out);
+
+ return 0;
+}
+