2001-02-15 Jeffrey Stedfast <fejj@ximian.com>
* message-list.c: Wrapped the address compare functions in a
#ifdef
(address_compare): #ifdef the use of the smart address sorting
code and provide a #else for using g_strcasecmp().
svn path=/trunk/; revision=8242
2001-02-12 Not Zed <NotZed@Ximian.com>
* message-list.c (build_tree): if doing a full update, save the
cursor pos and restore it afterwards.
(on_cursor_activated_cmd): Copy the current_uid to a new string.
I dont know why this is required, but it is.
(message_list_destroy): Free the cursor_uid as we're done with it.
(build_flat): IF the current uid disappeared from the list, then
unset the message.
(build_tree): Likewise.
svn path=/trunk/; revision=8199
* mail-local.c: Updates for CamelStore changes, small memory leak
fixes.
(lookup_folder): Removed (and moved into the reconfigure code)
since this method no longer exists in CamelStore.
(do_reconfigure_folder, etc): Update the info in the
MailLocalStore after reconfiguring.
(mail_local_lookup_folder): Removed
* local-config.glade: fix padding of the label_format
* message-list.c (ml_tree_value_at): Don't keep message infos
reffed across calls, since this can cause badness after a
reconfigure. Instead, just strdup the needed values and free those
on the next call.
* mail-tools.c (mail_tool_get_root_of_store): Unused, remove.
(mail_tool_get_inbox): use camel_store_get_inbox.
* evolution-outlook-importer.c (load_file_fn):
* evolution-mbox-importer.c (load_file_fn): Use
mail_tool_get_local_inbox() instead of mail_importer_get_folder()
* mail-importer.c (mail_importer_get_folder): Removed
svn path=/trunk/; revision=8147
2001-02-02 Not Zed <NotZed@Ximian.com>
* mail-send-recv.c (mail_send_receive): Cleaned up so we dont add
an unecessary level of indenting.
* message-list.c (ml_tree_value_at): For collapsed tree nodes,
scan the collapses nodes for the unread and status information.
Since we dont really have fake nodes anymore.
2001-01-30 Ian Campbell <ijc25@cam.ac.uk>
* message-list.c: Add support for new icons for being
read/unread for fake root messages on threads.
svn path=/trunk/; revision=7942
2001-01-29 Not Zed <NotZed@Ximian.com>
* message-list.c (tree_equal): Debug function to compare the tree
we think we have, after an incremental update.
(build_tree): Check the tree after we've built it.
* mail-mt.c (mail_get_password): If we are being called from the
main gui thread, then just call the dialogue directly. Ideally we
dont want this anyway but lets handle the case nicely.
(mail_get_password): Try locking around the password request, to
single-queue any password requests.
(mail_msg_init): Push an exit handler to clean it up on completion.
* mail-send-recv.c (receive_update_got_store): New function called
when the store has been retrieved asynchronously.
(mail_send_receive): Get the store asynchronously. This was
causing problems where the password dialogue would try and be
called from the main thread via a message.
* mail-ops.c (mail_get_store): New function to get a store
(a)synchronously. More or less taken from subscribe-dialog, which
i will remove later.
(mail_scan_subfolders): Try running the scan subfolder thing
asynchronously, to help startup time. Not sure if this will work,
but presumably the shell can handle the folders appearing later
ok.
svn path=/trunk/; revision=7886
2001-01-26 Not Zed <NotZed@Ximian.com>
* message-list.c (build_tree): Define BROKEN_ETREE again, till we
get this stuff fixed better.
2001-01-25 Not Zed <NotZed@Ximian.com>
* folder-browser.c: Moved teh "sender contains" item to the end of
the list, so the gui doesn't suddenly change on everyone. Fixed
the sender-contains search string to be a valid s-exp (ha, didn't
test it even once eh ettore?!)
(search_save): Dont have the sender contains as the default case
(which well, never gets called anyway), oops i guess i should've
reviewed the patch a little more.
svn path=/trunk/; revision=7835
2001-01-25 Christopher James Lahey <clahey@helixcode.com>
* message-list.c: Made the message list pay attention to the
"cursor_activated" signal instead of the "cursor_change" signal.
svn path=/trunk/; revision=7812
2001-01-23 Not Zed <NotZed@Ximian.com>
* message-list.c (build_tree): Try turning off the BROKEN_ETREE
thing. It seems to work ok (better?) now, but if its still broken
i'll remove it again for the next release.
svn path=/trunk/; revision=7740
2001-01-22 Not Zed <NotZed@Ximian.com>
* component-factory.c (owner_set_cb): remove a warning with
conditional news compilation.
* mail-ops.h: Cleaned up the header list.
* folder-browser-factory.c: Replace the old get_send mail with the
new one (button).
* mail-ops.c (set_x_mailer):
(mail_load_evolution_rule_context):
(mail_do_fetch_mail):
(mail_do_filter_ondemand):
(mail_send_mail_old):
(mail_do_send_queue): All removed, (for) now lives in mail-send-recv.c.
(load_context):
(setup_filter_driver):
(filter_get_folder):
(mail_filter_folder):
(mail_fetch_mail):
(mail_update_subfolders):
(mail_send_mail):
(mail_send_queue): New equivalents of all these fundtions, moved
from mail-send-recv.c ...
(mail_filter_on_demand): Moved here too.
(mail_load_filter_context): Export this.
* mail-callbacks.c (apply_filters): Use the new
mail_filter_on_demand() call.
(send_receieve_mail): Use mail_send_receive to do the work. Add a
little error handling here that used to be elsewhere.
(send_queued_mail): Removed.
(fetch_mail): Removed.
(select_first_unread): #ifdef'd this out. Not sure if this still
makes sense, but it doesn't get run right now anyway.
(composer_postpone_cb): Fix the setting of message flags. You
dont need to get them first, ever.
* mail-send-recv.c (mail_send_message): Dont use
mail_tool_send_via_transport anymore (it does nothing useful).
* mail-tools.c (mail_tool_camel_lock_up): Turned into a noop.
(mail_tool_camel_lock_down): And here too.
(mail_tool_move_folder_contents): Removed from the code (hasn't
bene used for ages).
(mail_tool_send_via_transport): Removed, it doesn't save anything.
svn path=/trunk/; revision=7702
2001-01-21 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (message_list_get_layout): Added
draw-focus="true" and selection-mode="browse" attributes to the
ETableSpecification.
(message_list_construct): Removed setting the "draw_focus"
argument since it doesn't exist any more.
svn path=/trunk/; revision=7674
2001-01-15 Christopher James Lahey <clahey@ximian.com>
* message-list.c, message-list.h: Change from using filters for
date and size to using e_cell_date and e_cell_size. Moved a bunch
of includes from the message-list.h to the message-list.c.
svn path=/trunk/; revision=7524
2001-01-15 Miguel de Icaza <miguel@ximian.com>
* mail-callbacks.c (configure_mail): Set the default button to
`Yes' here.
svn path=/trunk/; revision=7498
2001-01-12 Christopher James Lahey <clahey@helixcode.com>
* message-list.c: Changed filter_date and filter_size to match the
changes in gal.
svn path=/trunk/; revision=7466
2001-01-06 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (message_list_select): Made it so that going to
the next or previous message in the list will at least move one
message, even if the current message matches the query. This
makes 'n' go to the next unread message, even if the current
message is unread.
svn path=/trunk/; revision=7288
2001-01-04 Not Zed <NotZed@HelixCode.com>
* mail-ops.c (mail_do_send_mail): Removed old implementation.
* folder-browser.c (do_message_selected): If we haven't got a real
uid, then clear the display instead.
* message-list.c (message_list_drag_data_get): Use new save
message function, and also wait for it to finish before
continuing.
(folder_changed):
(message_changed): Use mail_proxy_event instead of
mail_do_forward.
(mail_regen_list): New iplementation to replace the old.
: remove <gnome.h> from headers. Dont define timeit by default.
(main_folder_changed):
(message_list_set_folder):
(message_list_set_threaded):
(message_list_set_search):
(message_list_hide_add):
(message_list_hide_uids):
(message_list_hide_clear): Use mail_regen_list instead of
mail_do_regenerate_messagelist.
(mail_do_regenerate_messagelist): Removed the old stuff. No
functionality changed yet, just using different thread stuff.
* mail-callbacks.c (save_msg_ok): Use new save message function.
* component-factory.c (create_view):
(add_storage): Use mail_scan_subfolders to build the folder info.
(create_folder): Use new implementation with our own callback.
(owner_set_cb): Changed b ack to use mail_get_folder, but now wait
for it to finish. This will let any gui still run, but also gives
us the required synchronous operation.
(got_folder): Callback for when the folder has been opened.
* mail-ops.c (mail_get_folderinfo): New function to just get the
folder info in another thread.
(mail_scan_subfolders): New scan subfolder implementation that
uses mail_get_folderinfo.
(mail_do_scan_subfolders): Removed old implementation.
(mail_create_folder): Nerw implementation to create a folder, only.
(mail_do_create_folder): Removed old implementation.
(mail_save_messages): New implementation, fixes a couple of minor
problems, and now provides a return so it can be waited on. Also
check that the writes worked, etc.
(mail_do_save_messages): Remove previous implementation.
(mail_do_flag_messages): Removed, nothing uses it.
(mail_do_flag_messages): Removed, nothing uses it anymore.
(mail_get_folder): REturn the operation id, so callers can wait
for it.
(sync_folder_desc):
(expunge_folder_desc): Add describe functions so we know what its
doing.
(mail_send_mail): More generic implementation of sending mail.
* mail-mt.c (mail_msg_new): Lock around seq increment. And insert
each new message into a hash table of active messages.
(mail_msg_init): Init the active message table.
(mail_msg_free): Remove the message from the active message table.
(mail_msg_wait): New function, waits for a message to be
processed, by id.
(mail_msg_check_error): Dont display the error if it is a
user-cancelled operation.
(mail_proxy_event): new implementation of mail_op_forward_event.
Only real difference is it uses the new thread stuff, and you can
wait for it to finish if you want.
(mail_proxy_event): If we're already in the main thread, just call
the function.
svn path=/trunk/; revision=7246
2000-12-24 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (filter_date): Changed this to format times in 12
hour time instead of 24 hour time.
svn path=/trunk/; revision=7160
2000-12-24 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (filter_date): Changed this to do different
formatting of dates within the last week.
svn path=/trunk/; revision=7157
2000-12-23 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (filter_date): Changed this to do different
formatting of dates based on the current time.
svn path=/trunk/; revision=7140
2000-12-23 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (message_list_get_layout): Added titles to the
pixbuf columns.
svn path=/trunk/; revision=7139
2000-12-16 Not Zed <NotZed@HelixCode.com>
* message-list.c (build_tree): Always use the slow (full-update)
version of the tree update code, to get around a bug(?) in etree.
(build_flat): Likewise.
2000-12-15 Not Zed <NotZed@HelixCode.com>
* mail-display.c (write_data_to_file): Dont blindly convert all
parts to utf8, e.g. image/jpg. We only convert text/* parts, and
only then if required.
2000-12-14 Not Zed <NotZed@HelixCode.com>
* component-factory.c (create_view): cast over a warning.
* folder-browser-factory.c: Add verbs for hide functions.
* message-list.c (message_list_hide_clear):
(message_list_hide_uids):
(message_list_hide_add): Some api renaming.
(message_list_hide_add): Allow ML_HIDE_SAME to be passed to mean
not to change the upper/lower range at all.
(hide_save_state): Save the state of the hide list to stable
storage.
(hide_load_state): Load the state of hte hide list.
(message_list_set_folder): Load/save the state of the folder if it
is changed/set.
(message_list_destroy): Save the state of the folder hide list
when done.
(save_tree_state): If we wrote out an empty state file, simply
remove it instead.
* folder-browser.c (on_right_click): Add some hide menus.
(hide_read): Hide read messages.
(hide_deleted): Hide deleted messages.
(hide_selected): Hide selected/current message.
(hide_none): Show all hidden messages.
(on_right_click): Lock around accesses to the message (inside
mlist_detect_magic).
(on_right_click): Free the mailing list name.
2000-12-13 Not Zed <NotZed@HelixCode.com>
* folder-browser.c (on_right_click): Add camel locking since we
call it directly. Whoever heard of a lock you 'down' to unlock?
* message-list.c (mail_do_regenerate_messagelist): Added hide
expression, messages to hide. Fixed all callers.
(do_regenerate_messagelist): IF we have a hide expression, search
and remove those from the uid list. If we have a hide range,
apply that afterwards.
(cleanup_regenerate_messagelist): Handle freeing the hide uid
temporary data, if required.
(message_list_destroy): Free hide data, also lock around all camel
object stuff.
(message_list_length): New function to get the number of messages
avaialble to be hidden by range.
(message_list_set_hide): Set the hide expression and range.
Issue: Should hiding be remembered?
(message_list_unhide_all): Turn off all hiding.
(message_list_hide_uids): Hide a list of uid's.
svn path=/trunk/; revision=7061
2000-12-13 Christopher James Lahey <clahey@helixcode.com>
* folder-browser.c (my_folder_browser_init): Made the vertical
scrollbar always be there.
* message-list.c (message_list_get_layout): Changed the minimum
width of some of the pixmap column headers.
svn path=/trunk/; revision=6983
* message-list.c: Remove the never-once-used BonoboObject stuff
and make MessageList be a GtkWidget instead. Also, keep track of
the ETable directly rather than repeatedly calling
e_table_scrolled_get_table.
* folder-browser.c (folder_browser_destroy): Use gtk methods
rather than bonobo methods to destroy the message list.
(on_right_click, on_double_click): These are being attached to the
ETable directly now, so fix the first argument (which isn't being
used anyway, but...)
(folder_browser_gui_init): simplify now that MessageList itself is
a widget. Also use message_list->table rather than
e_table_scrolled_get_table.
* mail-local.c (mail_local_reconfigure_folder): Add "mail_" to
the beginning of this function name to match its prototype and the
other vague namespace conventions in the mailer.
* mail-callbacks.c (select_all, invert_selection): Use ml->table.
(configure_folder): s/local_reconfigure_folder/mail_&/
svn path=/trunk/; revision=6908
2000-12-09 Christopher James Lahey <clahey@helixcode.com>
* message-list.c (message_list_init): Change the "drawfocus"
argument on e_table_scrolled_get_table(etable) instead of on
etable (etable is an ETableScrolled.)
svn path=/trunk/; revision=6893
2000-12-08 Jeffrey Stedfast <fejj@helixcode.com>
* message-list.c (message_list_get_layout): Set the "Size" field
to sort using integer comparison instead of string.
(filter_size): New function to transform a integer size into a
more readable form.
(ml_value_to_string): Use filter_size.
(ml_value_is_empty): COL_SIZE is no longer a string, so handle
this as an integer.
(ml_initialize_value): Here too.
(ml_free_value): And here.
(ml_duplicate_value): And here too.
(message_list_create_extras): Setup the size etable cell.
svn path=/trunk/; revision=6876
2000-12-08 Christopher James Lahey <clahey@helixcode.com>
* message-list.c: Connect to signals on the ETable instead of the
ETableScrolled.
svn path=/trunk/; revision=6871
2000-12-07 Christopher James Lahey <clahey@helixcode.com>
* message-list.c: Got rid of code referencing the ETableScrolled
proxy functions. Changed the call to e_table_set_cursor_row to
send a model row instead of a view row.
svn path=/trunk/; revision=6852
2000-12-06 Jeffrey Stedfast <fejj@helixcode.com>
* mail-config.c (mail_config_folder_to_cachename): Use
e_filename_make_safe (which used to be e_str_make_safe).
* mail-display.c (make_safe_filename): And here.
* message-list.c (message_list_drag_data_get): Here too.
svn path=/trunk/; revision=6827
2000-11-30 Jeffrey Stedfast <fejj@helixcode.com>
* mail-ops.c (cleanup_fetch_mail): Don't display a dialog, instead
inform the user that there was no new mail by setting a status
message.
* message-list.c (message_list_drag_data_get): Use the new
e_str_make_safe function.
* mail-display.c (make_safe_filename): And here.
* mail-config.c (mail_config_folder_to_cachename): Here too.
svn path=/trunk/; revision=6745
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>
* message-list.c (message_list_drag_data_get): Implement.
(message_list_init): Connect the d&d signal.
* 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=6728
2000-11-21 Not Zed <NotZed@HelixCode.com>
* mail-vfolder.c (vfolder_uri_to_folder): IF we dont find a
source, clear the exception and ignore it silently. for e.g. if
the user reconfigured their mailboxes and one of them no longer
exists.
* message-list.c:
(message_list_set_folder): If we get set a new folder, unhook any
events before unrefing the folder too (the folder is never reset
currently, but this would cause problems).
(subtree_unread): Check for uid null, wont crash, but its a bug.
(ml_tree_value_at): If the uid is null, then fake an obviously bad
line.
(build_subtree): Yeah well, we can't like freeze/thaw here,
because this is called recursive, and freeze/thaw isn't
recursive, like pre model and post model change was.
(build_tree): Maybe we can try it here, although i dont think
it'll help much.
(build_flat): And this is also a tree. yes a tree.
(build_tree): Added changes arg. If set, then try the 'diff'
approach, unless the tree is already empty.
(message_list_set_threaded): Dont clear the tree here.
(message_list_set_search): Or here.
svn path=/trunk/; revision=6629
2000-11-20 Not Zed <NotZed@HelixCode.com>
* message-list.c (save_node_state): Save out the md5 hash of the
messageid as hex, since thats all we have for those nodes.
(build_subtree): Expand the messageid to a hex string first, then
check it.
(add_node_diff): And the same here.
* message-thread.c (thread_messages): Changed for changes to
messageid/references items.
(id_hash, id_equal): New functions to hash on the binary message id hash.
(thread_messages): removed some more no longer used dead code.
svn path=/trunk/; revision=6617
2000-11-20 Jeffrey Stedfast <fejj@helixcode.com>
* message-list.c (e_mail_address_compare): New comparison function
that will replace address_compare if/when we ever go to save the
preparsed addresses in the ETable rather than parsing them each
time. Also fixed it so that we should get better sorting when
addresses don't contain name parts (I was checking for NULL but
not '\0').
svn path=/trunk/; revision=6615
2000-11-17 Not Zed <NotZed@HelixCode.com>
* message-list.c (message_list_destroy): Before we destroy
ourselves, unhook ourselves from the folder update events. Should
fix a common crash on exit case.
svn path=/trunk/; revision=6598
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-13 Christopher James Lahey <clahey@helixcode.com>
* configure.in: Update the gal reqiurement version.
From mail/ChangeLog:
2000-11-13 Christopher James Lahey <clahey@helixcode.com>
* message-list.c: Removed some e_table_model calls and replaced
them with e_tree_model calls.
svn path=/trunk/; revision=6564