aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/mail-remote/ChangeLog99
-rw-r--r--plugins/mail-remote/Evolution-DataServer-Mail.idl209
-rw-r--r--plugins/mail-remote/Evolution.idl6
-rw-r--r--plugins/mail-remote/Makefile.am94
-rw-r--r--plugins/mail-remote/client.c342
-rw-r--r--plugins/mail-remote/e-corba-utils.c288
-rw-r--r--plugins/mail-remote/e-corba-utils.h44
-rw-r--r--plugins/mail-remote/em-message-stream.c144
-rw-r--r--plugins/mail-remote/em-message-stream.h57
-rw-r--r--plugins/mail-remote/evolution-mail-folder.c417
-rw-r--r--plugins/mail-remote/evolution-mail-folder.h64
-rw-r--r--plugins/mail-remote/evolution-mail-folderlistener.c156
-rw-r--r--plugins/mail-remote/evolution-mail-folderlistener.h54
-rw-r--r--plugins/mail-remote/evolution-mail-marshal.list1
-rw-r--r--plugins/mail-remote/evolution-mail-messageiterator.c171
-rw-r--r--plugins/mail-remote/evolution-mail-messageiterator.h47
-rw-r--r--plugins/mail-remote/evolution-mail-messagestream.c158
-rw-r--r--plugins/mail-remote/evolution-mail-messagestream.h53
-rw-r--r--plugins/mail-remote/evolution-mail-session.c354
-rw-r--r--plugins/mail-remote/evolution-mail-session.h54
-rw-r--r--plugins/mail-remote/evolution-mail-sessionlistener.c180
-rw-r--r--plugins/mail-remote/evolution-mail-sessionlistener.h54
-rw-r--r--plugins/mail-remote/evolution-mail-store.c665
-rw-r--r--plugins/mail-remote/evolution-mail-store.h68
-rw-r--r--plugins/mail-remote/evolution-mail-storelistener.c156
-rw-r--r--plugins/mail-remote/evolution-mail-storelistener.h54
-rw-r--r--plugins/mail-remote/mail-remote.c59
-rw-r--r--plugins/mail-remote/org-gnome-evolution-mail-remote.eplug.xml18
28 files changed, 0 insertions, 4066 deletions
diff --git a/plugins/mail-remote/ChangeLog b/plugins/mail-remote/ChangeLog
deleted file mode 100644
index 0377147c38..0000000000
--- a/plugins/mail-remote/ChangeLog
+++ /dev/null
@@ -1,99 +0,0 @@
-2007-10-29 Matthew Barnes <mbarnes@redhat.com>
-
- * evolution-mail-sessionlistener.c:
- Use g_cclosure_marshal_VOID__POINTER instead of
- evolution_mail_marshal_VOID__POINTER.
-
-2007-09-27 Hiroyuki Ikezoe <poincare@ikezoe.net>
-
- ** Fix for bug #461195
-
- * evolution-mail-marshal.list: Remove needless marshalers.
-
-2007-05-12 Matthew Barnes <mbarnes@redhat.com>
-
- ** Fixes part of bug #337616
-
- * Makefile.am: Add "eplug.xml" file to EXTRA_DIST.
-
-2007-04-02 Sankar P <psankar@novell.com>
-
- * Committed on behalf of Gilles Dartiguelongue <dartigug@esiee.fr>
-
- * org-gnome-evolution-mail-remote.eplug.xml:
- Cleanup.
- Fixes part of #301149
-
-2006-01-06 Simon Zheng <simon.zheng@sun.com>
-
- * evolution-mail-session.c:
- * evolution-mail-store.c:
- use libedataserver/e-account-list.h instead of e-util/e-account-list.h.
- use libedataserver/e-account.h instead of e-util/e-account.h.
-
-2005-08-10 Not Zed <NotZed@Ximian.com>
-
- ** See #271985.
-
- * evolution-mail-session.c (is_storage): check for uri "" and pass
- exception to provider get.
-
-2005-08-02 Not Zed <NotZed@Ximian.com>
-
- * org-gnome-evolution-mail-remote.eplug.xml: How strange, this was
- never added, but nobody noticed till now.
-
-2005-06-02 Not Zed <NotZed@Ximian.com>
-
- * Evolution.idl: seutp an idl file so we only need to generate one
- set of skels/stubs for all imported.
-
- * mail-remote.c (e_plugin_lib_enable): instead of writing ior to a
- file, just add the Session interface to the mail component.
-
- * client.c (get_session): use the new shell interface to find the
- mail compnent and retrieve the session interface using
- bonobo-activation, so the mailer starts if we try to access it.
-
-2005-05-27 Not Zed <NotZed@Ximian.com>
-
- * em-message-stream.[ch]: A camel-stream to wrap
- Evolution_Mail_MessageStream.
-
- * evolution-mail-messagestream.[ch]: simplified read-only stream
- interface rather than using bonobo-stream. It wraps a
- camel-stream only & simplified lifecycle management.
-
- * evolution-mail-store.c (evolution_mail_store_changed): if we
- have no more listeners, close the camelstore object off.
-
- * Evolution-DataServer-Mail.idl: changed exceptions to use one
- exception type with details. Fixed code to use these.
-
-2005-05-26 Not Zed <NotZed@Ximian.com>
-
- * evolution-mail-folderlistener.[ch]:
- * evolution-mail-sessionlistener.[ch]:
- * evolution-mail-storelistener.[ch]: New helpers for listeners.
-
- * evolution-mail-listener.[ch]: removed.
-
- * Evolution-DataServer-Mail.idl: removed the GNOME prefix, Bonobo
- doesn't use it, and it just adds pointless typing. Added
- getmessage and appendmessage interaces. Moved listeners to each
- object rather than one global listener.
-
-2005-05-24 Not Zed <NotZed@Ximian.com>
-
- * Lots more work. Now implements a full listener interface.
- Filled out api.
-
-2005-05-20 Not Zed <NotZed@Ximian.com>
-
- * Lots of work, filled out functions, cleaned up idl to make the
- data more useful, added a listener interface, etc.
-
-2005-05-12 Not Zed <NotZed@Ximian.com>
-
- * A remote mail interface plugin for evolution.
-
diff --git a/plugins/mail-remote/Evolution-DataServer-Mail.idl b/plugins/mail-remote/Evolution-DataServer-Mail.idl
deleted file mode 100644
index 453637f643..0000000000
--- a/plugins/mail-remote/Evolution-DataServer-Mail.idl
+++ /dev/null
@@ -1,209 +0,0 @@
-/* Evolution Mail Data Interface
- *
- * Copyright (C) 2005 Novell, Inc.
- *
- * Authors: Michael Zucchi <notzed@novell.com>
- */
-
-#ifndef _EVOLUTION_DATASERVER_MAIL_IDL_
-#define _EVOLUTION_DATASERVER_MAIL_IDL_
-
-#include <Bonobo.idl>
-
-module Evolution {
-module Mail {
- /* ********************************************************************** */
- // NB: tiny subset of omg properties service
- typedef string PropertyName;
- typedef sequence <PropertyName> PropertyNames;
- struct Property {
- PropertyName name;
- any value;
- };
- typedef sequence <Property> Properties;
-
- /* ********************************************************************** */
- // exceptions
-
- enum ErrorType {
- SYSTEM_ERROR,
- CAMEL_ERROR,
- FAILED,
- NOT_SUPPORTED,
- NO_PERMISSION
- };
-
- exception MailException {
- ErrorType id;
- string desc;
- };
-
- /* ********************************************************************** */
- // Main interfaces
- interface Folder;
- typedef sequence<Folder> Folders;
-
- struct FolderInfo {
- string name;
- string full_name;
- Folder folder;
- };
- typedef sequence <FolderInfo> FolderInfos;
-
- interface Store;
- typedef sequence<Store> Stores;
-
- struct StoreInfo {
- string name;
- string uid;
- Store store;
- };
- typedef sequence <StoreInfo> StoreInfos;
-
- interface Session;
-
- // **********************************************************************
- // MessageInfo wrappers
- typedef string UserFlag;
- typedef sequence <UserFlag> UserFlags;
-
- struct UserTag {
- string name;
- string value; // value == "" == unset
- };
- typedef sequence <UserTag> UserTags;
-
- struct MessageInfo {
- string uid;
- string subject;
- string to;
- string from;
- long flags; // CamelMessageInfo flag bits
- UserFlags userFlags;
- UserTags userTags;
- };
- typedef sequence <MessageInfo> MessageInfos;
-
- // Used to pass to altering functions
- struct MessageInfoSet {
- string uid;
- long flagSet; // values bits to set in the flags
- long flagMask; // mask of bits to change in the flags
- UserFlags userFlagSet;
- UserFlags userFlagUnset;
- UserTags userTags;
- };
- typedef sequence <MessageInfoSet> MessageInfoSets;
-
- /* ********************************************************************** */
- /* Messages are passed as full rfc822 encoded messages in a stream */
- typedef sequence <octet>Buffer;
-
- interface MessageStream : Bonobo::Unknown {
- Buffer next(in long size)
- raises (MailException);
-
- void dispose();
- };
-
- interface MessageIterator : Bonobo::Unknown {
- MessageInfos next(in long limit)
- raises (MailException);
-
- void dispose();
- };
-
- /* ********************************************************************** */
-
- enum ChangeType {
- ADDED,
- REMOVED,
- CHANGED
- };
-
- // ??
- struct SessionChange {
- ChangeType type;
- StoreInfos stores;
- };
- typedef sequence <SessionChange> SessionChanges;
-
- struct StoreChange {
- ChangeType type;
- FolderInfos folders;
- };
- typedef sequence <StoreChange> StoreChanges;
-
- struct FolderChange {
- ChangeType type;
- MessageInfos messages;
- };
- typedef sequence <FolderChange> FolderChanges;
-
- /* ********************************************************************** */
- /* listeners */
-
- interface SessionListener : Bonobo::Unknown {
- oneway void changed(in Session session, in SessionChanges changes);
-
- oneway void shutdown(in Session session);
-
- // We need to use gnome-keyring instead of an interface like this?
- // Or does gnome-keyring run off this?
- //string getPassword(in Session session, string uri, string domain, string item, string prompt, long flags);
- };
-
- interface StoreListener : Bonobo::Unknown {
- oneway void changed(in Store store, in StoreChanges changes);
- };
-
- interface FolderListener : Bonobo::Unknown {
- oneway void changed(in Folder folder, in FolderChanges changes);
- };
-
- /* ********************************************************************** */
-
-// If this is done, then Session shouldn't have add/removeListener anymore
-// interface Factory : Bonobo::Unknown {
-// Session getSession(in string base, in SessionListener listener);
-// };
-
- interface Session : Bonobo::Unknown {
- boolean getProperties(in PropertyNames names, out Properties props);
-
- StoreInfos getStores(in string pattern, in StoreListener listener)
- raises (MailException);
-
- void addListener(in SessionListener listener);
- void removeListener(in SessionListener listener);
- };
-
- interface Store : Bonobo::Unknown {
- boolean getProperties(in PropertyNames names, out Properties props);
-
- FolderInfos getFolders(in string pattern, in FolderListener listener)
- raises (MailException);
-
- void sendMessage(in MessageStream msg)
- raises (MailException);
- };
-
- interface Folder : Bonobo::Unknown {
- boolean getProperties(in PropertyNames names, out Properties props);
-
- MessageIterator getMessages(in string pattern)
- raises (MailException);
-
- void changeMessages(in MessageInfoSets infos)
- raises (MailException);
-
- MessageStream getMessage(in string uid)
- raises (MailException);
-
- void appendMessage(in MessageInfoSet info, in MessageStream msg)
- raises (MailException);
- };
-};
-};
-
-#endif
diff --git a/plugins/mail-remote/Evolution.idl b/plugins/mail-remote/Evolution.idl
deleted file mode 100644
index c5385d5800..0000000000
--- a/plugins/mail-remote/Evolution.idl
+++ /dev/null
@@ -1,6 +0,0 @@
-
-/* All external interfaces should go here, so we only create a single skels file */
-
-#include <Bonobo.idl>
-#include <shell/Evolution.idl>
-#include <mail/Evolution-Mail.idl>
diff --git a/plugins/mail-remote/Makefile.am b/plugins/mail-remote/Makefile.am
deleted file mode 100644
index 99375bc92f..0000000000
--- a/plugins/mail-remote/Makefile.am
+++ /dev/null
@@ -1,94 +0,0 @@
-
-INCLUDES = \
- -I$(top_srcdir) \
- $(EVOLUTION_MAIL_CFLAGS)
-
-@EVO_PLUGIN_RULE@
-
-plugin_DATA = org-gnome-evolution-mail-remote.eplug
-plugin_LTLIBRARIES = liborg-gnome-evolution-mail-remote.la
-
-liborg_gnome_evolution_mail_remote_la_SOURCES = \
- $(IDL_GENERATED_C) \
- $(IDL_GENERATED_H) \
- e-corba-utils.c \
- e-corba-utils.h \
- em-message-stream.c \
- em-message-stream.h \
- evolution-mail-folder.c \
- evolution-mail-folder.h \
- evolution-mail-folderlistener.c \
- evolution-mail-folderlistener.h \
- evolution-mail-marshal.c \
- evolution-mail-marshal.h \
- evolution-mail-messageiterator.c \
- evolution-mail-messageiterator.h \
- evolution-mail-messagestream.c \
- evolution-mail-messagestream.h \
- evolution-mail-session.c \
- evolution-mail-session.h \
- evolution-mail-sessionlistener.c \
- evolution-mail-sessionlistener.h \
- evolution-mail-store.c \
- evolution-mail-store.h \
- evolution-mail-storelistener.c \
- evolution-mail-storelistener.h \
- mail-remote.c
-
-liborg_gnome_evolution_mail_remote_la_LDFLAGS = -module -avoid-version
-
-client_SOURCES = \
- client.c
-
-client_LDADD = \
- $(EVOLUTION_MAIL_LIBS) \
- evolution-mail-sessionlistener.o \
- evolution-mail-storelistener.o \
- evolution-mail-folderlistener.o \
- evolution-mail-marshal.o \
- evolution-mail-messagestream.o \
- Evolution-DataServer-Mail-common.o \
- Evolution-DataServer-Mail-stubs.o \
- Evolution-DataServer-Mail-skels.o \
- Evolution-common.o \
- Evolution-stubs.o
-
-noinst_PROGRAMS = \
- client
-
-# mail idl
-
-IDL = Evolution-DataServer-Mail.idl
-
-IDL_GENERATED_H = \
- Evolution-DataServer-Mail.h
-
-IDL_GENERATED_C = \
- Evolution-DataServer-Mail-common.c \
- Evolution-DataServer-Mail-skels.c \
- Evolution-DataServer-Mail-stubs.c
-
-EVO_GENERATED = Evolution.h Evolution-common.c Evolution-stubs.c Evolution-skels.c
-
-$(IDL_GENERATED_H) $(IDL_GENERATED_C): $(IDL)
- $(ORBIT_IDL) -I $(srcdir) -I $(datadir)/idl $(IDL_INCLUDES) $^
-
-$(EVO_GENERATED): $(srcdir)/Evolution.idl
- $(ORBIT_IDL) -I $(top_srcdir) -I $(top_srcdir)/shell -I $(datadir)/idl $(IDL_INCLUDES) $^
-
-# installed idls
-
-#idl_DATA = $(IDL)
-
-# marshallers for glib
-MARSHAL_GENERATED = evolution-mail-marshal.c evolution-mail-marshal.h
-@EVO_MARSHAL_RULE@
-
-EXTRA_DIST = \
- $(IDL) \
- Evolution.idl \
- evolution-mail-marshal.list \
- org-gnome-evolution-mail-remote.eplug.xml
-
-BUILT_SOURCES = $(IDL_GENERATED_H) $(IDL_GENERATED_C) $(MARSHAL_GENERATED) $(SHELL_GENERATED)
-CLEANFILES = $(BUILT_SOURCES)
diff --git a/plugins/mail-remote/client.c b/plugins/mail-remote/client.c
deleted file mode 100644
index 2c633c9d1d..0000000000
--- a/plugins/mail-remote/client.c
+++ /dev/null
@@ -1,342 +0,0 @@
-
-#include <stdio.h>
-#include <string.h>
-
-#include <libbonobo.h>
-
-#include "Evolution-DataServer-Mail.h"
-
-#include "evolution-mail-sessionlistener.h"
-#include "evolution-mail-storelistener.h"
-#include "evolution-mail-folderlistener.h"
-#include "evolution-mail-messagestream.h"
-
-#include "shell/e-shell.h"
-
-#include <camel/camel-folder.h>
-
-static EvolutionMailSessionListener *listener_sess;
-static EvolutionMailStoreListener *listener_store;
-static EvolutionMailFolderListener *listener_folder;
-
-#if 0
-static char *
-em_map_mail_ex(CORBA_Environment *ev, void *data)
-{
- Evolution_Mail_MailException *x = CORBA_exception_value(ev);
-
- switch (x->id) {
- case Evolution_Mail_SYSTEM_ERROR:
- return g_strdup_printf(_("System error: %s"), x->desc);
- case Evolution_Mail_CAMEL_ERROR:
- return g_strdup_printf(_("Camel error: %s"), x->desc);
- default:
- return g_strdup(x->desc);
- }
-}
-#endif
-
-static void e_mail_exception_dump(CORBA_Environment *ev, char *what)
-{
-#if 0
- static int init = 0;
- char *d;
-
- /* *shrug* this doesn't work */
- if (!init) {
- bonobo_exception_add_handler_fn(ex_Evolution_Mail_MailException, em_map_mail_ex, NULL, NULL);
- init = 1;
- }
-
- d = bonobo_exception_get_text(ev);
-
- if (d) {
- printf("Failed %s: %s\n", what, d);
- g_free(d);
- }
- CORBA_exception_free(ev);
-#else
- const char *id = CORBA_exception_id(ev);
-
- switch (ev->_major) {
- case CORBA_USER_EXCEPTION:
- if (!strcmp(id, ex_Evolution_Mail_MailException)) {
- Evolution_Mail_MailException *x = CORBA_exception_value(ev);
-
- switch (x->id) {
- case Evolution_Mail_SYSTEM_ERROR:
- printf("Failed %s: System error %s\n", what, x->desc);
- break;
- case Evolution_Mail_CAMEL_ERROR:
- printf("Failed %s: Camel error %s\n", what, x->desc);
- break;
- default:
- printf("Failed %s: %s\n", what, x->desc);
- break;
- }
- break;
- }
- default:
- printf("Failed %s: %s\n", what, id);
- break;
- }
-
- CORBA_exception_free(ev);
-#endif
-}
-
-static Evolution_Mail_Session
-get_session(void)
-{
- Evolution_Mail_Session sess = NULL;
- CORBA_Environment ev = { 0 };
- GNOME_Evolution_Component mail;
- GNOME_Evolution_Shell shell;
-
- shell = bonobo_activation_activate_from_id("OAFIID:GNOME_Evolution_Shell:2.4", 0, NULL, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "activating shell");
- return NULL;
- }
-
- do {
- mail = GNOME_Evolution_Shell_findComponent(shell, "mail", &ev);
- if (ev._major == CORBA_USER_EXCEPTION
- && !strcmp(ev._id, ex_GNOME_Evolution_Shell_NotReady)) {
- CORBA_exception_free(&ev);
- printf("Shell not ready yet, waiting\n");
- sleep(1);
- } else if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "finding mail component");
- CORBA_Object_release(shell, NULL);
- return NULL;
- } else
- break;
- } while (1);
-
- printf("got mail interface\n");
- GNOME_Evolution_MailComponent_test(mail, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "testing mail interface?");
- }
-
- sess = Bonobo_Unknown_queryInterface(mail, "IDL:Evolution/Mail/Session:1.0", &ev);
- if (sess == NULL || ev._major != CORBA_NO_EXCEPTION) {
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "querying for session interface");
- else
- printf("can't find session interface?\n");
- CORBA_Object_release(shell, NULL);
- CORBA_Object_release(mail, NULL);
- return NULL;
- }
-
- printf("got session interface: %p\n", sess);
-
- 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) {
- e_mail_exception_dump(&ev, "adding store listener");
- return NULL;
- }
-
- return sess;
-}
-
-static void
-list_folder(Evolution_Mail_Folder folder)
-{
- CORBA_Environment ev = { 0 };
- Evolution_Mail_MessageIterator iter;
- int more, total = 0;
-
- iter = Evolution_Mail_Folder_getMessages(folder, "", &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting mssages");
- return;
- }
-
- do {
- Evolution_Mail_MessageInfos *msgs;
- int i;
-
- msgs = Evolution_Mail_MessageIterator_next(iter, 50, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting next messages");
- break;
- }
-
- /* NB: set the first 50 messages in private to unseen */
- if (total == 0) {
- Evolution_Mail_MessageInfoSets *changes;
- int j;
-
- changes = Evolution_Mail_MessageInfoSets__alloc();
- changes->_length = msgs->_length;
- changes->_maximum = msgs->_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;
- }
- Evolution_Mail_Folder_changeMessages(folder, changes, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "changing messages");
- }
-
- total += msgs->_length;
- more = msgs->_length == 50;
-#if 0
- for (i=0;i<msgs->_length;i++) {
- printf("uid: %s '%s'\n", msgs->_buffer[i].uid, msgs->_buffer[i].subject);
- }
-#endif
- CORBA_free(msgs);
- } while (more);
-
- printf("calling dispose\n");
- Evolution_Mail_MessageIterator_dispose(iter, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "disposing messageiterator");
-
- 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 = (BonoboObject *)evolution_mail_messagestream_new_buffer(msg, strlen(msg));
-
- 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);
- }
-}
-
-static int domain(void *data)
-{
- Evolution_Mail_Session sess;
- Evolution_Mail_StoreInfos *stores;
- Evolution_Mail_FolderInfos *folders;
- CORBA_Environment ev = { 0 };
- int i, j, f;
-
- sess = get_session();
-
- stores = Evolution_Mail_Session_getStores(sess, "", bonobo_object_corba_objref((BonoboObject *)listener_store), &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting stores");
- _exit(1);
- return 0;
- }
-
- printf("Got %d stores\n", stores->_length);
- for (i=0;i<stores->_length;i++) {
-#if 0
- Evolution_Mail_PropertyName namesarray[] = {
- "name", "uid"
- };
- Evolution_Mail_PropertyNames names = {
- 2, 2,
- namesarray,
- FALSE,
- };
- Evolution_Mail_Properties *props;
-#endif
- 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
- Evolution_Mail_Store_getProperties(store, &names, &props, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting store properties");
- return 1;
- }
-
- for (j=0;j<props->_length;j++) {
- printf(" %s = (%s)", props->_buffer[j].name, (char *)ORBit_tk_to_name(props->_buffer[j].value._type->kind));
- if (props->_buffer[j].value._type == TC_CORBA_string) {
- printf(" '%s'\n", (char *)props->_buffer[j].value._value);
- } else {
- printf(" '%s' ", BONOBO_ARG_GET_STRING(&props->_buffer[j].value));
- printf(" <unknonw type>\n");
- }
- }
-
- CORBA_free(props);
-#endif
-
-#if 1
- {
- char *msg = "To: notzed@novell.com\r\n"
- "Subject: This is a test from auto-send\r\n"
- "\r\n"
- "Blah blah, test message!\r\n";
- BonoboObject *mem;
-
- mem = (BonoboObject *)evolution_mail_messagestream_new_buffer(msg, strlen(msg));
-
- printf("attempt send mail to store\n");
- Evolution_Mail_Store_sendMessage(store, bonobo_object_corba_objref(mem), &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- e_mail_exception_dump(&ev, "sending message to store");
- /* If we get a system exception, do we have to dispose it ourselves?? */
- }
-#endif
-
- folders = Evolution_Mail_Store_getFolders(store, "", bonobo_object_corba_objref((BonoboObject *)listener_folder), &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_mail_exception_dump(&ev, "getting folders");
- } else {
- for (f = 0; f<folders->_length;f++) {
- printf("folder %p full:'%s' name:'%s'\n", folders->_buffer[f].folder, folders->_buffer[f].full_name, folders->_buffer[f].name);
- }
-
- 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);
- }
- }
-
- }
- CORBA_free(folders);
- }
-
- CORBA_free(stores);
-
- return 0;
-}
-
-int main(int argc, char **argv)
-{
- bonobo_init(&argc, argv);
-
- g_idle_add(domain, NULL);
-
- bonobo_main();
-
- return 0;
-}
diff --git a/plugins/mail-remote/e-corba-utils.c b/plugins/mail-remote/e-corba-utils.c
deleted file mode 100644
index 0b4aae19a4..0000000000
--- a/plugins/mail-remote/e-corba-utils.c
+++ /dev/null
@@ -1,288 +0,0 @@
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-
-#include "e-corba-utils.h"
-
-#include "evolution-mail-store.h"
-#include "evolution-mail-folder.h"
-#include "evolution-mail-messagestream.h"
-
-#include "em-message-stream.h"
-
-#include <camel/camel-folder-summary.h>
-#include <camel/camel-stream-mem.h>
-#include <camel/camel-mime-message.h>
-
-#include <bonobo/bonobo-stream-memory.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-
-#include <libedataserver/e-msgport.h>
-
-static CORBA_char *
-e_corba_strdup(const char *v)
-{
- if (v)
- return CORBA_string_dup(v);
- else
- return CORBA_string_dup("");
-}
-
-void
-e_mail_property_set_string(Evolution_Mail_Property *prop, const char *name, const char *val)
-{
- prop->value._release = CORBA_TRUE;
- prop->value._type = TC_CORBA_string;
- prop->value._value = CORBA_sequence_CORBA_string_allocbuf(1);
- ((char **)prop->value._value)[0] = CORBA_string_dup(val);
- prop->name = CORBA_string_dup(name);
-}
-
-void
-e_mail_property_set_null(Evolution_Mail_Property *prop, const char *name)
-{
- prop->value._release = CORBA_TRUE;
- prop->value._type = TC_null;
- prop->name = CORBA_string_dup(name);
-}
-
-void
-e_mail_storeinfo_set_store(Evolution_Mail_StoreInfo *si, EvolutionMailStore *store)
-{
- si->name = CORBA_string_dup(evolution_mail_store_get_name(store));
- si->uid = CORBA_string_dup(evolution_mail_store_get_uid(store));
- si->store = CORBA_Object_duplicate(bonobo_object_corba_objref((BonoboObject *)store), NULL);
-}
-
-void
-e_mail_messageinfo_set_message(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 = e_corba_strdup(camel_message_info_subject(info));
- mi->to = e_corba_strdup(camel_message_info_to(info));
- mi->from = e_corba_strdup(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 = 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 = 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);
- }
- }
-}
-
-CamelMessageInfo *
-e_mail_messageinfoset_to_info(const Evolution_Mail_MessageInfoSet *mi)
-{
- CamelMessageInfo *info;
- int i;
-
- info = camel_message_info_new(NULL);
- camel_message_info_set_flags(info, mi->flagSet, mi->flagMask);
- for (i=0;i<mi->userFlagSet._length;i++)
- camel_message_info_set_user_flag(info, mi->userFlagSet._buffer[i], TRUE);
- for (i=0;i<mi->userTags._length;i++)
- camel_message_info_set_user_tag(info, mi->userTags._buffer[i].name, mi->userTags._buffer[i].value);
-
- return info;
-}
-
-void
-e_mail_folderinfo_set_folder(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);
-}
-
-CamelMimeMessage *
-e_messagestream_to_message(const Evolution_Mail_MessageStream in, CORBA_Environment *ev)
-{
- CamelStream *emms;
- CamelMimeMessage *msg;
-
- emms = em_message_stream_new(in);
- if (emms == NULL) {
- e_mail_exception_set(ev, Evolution_Mail_FAILED, _("Unknown reason"));
- return NULL;
- }
-
- msg = camel_mime_message_new();
- if (camel_data_wrapper_construct_from_stream((CamelDataWrapper *)msg, emms) == -1) {
- e_mail_exception_set(ev, Evolution_Mail_SYSTEM_ERROR, g_strerror(errno));
- camel_object_unref(msg);
- msg = NULL;
- }
- camel_object_unref(emms);
-
- return msg;
-}
-
-Evolution_Mail_MessageStream
-e_messagestream_from_message(CamelMimeMessage *msg, CORBA_Environment *ev)
-{
- CamelStreamMem *mem;
- EvolutionMailMessageStream *emms;
- Evolution_Mail_MessageStream out;
-
- /* didn't say it was going to be efficient ... */
-
- mem = (CamelStreamMem *)camel_stream_mem_new();
- if (camel_data_wrapper_write_to_stream((CamelDataWrapper *)msg, (CamelStream *)mem) == -1) {
- e_mail_exception_set(ev, Evolution_Mail_SYSTEM_ERROR, g_strerror(errno));
- out = CORBA_OBJECT_NIL;
- } else {
- camel_stream_reset((CamelStream *)mem);
- emms = evolution_mail_messagestream_new((CamelStream *)mem);
- out = CORBA_Object_duplicate(bonobo_object_corba_objref((BonoboObject *)emms), NULL);
- }
- camel_object_unref(mem);
-
- return out;
-}
-
-struct _e_mail_listener {
- struct _e_mail_listener *next;
- struct _e_mail_listener *prev;
-
- CORBA_Object listener;
-};
-
-static struct _e_mail_listener *
-eml_find(struct _EDList *list, CORBA_Object listener)
-{
- struct _e_mail_listener *l, *n;
-
- l = (struct _e_mail_listener *)list->head;
- n = l->next;
- while (n) {
- if (l->listener == listener)
- return l;
- l = n;
- n = n->next;
- }
-
- return NULL;
-}
-
-static void
-eml_remove(struct _e_mail_listener *l)
-{
- CORBA_Environment ev = { 0 };
-
- e_dlist_remove((EDListNode *)l);
- CORBA_Object_release(l->listener, &ev);
- g_free(l);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- CORBA_exception_free(&ev);
-}
-
-void e_mail_listener_add(struct _EDList *list, CORBA_Object listener)
-{
- struct _e_mail_listener *l;
- CORBA_Environment ev = { 0 };
-
- if (eml_find(list, listener) != NULL)
- return;
-
- listener = CORBA_Object_duplicate(listener, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- CORBA_exception_free(&ev);
- } else {
- l = g_malloc(sizeof(*l));
- l->listener = listener;
- e_dlist_addtail(list, (EDListNode *)l);
- }
-}
-
-gboolean e_mail_listener_remove(struct _EDList *list, CORBA_Object listener)
-{
- struct _e_mail_listener *l;
-
- l = eml_find(list, listener);
- if (l)
- eml_remove(l);
-
- return !e_dlist_empty(list);
-}
-
-gboolean e_mail_listener_emit(struct _EDList *list, EMailListenerChanged emit, CORBA_Object source, void *changes)
-{
- struct _e_mail_listener *l, *n;
- CORBA_Environment ev = { 0 };
-
- l = (struct _e_mail_listener *)list->head;
- n = l->next;
- while (n) {
- emit(l->listener, source, changes, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- e(printf("emit changed failed '%s', removing listener\n", ev._id));
- CORBA_exception_free(&ev);
- eml_remove(l);
- }
- l = n;
- n = n->next;
- }
-
- return !e_dlist_empty(list);
-}
-
-void e_mail_listener_free(struct _EDList *list)
-{
- struct _e_mail_listener *l, *n;
-
- l = (struct _e_mail_listener *)list->head;
- n = l->next;
- while (n) {
- eml_remove(l);
-
- l = n;
- n = n->next;
- }
-}
-
-void e_mail_exception_set(CORBA_Environment *ev, Evolution_Mail_ErrorType id, const char *desc)
-{
- Evolution_Mail_MailException *x;
-
- x = Evolution_Mail_MailException__alloc();
- x->id = id;
- x->desc = CORBA_string_dup(desc);
- CORBA_exception_set(ev, CORBA_USER_EXCEPTION, ex_Evolution_Mail_MailException, x);
-}
-
-void e_mail_exception_xfer_camel(CORBA_Environment *ev, CamelException *ex)
-{
- e_mail_exception_set(ev, Evolution_Mail_CAMEL_ERROR, ex && ex->desc ? ex->desc:"");
- camel_exception_clear(ex);
-}
diff --git a/plugins/mail-remote/e-corba-utils.h b/plugins/mail-remote/e-corba-utils.h
deleted file mode 100644
index 43fef0c474..0000000000
--- a/plugins/mail-remote/e-corba-utils.h
+++ /dev/null
@@ -1,44 +0,0 @@
-
-#ifndef _E_CORBA_UTILS_H
-#define _E_CORBA_UTILS_H
-
-#include "Evolution-DataServer-Mail.h"
-
-/* Debug, warning debug, error debug, global for whole plugin to make it easier to enable/disable */
-#define d(x)
-#define w(x)
-#define e(x)
-
-struct _EvolutionMailStore;
-struct _EvolutionMailFolder;
-struct _CamelMessageInfo;
-struct _CamelStream;
-struct _CamelMimeMessage;
-struct _CamelException;
-
-void e_mail_property_set_string(Evolution_Mail_Property *prop, const char *name, const char *val);
-void e_mail_property_set_null(Evolution_Mail_Property *prop, const char *name);
-
-void e_mail_storeinfo_set_store(Evolution_Mail_StoreInfo *si, struct _EvolutionMailStore *store);
-void e_mail_folderinfo_set_folder(Evolution_Mail_FolderInfo *fi, struct _EvolutionMailFolder *emf);
-
-void e_mail_messageinfo_set_message(Evolution_Mail_MessageInfo *mi, struct _CamelMessageInfo *info);
-struct _CamelMessageInfo *e_mail_messageinfoset_to_info(const Evolution_Mail_MessageInfoSet *mi);
-
-struct _CamelMimeMessage *e_messagestream_to_message(const Evolution_Mail_MessageStream in, CORBA_Environment *ev);
-Evolution_Mail_MessageStream e_messagestream_from_message(struct _CamelMimeMessage *msg, CORBA_Environment *ev);
-
-struct _EDList;
-
-typedef void (*EMailListenerChanged)(CORBA_Object, CORBA_Object, void *changes, CORBA_Environment *);
-
-void e_mail_listener_add(struct _EDList *list, CORBA_Object listener);
-gboolean e_mail_listener_remove(struct _EDList *list, CORBA_Object listener);
-gboolean e_mail_listener_emit(struct _EDList *list, EMailListenerChanged emit, CORBA_Object source, void *changes);
-void e_mail_listener_free(struct _EDList *list);
-
-/* raise an exception */
-void e_mail_exception_set(CORBA_Environment *ev, Evolution_Mail_ErrorType id, const char *desc);
-void e_mail_exception_xfer_camel(CORBA_Environment *ev, struct _CamelException *ex);
-
-#endif /* !_E_CORBA_UTILS_H */
diff --git a/plugins/mail-remote/em-message-stream.c b/plugins/mail-remote/em-message-stream.c
deleted file mode 100644
index 4506cde6bb..0000000000
--- a/plugins/mail-remote/em-message-stream.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * Authors: Michael Zucchi <notzed@novel.com>
- *
- * Copyright 2005 Novell, Inc. (www.novell.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <stdio.h>
-#include <errno.h>
-#include <camel/camel-stream.h>
-#include "em-message-stream.h"
-
-#include "e-corba-utils.h"
-
-#define EMSS_CLASS(x) ((EMMessageStreamClass *)(((CamelObject *)(x))->klass))
-
-static CamelStreamClass *parent_class = NULL;
-
-static ssize_t
-emms_read(CamelStream *stream, char *buffer, size_t n)
-{
- EMMessageStream *emms = (EMMessageStream *)stream;
- ssize_t len;
- Evolution_Mail_Buffer *buf;
- CORBA_Environment ev = { 0 };
-
- /* To avoid all of the rount-trip overhead, this could always fire off
- one request in advance, to pipeline the data. Using another thread. */
-
- if (emms->source == CORBA_OBJECT_NIL) {
- errno = EBADF;
- return -1;
- }
-
- buf = Evolution_Mail_MessageStream_next(emms->source, n, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- CORBA_exception_free(&ev);
- Evolution_Mail_MessageStream_dispose(emms->source, &ev);
- emms->source = CORBA_OBJECT_NIL;
- stream->eos = TRUE;
- errno = EBADF;
- return -1;
- }
-
- if (buf->_length == 0)
- stream->eos = TRUE;
-
- len = buf->_length;
- memcpy(buffer, buf->_buffer, buf->_length);
- CORBA_free(buf);
-
- return len;
-}
-
-static void
-em_message_stream_init (CamelObject *object)
-{
- /*EMMessageStream *emss = (EMMessageStream *)object;*/
-}
-
-static void
-em_message_stream_finalize (CamelObject *object)
-{
- EMMessageStream *emms = (EMMessageStream *)object;
-
- d(printf("EMMessageStream.finalise()\n"));
-
- if (emms->source) {
- CORBA_Environment ev = { 0 };
-
- Evolution_Mail_MessageStream_dispose(emms->source, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- CORBA_exception_free(&ev);
-
- CORBA_Object_release(emms->source, &ev);
- if (ev._major != CORBA_NO_EXCEPTION)
- CORBA_exception_free(&ev);
- }
-}
-
-static void
-em_message_stream_class_init (EMMessageStreamClass *klass)
-{
- CamelStreamClass *stream_class = CAMEL_STREAM_CLASS (klass);
-
- parent_class = (CamelStreamClass *) CAMEL_STREAM_TYPE;
-
- stream_class->read = emms_read;
-}
-
-CamelType
-em_message_stream_get_type (void)
-{
- static CamelType type = CAMEL_INVALID_TYPE;
-
- if (type == CAMEL_INVALID_TYPE) {
- type = camel_type_register (CAMEL_STREAM_TYPE,
- "EMMessageStream",
- sizeof (EMMessageStream),
- sizeof (EMMessageStreamClass),
- (CamelObjectClassInitFunc) em_message_stream_class_init,
- NULL,
- (CamelObjectInitFunc) em_message_stream_init,
- (CamelObjectFinalizeFunc) em_message_stream_finalize);
- }
-
- return type;
-}
-
-CamelStream *
-em_message_stream_new(const Evolution_Mail_MessageStream source)
-{
- EMMessageStream *ems = (EMMessageStream *)camel_object_new(em_message_stream_get_type());
- CORBA_Environment ev = { 0 };
-
- ems->source = CORBA_Object_duplicate(source, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- CORBA_exception_free(&ev);
- camel_object_unref(ems);
- ems = NULL;
- }
-
- return (CamelStream *)ems;
-}
diff --git a/plugins/mail-remote/em-message-stream.h b/plugins/mail-remote/em-message-stream.h
deleted file mode 100644
index da3f2367ba..0000000000
--- a/plugins/mail-remote/em-message-stream.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
- *
- * Authors: Michael Zucchi <notzed@ximian.com>
- *
- * Copyright 2003 Ximian, Inc. (www.ximian.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef EM_MESSAGE_STREAM_H
-#define EM_MESSAGE_STREAM_H
-
-#ifdef __cplusplus
-extern "C" {
-#pragma }
-#endif /* __cplusplus */
-
-#define EM_MESSAGE_STREAM_TYPE (em_message_stream_get_type ())
-#define EM_MESSAGE_STREAM(obj) (CAMEL_CHECK_CAST((obj), EM_MESSAGE_STREAM_TYPE, EMMessageStream))
-#define EM_MESSAGE_STREAM_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), EM_MESSAGE_STREAM_TYPE, EMMessageStreamClass))
-#define EM_IS_MESSAGE_STREAM(o) (CAMEL_CHECK_TYPE((o), EM_MESSAGE_STREAM_TYPE))
-
-#include <camel/camel-stream.h>
-#include "Evolution-DataServer-Mail.h"
-
-typedef struct _EMMessageStream {
- CamelStream parent_stream;
-
- Evolution_Mail_MessageStream source;
-} EMMessageStream;
-
-typedef struct {
- CamelStreamClass parent_class;
-} EMMessageStreamClass;
-
-CamelType em_message_stream_get_type (void);
-
-CamelStream *em_message_stream_new(const Evolution_Mail_MessageStream source);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* EM_MESSAGE_STREAM_H */
diff --git a/plugins/mail-remote/evolution-mail-folder.c b/plugins/mail-remote/evolution-mail-folder.c
deleted file mode 100644
index 55adac81eb..0000000000
--- a/plugins/mail-remote/evolution-mail-folder.c
+++ /dev/null
@@ -1,417 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Authors: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-shlib-factory.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-arg.h>
-#include "evolution-mail-folder.h"
-#include "evolution-mail-store.h"
-#include "evolution-mail-messageiterator.h"
-#include "evolution-mail-session.h"
-
-#include <camel/camel-store.h>
-#include <camel/camel-folder.h>
-#include <libedataserver/e-msgport.h>
-
-#include "e-corba-utils.h"
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_folder_get_type()))
-
-struct _EvolutionMailFolderPrivate {
- CamelFolder *folder;
-
- guint32 folder_changed;
-
- EDList listeners;
-};
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(object);
-
- if (p->folder) {
- camel_object_remove_event(p->folder, p->folder_changed);
- camel_object_unref(p->folder);
- p->folder = NULL;
- }
-
- e_mail_listener_free(&p->listeners);
-
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- EvolutionMailFolder *emf = (EvolutionMailFolder *)object;
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(object);
-
- p = p;
-
- g_warning("EvolutionMailFolder is finalised!\n");
-
- g_free(emf->full_name);
- g_free(emf->name);
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.Folder */
-
-static CORBA_boolean
-impl_getProperties(PortableServer_Servant _servant,
- const Evolution_Mail_PropertyNames* names,
- Evolution_Mail_Properties **propsp,
- CORBA_Environment * ev)
-{
- EvolutionMailFolder *emf = (EvolutionMailFolder *)bonobo_object_from_servant(_servant);
- int i;
- Evolution_Mail_Properties *props;
- CORBA_boolean ok = CORBA_TRUE;
-
- *propsp = props = Evolution_Mail_Properties__alloc();
- props->_length = names->_length;
- props->_maximum = props->_length;
- props->_buffer = Evolution_Mail_Properties_allocbuf(props->_maximum);
- CORBA_sequence_set_release(props, CORBA_TRUE);
-
- for (i=0;i<names->_length;i++) {
- const CORBA_char *name = names->_buffer[i];
- Evolution_Mail_Property *prop = &props->_buffer[i];
-
- prop->value._release = CORBA_TRUE;
-
- if (!strcmp(name, "name")) {
- prop->value._type = TC_CORBA_string;
- prop->value._value = CORBA_string_dup(emf->name);
- } else if (!strcmp(name, "full_name")) {
- prop->value._type = TC_CORBA_string;
- prop->value._value = CORBA_string_dup(emf->full_name);
- } else {
- prop->value._type = TC_null;
- ok = CORBA_FALSE;
- }
-
- prop->name = CORBA_string_dup(name);
- }
-
- return ok;
-}
-
-static Evolution_Mail_MessageIterator
-impl_getMessages(PortableServer_Servant _servant, const CORBA_char * pattern, CORBA_Environment * ev)
-{
- EvolutionMailFolder *emf = (EvolutionMailFolder *)bonobo_object_from_servant(_servant);
- struct _CamelFolder *folder;
- EvolutionMailMessageIterator *emi;
- Evolution_Mail_MessageIterator iter;
-
- folder = evolution_mail_folder_get_folder(emf, ev);
- if (folder == NULL)
- return CORBA_OBJECT_NIL;
-
- emi = evolution_mail_messageiterator_new(folder, pattern);
- camel_object_unref(folder);
-
- /* NB: How do we destroy the object once we're done? */
-
- iter = CORBA_Object_duplicate(bonobo_object_corba_objref((BonoboObject *)emi), NULL);
-
- return iter;
-}
-
-static void
-impl_changeMessages(PortableServer_Servant _servant, const Evolution_Mail_MessageInfoSets *infos, CORBA_Environment * ev)
-{
- EvolutionMailFolder *emf = (EvolutionMailFolder *)bonobo_object_from_servant(_servant);
- struct _CamelFolder *folder;
- int i, j;
-
- folder = evolution_mail_folder_get_folder(emf, ev);
- if (folder == NULL)
- return;
-
- camel_folder_freeze(folder);
- for (i=0;i<infos->_length;i++) {
- CamelMessageInfo *mi;
- Evolution_Mail_MessageInfoSet *mis = &infos->_buffer[i];
-
- mi = camel_folder_get_message_info(folder, mis->uid);
- if (mi == NULL)
- continue;
-
- if (mis->flagMask)
- camel_message_info_set_flags(mi, mis->flagMask, mis->flagSet);
-
- for (j=0;j<mis->userFlagSet._length;j++)
- camel_message_info_set_user_flag(mi, mis->userFlagSet._buffer[j], TRUE);
- for (j=0;j<mis->userFlagUnset._length;j++)
- camel_message_info_set_user_flag(mi, mis->userFlagUnset._buffer[j], FALSE);
- for (j=0;j<mis->userTags._length;j++)
- camel_message_info_set_user_tag(mi, mis->userTags._buffer[j].name, mis->userTags._buffer[j].value[0]?mis->userTags._buffer[j].value:NULL);
-
- camel_message_info_free(mi);
- }
- camel_folder_thaw(folder);
-
- camel_object_unref(folder);
-}
-
-static Evolution_Mail_MessageStream
-impl_getMessage(PortableServer_Servant _servant, const CORBA_char * uid, CORBA_Environment *ev)
-{
- EvolutionMailFolder *emf = (EvolutionMailFolder *)bonobo_object_from_servant(_servant);
- struct _CamelFolder *folder;
- CamelMimeMessage *msg;
- Evolution_Mail_MessageStream out;
- CamelException ex = { 0 };
-
- folder = evolution_mail_folder_get_folder(emf, ev);
- if (folder == NULL)
- return CORBA_OBJECT_NIL;
-
- msg = camel_folder_get_message(folder, uid, &ex);
- if (msg == NULL) {
- e_mail_exception_xfer_camel(ev, &ex);
- out = CORBA_OBJECT_NIL;
- } else {
- out = e_messagestream_from_message(msg, ev);
- camel_object_unref(msg);
- }
- camel_object_unref(folder);
-
- return out;
-}
-
-static void
-impl_appendMessage(PortableServer_Servant _servant, const Evolution_Mail_MessageInfoSet*mi, const Evolution_Mail_MessageStream message, CORBA_Environment *ev)
-{
- EvolutionMailFolder *emf = (EvolutionMailFolder *)bonobo_object_from_servant(_servant);
- struct _CamelFolder *folder;
- CamelMimeMessage *msg = NULL;
- CamelMessageInfo *info;
- CamelException ex = { 0 };
- CORBA_Environment wev = { 0 };
-
- folder = evolution_mail_folder_get_folder(emf, ev);
- if (folder == NULL)
- goto fail3;
-
- msg = e_messagestream_to_message(message, ev);
- if (msg == NULL)
- goto fail2;
-
- info = e_mail_messageinfoset_to_info(mi);
- camel_folder_append_message(folder, msg, info, NULL, &ex);
- camel_message_info_free(info);
-
- if (camel_exception_is_set(&ex))
- e_mail_exception_xfer_camel(ev, &ex);
-
- camel_object_unref(msg);
-fail2:
- camel_object_unref(folder);
-fail3:
- Evolution_Mail_MessageStream_dispose(message, &wev);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_folder_class_init (EvolutionMailFolderClass *klass)
-{
- POA_Evolution_Mail_Folder__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->getProperties = impl_getProperties;
- epv->getMessages = impl_getMessages;
- epv->changeMessages = impl_changeMessages;
- epv->getMessage = impl_getMessage;
- epv->appendMessage = impl_appendMessage;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailFolderPrivate));
-}
-
-static void
-evolution_mail_folder_init(EvolutionMailFolder *emf, EvolutionMailFolderClass *klass)
-{
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(emf);
-
- bonobo_object_set_immortal((BonoboObject *)emf, TRUE);
- e_dlist_init(&p->listeners);
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailFolder, Evolution_Mail_Folder, PARENT_TYPE, evolution_mail_folder)
-
-EvolutionMailFolder *
-evolution_mail_folder_new(EvolutionMailStore *ems, const char *name, const char *full_name)
-{
- EvolutionMailFolder *emf = g_object_new (EVOLUTION_MAIL_TYPE_FOLDER, NULL);
-
- emf->name = g_strdup(name);
- emf->full_name = g_strdup(full_name);
-
- emf->store = ems;
-
- return emf;
-}
-
-static void
-emf_set_change(Evolution_Mail_FolderChange *change, Evolution_Mail_ChangeType how, CamelFolder *folder, GPtrArray *uids)
-{
- int total = 0, i;
-
- change->type = how;
- change->messages._maximum = uids->len;
- change->messages._buffer = Evolution_Mail_MessageInfos_allocbuf(uids->len);
-
- for (i=0;i<uids->len;i++) {
- CamelMessageInfo *info = camel_folder_get_message_info(folder, uids->pdata[i]);
-
- if (info) {
- e_mail_messageinfo_set_message(&change->messages._buffer[total], info);
- camel_message_info_free(info);
- total++;
- } else {
- w(printf("couldn't get info for changed uid '%s'?\n", (char *)uids->pdata[i]));
- }
- }
-
- change->messages._length = total;
-}
-
-static void
-emf_folder_changed(CamelObject *o, void *d, void *data)
-{
- EvolutionMailFolder *emf = data;
- CamelFolder *folder = (CamelFolder *)o;
- CamelFolderChangeInfo *ci = d;
- int count = 0;
- Evolution_Mail_FolderChanges *changes;
-
- changes = Evolution_Mail_FolderChanges__alloc();
- changes->_maximum = 3;
- changes->_buffer = Evolution_Mail_FolderChanges_allocbuf(3);
- CORBA_sequence_set_release(changes, TRUE);
-
- /* could be a race if a new listener is added */
- if (ci->uid_added->len) {
- emf_set_change(&changes->_buffer[count], Evolution_Mail_ADDED, folder, ci->uid_added);
- count++;
- }
- if (ci->uid_removed->len) {
- emf_set_change(&changes->_buffer[count], Evolution_Mail_REMOVED, folder, ci->uid_removed);
- count++;
- }
- if (ci->uid_changed->len) {
- emf_set_change(&changes->_buffer[count], Evolution_Mail_CHANGED, folder, ci->uid_changed);
- count++;
- }
-
- changes->_length = count;
-
- evolution_mail_folder_changed(emf, changes);
- CORBA_free(changes);
-}
-
-struct _CamelFolder *evolution_mail_folder_get_folder(EvolutionMailFolder *emf, CORBA_Environment *ev)
-{
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(emf);
- CamelStore *store;
- CamelException ex;
-
- if (p->folder == NULL) {
- store = evolution_mail_store_get_store(emf->store, ev);
- if (store == NULL)
- return NULL;
-
- camel_exception_init(&ex);
- p->folder = camel_store_get_folder(store, emf->full_name, 0, &ex);
- if (p->folder) {
- p->folder_changed = camel_object_hook_event(p->folder, "folder_changed", emf_folder_changed, emf);
- } else {
- e_mail_exception_xfer_camel(ev, &ex);
- }
- camel_object_unref(store);
- }
-
- if (p->folder)
- camel_object_ref(p->folder);
-
- return p->folder;
-}
-
-int evolution_mail_folder_close_folder(EvolutionMailFolder *emf)
-{
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(emf);
-
- /* FIXME: locking */
- if (p->folder) {
- if (!e_dlist_empty(&p->listeners))
- return -1;
-
- camel_object_remove_event(p->folder, p->folder_changed);
- camel_object_unref(p->folder);
- p->folder = NULL;
- }
-
- return 0;
-}
-
-void evolution_mail_folder_addlistener(EvolutionMailFolder *emf, Evolution_Mail_FolderListener listener)
-{
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(emf);
-
- /* FIXME: locking */
- e_mail_listener_add(&p->listeners, listener);
-}
-
-void
-evolution_mail_folder_changed(EvolutionMailFolder *emf, Evolution_Mail_FolderChanges *changes)
-{
- struct _EvolutionMailFolderPrivate *p = _PRIVATE(emf);
-
- if (!e_mail_listener_emit(&p->listeners, (EMailListenerChanged)Evolution_Mail_FolderListener_changed,
- bonobo_object_corba_objref((BonoboObject *)emf), changes)) {
- d(printf("No more listeners for folder, could dispose store object now\n"));
- evolution_mail_folder_close_folder(emf);
- }
-}
diff --git a/plugins/mail-remote/evolution-mail-folder.h b/plugins/mail-remote/evolution-mail-folder.h
deleted file mode 100644
index 1848d0f0d0..0000000000
--- a/plugins/mail-remote/evolution-mail-folder.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifndef _EVOLUTION_MAIL_FOLDER_H_
-#define _EVOLUTION_MAIL_FOLDER_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-#define EVOLUTION_MAIL_TYPE_FOLDER (evolution_mail_folder_get_type ())
-#define EVOLUTION_MAIL_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EVOLUTION_MAIL_TYPE_FOLDER, EvolutionMailFolder))
-#define EVOLUTION_MAIL_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EVOLUTION_MAIL_TYPE_FOLDER, EvolutionMailFolderClass))
-#define EVOLUTION_MAIL_IS_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EVOLUTION_MAIL_TYPE_FOLDER))
-#define EVOLUTION_MAIL_IS_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EVOLUTION_MAIL_TYPE_FOLDER))
-
-struct _EvolutionMailStore;
-
-typedef struct _EvolutionMailFolder EvolutionMailFolder;
-typedef struct _EvolutionMailFolderClass EvolutionMailFolderClass;
-
-struct _EvolutionMailFolder {
- BonoboObject parent;
-
- struct _EvolutionMailStore *store;
-
- char *full_name;
- char *name;
-};
-
-struct _EvolutionMailFolderClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_Folder__epv epv;
-};
-
-GType evolution_mail_folder_get_type(void);
-
-EvolutionMailFolder *evolution_mail_folder_new(struct _EvolutionMailStore *ems, const char *name, const char *full_name);
-
-void evolution_mail_folder_addlistener(EvolutionMailFolder *emf, Evolution_Mail_FolderListener listener);
-void evolution_mail_folder_changed(EvolutionMailFolder *emf, Evolution_Mail_FolderChanges *changes);
-
-struct _CamelFolder *evolution_mail_folder_get_folder(EvolutionMailFolder *emf, CORBA_Environment *ev);
-int evolution_mail_folder_close_folder(EvolutionMailFolder *emf);
-
-#endif /* _EVOLUTION_MAIL_FOLDER_H_ */
diff --git a/plugins/mail-remote/evolution-mail-folderlistener.c b/plugins/mail-remote/evolution-mail-folderlistener.c
deleted file mode 100644
index e9fa86dd4f..0000000000
--- a/plugins/mail-remote/evolution-mail-folderlistener.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include "evolution-mail-folderlistener.h"
-
-#include "evolution-mail-marshal.h"
-#include "e-corba-utils.h"
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_folderlistener_get_type()))
-
-struct _EvolutionMailFolderListenerPrivate {
- int dummy;
-};
-
-enum {
- EML_CHANGED,
- EML_LAST_SIGNAL
-};
-
-static guint eml_signals[EML_LAST_SIGNAL];
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- struct _EvolutionMailFolderListenerPrivate *p = _PRIVATE(object);
-
- p = p;
-
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- d(printf("EvolutionMailFolderListener finalised!\n"));
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.Listener */
-static const char *change_type_name(int type)
-{
- switch (type) {
- case Evolution_Mail_ADDED:
- return "added";
- break;
- case Evolution_Mail_CHANGED:
- return "changed";
- break;
- case Evolution_Mail_REMOVED:
- return "removed";
- break;
- default:
- return "";
- }
-}
-
-static void
-impl_changed(PortableServer_Servant _servant,
- const Evolution_Mail_Folder folder,
- const Evolution_Mail_FolderChanges * changes,
- CORBA_Environment * ev)
-{
- EvolutionMailFolderListener *eml = (EvolutionMailFolderListener *)bonobo_object_from_servant(_servant);
- int i, j;
-
- d(printf("folder changed!\n"));
- for (i=0;i<changes->_length;i++) {
- d(printf(" %d %s", changes->_buffer[i].messages._length, change_type_name(changes->_buffer[i].type)));
- for (j=0;j<changes->_buffer[i].messages._length;j++) {
- d(printf(" %s %s\n", changes->_buffer[i].messages._buffer[j].uid, changes->_buffer[i].messages._buffer[j].subject));
- }
- }
-
- g_signal_emit(eml, eml_signals[EML_CHANGED], 0, folder, changes);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_folderlistener_class_init (EvolutionMailFolderListenerClass *klass)
-{
- POA_Evolution_Mail_FolderListener__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->changed = impl_changed;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailFolderListenerPrivate));
-
- eml_signals[EML_CHANGED] =
- g_signal_new("changed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EvolutionMailFolderListenerClass, changed),
- NULL, NULL,
- evolution_mail_marshal_VOID__POINTER_POINTER,
- G_TYPE_NONE, 2,
- G_TYPE_POINTER, G_TYPE_POINTER);
-}
-
-static void
-evolution_mail_folderlistener_init (EvolutionMailFolderListener *ems, EvolutionMailFolderListenerClass *klass)
-{
- struct _EvolutionMailFolderListenerPrivate *p = _PRIVATE(ems);
-
- p = p;
-}
-
-EvolutionMailFolderListener *
-evolution_mail_folderlistener_new(void)
-{
- EvolutionMailFolderListener *eml;
-
- eml = g_object_new(evolution_mail_folderlistener_get_type(), NULL);
-
- return eml;
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailFolderListener, Evolution_Mail_FolderListener, PARENT_TYPE, evolution_mail_folderlistener)
diff --git a/plugins/mail-remote/evolution-mail-folderlistener.h b/plugins/mail-remote/evolution-mail-folderlistener.h
deleted file mode 100644
index 783c11a294..0000000000
--- a/plugins/mail-remote/evolution-mail-folderlistener.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef _EVOLUTION_MAIL_FOLDERLISTENER_H_
-#define _EVOLUTION_MAIL_FOLDERLISTENER_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-#define EVOLUTION_MAIL_TYPE_FOLDERLISTENER (evolution_mail_folderlistener_get_type ())
-#define EVOLUTION_MAIL_FOLDERLISTENER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EVOLUTION_MAIL_TYPE_LISTENER, EvolutionMailFolderListener))
-#define EVOLUTION_MAIL_FOLDERLISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EVOLUTION_MAIL_TYPE_LISTENER, EvolutionMailFolderListenerClass))
-#define EVOLUTION_MAIL_IS_FOLDERLISTENER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EVOLUTION_MAIL_TYPE_LISTENER))
-#define EVOLUTION_MAIL_IS_FOLDERLISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EVOLUTION_MAIL_TYPE_LISTENER))
-
-typedef struct _EvolutionMailFolderListener EvolutionMailFolderListener;
-typedef struct _EvolutionMailFolderListenerClass EvolutionMailFolderListenerClass;
-
-struct _EvolutionMailFolderListener {
- BonoboObject parent;
-};
-
-struct _EvolutionMailFolderListenerClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_FolderListener__epv epv;
-
- void (*changed)(EvolutionMailFolderListener *, const Evolution_Mail_Folder folder, const Evolution_Mail_FolderChanges *);
-};
-
-GType evolution_mail_folderlistener_get_type(void);
-
-EvolutionMailFolderListener *evolution_mail_folderlistener_new(void);
-
-#endif /* _EVOLUTION_MAIL_FOLDERLISTENER_H_ */
diff --git a/plugins/mail-remote/evolution-mail-marshal.list b/plugins/mail-remote/evolution-mail-marshal.list
deleted file mode 100644
index cd4885308e..0000000000
--- a/plugins/mail-remote/evolution-mail-marshal.list
+++ /dev/null
@@ -1 +0,0 @@
-VOID:POINTER,POINTER
diff --git a/plugins/mail-remote/evolution-mail-messageiterator.c b/plugins/mail-remote/evolution-mail-messageiterator.c
deleted file mode 100644
index bb254100d1..0000000000
--- a/plugins/mail-remote/evolution-mail-messageiterator.c
+++ /dev/null
@@ -1,171 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Authors: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-arg.h>
-#include "evolution-mail-messageiterator.h"
-
-#include <camel/camel-folder.h>
-
-#include "e-corba-utils.h"
-
-#define d(x)
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_messageiterator_get_type()))
-
-struct _EvolutionMailMessageIteratorPrivate {
- int index;
- CamelFolder *folder;
- char *expr;
- GPtrArray *search;
-};
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- struct _EvolutionMailMessageIteratorPrivate *p = _PRIVATE(object);
-
- d(printf("EvolutionMailMessageIterator: finalise\n"));
-
- if (*p->expr)
- camel_folder_search_free(p->folder, p->search);
- else
- camel_folder_free_uids(p->folder, p->search);
-
- g_free(p->expr);
- camel_object_unref(p->folder);
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.MessageIterator */
-static Evolution_Mail_MessageInfos *
-impl_next(PortableServer_Servant _servant, const CORBA_long limit, CORBA_Environment * ev)
-{
- EvolutionMailMessageIterator *emf = (EvolutionMailMessageIterator *)bonobo_object_from_servant(_servant);
- int i, j;
- Evolution_Mail_MessageInfos *msgs;
- struct _EvolutionMailMessageIteratorPrivate *p = _PRIVATE(emf);
- CamelException ex = { 0 };
-
- if (p->search == NULL) {
- if (*p->expr)
- p->search = camel_folder_search_by_expression(p->folder, p->expr, &ex);
- else
- p->search = camel_folder_get_uids(p->folder);
-
- if (camel_exception_is_set(&ex)) {
- camel_exception_clear(&ex);
- return NULL;
- }
-
- p->index = 0;
- }
-
- msgs = Evolution_Mail_MessageInfos__alloc();
- msgs->_maximum = MIN(limit, p->search->len - p->index);
- msgs->_buffer = Evolution_Mail_MessageInfos_allocbuf(msgs->_maximum);
- CORBA_sequence_set_release(msgs, CORBA_TRUE);
-
- j=0;
- for (i=p->index;i<p->search->len && j<msgs->_maximum;i++) {
- CamelMessageInfo *info = camel_folder_get_message_info(p->folder, p->search->pdata[i]);
-
- if (info) {
- e_mail_messageinfo_set_message(&msgs->_buffer[j], info);
- j++;
- camel_message_info_free(info);
- }
- }
-
- p->index = i;
- msgs->_length = j;
-
- return msgs;
-}
-
-static void
-impl_mi_dispose(PortableServer_Servant _servant, CORBA_Environment *ev)
-{
- EvolutionMailMessageIterator *emmi = (EvolutionMailMessageIterator *)bonobo_object_from_servant(_servant);
-
- bonobo_object_set_immortal((BonoboObject *)emmi, FALSE);
- bonobo_object_unref((BonoboObject *)emmi);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_messageiterator_class_init (EvolutionMailMessageIteratorClass *klass)
-{
- POA_Evolution_Mail_MessageIterator__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->next = impl_next;
- epv->dispose = impl_mi_dispose;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailMessageIteratorPrivate));
-}
-
-static void
-evolution_mail_messageiterator_init(EvolutionMailMessageIterator *emi, EvolutionMailMessageIteratorClass *klass)
-{
- bonobo_object_set_immortal((BonoboObject *)emi, TRUE);
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailMessageIterator, Evolution_Mail_MessageIterator, PARENT_TYPE, evolution_mail_messageiterator)
-
-EvolutionMailMessageIterator *
-evolution_mail_messageiterator_new(CamelFolder *folder, const char *expr)
-{
- EvolutionMailMessageIterator *emf = g_object_new(evolution_mail_messageiterator_get_type(), NULL);
- struct _EvolutionMailMessageIteratorPrivate *p = _PRIVATE(emf);
-
- p->folder = folder;
- camel_object_ref(folder);
- p->expr = g_strdup(expr);
-
- return emf;
-}
diff --git a/plugins/mail-remote/evolution-mail-messageiterator.h b/plugins/mail-remote/evolution-mail-messageiterator.h
deleted file mode 100644
index dc1fd6f83d..0000000000
--- a/plugins/mail-remote/evolution-mail-messageiterator.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifndef _EVOLUTION_MAIL_MESSAGEITERATOR_H_
-#define _EVOLUTION_MAIL_MESSAGEITERATOR_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-struct _CamelFolder;
-
-typedef struct _EvolutionMailMessageIterator EvolutionMailMessageIterator;
-typedef struct _EvolutionMailMessageIteratorClass EvolutionMailMessageIteratorClass;
-
-struct _EvolutionMailMessageIterator {
- BonoboObject parent;
-};
-
-struct _EvolutionMailMessageIteratorClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_MessageIterator__epv epv;
-};
-
-GType evolution_mail_messageiterator_get_type(void);
-
-EvolutionMailMessageIterator *evolution_mail_messageiterator_new(struct _CamelFolder *folder, const char *expr);
-
-#endif /* _EVOLUTION_MAIL_MESSAGEITERATOR_H_ */
diff --git a/plugins/mail-remote/evolution-mail-messagestream.c b/plugins/mail-remote/evolution-mail-messagestream.c
deleted file mode 100644
index 7a7ce9b192..0000000000
--- a/plugins/mail-remote/evolution-mail-messagestream.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Authors: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include "evolution-mail-messagestream.h"
-#include <camel/camel-stream-mem.h>
-
-#include "e-corba-utils.h"
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- EvolutionMailMessageStream *emms = (EvolutionMailMessageStream *)object;
-
- d(printf("EvolutionMailMessageStream: finalise\n"));
-
- if (emms->source)
- camel_object_unref(emms->source);
- g_free(emms->buffer);
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.MessageStream */
-
-static Evolution_Mail_Buffer *
-impl_next(PortableServer_Servant _servant, const CORBA_long limit, CORBA_Environment * ev)
-{
- EvolutionMailMessageStream *emf = (EvolutionMailMessageStream *)bonobo_object_from_servant(_servant);
- Evolution_Mail_Buffer *buf;
- ssize_t len;
-
- buf = Evolution_Mail_Buffer__alloc();
- buf->_maximum = limit;
- buf->_buffer = Evolution_Mail_Buffer_allocbuf(buf->_maximum);
-
- if (emf->source) {
- len = camel_stream_read(emf->source, buf->_buffer, buf->_maximum);
- if (len == -1) {
- Evolution_Mail_MailException *x;
-
- x = Evolution_Mail_MailException__alloc();
- x->id = Evolution_Mail_SYSTEM_ERROR;
- x->desc = CORBA_string_dup(g_strerror(errno));
- CORBA_exception_set(ev, CORBA_USER_EXCEPTION, ex_Evolution_Mail_MailException, x);
- CORBA_free(buf);
- buf = CORBA_OBJECT_NIL;
- } else {
- buf->_length = len;
- }
- } else {
- len = MIN(limit, (emf->len - emf->pos));
- memcpy(buf->_buffer, emf->buffer + emf->pos, len);
- emf->pos += len;
- buf->_length = len;
- }
-
- return buf;
-}
-
-static void
-impl_mi_dispose(PortableServer_Servant _servant, CORBA_Environment *ev)
-{
- EvolutionMailMessageStream *emmi = (EvolutionMailMessageStream *)bonobo_object_from_servant(_servant);
-
- bonobo_object_set_immortal((BonoboObject *)emmi, FALSE);
- bonobo_object_unref((BonoboObject *)emmi);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_messagestream_class_init (EvolutionMailMessageStreamClass *klass)
-{
- POA_Evolution_Mail_MessageStream__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->next = impl_next;
- epv->dispose = impl_mi_dispose;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-}
-
-static void
-evolution_mail_messagestream_init(EvolutionMailMessageStream *emi, EvolutionMailMessageStreamClass *klass)
-{
- bonobo_object_set_immortal((BonoboObject *)emi, TRUE);
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailMessageStream, Evolution_Mail_MessageStream, PARENT_TYPE, evolution_mail_messagestream)
-
-EvolutionMailMessageStream *
-evolution_mail_messagestream_new(CamelStream *source)
-{
- /* FIXME: use right poa, thread per object? */
- EvolutionMailMessageStream *emf = g_object_new(evolution_mail_messagestream_get_type(), NULL);
-
- emf->source = source;
- camel_object_ref(source);
-
- return emf;
-}
-
-EvolutionMailMessageStream *
-evolution_mail_messagestream_new_buffer(const char *buffer, size_t len)
-{
- /* FIXME: use right poa, thread per object? */
- EvolutionMailMessageStream *emf = g_object_new(evolution_mail_messagestream_get_type(), NULL);
-
- emf->buffer = g_malloc(len);
- memcpy(emf->buffer, buffer, len);
- emf->len = len;
- emf->pos = 0;
-
- return emf;
-}
-
-
diff --git a/plugins/mail-remote/evolution-mail-messagestream.h b/plugins/mail-remote/evolution-mail-messagestream.h
deleted file mode 100644
index 3db485e56a..0000000000
--- a/plugins/mail-remote/evolution-mail-messagestream.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifndef _EVOLUTION_MAIL_MESSAGESTREAM_H_
-#define _EVOLUTION_MAIL_MESSAGESTREAM_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-typedef struct _EvolutionMailMessageStream EvolutionMailMessageStream;
-typedef struct _EvolutionMailMessageStreamClass EvolutionMailMessageStreamClass;
-
-struct _EvolutionMailMessageStream {
- BonoboObject parent;
-
- /* only one or the other is set */
- struct _CamelStream *source;
-
- char *buffer;
- size_t len;
- size_t pos;
-};
-
-struct _EvolutionMailMessageStreamClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_MessageStream__epv epv;
-};
-
-GType evolution_mail_messagestream_get_type(void);
-
-EvolutionMailMessageStream *evolution_mail_messagestream_new(struct _CamelStream *source);
-EvolutionMailMessageStream *evolution_mail_messagestream_new_buffer(const char *buffer, size_t len);
-
-#endif /* _EVOLUTION_MAIL_MESSAGESTREAM_H_ */
diff --git a/plugins/mail-remote/evolution-mail-session.c b/plugins/mail-remote/evolution-mail-session.c
deleted file mode 100644
index cf9ad7b8f2..0000000000
--- a/plugins/mail-remote/evolution-mail-session.c
+++ /dev/null
@@ -1,354 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-shlib-factory.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include "evolution-mail-session.h"
-
-#include <libedataserver/e-account-list.h>
-
-#include "evolution-mail-store.h"
-#include "e-corba-utils.h"
-
-#include <camel/camel-session.h>
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_session_get_type()))
-
-struct _EvolutionMailSessionPrivate {
- EAccountList *accounts;
- GList *stores;
-
- /* FIXME: locking */
- EDList listeners;
-
- guint account_added;
- guint account_changed;
- guint account_removed;
-};
-
-static int
-is_storage(EAccount *ea)
-{
- const char *uri;
- int ok = FALSE;
-
- uri = e_account_get_string(ea, E_ACCOUNT_SOURCE_URL);
- if (uri && uri[0]) {
- CamelProvider *prov;
- CamelException ex = { 0 };
-
- prov = camel_provider_get(uri, &ex);
- camel_exception_clear(&ex);
- ok = prov && (prov->flags & CAMEL_PROVIDER_IS_STORAGE);
- }
-
- return ok;
-}
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(object);
-
- if (p->stores) {
- /* FIXME: free stores */
- }
-
- /* FIXME: Free accounts */
-
- /* FIXME: free listners */
-
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- g_warning("EvolutionMailStore is finalised!\n");
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.Session */
-
-static CORBA_boolean
-impl_getProperties(PortableServer_Servant _servant,
- const Evolution_Mail_PropertyNames* names,
- Evolution_Mail_Properties **props,
- CORBA_Environment * ev)
-{
- EvolutionMailSession *ems = (EvolutionMailSession *)bonobo_object_from_servant(_servant);
-
- ems = ems;
-
- return CORBA_TRUE;
-}
-
-static Evolution_Mail_StoreInfos *
-impl_getStores(PortableServer_Servant _servant,
- const CORBA_char * pattern,
- const Evolution_Mail_StoreListener listener,
- CORBA_Environment * ev)
-{
- EvolutionMailSession *ems = (EvolutionMailSession *)bonobo_object_from_servant(_servant);
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
- Evolution_Mail_StoreInfos *seq;
- int i, len;
- GList *l;
-
- seq = Evolution_Mail_StoreInfos__alloc();
-
- /* FIXME: pattern? */
-
- len = g_list_length(p->stores);
-
- seq->_length = len;
- seq->_maximum = len;
- seq->_buffer = Evolution_Mail_StoreInfos_allocbuf(seq->_length);
- CORBA_sequence_set_release(seq, TRUE);
-
- l = p->stores;
- for (i=0;l && i<len;i++) {
- EvolutionMailStore *store = l->data;
-
- evolution_mail_store_addlistener(store, listener);
-
- e_mail_storeinfo_set_store(&seq->_buffer[i], store);
- l = g_list_next(l);
- }
-
- return seq;
-}
-
-static void
-impl_addListener(PortableServer_Servant _servant,
- const Evolution_Mail_SessionListener listener,
- CORBA_Environment * ev)
-{
- EvolutionMailSession *ems = (EvolutionMailSession *)bonobo_object_from_servant(_servant);
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
-
- e_mail_listener_add(&p->listeners, listener);
-}
-
-static void
-impl_removeListener(PortableServer_Servant _servant,
- const Evolution_Mail_SessionListener listener,
- CORBA_Environment * ev)
-{
- EvolutionMailSession *ems = (EvolutionMailSession *)bonobo_object_from_servant(_servant);
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
-
- d(printf("Removing listener from session\n"));
-
- if (!e_mail_listener_remove(&p->listeners, listener)) {
- d(printf("no more listeners, could shut down session?\n"));
- }
-}
-
-/* Initialization */
-
-static void
-evolution_mail_session_class_init (EvolutionMailSessionClass *klass)
-{
- POA_Evolution_Mail_Session__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->getProperties = impl_getProperties;
- epv->getStores = impl_getStores;
-
- epv->addListener = impl_addListener;
- epv->removeListener = impl_removeListener;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailSessionPrivate));
-}
-
-static void
-ems_set_changes(Evolution_Mail_SessionChange *change, Evolution_Mail_ChangeType how, EvolutionMailStore *store)
-{
- change->type = how;
- change->stores._length = 1;
- change->stores._maximum = 1;
- change->stores._buffer = Evolution_Mail_StoreInfos_allocbuf(change->stores._maximum);
- CORBA_sequence_set_release(&change->stores, TRUE);
-
- e_mail_storeinfo_set_store(&change->stores._buffer[0], store);
-}
-
-static void
-ems_listener_session_event(EvolutionMailSession *ems, Evolution_Mail_ChangeType how, EvolutionMailStore *store)
-{
- Evolution_Mail_SessionChanges *changes;
-
- /* NB: we only ever create 1 changetype at the moment */
-
- changes = Evolution_Mail_SessionChanges__alloc();
- changes->_maximum = 1;
- changes->_length = 1;
- changes->_buffer = Evolution_Mail_SessionChanges_allocbuf(1);
- CORBA_sequence_set_release(changes, TRUE);
- ems_set_changes(&changes->_buffer[0], how, store);
-
- evolution_mail_session_changed(ems, changes);
-
- CORBA_free(changes);
-}
-
-static void
-ems_account_added(EAccountList *eal, EAccount *ea, EvolutionMailSession *ems)
-{
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
-
- if (ea->enabled && is_storage(ea)) {
- EvolutionMailStore *store;
-
- d(printf("Account added %s\n", ea->uid));
- store = evolution_mail_store_new(ems, ea);
- p->stores = g_list_append(p->stores, store);
- ems_listener_session_event(ems, Evolution_Mail_ADDED, store);
- }
-}
-
-static void
-ems_account_changed(EAccountList *eal, EAccount *ea, EvolutionMailSession *ems)
-{
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
- EvolutionMailStore *store = NULL;
- GList *l;
-
- for (l = p->stores;l;l=l->next) {
- if (((EvolutionMailStore *)l->data)->account == ea) {
- store = l->data;
- break;
- }
- }
-
- if (store) {
- /* account has been disabled? */
- if (!ea->enabled) {
- d(printf("Account changed, now disabled %s\n", ea->uid));
- p->stores = g_list_remove(p->stores, store);
- ems_listener_session_event(ems, Evolution_Mail_REMOVED, store);
- g_object_unref(store);
- } else {
- d(printf("Account changed, dont know how %s\n", ea->uid));
- ems_listener_session_event(ems, Evolution_Mail_CHANGED, store);
- }
- } else if (ea->enabled && is_storage(ea)) {
- d(printf("Account changed, now added %s\n", ea->uid));
- store = evolution_mail_store_new(ems, ea);
- p->stores = g_list_append(p->stores, store);
- ems_listener_session_event(ems, Evolution_Mail_ADDED, store);
- }
-}
-
-static void
-ems_account_removed(EAccountList *eal, EAccount *ea, EvolutionMailSession *ems)
-{
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
- GList *l;
-
- /* for accounts we dont have, we dont care */
-
- for (l = p->stores;l;l=l->next) {
- EvolutionMailStore *store = l->data;
-
- if (store->account == ea) {
- d(printf("Account removed %s\n", ea->uid));
- p->stores = g_list_remove(p->stores, store);
- ems_listener_session_event(ems, Evolution_Mail_REMOVED, store);
- g_object_unref(store);
- break;
- }
- }
-}
-
-static void
-evolution_mail_session_init (EvolutionMailSession *ems, EvolutionMailSessionClass *klass)
-{
- GConfClient *gconf = gconf_client_get_default();
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
- EIterator *iter;
-
- d(printf("EvolutionMailSession.init\n"));
-
- e_dlist_init(&p->listeners);
-
- /* local store first */
- p->stores = g_list_append(p->stores, evolution_mail_store_new(ems, NULL));
-
- p->accounts = e_account_list_new(gconf);
- iter = e_list_get_iterator((EList *)p->accounts);
- while (e_iterator_is_valid (iter)) {
- EAccount *ea;
-
- if ((ea = (EAccount *)e_iterator_get(iter))
- && ea->enabled
- && is_storage(ea)) {
- p->stores = g_list_append(p->stores, evolution_mail_store_new(ems, ea));
- }
-
- e_iterator_next(iter);
- }
- g_object_unref(iter);
-
- g_object_unref(gconf);
-
- p->account_added = g_signal_connect(p->accounts, "account_added", G_CALLBACK(ems_account_added), ems);
- p->account_changed = g_signal_connect(p->accounts, "account_changed", G_CALLBACK(ems_account_changed), ems);
- p->account_removed = g_signal_connect(p->accounts, "account_removed", G_CALLBACK(ems_account_removed), ems);
-
- ems->session = mail_component_peek_session(NULL);
-
- bonobo_object_set_immortal((BonoboObject *)ems, TRUE);
-}
-
-void
-evolution_mail_session_changed(EvolutionMailSession *ems, Evolution_Mail_SessionChanges *changes)
-{
- struct _EvolutionMailSessionPrivate *p = _PRIVATE(ems);
-
- if (!e_mail_listener_emit(&p->listeners, (EMailListenerChanged)Evolution_Mail_SessionListener_changed,
- bonobo_object_corba_objref((BonoboObject *)ems), changes)) {
- w(printf("No more listeners for store, could dispose session object now?\n"));
- }
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailSession, Evolution_Mail_Session, PARENT_TYPE, evolution_mail_session)
diff --git a/plugins/mail-remote/evolution-mail-session.h b/plugins/mail-remote/evolution-mail-session.h
deleted file mode 100644
index d2e31fe4fd..0000000000
--- a/plugins/mail-remote/evolution-mail-session.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef _EVOLUTION_MAIL_SESSION_H_
-#define _EVOLUTION_MAIL_SESSION_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-#define EVOLUTION_MAIL_TYPE_SESSION (evolution_mail_session_get_type ())
-#define EVOLUTION_MAIL_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EVOLUTION_MAIL_TYPE_SESSION, EvolutionMailSession))
-#define EVOLUTION_MAIL_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EVOLUTION_MAIL_TYPE_SESSION, EvolutionMailSessionClass))
-#define EVOLUTION_MAIL_IS_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EVOLUTION_MAIL_TYPE_SESSION))
-#define EVOLUTION_MAIL_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EVOLUTION_MAIL_TYPE_SESSION))
-
-typedef struct _EvolutionMailSession EvolutionMailSession;
-typedef struct _EvolutionMailSessionClass EvolutionMailSessionClass;
-
-struct _EvolutionMailSession {
- BonoboObject parent;
-
- struct _CamelSession *session;
-};
-
-struct _EvolutionMailSessionClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_Session__epv epv;
-};
-
-GType evolution_mail_session_get_type(void);
-
-void evolution_mail_session_changed(EvolutionMailSession *ems, Evolution_Mail_SessionChanges *changes);
-
-#endif /* _EVOLUTION_MAIL_SESSION_H_ */
diff --git a/plugins/mail-remote/evolution-mail-sessionlistener.c b/plugins/mail-remote/evolution-mail-sessionlistener.c
deleted file mode 100644
index 3c84092bf0..0000000000
--- a/plugins/mail-remote/evolution-mail-sessionlistener.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include "evolution-mail-sessionlistener.h"
-
-#include "evolution-mail-marshal.h"
-#include "e-corba-utils.h"
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_sessionlistener_get_type()))
-
-struct _EvolutionMailSessionListenerPrivate {
- int dummy;
-};
-
-enum {
- EML_CHANGED,
- EML_SHUTDOWN,
- EML_LAST_SIGNAL
-};
-
-static guint eml_signals[EML_LAST_SIGNAL];
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- struct _EvolutionMailSessionListenerPrivate *p = _PRIVATE(object);
-
- p = p;
-
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- d(printf("EvolutionMailSessionListener finalised!\n"));
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.Listener */
-static const char *change_type_name(int type)
-{
- switch (type) {
- case Evolution_Mail_ADDED:
- return "added";
- break;
- case Evolution_Mail_CHANGED:
- return "changed";
- break;
- case Evolution_Mail_REMOVED:
- return "removed";
- break;
- default:
- return "";
- }
-}
-
-static void
-impl_changed(PortableServer_Servant _servant,
- const Evolution_Mail_Session session,
- const Evolution_Mail_SessionChanges * changes,
- CORBA_Environment * ev)
-{
- EvolutionMailSessionListener *eml = (EvolutionMailSessionListener *)bonobo_object_from_servant(_servant);
- int i, j;
-
- d(printf("session changed!\n"));
- for (i=0;i<changes->_length;i++) {
- d(printf(" %d %s", changes->_buffer[i].stores._length, change_type_name(changes->_buffer[i].type)));
- for (j=0;j<changes->_buffer[i].stores._length;j++) {
- d(printf(" %s %s\n", changes->_buffer[i].stores._buffer[j].uid, changes->_buffer[i].stores._buffer[j].name));
- }
- }
-
- g_signal_emit(eml, eml_signals[EML_CHANGED], 0, session, changes);
-}
-
-static void
-impl_shutdown(PortableServer_Servant _servant,
- const Evolution_Mail_Session session,
- CORBA_Environment * ev)
-{
- EvolutionMailSessionListener *eml = (EvolutionMailSessionListener *)bonobo_object_from_servant(_servant);
-
- d(printf("session shutdown?\n"));
-
- g_signal_emit(eml, eml_signals[EML_SHUTDOWN], 0, session);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_sessionlistener_class_init (EvolutionMailSessionListenerClass *klass)
-{
- POA_Evolution_Mail_SessionListener__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->changed = impl_changed;
- epv->shutdown = impl_shutdown;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailSessionListenerPrivate));
-
- eml_signals[EML_CHANGED] =
- g_signal_new("changed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EvolutionMailSessionListenerClass, changed),
- NULL, NULL,
- evolution_mail_marshal_VOID__POINTER_POINTER,
- G_TYPE_NONE, 2,
- G_TYPE_POINTER, G_TYPE_POINTER);
-
- eml_signals[EML_CHANGED] =
- g_signal_new("shutdown",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EvolutionMailSessionListenerClass, changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__POINTER,
- G_TYPE_NONE, 1,
- G_TYPE_POINTER);
-}
-
-static void
-evolution_mail_sessionlistener_init (EvolutionMailSessionListener *ems, EvolutionMailSessionListenerClass *klass)
-{
- struct _EvolutionMailSessionListenerPrivate *p = _PRIVATE(ems);
-
- p = p;
-}
-
-EvolutionMailSessionListener *
-evolution_mail_sessionlistener_new(void)
-{
- EvolutionMailSessionListener *eml;
-
- eml = g_object_new(evolution_mail_sessionlistener_get_type(), NULL);
-
- return eml;
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailSessionListener, Evolution_Mail_SessionListener, PARENT_TYPE, evolution_mail_sessionlistener)
diff --git a/plugins/mail-remote/evolution-mail-sessionlistener.h b/plugins/mail-remote/evolution-mail-sessionlistener.h
deleted file mode 100644
index 0f460e47a2..0000000000
--- a/plugins/mail-remote/evolution-mail-sessionlistener.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef _EVOLUTION_MAIL_SESSIONLISTENER_H_
-#define _EVOLUTION_MAIL_SESSIONLISTENER_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-#define EVOLUTION_MAIL_TYPE_SESSIONLISTENER (evolution_mail_sessionlistener_get_type ())
-#define EVOLUTION_MAIL_SESSIONLISTENER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EVOLUTION_MAIL_TYPE_LISTENER, EvolutionMailSessionListener))
-#define EVOLUTION_MAIL_SESSIONLISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EVOLUTION_MAIL_TYPE_LISTENER, EvolutionMailSessionListenerClass))
-#define EVOLUTION_MAIL_IS_SESSIONLISTENER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EVOLUTION_MAIL_TYPE_LISTENER))
-#define EVOLUTION_MAIL_IS_SESSIONLISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EVOLUTION_MAIL_TYPE_LISTENER))
-
-typedef struct _EvolutionMailSessionListener EvolutionMailSessionListener;
-typedef struct _EvolutionMailSessionListenerClass EvolutionMailSessionListenerClass;
-
-struct _EvolutionMailSessionListener {
- BonoboObject parent;
-};
-
-struct _EvolutionMailSessionListenerClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_SessionListener__epv epv;
-
- void (*changed)(EvolutionMailSessionListener *, const Evolution_Mail_Session session, const Evolution_Mail_SessionChanges *);
-};
-
-GType evolution_mail_sessionlistener_get_type(void);
-
-EvolutionMailSessionListener *evolution_mail_sessionlistener_new(void);
-
-#endif /* _EVOLUTION_MAIL_SESSIONLISTENER_H_ */
diff --git a/plugins/mail-remote/evolution-mail-store.c b/plugins/mail-remote/evolution-mail-store.c
deleted file mode 100644
index 2286441128..0000000000
--- a/plugins/mail-remote/evolution-mail-store.c
+++ /dev/null
@@ -1,665 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Authors: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-shlib-factory.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-arg.h>
-#include <bonobo/bonobo-main.h>
-
-#include "evolution-mail-session.h"
-#include "evolution-mail-store.h"
-#include "evolution-mail-folder.h"
-
-#include "e-corba-utils.h"
-
-#include <camel/camel-store.h>
-#include <camel/camel-session.h>
-#include <camel/camel-stream-mem.h>
-#include <camel/camel-mime-message.h>
-#include <camel/camel-folder.h>
-
-#include <libedataserver/e-account.h>
-
-#include "mail/mail-component.h"
-#include "mail/mail-send-recv.h"
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_store_get_type()))
-
-struct _EvolutionMailStorePrivate {
- CamelStore *store;
-
- GHashTable *folders;
- /* sorted array of folders by full_name */
- GPtrArray *folders_array;
-
- guint32 folder_opened;
- guint32 folder_created;
- guint32 folder_deleted;
- guint32 folder_renamed;
- guint32 folder_subscribed;
- guint32 folder_unsubscribed;
-
- EDList listeners;
-};
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- EvolutionMailStore *ems = (EvolutionMailStore *)object;
- struct _EvolutionMailStorePrivate *p = _PRIVATE(object);
-
- /* FIXME: unref store
- unhook events */
-
- if (ems->account) {
- g_object_unref(ems->account);
- ems->account = NULL;
- }
-
- e_mail_listener_free(&p->listeners);
-
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(object);
-
- g_warning("EvolutionMailStore is finalised!\n");
-
- if (p->folders) {
- /* FIXME: bonobo unref? */
- g_hash_table_foreach(p->folders, (GHFunc)g_object_unref, NULL);
- g_hash_table_destroy(p->folders);
- g_ptr_array_free(p->folders_array, TRUE);
- }
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.Store */
-
-static CORBA_boolean
-impl_getProperties(PortableServer_Servant _servant,
- const Evolution_Mail_PropertyNames* names,
- Evolution_Mail_Properties **propsp,
- CORBA_Environment * ev)
-{
- EvolutionMailStore *ems = (EvolutionMailStore *)bonobo_object_from_servant(_servant);
- int i;
- Evolution_Mail_Properties *props;
- /*struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);*/
- CORBA_boolean ok = CORBA_TRUE;
-
- *propsp = props = Evolution_Mail_Properties__alloc();
- props->_length = names->_length;
- props->_maximum = props->_length;
- props->_buffer = Evolution_Mail_Properties_allocbuf(props->_maximum);
- CORBA_sequence_set_release(props, CORBA_TRUE);
-
- for (i=0;i<names->_length;i++) {
- const CORBA_char *name = names->_buffer[i];
- Evolution_Mail_Property *prop = &props->_buffer[i];
-
- d(printf("getting property '%s'\n", name));
-
- if (!strcmp(name, "name")) {
- e_mail_property_set_string(prop, name, evolution_mail_store_get_name(ems));
- } else if (!strcmp(name, "uid")) {
- e_mail_property_set_string(prop, name, evolution_mail_store_get_uid(ems));
- } else {
- e_mail_property_set_null(prop, name);
- ok = CORBA_FALSE;
- }
- }
-
- return ok;
-}
-
-static void
-ems_add_folders(EvolutionMailStore *ems, CamelFolderInfo *fi, GPtrArray *added)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
-
- while (fi) {
- if (g_hash_table_lookup(p->folders, fi->full_name) == NULL) {
- EvolutionMailFolder *emf = evolution_mail_folder_new(ems, fi->name, fi->full_name);
-
- g_hash_table_insert(p->folders, emf->full_name, emf);
- g_ptr_array_add(p->folders_array, emf);
- if (added) {
- g_object_ref(emf);
- g_ptr_array_add(added, emf);
- }
- }
-
- if (fi->child)
- ems_add_folders(ems, fi->child, added);
-
- fi = fi->next;
- }
-}
-
-static void
-ems_remove_folders(EvolutionMailStore *ems, CamelFolderInfo *fi, GPtrArray *removed)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
- EvolutionMailFolder *emf;
-
- while (fi) {
- emf = g_hash_table_lookup(p->folders, fi->full_name);
- if (emf) {
- g_hash_table_remove(p->folders, fi->full_name);
- g_ptr_array_remove(p->folders_array, emf);
- if (removed)
- g_ptr_array_add(removed, emf);
- else
- g_object_unref(emf);
- } else {
- g_warning("Folder removed I didn't know existed '%s'\n", fi->full_name);
- }
-
- if (fi->child)
- ems_remove_folders(ems, fi->child, removed);
-
- fi = fi->next;
- }
-}
-
-static int
-ems_sort_folders_cmp(const void *ap, const void *bp)
-{
- const EvolutionMailFolder *a = ((const EvolutionMailFolder **)ap)[0];
- const EvolutionMailFolder *b = ((const EvolutionMailFolder **)bp)[0];
-
- return strcmp(a->full_name, b->full_name);
-}
-
-static void
-ems_sort_folders(struct _EvolutionMailStorePrivate *p)
-{
- qsort(p->folders_array->pdata, p->folders_array->len, sizeof(p->folders_array->pdata[0]), ems_sort_folders_cmp);
-}
-
-static void
-ems_set_changes(Evolution_Mail_StoreChange *change, Evolution_Mail_ChangeType how, GPtrArray *changed)
-{
- int i;
-
- change->type = how;
- change->folders._maximum = changed->len;
- change->folders._length = changed->len;
- change->folders._buffer = Evolution_Mail_FolderInfos_allocbuf(change->folders._maximum);
- CORBA_sequence_set_release(&change->folders, TRUE);
-
- for (i=0;i<changed->len;i++)
- e_mail_folderinfo_set_folder(&change->folders._buffer[i], changed->pdata[i]);
-}
-
-static Evolution_Mail_StoreChanges *
-ems_create_changes(EvolutionMailStore *ems, Evolution_Mail_ChangeType how, GPtrArray *changed)
-{
- Evolution_Mail_StoreChanges *changes;
-
- /* NB: we only ever create 1 changetype at the moment */
-
- changes = Evolution_Mail_StoreChanges__alloc();
- changes->_maximum = 1;
- changes->_length = 1;
- changes->_buffer = Evolution_Mail_StoreChanges_allocbuf(1);
- CORBA_sequence_set_release(changes, TRUE);
-
- ems_set_changes(&changes->_buffer[0], how, changed);
-
- return changes;
-}
-
-static void
-ems_folder_opened(CamelObject *o, void *d, void *data)
-{
- EvolutionMailStore *ems = data;
- CamelFolder *folder = d;
-
- ems = ems;
- folder = folder;
- /* noop */
-}
-
-static void
-ems_folder_subscribed(CamelObject *o, void *d, void *data)
-{
- EvolutionMailStore *ems = data;
- CamelFolderInfo *fi = d;
- GPtrArray *added;
- int i;
-
- added = g_ptr_array_new();
- ems_add_folders(ems, fi, added);
-
- if (added) {
- if (added->len) {
- Evolution_Mail_StoreChanges *changes = ems_create_changes(ems, Evolution_Mail_ADDED, added);
-
- evolution_mail_store_changed(ems, changes);
- CORBA_free(changes);
-
- for (i=0;i<added->len;i++)
- g_object_unref(added->pdata[i]);
- }
- g_ptr_array_free(added, TRUE);
- }
-}
-
-static void
-ems_folder_unsubscribed(CamelObject *o, void *d, void *data)
-{
- EvolutionMailStore *ems = data;
- CamelFolderInfo *fi = d;
- GPtrArray *removed = NULL;
- int i;
-
- removed = g_ptr_array_new();
- ems_remove_folders(ems, fi, removed);
-
- if (removed) {
- if (removed->len) {
- Evolution_Mail_StoreChanges *changes = ems_create_changes(ems, Evolution_Mail_REMOVED, removed);
-
- evolution_mail_store_changed(ems, changes);
- CORBA_free(changes);
-
- for (i=0;i<removed->len;i++)
- g_object_unref(removed->pdata[i]);
- }
- g_ptr_array_free(removed, TRUE);
- }
-}
-
-static void
-ems_folder_created(CamelObject *o, void *d, void *data)
-{
- CamelStore *store = (CamelStore *)o;
-
- if (!camel_store_supports_subscriptions(store))
- ems_folder_subscribed(o, d, data);
-}
-
-static void
-ems_folder_deleted(CamelObject *o, void *d, void *data)
-{
- CamelStore *store = (CamelStore *)o;
-
- if (!camel_store_supports_subscriptions(store))
- ems_folder_unsubscribed(o, d, data);
-}
-
-static void
-get_folders(CamelFolderInfo *fi, GPtrArray *folders)
-{
- while (fi) {
- g_ptr_array_add(folders, fi);
-
- if (fi->child)
- get_folders(fi->child, folders);
-
- fi = fi->next;
- }
-}
-
-static int
-folder_cmp(const void *ap, const void *bp)
-{
- const CamelFolderInfo *a = ((CamelFolderInfo **)ap)[0];
- const CamelFolderInfo *b = ((CamelFolderInfo **)bp)[0];
-
- return strcmp(a->full_name, b->full_name);
-}
-
-static void
-ems_folder_renamed(CamelObject *o, void *d, void *data)
-{
- EvolutionMailStore *ems = data;
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
- CamelRenameInfo *reninfo = d;
- int i, oldlen, newlen;
- GPtrArray *renamed = g_ptr_array_new(), *folders = g_ptr_array_new();
- CamelFolderInfo *top;
- GString *name = g_string_new("");
-
- /* flatten/sort folders to make sure they're in the right order */
- get_folders(reninfo->new, folders);
- qsort(folders->pdata, folders->len, sizeof(folders->pdata[0]), folder_cmp);
- top = folders->pdata[0];
-
- oldlen = strlen(reninfo->old_base);
- newlen = strlen(top->full_name);
-
- for (i=0;i<folders->len;i++) {
- CamelFolderInfo *fi = folders->pdata[i];
- EvolutionMailFolder *emf;
-
- if (strlen(fi->full_name) >= newlen) {
- g_string_printf(name, "%s%s", reninfo->old_base, fi->full_name + newlen);
- if ((emf = g_hash_table_lookup(p->folders, name->str))) {
- /* FIXME: locking / or api to rename */
- g_hash_table_remove(p->folders, emf->full_name);
- g_free(emf->full_name);
- g_free(emf->name);
- emf->full_name = g_strdup(fi->full_name);
- emf->name = g_strdup(fi->name);
- g_hash_table_insert(p->folders, emf->full_name, emf);
-
- g_object_ref(emf);
- g_ptr_array_add(renamed, emf);
- }
- }
- }
-
- g_string_free(name, TRUE);
- g_ptr_array_free(folders, TRUE);
-
- if (renamed) {
- if (renamed->len) {
- Evolution_Mail_StoreChanges *changes = ems_create_changes(ems, Evolution_Mail_CHANGED, renamed);
-
- evolution_mail_store_changed(ems, changes);
- CORBA_free(changes);
-
- for (i=0;i<renamed->len;i++)
- g_object_unref(renamed->pdata[i]);
- }
- g_ptr_array_free(renamed, TRUE);
- }
-}
-
-static Evolution_Mail_FolderInfos *
-impl_getFolders(PortableServer_Servant _servant,
- const CORBA_char * pattern,
- const Evolution_Mail_FolderListener listener,
- CORBA_Environment * ev)
-{
- EvolutionMailStore *ems = (EvolutionMailStore *)bonobo_object_from_servant(_servant);
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
- CamelFolderInfo *fi;
- CamelException ex = { 0 };
- Evolution_Mail_FolderInfos *folders = NULL;
- int i;
- CamelStore *store;
-
- store = evolution_mail_store_get_store(ems, ev);
- if (store == NULL) {
- return CORBA_OBJECT_NIL;
- }
-
- if (p->folders == NULL) {
- fi = camel_store_get_folder_info(store, "", CAMEL_STORE_FOLDER_INFO_RECURSIVE|CAMEL_STORE_FOLDER_INFO_FAST, &ex);
-
- if (fi) {
- p->folders = g_hash_table_new(g_str_hash, g_str_equal);
- p->folders_array = g_ptr_array_new();
- ems_add_folders(ems, fi, NULL);
- camel_store_free_folder_info(store, fi);
- ems_sort_folders(p);
- } else {
- e_mail_exception_xfer_camel(ev, &ex);
- camel_object_unref(store);
- return CORBA_OBJECT_NIL;
- }
- }
-
- folders = Evolution_Mail_FolderInfos__alloc();
- folders->_length = p->folders_array->len;
- folders->_maximum = folders->_length;
- folders->_buffer = Evolution_Mail_FolderInfos_allocbuf(folders->_maximum);
- CORBA_sequence_set_release(folders, CORBA_TRUE);
-
- for (i=0;i<p->folders_array->len;i++) {
- EvolutionMailFolder *emf = p->folders_array->pdata[i];
-
- evolution_mail_folder_addlistener(emf, listener);
- e_mail_folderinfo_set_folder(&folders->_buffer[i], emf);
- }
-
- camel_object_unref(store);
-
- return folders;
-}
-
-static void
-impl_sendMessage(PortableServer_Servant _servant,
- const Evolution_Mail_MessageStream message,
- CORBA_Environment * ev)
-{
- EvolutionMailStore *ems = (EvolutionMailStore *)bonobo_object_from_servant(_servant);
- CamelException ex = { 0 };
- CamelMimeMessage *msg;
- CamelInternetAddress *from;
- CamelMessageInfo *info;
- CORBA_Environment wev = { 0 };
-
- if (ems->account == NULL
- || ems->account->transport == NULL
- || ems->account->transport->url == NULL) {
- e_mail_exception_set(ev, Evolution_Mail_NOT_SUPPORTED, _("Account cannot send e-mail"));
- goto done;
- }
-
- msg = e_messagestream_to_message(message, ev);
- if (msg == NULL)
- goto done;
-
- from = camel_internet_address_new();
- camel_internet_address_add(from, ems->account->id->name, ems->account->id->address);
- camel_mime_message_set_from(msg, from);
- camel_object_unref(from);
-
- camel_medium_set_header((CamelMedium *)msg, "X-Evolution-Account", ems->account->uid);
-
- if (msg->date == 0)
- camel_mime_message_set_date(msg, CAMEL_MESSAGE_DATE_CURRENT, 0);
-
- info = camel_message_info_new(NULL);
- camel_message_info_set_flags(info, CAMEL_MESSAGE_SEEN, ~0);
-
- camel_folder_append_message(mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_OUTBOX), msg, info, NULL, &ex);
- camel_message_info_free(info);
-
- if (camel_exception_is_set(&ex)) {
- e_mail_exception_xfer_camel(ev, &ex);
- } else {
- mail_send();
- }
-
- camel_object_unref(msg);
-done:
- Evolution_Mail_MessageStream_dispose(message, &wev);
- if (wev._major != CORBA_NO_EXCEPTION)
- CORBA_exception_free(&wev);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_store_class_init (EvolutionMailStoreClass *klass)
-{
- POA_Evolution_Mail_Store__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->getProperties = impl_getProperties;
- epv->getFolders = impl_getFolders;
- epv->sendMessage = impl_sendMessage;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailStorePrivate));
-}
-
-static void
-evolution_mail_store_init(EvolutionMailStore *ems, EvolutionMailStoreClass *klass)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
-
- bonobo_object_set_immortal((BonoboObject *)ems, TRUE);
- e_dlist_init(&p->listeners);
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailStore, Evolution_Mail_Store, PARENT_TYPE, evolution_mail_store)
-
-EvolutionMailStore *
-evolution_mail_store_new(struct _EvolutionMailSession *s, struct _EAccount *ea)
-{
- EvolutionMailStore *ems;
- struct _EvolutionMailStorePrivate *p;
- static PortableServer_POA poa = NULL;
-
- d(printf("EvolutionMailStore.new(\"%s\")\n", ea?ea->name:"local"));
-
- if (poa == NULL)
- poa = bonobo_poa_get_threaded (ORBIT_THREAD_HINT_PER_REQUEST, NULL);
-
- ems = g_object_new (EVOLUTION_MAIL_TYPE_STORE, "poa", poa, NULL);
- p = _PRIVATE(ems);
-
- if (ea) {
- ems->account = ea;
- g_object_ref(ea);
- }
-
- ems->session = s;
-
- return ems;
-}
-
-const char *evolution_mail_store_get_name(EvolutionMailStore *ems)
-{
- if (ems->account)
- return ems->account->name;
- else
- return ("On This Computer");
-}
-
-const char *evolution_mail_store_get_uid(EvolutionMailStore *ems)
-{
- if (ems->account)
- return ems->account->uid;
- else
- return "local@local";
-}
-
-CamelStore *evolution_mail_store_get_store(EvolutionMailStore *ems, CORBA_Environment *ev)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
-
- if (p->store == NULL) {
- if (ems->account == NULL) {
- p->store = mail_component_peek_local_store(NULL);
- camel_object_ref(p->store);
- } else {
- const char *uri;
- CamelException ex = { 0 };
-
- uri = e_account_get_string(ems->account, E_ACCOUNT_SOURCE_URL);
- if (uri && *uri) {
- p->store = camel_session_get_store(ems->session->session, uri, &ex);
- if (camel_exception_is_set(&ex)) {
- e_mail_exception_xfer_camel(ev, &ex);
- return NULL;
- }
- } else {
- e_mail_exception_set(ev, Evolution_Mail_NOT_SUPPORTED, _("No store available"));
- return NULL;
- }
- }
-
- p->folder_opened = camel_object_hook_event(p->store, "folder_opened", ems_folder_opened, ems);
- p->folder_created = camel_object_hook_event(p->store, "folder_created", ems_folder_created, ems);
- p->folder_deleted = camel_object_hook_event(p->store, "folder_deleted", ems_folder_deleted, ems);
- p->folder_renamed = camel_object_hook_event(p->store, "folder_renamed", ems_folder_renamed, ems);
- p->folder_subscribed = camel_object_hook_event(p->store, "folder_subscribed", ems_folder_subscribed, ems);
- p->folder_unsubscribed = camel_object_hook_event(p->store, "folder_unsubscribed", ems_folder_unsubscribed, ems);
- }
-
- camel_object_ref(p->store);
- return p->store;
-}
-
-int evolution_mail_store_close_store(EvolutionMailStore *ems)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
-
- /* FIXME: locking */
- if (p->store) {
- if (!e_dlist_empty(&p->listeners))
- return -1;
-
- camel_object_remove_event(p->store, p->folder_opened);
- camel_object_remove_event(p->store, p->folder_created);
- camel_object_remove_event(p->store, p->folder_deleted);
- camel_object_remove_event(p->store, p->folder_renamed);
- camel_object_remove_event(p->store, p->folder_subscribed);
- camel_object_remove_event(p->store, p->folder_unsubscribed);
- camel_object_unref(p->store);
- p->store = NULL;
- }
-
- /* FIXME: need to close of sub-folders too? */
-
- return 0;
-}
-
-void
-evolution_mail_store_addlistener(EvolutionMailStore *ems, Evolution_Mail_StoreListener listener)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
-
- /* FIXME: locking */
- e_mail_listener_add(&p->listeners, listener);
-}
-
-void
-evolution_mail_store_changed(EvolutionMailStore *ems, Evolution_Mail_StoreChanges *changes)
-{
- struct _EvolutionMailStorePrivate *p = _PRIVATE(ems);
-
- if (!e_mail_listener_emit(&p->listeners, (EMailListenerChanged)Evolution_Mail_StoreListener_changed,
- bonobo_object_corba_objref((BonoboObject *)ems), changes)) {
- evolution_mail_store_close_store(ems);
- w(printf("No more listeners for store, could dispose store object now?\n"));
- }
-}
diff --git a/plugins/mail-remote/evolution-mail-store.h b/plugins/mail-remote/evolution-mail-store.h
deleted file mode 100644
index 800f536fbd..0000000000
--- a/plugins/mail-remote/evolution-mail-store.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifndef _EVOLUTION_MAIL_STORE_H_
-#define _EVOLUTION_MAIL_STORE_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-#define EVOLUTION_MAIL_TYPE_STORE (evolution_mail_store_get_type ())
-#define EVOLUTION_MAIL_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EVOLUTION_MAIL_TYPE_STORE, EvolutionMailStore))
-#define EVOLUTION_MAIL_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EVOLUTION_MAIL_TYPE_STORE, EvolutionMailStoreClass))
-#define EVOLUTION_MAIL_IS_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EVOLUTION_MAIL_TYPE_STORE))
-#define EVOLUTION_MAIL_IS_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EVOLUTION_MAIL_TYPE_STORE))
-
-struct _EAccount;
-struct _EvolutionMailSession;
-
-typedef struct _EvolutionMailStore EvolutionMailStore;
-typedef struct _EvolutionMailStoreClass EvolutionMailStoreClass;
-
-struct _EvolutionMailStore {
- BonoboObject parent;
-
- struct _EvolutionMailSession *session;
-
- struct _EAccount *account;
-};
-
-struct _EvolutionMailStoreClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_Store__epv epv;
-};
-
-GType evolution_mail_store_get_type(void);
-
-EvolutionMailStore *evolution_mail_store_new(struct _EvolutionMailSession *s, struct _EAccount *ea);
-
-void evolution_mail_store_addlistener(EvolutionMailStore *store, Evolution_Mail_StoreListener listener);
-void evolution_mail_store_changed(EvolutionMailStore *ems, Evolution_Mail_StoreChanges *changes);
-
-const char *evolution_mail_store_get_name(EvolutionMailStore *);
-const char *evolution_mail_store_get_uid(EvolutionMailStore *);
-
-/* unref when done */
-struct _CamelStore *evolution_mail_store_get_store(EvolutionMailStore *ems, CORBA_Environment *ev);
-int evolution_mail_store_close_store(EvolutionMailStore *ems);
-
-#endif /* _EVOLUTION_MAIL_STORE_H_ */
diff --git a/plugins/mail-remote/evolution-mail-storelistener.c b/plugins/mail-remote/evolution-mail-storelistener.c
deleted file mode 100644
index ef7a83fdcf..0000000000
--- a/plugins/mail-remote/evolution-mail-storelistener.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <errno.h>
-#include <string.h>
-#include <bonobo/bonobo-i18n.h>
-#include <bonobo/bonobo-exception.h>
-#include "evolution-mail-storelistener.h"
-
-#include "evolution-mail-marshal.h"
-#include "e-corba-utils.h"
-
-#define PARENT_TYPE bonobo_object_get_type ()
-
-static BonoboObjectClass *parent_class = NULL;
-
-#define _PRIVATE(o) (g_type_instance_get_private ((GTypeInstance *)o, evolution_mail_storelistener_get_type()))
-
-struct _EvolutionMailStoreListenerPrivate {
- int dummy;
-};
-
-enum {
- EML_CHANGED,
- EML_LAST_SIGNAL
-};
-
-static guint eml_signals[EML_LAST_SIGNAL];
-
-/* GObject methods */
-
-static void
-impl_dispose (GObject *object)
-{
- struct _EvolutionMailStoreListenerPrivate *p = _PRIVATE(object);
-
- p = p;
-
- (* G_OBJECT_CLASS (parent_class)->dispose) (object);
-}
-
-static void
-impl_finalize (GObject *object)
-{
- d(printf("EvolutionMailStoreListener finalised!\n"));
-
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Evolution.Mail.Listener */
-static const char *change_type_name(int type)
-{
- switch (type) {
- case Evolution_Mail_ADDED:
- return "added";
- break;
- case Evolution_Mail_CHANGED:
- return "changed";
- break;
- case Evolution_Mail_REMOVED:
- return "removed";
- break;
- default:
- return "";
- }
-}
-
-static void
-impl_changed(PortableServer_Servant _servant,
- const Evolution_Mail_Store store,
- const Evolution_Mail_StoreChanges * changes,
- CORBA_Environment * ev)
-{
- EvolutionMailStoreListener *eml = (EvolutionMailStoreListener *)bonobo_object_from_servant(_servant);
- int i, j;
-
- d(printf("store changed!\n"));
- for (i=0;i<changes->_length;i++) {
- d(printf(" %d %s", changes->_buffer[i].folders._length, change_type_name(changes->_buffer[i].type)));
- for (j=0;j<changes->_buffer[i].folders._length;j++) {
- d(printf(" %s %s\n", changes->_buffer[i].folders._buffer[j].full_name, changes->_buffer[i].folders._buffer[j].name));
- }
- }
-
- g_signal_emit(eml, eml_signals[EML_CHANGED], 0, store, changes);
-}
-
-/* Initialization */
-
-static void
-evolution_mail_storelistener_class_init (EvolutionMailStoreListenerClass *klass)
-{
- POA_Evolution_Mail_StoreListener__epv *epv = &klass->epv;
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- parent_class = g_type_class_peek_parent (klass);
-
- epv->changed = impl_changed;
-
- object_class->dispose = impl_dispose;
- object_class->finalize = impl_finalize;
-
- g_type_class_add_private(klass, sizeof(struct _EvolutionMailStoreListenerPrivate));
-
- eml_signals[EML_CHANGED] =
- g_signal_new("changed",
- G_OBJECT_CLASS_TYPE (klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EvolutionMailStoreListenerClass, changed),
- NULL, NULL,
- evolution_mail_marshal_VOID__POINTER_POINTER,
- G_TYPE_NONE, 2,
- G_TYPE_POINTER, G_TYPE_POINTER);
-}
-
-static void
-evolution_mail_storelistener_init (EvolutionMailStoreListener *ems, EvolutionMailStoreListenerClass *klass)
-{
- struct _EvolutionMailStoreListenerPrivate *p = _PRIVATE(ems);
-
- p = p;
-}
-
-EvolutionMailStoreListener *
-evolution_mail_storelistener_new(void)
-{
- EvolutionMailStoreListener *eml;
-
- eml = g_object_new(evolution_mail_storelistener_get_type(), NULL);
-
- return eml;
-}
-
-BONOBO_TYPE_FUNC_FULL (EvolutionMailStoreListener, Evolution_Mail_StoreListener, PARENT_TYPE, evolution_mail_storelistener)
diff --git a/plugins/mail-remote/evolution-mail-storelistener.h b/plugins/mail-remote/evolution-mail-storelistener.h
deleted file mode 100644
index fc2c7b8918..0000000000
--- a/plugins/mail-remote/evolution-mail-storelistener.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-/*
- * Copyright (C) 2005 Novell, Inc.
- *
- * Author: Michael Zucchi <notzed@novell.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this program; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#ifndef _EVOLUTION_MAIL_STORELISTENER_H_
-#define _EVOLUTION_MAIL_STORELISTENER_H_
-
-#include <bonobo/bonobo-object.h>
-#include "Evolution-DataServer-Mail.h"
-
-#define EVOLUTION_MAIL_TYPE_STORELISTENER (evolution_mail_storelistener_get_type ())
-#define EVOLUTION_MAIL_STORELISTENER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EVOLUTION_MAIL_TYPE_LISTENER, EvolutionMailStoreListener))
-#define EVOLUTION_MAIL_STORELISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EVOLUTION_MAIL_TYPE_LISTENER, EvolutionMailStoreListenerClass))
-#define EVOLUTION_MAIL_IS_STORELISTENER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EVOLUTION_MAIL_TYPE_LISTENER))
-#define EVOLUTION_MAIL_IS_STORELISTENER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), EVOLUTION_MAIL_TYPE_LISTENER))
-
-typedef struct _EvolutionMailStoreListener EvolutionMailStoreListener;
-typedef struct _EvolutionMailStoreListenerClass EvolutionMailStoreListenerClass;
-
-struct _EvolutionMailStoreListener {
- BonoboObject parent;
-};
-
-struct _EvolutionMailStoreListenerClass {
- BonoboObjectClass parent_class;
-
- POA_Evolution_Mail_StoreListener__epv epv;
-
- void (*changed)(EvolutionMailStoreListener *, const Evolution_Mail_Store store, const Evolution_Mail_StoreChanges *);
-};
-
-GType evolution_mail_storelistener_get_type(void);
-
-EvolutionMailStoreListener *evolution_mail_storelistener_new(void);
-
-#endif /* _EVOLUTION_MAIL_STORELISTENER_H_ */
diff --git a/plugins/mail-remote/mail-remote.c b/plugins/mail-remote/mail-remote.c
deleted file mode 100644
index 3c8eb7c988..0000000000
--- a/plugins/mail-remote/mail-remote.c
+++ /dev/null
@@ -1,59 +0,0 @@
-
-#include <stdio.h>
-#include <unistd.h>
-
-#include "evolution-mail-session.h"
-#include <bonobo/bonobo-main.h>
-
-#include "e-corba-utils.h"
-
-struct _EPlugin;
-struct _ESEventTargetUpgrade;
-
-void org_gnome_evolution_mail_remote_startup(struct _EPlugin *ep, struct _ESEventTargetUpgrade *target);
-int e_plugin_lib_enable(int enable);
-
-void org_gnome_evolution_mail_remote_startup(struct _EPlugin *ep, struct _ESEventTargetUpgrade *target) {
- /* noop */ ;
-}
-
-int e_plugin_lib_enable(int enable)
-{
- static EvolutionMailSession *sess;
- char *path;
- FILE *fp;
-
- if (enable) {
- static PortableServer_POA poa = NULL;
- void *component;
-
- if (sess != NULL)
- return 0;
-
- component = mail_component_peek();
- if (component == NULL) {
- g_warning("Unable to find mail component, cannot instantiate mail remote api");
- return -1;
- }
-
- if (poa == NULL)
- poa = bonobo_poa_get_threaded (ORBIT_THREAD_HINT_PER_REQUEST, NULL);
-
- sess = g_object_new(evolution_mail_session_get_type(), "poa", poa, NULL);
-
- /*
- NB: This only works if this is done early enough in the process ...
- I guess it will be. But i'm not entirely sure ...
-
- If this wrong, then we have to add a mechanism to the mailcomponent directly
- to retrieve it */
-
- bonobo_object_add_interface((BonoboObject *)component, (BonoboObject *)sess);
- w(printf(" ** Added mail interface to mail component\n"));
- } else {
- /* can't easily disable this until restart? */
- /* can we just destroy it? */
- }
-
- return 0;
-}
diff --git a/plugins/mail-remote/org-gnome-evolution-mail-remote.eplug.xml b/plugins/mail-remote/org-gnome-evolution-mail-remote.eplug.xml
deleted file mode 100644
index 8435fb9619..0000000000
--- a/plugins/mail-remote/org-gnome-evolution-mail-remote.eplug.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<e-plugin-list>
- <e-plugin
- type="shlib"
- id="org.gnome.evolution.plugin.mailRemote"
- location="@PLUGINDIR@/liborg-gnome-evolution-mail-remote@SOEXT@"
- _name="Mail Remote">
- <_description>A plugin which implements a CORBA
- interface for accessing mail data remotely.</_description>
- <author name="Michael Zucchi" email="notzed@novell.com"/>
-
- <!-- hacky way to find out if the system has started up -->
- <hook class="org.gnome.evolution.shell.events:1.0">
- <event target="upgrade" id="upgrade.done" handle="org_gnome_evolution_mail_remote_startup"/>
- </hook>
-
- </e-plugin>
-</e-plugin-list>