2000-11-30 Not Zed <NotZed@HelixCode.com>
* mail-ops.c (cleanup_load_folder): Set threaded view before
setting the folder (cleanup some flash ons tartup).
* message-list.c (message_list_init): Initialise a mempool for uid
string storage.
(new_id_from_uid): Added messagelist arg, allocate strings from
uid_pool.
(new_id_from_subject): Same. Fixed all callers.
(remove_node_diff): Dont free uid here.
(build_flat_diff): Nor here.
(clear_tree): Flush the mempool, rather than freeing the id's
directly.
(free_tree_ids): Removed, no longer required.
(free_tree_ids): Likewise.
(message_list_init): Dont connect to the table destroy signal
anymore to free the uid table.
(message_list_destroy): Free the uid pool here.
(*): Use accessors for messageid stuff.
(content_is_attachment): Removed, no longer required.
(ml_tree_value_at): Get the attachment flag directly from the
summary.
(ml_tree_value_at): For 'fake' nodes, try and do something better
than "?" for from, to, and size.
(subtree_size): New function, add up the total size of a subtree.
(subtree_earliest): Get the earliest date from a subtree.
(ml_tree_value_at): Return earliest date sent/received for fake
nodes.
(ml_tree_value_at): Return something to mark a fake subject line
as a fake subject, although i dont know, i guess this buggers up
sorting ...
(subtree_size): Check the info node is still there.
(subtree_earliest): Same here.
(subtree_unread): And here. The info node might vanish if the
folder has changed/is changing and we try and redraw stuff while
its doing it.
(message_list_drag_data_get): Use accessors.
svn path=/trunk/; revision=6732
2000-11-29 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (do_save_messages): Use camel a bit more to help us
out. Don't create the file ourselves, treat it as a CamelFolder so
we don't have to worry about formatting.
svn path=/trunk/; revision=6724
* component-factory.c (owner_set_cb): Wait until after setting up
the local storage to find the Drafts/Outbox/Sent folders.
* mail-ops.c (do_setup_folder): Use the file: store rather than
mbox:.
svn path=/trunk/; revision=6704
2000-11-28 Jeffrey Stedfast <fejj@helixcode.com>
* folder-browser-factory.c: Added the SaveAs bonobo menu verb
thingy.
* mail-callbacks.c (save_msg): New callback for saving messages.
(save_msg_ok):
* folder-browser.c (on_right_click): Add a Save Ass menu item.
* mail-ops.c (cleanup_save_messages): Save all emails to the path
given.
svn path=/trunk/; revision=6699
2000-11-21 Jeffrey Stedfast <fejj@helixcode.com>
* mail-config.c (mail_config_view_source): New function to return
if user wants to view message source.
(mail_config_set_view_source): New function to set whether the
view wants to view source.
* mail-ops.c (mail_do_view_message_sources): Removed. We're not
gonna view-source this way anymore.
* folder-browser-factory.c: Removed the ViewSource bonobo verb
from the Message menu.
(control_activate): Added ViewSource.
* folder-browser.c (on_right_click): Removed Message menu item to
view message source.
(folder_browser_toggle_view_source): New callback to set whether
or not the MailDisplay shows the raw message or the pretty-ified
message.
* mail-callbacks.c: Removed view_source.
* mail-display.c (redisplay): If toggle_raw is set then display
the raw message else display the pretty formatted message.
(mail_display_redisplay): New function to force the redisplay of a
message.
* mail-format.c (mail_format_raw_message): New function to
write the raw message data.
svn path=/trunk/; revision=6639
2000-11-17 Jeffrey Stedfast <fejj@helixcode.com>
* mail-format.c (mail_generate_reply): Use the new quote_message
function and make it start with "On %s, %s wrote:" since people
seem to want that.
* mail-ops.c (cleanup_forward_messages): Use the new quote_message
function.
* mail-tools.c (mail_tool_quote_message): New convenience function
to quote a message body (since both the reply and forward code do
similar quoting)
svn path=/trunk/; revision=6605
2000-11-16 Jeffrey Stedfast <fejj@helixcode.com>
* folder-browser-factory.c: Added the MessageViewSource bonobo
menu verb.
* mail-ops.c (mail_do_save_messages): New async function to save
messages as individual files in a given path.
svn path=/trunk/; revision=6596
2000-11-15 Jeffrey Stedfast <fejj@helixcode.com>
* folder-browser-factory.c: Added a new Forward as Attachment
bonobo menu item verb.
* mail-view.c (view_forward_msg): Updated to reflect changes to
mail_do_forward_message(). It now forwards the message without
attaching it - is this what we want?
* mail-ops.c (mail_do_view_message_sources): New async function to
display message source dialog windows.
(setup_forward_messages): If we were asked not to forward the
message(s) as attachment(s) and the user chose more than a single
message, then default to making each message an attachment.
(cleanup_forward_messages): If we aren't forwarding the message as
an attachment, then quote the text and set the composer's body
with it.
* mail-callbacks.c (view_source): New callback to view the message
source of all messages that are currently selected.
(forward_attach): New callback to forward a message as an
attachment (forward_msg is now for forwarding a message without it
being an attachment).
(forward_message): Convenience function for forwarding messages.
svn path=/trunk/; revision=6585
2000-11-07 Jeffrey Stedfast <fejj@helixcode.com>
* folder-browser.c (search_full_clicked): Updated to use the
ESearchBar object rather than the previously used search widgets.
(search_full): Same.
(search_save): Same. Also use enums to make it a little easier to
read now that we have to have enums anyway.
(folder_browser_search_menu_activated): New ESearchBar menu
callback.
(folder_browser_search_query_changed): New ESearchBar query
callback. Replaces search_set()
(folder_browser_clear_search): Updated to use the ESearchBar
object rather than the previously used search widgets.
(folder_browser_gui_init): Don't hand construct a search widget,
use the new ESearchBar convenience widget.
* mail-ops.c (cleanup_load_folder): Updated to reflect changes to
FolderBrowser.
svn path=/trunk/; revision=6490
2000-11-03 Not Zed <NotZed@HelixCode.com>
* mail-view.c: Added mail-display.h.
* mail-autofilter.c: Removed unecessary headers. Who ran indent
over this code? Sigh.
* mail-ops.c (display_message_input_s): Added messagedisplay.
(mail_do_display_message): Added messagedisplay arg.
(mail_do_display_message): Dont bother doing another thread when
we know we dont have a uid.
(): Added folder-browser.h to headers. Sigh.
* folder-browser-factory.c (control_activate): Setup the
viewthreaded callback to the folder_browser function.
* folder-browser.c (my_folder_browser_init): Connect to
right_click of etable of the messagelist here.
(on_right_click): Changed for argument changes.
(folder_browser_toggle_threads): Changed to take a fb, and to set
threaded mode on the messagelist.
(my_folder_browser_init): Connect also to the double_click signal.
(my_folder_browser_init): Connect to the message_selected signal
of the message_list.
(on_message_selected): Signal handler for message selected.
(my_folder_browser_init): Fix for change to message_list_new().
* message-list.h: Dont include folder-browser.h.
(message_list_toggle_threads): Moved into folder-browser.h.
(struct _MessageList): Removed folderbrowser.
* mail.h: Dont include folder-browser.h here either, but
mail-types.h instead.
Moved prototypes moved into folder-browser.c into
folder-browser.h. (vfolder_*, filter_*).
* mail-display.h: Dont include folder-browser.h here, but
mail-types.h and specific camel headers.
* message-thread.c (sort_node): Invert the sort order logic so the
list is sorted in mailbox order, not reverse mailbox order.
* message-list.c (free_tree_ids): Fix a merge foo.
(remove_node_diff): Removed unused row argument. Fixed callers/prototype.
(clear_tree): pre_change on the removal of the root node.
(build_flat): Only perform pre_change if we are rebuilding the
whole lot. For incremental change let etable do its thing.
(build_tree): Likewise for building the tree view. If making
incremental updates, do them as we build it.
(vfolder_subject):
(vfolder_sender):
(vfolder_recipient):
(filter_subject):
(filter_sender):
(filter_recipient):
(filter_mlist):
(on_right_click): Moved to folder-browser.c, where they belong.
(message_list_init): Dont connect to right_click anymore.
(message_list_toggle_threads): Moved to folder-browser.c, renamed.
(on_double_click): Moved to folder-browser.c
(on_click): Set the flags directly, rather than in anothre thread,
which is just not necessary.
(message_list_class_init): Added a new signal 'message_selected',
to indicate when a message was selected.
(on_cursor_change_idle): Emit a signal, rather than directly
triggering the display update.
(select_row): Removed, no longer used.
(idle_select_row): And this too.
(select_msg): Removed as well.
(message_list_select): Emit a signal, rather
thandisplaying/clearing the mail-display directly.
(mark_msg_seen): Moved to folder-browser.c
(message_list_new): Removed folderbrowser argument.
svn path=/trunk/; revision=6365
and do a first cut at folder tree highlighting (for IMAP/news
only).
* mail-ops.c (do_fetch_mail): For imap (sigh, we *still* shouldn't
be hardcoding that), rescan the store's folder tree, rescan each
changed folder for new messages, and update the shell folder tree.
(do_scan_subfolders): Update for component-factory.c changes, and
set folder display names and highlights appropriately when
building the storage.
* component-factory.c (add_storage): Make this static (was
mail_add_new_storage). Use camel_service_get_name for the name
rather than url->host. (Among other things, this lets you use a
single machine as both an IMAP server and a news server.)
(mail_lookup_storage): Hash storages based on their CamelStore
rather than the URL.
(factory_destroy): Disconnect each of the CamelStores in the
storages_hash.
* subscribe-dialog.c (cleanup_subscribe_folder):
* mail-vfolder.c (vfolder_refresh): Pass "highlighted" flag to
evolution_storage_new_folder
svn path=/trunk/; revision=6342
2000-11-01 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (mail_op_report_status): Don't call the default
logging function.
(do_fetch_mail): Set the logfile and don't pass the logfile to
filter_driver_set_status_func - it's purpose has been altered.
(do_filter_ondemand): Same.
svn path=/trunk/; revision=6341
2000-11-02 Not Zed <NotZed@HelixCode.com>
** Merged in camel-incremental-branch.
* mail-format.c (mail_get_message_body): Jeff! Sigh.
We should definetly not be strduping the
content, it has already been copied and duplicated. Look at
get_data_wrapper_text.
svn path=/trunk/; revision=6337
2000-10-25 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (do_send_mail): Don't forget to unref the
FilterDriver.
* mail-callbacks.c (apply_filters): New callback for applying
on-demand filters. (removed the old on-demand filters callback).
* mail-ops.c (do_filter_ondemand): Rewrote to apply "incoming"
filters to all selected messages.
(mail_do_filter_ondemand): No longer takes a FilterContext
argument or a destination folder argument (why did we ever need
this last one??) but now takes a uids argument.
* folder-browser-factory.c: Add a MessageApplyFilters menu item.
svn path=/trunk/; revision=6190
2000-10-18 Not Zed <NotZed@HelixCode.com>
* folder-browser.c (folder_browser_gui_init): No, we REALLY dont
want to perform an immediate search as the keys are pressed.
* mail-display.c (on_object_requested): Kill a minor warning with
a cast.
* mail-config.c: Include mising ctype.h to kill a warning.
* message-thread.c (main): Fixed the test case for api changes.
* message-list.c (message_list_drag_data_get): Set some flags to
get_folder(). I dont even think this will work because
mail_tool_get_folder doesn't handle file url's.
* mail-vfolder.c (vfolder_uri_to_folder): Pass appropriate flags.
* mail-ops.c (do_setup_folder): Pass appropriate flags. Hmm,
whats the difference between setup and create. *shrug*
(do_create_folder): Pass appropriate flags to get_folder. Needs a
way to specify the index flag.
* mail-tools.c (mail_tool_get_folder_from_urlname): Changed create
to flags argument.
(mail_tool_get_local_inbox_url): Add an index argument.
(mail_tool_get_local_inbox): honour index flag.
(mail_tool_get_inbox): Changed for api change.
(mail_tool_uri_to_folder): Fixed calls to store_get_folder();
* mail-local.c (load_metainfo): Added an indexed field to the metainfo.
(save_metainfo): And save it too.
(do_reconfigure_folder): Honour index flag when creating the new
folder. Do not open the old folder with an index at all.
(mail_local_map_uri): Add an index argument - tells if the mbox is
indexed.
(mail_tool_local_uri_to_folder): Create & pass flags properly.
(#include gnome.h): Dont include all of gnome, just what we use,
and explicity include xml-memory, so we get xmlFree().
svn path=/trunk/; revision=5979
2000-10-12 Not Zed <NotZed@HelixCode.com>
* message-list.c (message_list_setup_etable): Duh, fix the test
for the folder name, strstr != strcmp is it.
2000-10-10 Not Zed <NotZed@HelixCode.com>
* message-list.c (folder_to_cachename): Removed, changed callers
to use mail_config_folder_to_cachename instead.
* mail-config.c (mail_config_folder_to_cachename): New utility
function to get a cache name for a folder.
* mail-tools.c (mail_tool_do_movemail): Changed to return the path
to the mbox, rather than opening a folder of it.
* mail-ops.c (mail_incorporate_messages): Dont bother making the
pseudo messageinfo, filder_driver_filter_message will do it for
us.
(report_status): Callback to report status of filtering operation.
(do_fetch_mail): Changed significantly - for the api changes to
the filtering system. Also now incorporates a mailbox file
directly, without having to import it into a camel folder first.
(mail_incorporate_messages): Removed entirely, no longer needed.
* mail-vfolder.c (vfolder_refresh): Fix for context api changes.
(vfolder_uri_to_folder): Likewise.
* folder-browser-factory.c (create_ondemand_hooks): Changed for
api changes. Also only adds demand filters to the menu (fixed a
small logic bug).
svn path=/trunk/; revision=5883
2000-10-10 Chris Toshok <toshok@helixcode.com>
* mail-ops.c (setup_scan_subfolders): add a ref to input->storage
here so that the ref/unref pattern more closely matches other
mail-ops. also, this keeps the storage from being freed when we
hit the unref in cleanup_scan_subfolders, which is important
because we maintain a reference to it in the storage_hash in
component-factory.c
* subscribe-dialog.h: add storage field.
* subscribe-dialog.c (subscribe_folder_info): new function,
subscribe to a folder given it's CamelFolderInfo, and add it to
the shell - we're generating a path from the name of the folder
which is bad.
(unsubscribe_folder_info): same (except we unsubscribe and remove
from the shell).
(storage_selected_cb): unref the currently selected storage.
(subscribe_dialog_destroy): unref the currently selected storage.
(subscribe_dialog_construct): sc->storage = NULL.
* component-factory.c (mail_lookup_storage): new function, to look
up a EvolutionStorage corresponding to a CamelService. we ref the
EvolutionStorage before passing it back.
(mail_add_new_storage): insert the storage into storages_hash if
result is EVOLUTION_STORAGE_OK.
* mail.h: add prototype for mail_lookup_storage.
svn path=/trunk/; revision=5830
2000-10-06 Not Zed <NotZed@HelixCode.com>
* mail-search-dialogue.c: New widget, full search dialogue for
mail.
* folder-browser.c (search_set): If we click on custom search, run
the full search dialogue.
(folder_browser_gui_init): Add a button to perform a full search.
(search_full): Bring up the mail search dialogue asynchronously.
(search_full_clicked): Handle search options.
(folder_browser_destroy): Free the saved rule if there is one
there.
(search_options[]): Added a custom option option - brings up the
full search dialogue.
(search_set): Disable the search entry if we are doing a full
search.
* mail-vfolder.c (vfolder_create_storage): Yay, finally
depeterised this stuff.
(vfolder_uri_to_folder): Removed an irrelevant comment.
* mail-callbacks.c (filter_edit): And here.
* mail-ops.c (do_fetch_mail): And here too.
* mail-autofilter.c (filter_gui_add_from_message): Fixed call to
context_load.
(filter_gui_add_for_mailing_list): And here too.
* folder-browser-factory.c (create_ondemand_hooks): Remove that
ondemand callback snot.
2000-10-05 Not Zed <NotZed@HelixCode.com>
* message-list.c (message_list_init_etable): Build the etable once
we know what folder we are going to use.
(save_header_state): Save the header spec to a cache file.
(message_list_destroy): Save the header spec.
(message_list_setup_etable): Setup the etable spec for this
folder, from a saved version if one exists, or to suit the folder
type (sent/received).
(message_list_set_folder): Setup the etable here once we have a folder.
svn path=/trunk/; revision=5798
2000-10-08 Miguel de Icaza <miguel@helixcode.com>
* mail-ops.c (mail_incorporate_messages): Tag string for translation
(do_flag_messages): ditto.
svn path=/trunk/; revision=5784
2000-10-08 Miguel de Icaza <miguel@helixcode.com>
* mail-threads.c (pipe_write): Repeates writes on EINTRS.
(pipe_read): Repeats reads on EINTRS.
(mail_operation_queue): Use pipe_write
(mail_op_set_percentage): ditto.
(mail_op_hide_progressbar): ditto.
(mail_op_show_progressbar): ditto.
(mail_op_set_message): ditto.
(mail_op_get_password): ditto.
(mail_op_error): ditto.
(mail_op_forward_event): ditto.
(mail_operations_terminate): ditto.
(dispatch): use pipe_read.
(dispatch): use pipe_write
(dispatch): ditto.
* mail-ops.c (mail_incorporate_messages): Only show message being
incorporated every 2 seconds, to avoid a bunch of CORBA round trips.
(do_transfer_messages): ditto.
(do_forward_messages): ditto.
svn path=/trunk/; revision=5783
2000-10-07 Miguel de Icaza <miguel@helixcode.com>
* mail-ops.c (do_fetch_mail): Move the functionality to
incorporate messages into mail_incorporate_messages.
(mail_load_evolution_rule_context): New function. Move the
functionality for loading the context rules to its own function.
svn path=/trunk/; revision=5782
2000-10-06 Chris Toshok <toshok@helixcode.com>
* mail-ops.c (do_scan_subfolders): set the @subscribed_only
parameter to TRUE, since the subscribe UI is the only interface
that should show unsubscribed groups.
svn path=/trunk/; revision=5768
* mail-ops.c (mail_do_scan_subfolders, etc): Update for
CamelFolderInfo changes.
* message-list.c (message_list_destroy): Don't save_tree_state if
there's no folder associated with the MessageList.
* folder-browser.c (folder_browser_set_uri): Only call
mail_do_load_folder if the URI is not "".
svn path=/trunk/; revision=5664
2000-09-28 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (do_send_queue): Messages should be appended to Sent
as Seen.
(do_send_mail): Same.
svn path=/trunk/; revision=5622
2000-09-27 Jeffrey Stedfast <fejj@helixcode.com>
Note: We need a configuration option to specify whether to log
filtering actions or not.
* mail-ops.c (do_filter_ondemand): Updated to pass a log file
pointer to filter_driver_run.
(do_fetch_mail): Same.
(mail_do_fetch_mail): Fixed a compiler warning.
svn path=/trunk/; revision=5604
2000-09-27 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (do_filter_ondemand): If the message has been
deleted, don't try filtering it - skip to the next message.
Fixes bugzilla bug #639.
svn path=/trunk/; revision=5601
* mail-ops.c: CamelException is not for compile-time errors.
Replace lots of argument checks in setup_ functions with
g_return_if_fails in the public functions. Also remove some
prototypes that weren't needed because they were for static
functions that are defined before they're used.
svn path=/trunk/; revision=5576
* mail-ops.c (do_fetch_mail): Don't get_message_flags, because
POP doesn't support it and it's pointless anyway since we're
setting deleted, not toggling it. call camel_folder_sync with
expunge=TRUE so that the deletions are actually recorded.
svn path=/trunk/; revision=5450
fix it again.
2000-07-11 Dan Winship <danw@helixcode.com>
* mail-ops.c (real_send_mail): Set the post_send_data flag
rather than toggling it. (Maybe we'll need more control
over it later, but for now, the only flag we set is
"replied", and we want that set, not toggled.)
svn path=/trunk/; revision=5445
2000-09-14 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (do_fetch_mail): Only use the cache if the user plans
to keep_on_server.
svn path=/trunk/; revision=5422
2000-09-12 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (do_fetch_mail): Was trying to unhook an event from
the wrong folder - oops.
svn path=/trunk/; revision=5356
2000-09-11 Jeffrey Stedfast <fejj@helixcode.com>
* mail-callbacks.c (run_filter_ondemand): Updated to use the new
mail_do_filter_ondemand.
* mail-ops.c (do_fetch_mail): Update to use the new
filter_driver_run args.
(do_filter_ondemand): Updated to use the new filter_driver_run
args.
(mail_do_filter_ondemand): Take a FilterContext as a argument
instead of a driver as we need to destroy the filter inside the
do_filter_ondemand function and things'd get messy.
svn path=/trunk/; revision=5347