diff options
Diffstat (limited to 'mail')
-rw-r--r-- | mail/e-mail-reader-utils.c | 1 | ||||
-rw-r--r-- | mail/e-mail-reader.c | 1 | ||||
-rw-r--r-- | mail/e-mail-shell-module.c | 20 | ||||
-rw-r--r-- | mail/mail-component.c | 940 | ||||
-rw-r--r-- | mail/mail-mt.c | 4 |
5 files changed, 15 insertions, 951 deletions
diff --git a/mail/e-mail-reader-utils.c b/mail/e-mail-reader-utils.c index bfd1c28972..419581683d 100644 --- a/mail/e-mail-reader-utils.c +++ b/mail/e-mail-reader-utils.c @@ -282,7 +282,6 @@ e_mail_reader_open_selected (EMailReader *reader) E_MAIL_READER (browser), folder, folder_uri); e_mail_reader_set_message ( E_MAIL_READER (browser), uid, FALSE); - /* FIXME This is incomplete... */ gtk_widget_show (browser); } diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c index 204141b430..f32d389bb6 100644 --- a/mail/e-mail-reader.c +++ b/mail/e-mail-reader.c @@ -926,7 +926,6 @@ action_mail_show_source_cb (GtkAction *action, uids = message_list_get_selected (message_list); g_return_if_fail (uids->len > 0); - /* FIXME Set session. */ browser = e_mail_browser_new (shell_module); reader = E_MAIL_READER (browser); html_display = e_mail_reader_get_html_display (reader); diff --git a/mail/e-mail-shell-module.c b/mail/e-mail-shell-module.c index 214c09bc28..58be6a094d 100644 --- a/mail/e-mail-shell-module.c +++ b/mail/e-mail-shell-module.c @@ -38,6 +38,7 @@ #include "e-mail-shell-module-settings.h" #include "e-mail-browser.h" +#include "e-mail-reader.h" #include "em-account-prefs.h" #include "em-composer-prefs.h" #include "em-composer-utils.h" @@ -577,7 +578,7 @@ mail_shell_module_notify_online_mode_cb (EShell *shell, } static void -mail_shell_module_handle_email_uri_cb (gchar *uri, +mail_shell_module_handle_email_uri_cb (gchar *folder_uri, CamelFolder *folder, gpointer user_data) { @@ -587,7 +588,7 @@ mail_shell_module_handle_email_uri_cb (gchar *uri, const gchar *uid; if (folder == NULL) { - g_warning ("Could not open folder '%s'", uri); + g_warning ("Could not open folder '%s'", folder_uri); goto exit; } @@ -614,20 +615,23 @@ mail_shell_module_handle_email_uri_cb (gchar *uri, g_ptr_array_add (uids, g_strdup (uid)); if (g_strcmp0 (forward, "attached") == 0) - em_utils_forward_attached (folder, uids, uri); + em_utils_forward_attached (folder, uids, folder_uri); else if (g_strcmp0 (forward, "inline") == 0) - em_utils_forward_inline (folder, uids, uri); + em_utils_forward_inline (folder, uids, folder_uri); else if (g_strcmp0 (forward, "quoted") == 0) - em_utils_forward_quoted (folder, uids, uri); + em_utils_forward_quoted (folder, uids, folder_uri); else - em_utils_forward_messages (folder, uids, uri); + em_utils_forward_messages (folder, uids, folder_uri); } else { GtkWidget *browser; - /* XXX Should pass in the shell module. */ + /* FIXME Should pass in the shell module. */ browser = e_mail_browser_new (mail_shell_module); - /* FIXME This is incomplete... */ + e_mail_reader_set_folder ( + E_MAIL_READER (browser), folder, folder_uri); + e_mail_reader_set_message ( + E_MAIL_READER (browser), uid, FALSE); gtk_widget_show (browser); } diff --git a/mail/mail-component.c b/mail/mail-component.c index c2ccb69729..867b16b7ec 100644 --- a/mail/mail-component.c +++ b/mail/mail-component.c @@ -99,30 +99,6 @@ static void view_changed_timeout_remove (EComponentView *component_view); -#define MAIL_COMPONENT_DEFAULT(mc) if (mc == NULL) mc = mail_component_peek(); - -#define PARENT_TYPE evolution_component_get_type () -static BonoboObjectClass *parent_class = NULL; - -#define OFFLINE 0 -#define ONLINE 1 - -//struct _store_info { -// CamelStore *store; -// char *name; -// -// /* we keep a reference to these so they remain around for the session */ -// CamelFolder *vtrash; -// CamelFolder *vjunk; -// -// /* for setup only */ -// void (*done)(CamelStore *store, CamelFolderInfo *info, void *data); -// void *done_data; -// -// int ref_count:31; -// guint removed:1; -//}; - struct _MailComponentPrivate { GMutex *lock; @@ -153,270 +129,6 @@ struct _MailComponentPrivate { guint mail_sync_in_progress; /* is greater than 0 if still waiting to finish sync on some store */ }; -/* indexed by _mail_component_folder_t */ -//static struct { -// char *name; -// char *uri; -// CamelFolder *folder; -//} mc_default_folders[] = { -// /* translators: standard local mailbox names */ -// { N_("Inbox"), }, -// { N_("Drafts"), }, -// { N_("Outbox"), }, -// { N_("Sent"), }, -// { N_("Templates"), }, -// { "Inbox", }, /* 'always local' inbox */ -//}; - -//static struct _store_info * -//store_info_new(CamelStore *store, const char *name) -//{ -// struct _store_info *si; -// -// si = g_malloc0(sizeof(*si)); -// si->ref_count = 1; -// if (name == NULL) -// si->name = camel_service_get_name((CamelService *)store, TRUE); -// else -// si->name = g_strdup(name); -// si->store = store; -// camel_object_ref(store); -// /* If these are vfolders then they need to be opened now, -// * otherwise they wont keep track of all folders */ -// if ((store->flags & CAMEL_STORE_VTRASH) != 0) -// si->vtrash = camel_store_get_trash(store, NULL); -// if ((store->flags & CAMEL_STORE_VJUNK) != 0) -// si->vjunk = camel_store_get_junk(store, NULL); -// -// return si; -//} - -//static void -//store_info_ref(struct _store_info *si) -//{ -// si->ref_count++; -//} - -//static void -//store_info_unref(struct _store_info *si) -//{ -// if (si->ref_count > 1) { -// si->ref_count--; -// return; -// } -// -// if (si->vtrash) -// camel_object_unref(si->vtrash); -// if (si->vjunk) -// camel_object_unref(si->vjunk); -// camel_object_unref(si->store); -// g_free(si->name); -// g_free(si); -//} - -//static gboolean -//mc_add_store_done(CamelStore *store, CamelFolderInfo *info, void *data) -//{ -// struct _store_info *si = data; -// -// if (si->done) -// si->done(store, info, si); -// -// if (!si->removed) { -// /* let the counters know about the already opened junk/trash folders */ -// if (si->vtrash) -// mail_note_folder(si->vtrash); -// if (si->vjunk) -// mail_note_folder(si->vjunk); -// } -// -// store_info_unref(si); -// -// return TRUE; -//} - -/* Utility functions. */ -//static void -//mc_add_store(MailComponent *component, CamelStore *store, const char *name, void (*done)(CamelStore *store, CamelFolderInfo *info, void *data)) -//{ -// struct _store_info *si; -// -// MAIL_COMPONENT_DEFAULT(component); -// -// si = store_info_new(store, name); -// si->done = done; -// g_hash_table_insert(component->priv->store_hash, store, si); -// em_folder_tree_model_add_store(component->priv->model, store, si->name); -// store_info_ref(si); -// mail_note_store(store, NULL, mc_add_store_done, si); -//} - -//static void -//mc_add_local_store_done(CamelStore *store, CamelFolderInfo *info, void *data) -//{ -// /*MailComponent *mc = data;*/ -// int i; -// -// for (i=0;i<sizeof(mc_default_folders)/sizeof(mc_default_folders[0]);i++) { -// if (mc_default_folders[i].folder) -// mail_note_folder(mc_default_folders[i].folder); -// } -//} - -//static void -//mc_add_local_store(CamelStore *store, const char *name, MailComponent *mc) -//{ -// mc_add_store(mc, store, name, mc_add_local_store_done); -// camel_object_unref(store); -// g_object_unref(mc); -//} - -//static void -//mc_setup_local_store(MailComponent *mc) -//{ -// MailComponentPrivate *p = mc->priv; -// CamelURL *url; -// char *tmp; -// CamelException ex; -// int i; -// -// g_mutex_lock(p->lock); -// if (p->local_store != NULL) { -// g_mutex_unlock(p->lock); -// return; -// } -// -// camel_exception_init(&ex); -// -// url = camel_url_new("mbox:", NULL); -// tmp = g_build_filename (p->base_directory, "local", NULL); -// camel_url_set_path(url, tmp); -// g_free(tmp); -// tmp = camel_url_to_string(url, 0); -// p->local_store = (CamelStore *)camel_session_get_service(session, tmp, CAMEL_PROVIDER_STORE, &ex); -// g_free(tmp); -// if (p->local_store == NULL) -// goto fail; -// -// for (i=0;i<sizeof(mc_default_folders)/sizeof(mc_default_folders[0]);i++) { -// /* FIXME: should this uri be account relative? */ -// camel_url_set_fragment(url, mc_default_folders[i].name); -// mc_default_folders[i].uri = camel_url_to_string(url, 0); -// mc_default_folders[i].folder = camel_store_get_folder(p->local_store, mc_default_folders[i].name, -// CAMEL_STORE_FOLDER_CREATE, &ex); -// camel_exception_clear(&ex); -// } -// -// camel_url_free(url); -// g_mutex_unlock(p->lock); -// -// g_object_ref(mc); -// camel_object_ref(p->local_store); -// mail_async_event_emit(p->async_event, MAIL_ASYNC_GUI, (MailAsyncFunc)mc_add_local_store, p->local_store, _("On This Computer"), mc); -// -// return; -//fail: -// g_mutex_unlock(p->lock); -// -// g_warning("Could not setup local store/folder: %s", ex.desc); -// -// camel_url_free(url); -// camel_exception_clear(&ex); -//} - -//static void -//load_accounts (MailComponent *component, EAccountList *accounts) -//{ -// EIterator *iter; -// -// /* Load each service (don't connect!). Check its provider and -// * see if this belongs in the shell's folder list. If so, add -// * it. -// */ -// -// iter = e_list_get_iterator ((EList *) accounts); -// while (e_iterator_is_valid (iter)) { -// EAccountService *service; -// EAccount *account; -// const char *name; -// -// account = (EAccount *) e_iterator_get (iter); -// service = account->source; -// name = account->name; -// -// /* HACK: mbox url's are handled by the local store setup above, -// any that come through as account sources are really movemail sources! */ -// if (account->enabled -// && service->url != NULL -// && service->url[0] -// && strncmp(service->url, "mbox:", 5) != 0) -// mail_component_load_store_by_uri (component, service->url, name); -// -// e_iterator_next (iter); -// } -// -// g_object_unref (iter); -//} - -//static void -//setup_search_context (MailComponent *component) -//{ -// MailComponentPrivate *priv = component->priv; -// -// if (priv->search_context == NULL) { -// char *user = g_build_filename(component->priv->base_directory, "searches.xml", NULL); -// char *system = g_build_filename (EVOLUTION_PRIVDATADIR, "searchtypes.xml", NULL); -// -// priv->search_context = (RuleContext *)em_search_context_new (); -// g_object_set_data_full (G_OBJECT (priv->search_context), "user", user, g_free); -// g_object_set_data_full (G_OBJECT (priv->search_context), "system", system, g_free); -// rule_context_load (priv->search_context, system, user); -// } -//} - -//static void -//mc_startup(MailComponent *mc) -//{ -// static int started = 0; -// GConfClient *gconf; -// -// if (started) -// return; -// started = 1; -// -// mc_setup_local_store(mc); -// load_accounts(mc, mail_config_get_accounts()); -// -// gconf = mail_config_get_gconf_client(); -// -// if (gconf_client_get_bool (gconf, "/apps/evolution/mail/display/enable_vfolders", NULL)) -// vfolder_load_storage(); -//} - -//static void -//folder_selected_cb (EMFolderTree *emft, const char *path, const char *uri, guint32 flags, EMFolderView *view) -//{ -// EMFolderTreeModel *model; -// -// if ((flags & CAMEL_FOLDER_NOSELECT) || !path) { -// em_folder_view_set_folder (view, NULL, NULL); -// } else { -// model = em_folder_tree_get_model (emft); -// em_folder_tree_model_set_selected (model, uri); -// em_folder_tree_model_save_state (model); -// -// em_folder_view_set_folder_uri (view, uri); -// } -//} - -static int -check_autosave(void *data) -{ - e_msg_composer_check_autosave(NULL); - - return FALSE; -} - static void view_control_activate_cb (BonoboControl *control, gboolean activate, EMFolderView *view) { @@ -517,87 +229,6 @@ view_on_url (GObject *emitter, const char *url, const char *nice_url, MailCompon e_activity_handler_set_message (priv->activity_handler, nice_url); } -//static void -//view_changed(EMFolderView *emfv, EComponentView *component_view) -//{ -// EInfoLabel *el = g_object_get_data((GObject *)component_view, "info-label"); -// CORBA_Environment ev; -// -// CORBA_exception_init(&ev); -// -// if (emfv->folder) { -// char *name, *title; -// const char *use_name; /* will contain localized name, if necessary */ -// guint32 visible, unread, deleted, junked, junked_not_deleted; -// GPtrArray *selected; -// GString *tmp = g_string_new(""); -// -// camel_object_get(emfv->folder, NULL, -// CAMEL_FOLDER_NAME, &name, -// CAMEL_FOLDER_DELETED, &deleted, -// CAMEL_FOLDER_VISIBLE, &visible, -// CAMEL_FOLDER_JUNKED, &junked, -// CAMEL_FOLDER_JUNKED_NOT_DELETED, &junked_not_deleted, -// CAMEL_FOLDER_UNREAD, &unread, NULL); -// -// selected = message_list_get_selected(emfv->list); -// -// /* This is so that if any of these are -// * shared/reused, we fallback to the standard -// * display behaviour */ -// if (selected->len > 1) -// g_string_append_printf(tmp, ngettext ("%d selected, ", "%d selected, ", selected->len), selected->len); -// -// if (CAMEL_IS_VTRASH_FOLDER(emfv->folder)) { -// if (((CamelVTrashFolder *)emfv->folder)->type == CAMEL_VTRASH_FOLDER_TRASH) { -// g_string_append_printf(tmp, ngettext ("%d deleted", "%d deleted", deleted), deleted); -// } else { -// guint32 num = junked_not_deleted; -// -// if (!emfv->hide_deleted) -// num = junked; -// -// g_string_append_printf (tmp, ngettext ("%d junk", "%d junk", num), num); -// } -// } else if (em_utils_folder_is_drafts(emfv->folder, emfv->folder_uri)) { -// g_string_append_printf(tmp, ngettext ("%d draft", "%d drafts", visible), visible); -// } else if (em_utils_folder_is_sent(emfv->folder, emfv->folder_uri)) { -// g_string_append_printf(tmp, ngettext ("%d sent", "%d sent", visible), visible); -// } else if (em_utils_folder_is_outbox(emfv->folder, emfv->folder_uri)) { -// g_string_append_printf(tmp, ngettext ("%d unsent", "%d unsent", visible), visible); -// /* HACK: hardcoded inbox or maildir '.' folder */ -// } else { -// if (!emfv->hide_deleted) -// visible += deleted - junked + junked_not_deleted; -// if (unread && selected->len <= 1) -// g_string_append_printf(tmp, ngettext ("%d unread, ", "%d unread, ", unread), unread); -// g_string_append_printf(tmp, ngettext ("%d total", "%d total", visible), visible); -// } -// -// message_list_free_uids(emfv->list, selected); -// -// if (emfv->folder->parent_store == mail_component_peek_local_store(NULL) -// && (!strcmp (name, "Drafts") || !strcmp (name, "Inbox") -// || !strcmp (name, "Outbox") || !strcmp (name, "Sent") || !strcmp (name, "Templates"))) -// use_name = _(name); -// else if (!strcmp (name, "INBOX")) -// use_name = _("Inbox"); -// else -// use_name = name; -// -// e_info_label_set_info (el, use_name, tmp->str); -// title = g_strdup_printf ("%s (%s)", use_name, tmp->str); -// e_component_view_set_title(component_view, title); -// g_free(title); -// -// g_string_free(tmp, TRUE); -// camel_object_free(emfv->folder, CAMEL_FOLDER_NAME, name); -// } else { -// e_info_label_set_info(el, _("Mail"), ""); -// e_component_view_set_title(component_view, _("Mail")); -// } -//} - static void view_changed_timeout_remove (EComponentView *component_view) { @@ -911,325 +542,6 @@ impl_quit(PortableServer_Servant servant, CORBA_Environment *ev) return TRUE; } -//static GNOME_Evolution_CreatableItemTypeList * -//impl__get_userCreatableItems (PortableServer_Servant servant, CORBA_Environment *ev) -//{ -// GNOME_Evolution_CreatableItemTypeList *list = GNOME_Evolution_CreatableItemTypeList__alloc (); -// -// list->_length = 2; -// list->_maximum = list->_length; -// list->_buffer = GNOME_Evolution_CreatableItemTypeList_allocbuf (list->_length); -// -// CORBA_sequence_set_release (list, FALSE); -// -// list->_buffer[0].id = "message"; -// list->_buffer[0].description = _("New Mail Message"); -// list->_buffer[0].menuDescription = (char *) C_("New", "_Mail Message"); -// list->_buffer[0].tooltip = _("Compose a new mail message"); -// list->_buffer[0].menuShortcut = 'm'; -// list->_buffer[0].iconName = "mail-message-new"; -// list->_buffer[0].type = GNOME_Evolution_CREATABLE_OBJECT; -// -// list->_buffer[1].id = "folder"; -// list->_buffer[1].description = _("New Mail Folder"); -// list->_buffer[1].menuDescription = (char *) C_("New", "Mail _Folder"); -// list->_buffer[1].tooltip = _("Create a new mail folder"); -// list->_buffer[1].menuShortcut = '\0'; -// list->_buffer[1].iconName = "folder-new"; -// list->_buffer[1].type = GNOME_Evolution_CREATABLE_FOLDER; -// -// return list; -//} - -//static int -//create_item(const char *type, EMFolderTreeModel *model, const char *uri, gpointer tree) -//{ -// if (strcmp(type, "message") == 0) { -// if (!em_utils_check_user_can_send_mail(NULL)) -// return 0; -// -// em_utils_compose_new_message(uri); -// } else if (strcmp(type, "folder") == 0) { -// em_folder_utils_create_folder(NULL, tree); -// } else -// return -1; -// -// return 0; -//} - -//static void -//create_local_item_cb(EUserCreatableItemsHandler *handler, const char *item_type_name, void *data) -//{ -// EMFolderTree *tree = data; -// char *uri = em_folder_tree_get_selected_uri(tree); -// -// create_item(item_type_name, em_folder_tree_get_model(tree), uri, (gpointer) tree); -// g_free(uri); -//} - -//static void -//impl_requestCreateItem (PortableServer_Servant servant, -// const CORBA_char *item_type_name, -// CORBA_Environment *ev) -//{ -// MailComponent *mc = MAIL_COMPONENT(bonobo_object_from_servant(servant)); -// -// if (create_item(item_type_name, mc->priv->model, NULL, NULL) == -1) { -// CORBA_exception_set (ev, CORBA_USER_EXCEPTION, -// ex_GNOME_Evolution_Component_UnknownType, NULL); -// } -//} - -static void -handleuri_got_folder(char *uri, CamelFolder *folder, void *data) -{ - CamelURL *url = data; - EMMessageBrowser *emmb; - - if (folder != NULL) { - const char *reply = camel_url_get_param(url, "reply"); - const char *forward = camel_url_get_param(url, "forward"); - int mode; - - if (reply) { - - if (!strcmp(reply, "all")) - mode = REPLY_MODE_ALL; - else if (!strcmp(reply, "list")) - mode = REPLY_MODE_LIST; - else /* if "sender" or anything else */ - mode = REPLY_MODE_SENDER; - - em_utils_reply_to_message(folder, camel_url_get_param(url, "uid"), NULL, mode, NULL); - } else if (forward) { - GPtrArray *uids; - const char* uid; - - uid = camel_url_get_param(url, "uid"); - if (uid == NULL) - g_warning("Could not forward the message. UID is NULL."); - else { - uids = g_ptr_array_new(); - g_ptr_array_add(uids, g_strdup(uid)); - - if (!strcmp(forward, "attached")) - em_utils_forward_attached(folder, uids, uri); - else if (!strcmp(forward, "inline")) - em_utils_forward_inline(folder, uids, uri); - else if (!strcmp(forward, "quoted")) - em_utils_forward_quoted(folder, uids, uri); - else { /* Just the default forward */ - em_utils_forward_messages(folder, uids, uri); - } - } - } else { - emmb = (EMMessageBrowser *)em_message_browser_window_new(); - /*message_list_set_threaded(((EMFolderView *)emmb)->list, emfv->list->threaded);*/ - /* FIXME: session needs to be passed easier than this */ - em_format_set_session((EMFormat *)((EMFolderView *)emmb)->preview, session); - em_folder_view_set_folder((EMFolderView *)emmb, folder, uri); - em_folder_view_set_message((EMFolderView *)emmb, camel_url_get_param(url, "uid"), FALSE); - gtk_widget_show(emmb->window); - } - } else { - g_warning("Couldn't open folder '%s'", uri); - } - camel_url_free(url); -} - -//static void -//impl_handleURI (PortableServer_Servant servant, const char *uri, CORBA_Environment *ev) -//{ -// if (!strncmp (uri, "mailto:", 7)) { -// if (!em_utils_check_user_can_send_mail(NULL)) -// return; -// -// em_utils_compose_new_message_with_mailto (uri, NULL); -// } else if (!strncmp(uri, "email:", 6)) { -// CamelURL *url = camel_url_new(uri, NULL); -// -// if (camel_url_get_param(url, "uid") != NULL) { -// char *curi = em_uri_to_camel(uri); -// -// mail_get_folder(curi, 0, handleuri_got_folder, url, mail_msg_unordered_push); -// g_free(curi); -// } else { -// g_warning("email uri's must include a uid parameter"); -// camel_url_free(url); -// } -// } -//} - -//static void -//impl_sendAndReceive (PortableServer_Servant servant, CORBA_Environment *ev) -//{ -// em_utils_clear_get_password_canceled_accounts_flag (); -// mail_send_receive (); -//} - -//static void -//impl_upgradeFromVersion (PortableServer_Servant servant, const short major, const short minor, const short revision, CORBA_Environment *ev) -//{ -// MailComponent *component; -// CamelException ex; -// -// component = mail_component_peek (); -// -// camel_exception_init (&ex); -// if (em_migrate (e_get_user_data_dir (), major, minor, revision, &ex) == -1) { -// GNOME_Evolution_Component_UpgradeFailed *failedex; -// -// failedex = GNOME_Evolution_Component_UpgradeFailed__alloc(); -// failedex->what = CORBA_string_dup(_("Failed upgrading Mail settings or folders.")); -// failedex->why = CORBA_string_dup(ex.desc); -// CORBA_exception_set(ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Component_UpgradeFailed, failedex); -// } -// -// camel_exception_clear (&ex); -//} - -//static void -//mc_sync_store_done (CamelStore *store, void *data) -//{ -// MailComponent *mc = (MailComponent *) data; -// -// mc->priv->mail_sync_in_progress--; -//} - -//static void -//mc_sync_store (gpointer key, gpointer value, gpointer user_data) -//{ -// extern int camel_application_is_exiting; -// MailComponent *mc = (MailComponent *) user_data; -// -// mc->priv->mail_sync_in_progress++; -// -// if (!camel_application_is_exiting) -// mail_sync_store (CAMEL_STORE (key), FALSE, mc_sync_store_done, mc); -// else -// mc_sync_store_done (CAMEL_STORE (key), mc); -//} - -//static gboolean -c//all_mail_sync (gpointer user_data) -//{ -// extern int camel_application_is_exiting; -// MailComponent *mc = (MailComponent *)user_data; -// -// if (camel_application_is_exiting) -// return FALSE; -// -// if (!mc->priv->mail_sync_in_progress && session && camel_session_is_online (session)) -// mail_component_stores_foreach (mc, mc_sync_store, mc); -// -// return !camel_application_is_exiting; -//} - -//struct _setline_data { -// GNOME_Evolution_Listener listener; -// CORBA_boolean status; -// int pending; -//}; - -//static void -//setline_done(CamelStore *store, void *data) -//{ -// struct _setline_data *sd = data; -// -// g_return_if_fail (sd->pending > 0); -// -// sd->pending--; -// if (sd->pending == 0) { -// CORBA_Environment ev = { NULL }; -// -// GNOME_Evolution_Listener_complete(sd->listener, &ev); -// CORBA_exception_free(&ev); -// CORBA_Object_release(sd->listener, &ev); -// CORBA_exception_free(&ev); -// if (!sd->status) -// camel_session_set_online(session, sd->status); -// g_free(sd); -// } -//} - -//static void -//setline_check(void *key, void *value, void *data) -//{ -// CamelService *service = key; -// struct _setline_data *sd = data; -// -// if (CAMEL_IS_DISCO_STORE(service) -// || CAMEL_IS_OFFLINE_STORE(service)) { -// sd->pending++; -// mail_store_set_offline((CamelStore *)service, !sd->status, setline_done, sd); -// } -//} - -//int -//status_check (GNOME_Evolution_ShellState shell_state) -//{ -// int status = 0; -// -// switch (shell_state) -// { -// case GNOME_Evolution_USER_OFFLINE: -// status = OFFLINE; -// if (em_utils_prompt_user (NULL, "/apps/evolution/mail/prompts/quick_offline", "mail:ask-quick-offline", NULL)) -// break; -// case GNOME_Evolution_FORCED_OFFLINE: -// /*Network is down so change network state on the camel session*/ -// status = OFFLINE; -// /* Cancel all operations as they wont happen anyway cos Network is down*/ -// mail_cancel_all (); -// camel_session_set_network_state (session, FALSE); -// break; -// case GNOME_Evolution_USER_ONLINE: -// camel_session_set_network_state (session, TRUE); -// status = ONLINE; -// } -// -// return status; -//} - -//static void -//impl_setLineStatus(PortableServer_Servant servant, GNOME_Evolution_ShellState shell_state, GNOME_Evolution_Listener listener, CORBA_Environment *ev) -//{ -// struct _setline_data *sd; -// int status = status_check(shell_state); -// -// /* This will dis/enable further auto-mail-check action. */ -// /* FIXME: If send/receive active, wait for it to finish? */ -// if (status) -// camel_session_set_online(session, status); -// -// sd = g_malloc0(sizeof(*sd)); -// sd->status = status; -// sd->listener = CORBA_Object_duplicate(listener, ev); -// if (ev->_major == CORBA_NO_EXCEPTION) -// mail_component_stores_foreach(mail_component_peek(), setline_check, sd); -// else -// CORBA_exception_free(ev); -// -// if (sd->pending == 0) { -// if (sd->listener) { -// CORBA_Object_release(sd->listener, ev); -// CORBA_exception_free(ev); -// } -// -// g_free(sd); -// -// if (!status) -// camel_session_set_online(session, status); -// GNOME_Evolution_Listener_complete(listener, ev); -// } -//} - -//static void -//impl_mail_test(PortableServer_Servant servant, CORBA_Environment *ev) -//{ -// printf("*** Testing mail interface!! ***\n"); -//} - /* Initialization. */ static void @@ -1316,44 +628,6 @@ mail_component_init (MailComponent *component) // priv->mail_sync_id = 0; } -/* Public API. */ -//MailComponent * -//mail_component_peek (void) -//{ -// static MailComponent *component = NULL; -// -// if (component == NULL) -// component = g_object_new(mail_component_get_type(), NULL); -// -// return component; -//} - -//const char * -//mail_component_peek_base_directory (MailComponent *component) -//{ -// MAIL_COMPONENT_DEFAULT(component); -// -// return component->priv->base_directory; -//} - -//RuleContext * -//mail_component_peek_search_context (MailComponent *component) -//{ -// MAIL_COMPONENT_DEFAULT(component); -// -// setup_search_context(component); -// -// return component->priv->search_context; -//} - -EActivityHandler * -mail_component_peek_activity_handler (MailComponent *component) -{ - MAIL_COMPONENT_DEFAULT(component); - - return component->priv->activity_handler; -} - struct _CamelSession *mail_component_peek_session(MailComponent *component) { MAIL_COMPONENT_DEFAULT(component); @@ -1361,218 +635,6 @@ struct _CamelSession *mail_component_peek_session(MailComponent *component) return session; } -//void -//mail_component_add_store (MailComponent *component, CamelStore *store, const char *name) -//{ -// mc_add_store(component, store, name, NULL); -//} - -/** - * mail_component_load_store_by_uri: - * @component: mail component - * @uri: uri of store - * @name: name of store (used for display purposes) - * - * Return value: Pointer to the newly added CamelStore. The caller is supposed - * to ref the object if it wants to store it. - **/ -//CamelStore * -//mail_component_load_store_by_uri (MailComponent *component, const char *uri, const char *name) -//{ -// CamelException ex; -// CamelStore *store; -// CamelProvider *prov; -// -// MAIL_COMPONENT_DEFAULT(component); -// -// camel_exception_init (&ex); -// -// /* Load the service (don't connect!). Check its provider and -// * see if this belongs in the shell's folder list. If so, add -// * it. -// */ -// -// prov = camel_provider_get(uri, &ex); -// if (prov == NULL) { -// /* EPFIXME: real error dialog */ -// g_warning ("couldn't get service %s: %s\n", uri, -// camel_exception_get_description (&ex)); -// camel_exception_clear (&ex); -// return NULL; -// } -// -// if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE)) -// return NULL; -// -// store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, &ex); -// if (store == NULL) { -// /* EPFIXME: real error dialog */ -// g_warning ("couldn't get service %s: %s\n", uri, -// camel_exception_get_description (&ex)); -// camel_exception_clear (&ex); -// return NULL; -// } -// -// mail_component_add_store(component, store, name); -// camel_object_unref (store); -// -// return store; -//} - -//static void -//store_disconnect (CamelStore *store, void *event_data, void *user_data) -//{ -// camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL); -// camel_object_unref (store); -//} - -//void -//mail_component_remove_store (MailComponent *component, CamelStore *store) -//{ -// MailComponentPrivate *priv; -// -// MAIL_COMPONENT_DEFAULT(component); -// -// priv = component->priv; -// -// /* Because the store_hash holds a reference to each store -// * used as a key in it, none of them will ever be gc'ed, meaning -// * any call to camel_session_get_{service,store} with the same -// * URL will always return the same object. So this works. -// */ -// -// if (g_hash_table_lookup (priv->store_hash, store) == NULL) -// return; -// -// camel_object_ref (store); -// g_hash_table_remove (priv->store_hash, store); -// -// /* so i guess potentially we could have a race, add a store while one -// being removed. ?? */ -// mail_note_store_remove (store); -// -// em_folder_tree_model_remove_store (priv->model, store); -// -// mail_async_event_emit (priv->async_event, MAIL_ASYNC_THREAD, (MailAsyncFunc) store_disconnect, store, NULL, NULL); -//} - -//void -//mail_component_remove_store_by_uri (MailComponent *component, const char *uri) -//{ -// CamelProvider *prov; -// CamelStore *store; -// -// MAIL_COMPONENT_DEFAULT(component); -// -// if (!(prov = camel_provider_get(uri, NULL))) -// return; -// -// if (!(prov->flags & CAMEL_PROVIDER_IS_STORAGE)) -// return; -// -// store = (CamelStore *) camel_session_get_service (session, uri, CAMEL_PROVIDER_STORE, NULL); -// if (store != NULL) { -// mail_component_remove_store (component, store); -// camel_object_unref (store); -// } -//} - -// [KILL-BONOBO] Unused. -//int -//mail_component_get_store_count (MailComponent *component) -//{ -// MAIL_COMPONENT_DEFAULT(component); -// -// return g_hash_table_size (component->priv->store_hash); -//} - -///* need to map from internal struct to external api */ -//struct _store_foreach_data { -// GHFunc func; -// void *data; -//}; - -//static void -//mc_stores_foreach(CamelStore *store, struct _store_info *si, struct _store_foreach_data *data) -//{ -// data->func((void *)store, (void *)si->name, data->data); -//} - -//void -//mail_component_stores_foreach (MailComponent *component, GHFunc func, void *user_data) -//{ -// struct _store_foreach_data data = { func, user_data }; -// -// MAIL_COMPONENT_DEFAULT(component); -// -// g_hash_table_foreach (component->priv->store_hash, (GHFunc)mc_stores_foreach, &data); -//} - -//void -//mail_component_remove_folder (MailComponent *component, CamelStore *store, const char *path) -//{ -// MAIL_COMPONENT_DEFAULT(component); -// -// /* FIXME: implement me. but first, am I really even needed? */ -//} - -//EMFolderTreeModel * -//mail_component_peek_tree_model (MailComponent *component) -//{ -// MAIL_COMPONENT_DEFAULT(component); -// -// return component->priv->model; -//} - -//CamelStore * -//mail_component_peek_local_store (MailComponent *mc) -//{ -// MAIL_COMPONENT_DEFAULT (mc); -// mc_setup_local_store (mc); -// -// return mc->priv->local_store; -//} - -/** - * mail_component_get_folder: - * @mc: - * @id: - * - * Get a standard/default folder by id. This call is thread-safe. - * - * Return value: - **/ -//struct _CamelFolder * -//mail_component_get_folder(MailComponent *mc, enum _mail_component_folder_t id) -//{ -// g_return_val_if_fail (id <= MAIL_COMPONENT_FOLDER_LOCAL_INBOX, NULL); -// -// MAIL_COMPONENT_DEFAULT(mc); -// mc_setup_local_store(mc); -// -// return mc_default_folders[id].folder; -//} - -/** - * mail_component_get_folder_uri: - * @mc: - * @id: - * - * Get a standard/default folder's uri. This call is thread-safe. - * - * Return value: - **/ -//const char * -//mail_component_get_folder_uri(MailComponent *mc, enum _mail_component_folder_t id) -//{ -// g_return_val_if_fail (id <= MAIL_COMPONENT_FOLDER_LOCAL_INBOX, NULL); -// -// MAIL_COMPONENT_DEFAULT(mc); -// mc_setup_local_store(mc); -// -// return mc_default_folders[id].uri; -//} - void mail_component_show_logger (gpointer top) { @@ -1581,5 +643,3 @@ mail_component_show_logger (gpointer top) eni_show_logger(logger, top, MAILER_ERROR_TIME_OUT_KEY, MAILER_ERROR_LEVEL_KEY); } - -BONOBO_TYPE_FUNC_FULL (MailComponent, GNOME_Evolution_MailComponent, PARENT_TYPE, mail_component) diff --git a/mail/mail-mt.c b/mail/mail-mt.c index 1f367e758f..1853c49ce8 100644 --- a/mail/mail-mt.c +++ b/mail/mail-mt.c @@ -255,6 +255,8 @@ mail_msg_unref (gpointer msg) return; } else { activity = mail_msg->priv->activity; + if (activity != NULL) + g_object_ref (activity); error = mail_msg->priv->error; } @@ -266,7 +268,7 @@ mail_msg_unref (gpointer msg) mail_async_event_emit ( mail_async_event, MAIL_ASYNC_GUI, (MailAsyncFunc) end_event_callback, - NULL, g_object_ref (activity), error); + NULL, activity, error); } /* hash table of ops->dialogue of active errors */ |