Commit Graph

212 Commits

Author SHA1 Message Date
66b038a31f (build_tree): Oops, turn on BROKEN_ETREE again.
svn path=/trunk/; revision=7888
2001-01-29 09:53:23 +00:00
aad4202594 Debug function to compare the tree we think we have, after an incremental
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-29 09:33:15 +00:00
613b4a4b5c Protect against NULL address pointers. (subject_compare): Same but for
2001-01-27  Jeffrey Stedfast  <fejj@ximian.com>

	* message-list.c (address_compare): Protect against NULL address
	pointers.
	(subject_compare): Same but for subject pointers.

svn path=/trunk/; revision=7863
2001-01-27 20:19:21 +00:00
54ac4051e9 Define BROKEN_ETREE again, till we get this stuff fixed better.
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-26 09:16:29 +00:00
6af5ca43fa Yes, some more screw ups...
This cvs thing, I don't get it, I wrap my hand in plastic to try to look through it.

svn path=/trunk/; revision=7833
2001-01-26 00:29:20 +00:00
47e69c05fc GNOME_Evolution_Mail.oafinfo
svn path=/trunk/; revision=7831
2001-01-26 00:10:00 +00:00
9100d6bcdd Made the message list pay attention to the "cursor_activated" signal
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-25 16:19:31 +00:00
78fb2fa0ed Try turning off the BROKEN_ETREE thing. It seems to work ok (better?) now,
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-23 04:41:16 +00:00
88f9e36086 remove a warning with conditional news compilation.
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-22 11:43:18 +00:00
d623f94d7f Added draw-focus="true" and selection-mode="browse" attributes to the
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-21 05:49:00 +00:00
fa62a26528 Change from using filters for date and size to using e_cell_date and
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-16 02:13:32 +00:00
b2d82f7fb8 Set the default button to `Yes' here.
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-15 08:11:57 +00:00
e04883fa81 Changed filter_date and filter_size to match the changes in gal.
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-12 22:48:31 +00:00
9aab4e5eb9 Add strings for localization
2001-01-12  Miguel de Icaza  <miguel@ximian.com>

	* message-list.c: Add strings for localization

svn path=/trunk/; revision=7447
2001-01-12 08:39:16 +00:00
df57651390 Made it so that going to the next or previous message in the list will at
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-07 03:45:50 +00:00
f4f3ede9d3 Removed old implementation.
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
2001-01-04 07:34:26 +00:00
f141147560 Changed this to format times in 12 hour time instead of 24 hour time.
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 22:50:41 +00:00
31e9ec4257 Changed this to do different formatting of dates within the last week.
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-24 21:05:49 +00:00
fba04bdda7 Merge from camel-mt-branch.
2000-12-24  Not Zed  <NotZed@HelixCode.com>

        * Merge from camel-mt-branch.

svn path=/trunk/; revision=7153
2000-12-24 01:03:14 +00:00
0d23c06675 Changed this to do different formatting of dates based on the current
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 06:05:57 +00:00
bfcb25d071 Added titles to the pixbuf columns.
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-23 06:03:00 +00:00
956ed2760e Unlock camel when done to prevent a hang later.
* message-list.c (hide_save_state): Unlock camel when done to
	prevent a hang later.

svn path=/trunk/; revision=7072
2000-12-18 20:39:55 +00:00
a228c210b0 Always use the slow (full-update) version of the tree update code, to get
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-16 08:55:37 +00:00
d4c75eb010 Made the vertical scrollbar always be there.
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
2000-12-14 01:31:29 +00:00
e22c643dc6 Remove the never-once-used BonoboObject stuff and make MessageList be a
* 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-11 16:44:30 +00:00
df6a67437b Change the "drawfocus" argument on e_table_scrolled_get_table(etable)
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-10 00:07:30 +00:00
25ad3092eb a slight mixup in order causes "1.33 M" to be displayed as the subject...uh huh, yea...
svn path=/trunk/; revision=6877
2000-12-08 23:07:30 +00:00
1e42d39243 Set the "Size" field to sort using integer comparison instead of string.
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 22:57:02 +00:00
4294cdc1ed Connect to signals on the ETable instead of the ETableScrolled.
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-08 21:21:07 +00:00
7eb086940f Got rid of code referencing the ETableScrolled proxy functions. Changed
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-07 23:44:25 +00:00
804acf56c6 Use e_filename_make_safe (which used to be e_str_make_safe).
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-12-06 22:30:28 +00:00
06408727b6 Perform better error-handling.
2000-12-01  Jeffrey Stedfast  <fejj@helixcode.com>

	* message-list.c (e_mail_address_new): Perform better
	error-handling.

svn path=/trunk/; revision=6758
2000-12-01 19:16:56 +00:00
8fa85c39e5 Don't display a dialog, instead inform the user that there was no new mail
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 22:44:00 +00:00
9b49b3e25a Set threaded view before setting the folder (cleanup some flash ons
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-30 11:32:50 +00:00
f65d521704 Implement. (message_list_init): Connect the d&d signal.
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-30 00:59:27 +00:00
8d9d1e00dd IF we dont find a source, clear the exception and ignore it silently. for
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-21 14:28:06 +00:00
587d706eea Removed. No longer serves a purpose.
2000-11-21  Not Zed  <NotZed@HelixCode.com>

        * message-thread.[ch]: Removed.  No longer serves a purpose.

        * Makefile.am (evolution_mail_SOURCES): Removed message-thread.[ch].

        * message-list.c (build_subtree):
        (node_equal):
        (add_node_diff):
        (build_subtree_diff):
        (do_regenerate_messagelist):
        (cleanup_regenerate_messagelist): Changed to use camel-folder-thread.

svn path=/trunk/; revision=6625
2000-11-21 04:28:53 +00:00
7b8057a43c Save out the md5 hash of the messageid as hex, since thats all we have for
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 23:49:53 +00:00
ba1dbc4a96 New comparison function that will replace address_compare if/when we ever
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-20 22:58:39 +00:00
25107cd4d7 Before we destroy ourselves, unhook ourselves from the folder update
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-17 06:18:01 +00:00
4db080e17f Added the MessageViewSource bonobo menu verb.
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-16 23:05:32 +00:00
a53ac3867b Update the gal reqiurement version.
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
2000-11-13 19:33:47 +00:00
3d3cfc1137 A very, long, very tedious IDL API rename and re-scoping;
this script + some grunt approximates the work:

    s/Evolution_MessageList/GNOME_Evolution_MessageList/g;
    s/GNOME_Evolution_MessageList_select_message/GNOME_Evolution_MessageList_selectMessage/g;
    s/GNOME_Evolution_MessageList_open_message/GNOME_Evolution_MessageList_openMessage/g;

    s/Evolution_Folder([ \t])/GNOME_Evolution_Folder$1/g;
    s/Evolution_FolderTypeList/GNOME_Evolution_FolderTypeList/g;
    s/Evolution_FolderBrowser/GNOME_Evolution_FolderBrowser/g;
    s/GNOME_Evolution_FolderBrowser_get_message_list/GNOME_Evolution_FolderBrowser_getMessageList/g;

    s/Evolution_LocalStorage/GNOME_Evolution_LocalStorage/g;
    s/GNOME_Evolution_LocalStorage_update_folder/GNOME_Evolution_LocalStorage_updateFolder/g;

    s/Evolution_ShellView/GNOME_Evolution_ShellView/g;
    s/GNOME_Evolution_ShellView_set_message/GNOME_Evolution_ShellView_setMessage/g;
    s/GNOME_Evolution_ShellView_unset_message/GNOME_Evolution_ShellView_unsetMessage/g;
    s/GNOME_Evolution_ShellView_change_current_view/GNOME_Evolution_ShellView_changeCurrentView/g;

    s/Evolution_StorageSetViewListener/GNOME_Evolution_StorageSetViewListener/g;
    s/GNOME_Evolution_StorageSetViewListener_folder_selected/GNOME_Evolution_StorageSetViewListener_notifyFolderSelected/g;
    s/GNOME_Evolution_StorageSetViewListener_storage_selected/GNOME_Evolution_StorageSetViewListener_notifyStorageSelected/g;

    s/Evolution_StorageSetView/GNOME_Evolution_StorageSetView/g;
    s/GNOME_Evolution_StorageSetView_add_listener/GNOME_Evolution_StorageSetView_addListener/g;
    s/GNOME_Evolution_StorageSetView_remove_listener/GNOME_Evolution_StorageSetView_removeListener/g;

    s/Evolution_Shell/GNOME_Evolution_Shell/g;
    s/GNOME_Evolution_Shell_get_component_for_type/GNOME_Evolution_Shell_getComponentByType/g;
    s/GNOME_Evolution_Shell_user_select_folder/GNOME_Evolution_Shell_selectUserFolder/g;
    s/GNOME_Evolution_Shell_get_local_storage/GNOME_Evolution_Shell_getLocalStorage/g;
    s/GNOME_Evolution_Shell_create_storage_set_view/GNOME_Evolution_Shell_createStorageSetView/g;

    s/Evolution_FolderSelectionListener/GNOME_Evolution_FolderSelectionListener/g;
    s/GNOME_Evolution_FolderSelectionListener_selected/GNOME_Evolution_FolderSelectionListener_notifySelected/g;
    s/GNOME_Evolution_FolderSelectionListener_cancel/GNOME_Evolution_FolderSelectionListener_notifyCanceled/g;

    s/Evolution_Storage/GNOME_Evolution_Storage/g;
    s/GNOME_Evolution_Storage_add_listener/GNOME_Evolution_Storage_addListener/g;
    s/GNOME_Evolution_Storage_remove_listener/GNOME_Evolution_Storage_removeListener/g;

    s/GNOME_Evolution_StorageListener_destroyed/GNOME_Evolution_StorageListener_notifyDestroyed/g;
    s/GNOME_Evolution_StorageListener_new_folder/GNOME_Evolution_StorageListener_notifyFolderCreated/g;
    s/GNOME_Evolution_StorageListener_update_folder/GNOME_Evolution_StorageListener_notifyFolderUpdated/g;
    s/GNOME_Evolution_StorageListener_removed_folder/GNOME_Evolution_StorageListener_notifyFolderRemoved/g;

    s/GNOME_Evolution_StorageRegistry_register_storage/GNOME_Evolution_StorageRegistry_addStorage/g;
    s/GNOME_Evolution_StorageRegistry_unregister_storage/GNOME_Evolution_StorageRegistry_removeStorageByName/g;

    s/Evolution_ShellComponent/GNOME_Evolution_ShellComponent/g;
    s/GNOME_Evolution_ShellComponent_set_owner/GNOME_Evolution_ShellComponent_setOwner/g;
    s/GNOME_Evolution_ShellComponent_unset_owner/GNOME_Evolution_ShellComponent_unsetOwner/g;
    s/GNOME_Evolution_ShellComponent_create_view/GNOME_Evolution_ShellComponent_createView/g;
    s/GNOME_Evolution_ShellComponent_async_create_folder/GNOME_Evolution_ShellComponent_addFolderAsync/g;
    s/GNOME_Evolution_ShellComponent_async_remove_folder/GNOME_Evolution_ShellComponent_removeFolderAsync/g;
    s/GNOME_Evolution_ShellComponent_populate_folder_context_menu/GNOME_Evolution_ShellComponent_populateFolderContextMenu/g;

    s/GNOME_Evolution_ShellComponentListener_report_result/GNOME_Evolution_ShellComponentListener_notifyResult/g;

    s/Evolution_Session/GNOME_Evolution_Session/g;
    s/GNOME_Evolution_Session_save_configuration/GNOME_Evolution_Session_saveConfiguration/g;
    s/GNOME_Evolution_Session_load_configuration/GNOME_Evolution_Session_loadConfiguration/g;

    s/Evolution_Calendar_Cal/GNOME_Evolution_Calendar_Cal/g;
    s/GNOME_Evolution_Calendar_Cal_get_n_objects/GNOME_Evolution_Calendar_Cal_countObjects/g;
    s/GNOME_Evolution_Calendar_Cal_get_object/GNOME_Evolution_Calendar_Cal_getObject/g;
    s/GNOME_Evolution_Calendar_Cal_get_uids/GNOME_Evolution_Calendar_Cal_getUIds/g;
    s/GNOME_Evolution_Calendar_Cal_get_changed_uids/GNOME_Evolution_Calendar_Cal_getChangedUIds/g;
    s/GNOME_Evolution_Calendar_Cal_get_objects_in_range/GNOME_Evolution_Calendar_Cal_getObjectsInRange/g;
    s/GNOME_Evolution_Calendar_Cal_get_alarms_in_range/GNOME_Evolution_Calendar_Cal_getAlarmsInRange/g;
    s/GNOME_Evolution_Calendar_Cal_get_alarms_for_object/GNOME_Evolution_Calendar_Cal_getAlarmsForObject/g;
    s/GNOME_Evolution_Calendar_Cal_update_object/GNOME_Evolution_Calendar_Cal_updateObject/g;
    s/GNOME_Evolution_Calendar_Cal_remove_object/GNOME_Evolution_Calendar_Cal_removeObject/g;

    s/Evolution_Calendar_Listener/GNOME_Evolution_Calendar_Listener/g;
    s/GNOME_Evolution_Calendar_Listener_cal_loaded/GNOME_Evolution_Calendar_Listener_notifyCalLoaded/g;
    s/GNOME_Evolution_Calendar_Listener_obj_updated/GNOME_Evolution_Calendar_Listener_notifyObjUpdated/g;
    s/GNOME_Evolution_Calendar_Listener_obj_removed/GNOME_Evolution_Calendar_Listener_notifyObjRemoved/g;

    s/Evolution_Calendar_CalFactory/GNOME_Evolution_Calendar_CalFactory/g;
    s/GNOME_Evolution_Calendar_CalFactory_load/GNOME_Evolution_Calendar_CalFactory_load/g;
    s/GNOME_Evolution_Calendar_CalFactory_create/GNOME_Evolution_Calendar_CalFactory_create/g;

    s/Evolution_Composer/GNOME_Evolution_Composer/g;
    s/GNOME_Evolution_Composer_set_headers/GNOME_Evolution_Composer_setHeaders/g;
    s/GNOME_Evolution_Composer_set_body_text/GNOME_Evolution_Composer_setBodyText/g;
    s/GNOME_Evolution_Composer_attach_MIME/GNOME_Evolution_Composer_attachMIME/g;
    s/GNOME_Evolution_Composer_attach_data/GNOME_Evolution_Composer_attachData/g;
    s/GNOME_Evolution_Composer_show/GNOME_Evolution_Composer_show/g;

    s/Evolution_Addressbook_SelectNames/GNOME_Evolution_Addressbook_SelectNames/g;
    s/GNOME_Evolution_Addressbook_SelectNames_add_section/GNOME_Evolution_Addressbook_SelectNames_addSection/g;
    s/GNOME_Evolution_Addressbook_SelectNames_get_entry_for_section/GNOME_Evolution_Addressbook_SelectNames_getEntryBySection/g;
    s/GNOME_Evolution_Addressbook_SelectNames_activate_dialog/GNOME_Evolution_Addressbook_SelectNames_activateDialog/g;

    s/Evolution_CardCursor/GNOME_Evolution_Addressbook_CardCursor/g;
    s/GNOME_Evolution_Addressbook_CardCursor_get_length/GNOME_Evolution_Addressbook_CardCursor_getLength/g;
    s/GNOME_Evolution_Addressbook_CardCursor_get_nth/GNOME_Evolution_Addressbook_CardCursor_getNth/g;

    s/Evolution_BookViewListener/GNOME_Evolution_Addressbook_BookViewListener/g;
    s/GNOME_Evolution_Addressbook_BookViewListener_signal_card_added/GNOME_Evolution_Addressbook_BookViewListener_notifyCardAdded/g;
    s/GNOME_Evolution_Addressbook_BookViewListener_signal_card_removed/GNOME_Evolution_Addressbook_BookViewListener_notifyCardRemoved/g;
    s/GNOME_Evolution_Addressbook_BookViewListener_signal_card_changed/GNOME_Evolution_Addressbook_BookViewListener_notifyCardChanged/g;
    s/GNOME_Evolution_Addressbook_BookViewListener_signal_sequence_complete/GNOME_Evolution_Addressbook_BookViewListener_notifySequenceComplete/g;
    s/GNOME_Evolution_Addressbook_BookViewListener_signal_status_message/GNOME_Evolution_Addressbook_BookViewListener_notifyStatusMessage/g;

    s/Evolution_BookView/GNOME_Evolution_Addressbook_BookView/g;

    s/Evolution_Book/GNOME_Evolution_Addressbook_Book/g;
    s/GNOME_Evolution_Addressbook_Book_get_vcard/GNOME_Evolution_Addressbook_Book_getVCard/g;
    s/GNOME_Evolution_Addressbook_Book_can_write/GNOME_Evolution_Addressbook_Book_isWriteable/g;
    s/GNOME_Evolution_Addressbook_Book_can_write_card/GNOME_Evolution_Addressbook_Book_isCardWriteable/g;
    s/GNOME_Evolution_Addressbook_Book_create_card/GNOME_Evolution_Addressbook_Book_addCard/g;
    s/GNOME_Evolution_Addressbook_Book_remove_card/GNOME_Evolution_Addressbook_Book_removeCard/g;
    s/GNOME_Evolution_Addressbook_Book_modify_card/GNOME_Evolution_Addressbook_Book_modifyCard/g;
    s/GNOME_Evolution_Addressbook_Book_get_cursor/GNOME_Evolution_Addressbook_Book_getCursor/g;
    s/GNOME_Evolution_Addressbook_Book_get_book_view/GNOME_Evolution_Addressbook_Book_getBookView/g;
    s/GNOME_Evolution_Addressbook_Book_get_changes/GNOME_Evolution_Addressbook_Book_getChanges/g;
    s/GNOME_Evolution_Addressbook_Book_check_connection/GNOME_Evolution_Addressbook_Book_checkConnection/g;
    s/GNOME_Evolution_Addressbook_Book_get_static_capabilities/GNOME_Evolution_Addressbook_Book_getStaticCapabilities/g;
    s/GNOME_Evolution_Addressbook_Book_get_name/GNOME_Evolution_Addressbook_Book_getName/g;

    s/Evolution_BookListener/GNOME_Evolution_Addressbook_BookListener/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_create_card/GNOME_Evolution_Addressbook_BookListener_notifyCardCreated/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_remove_card/GNOME_Evolution_Addressbook_BookListener_notifyCardRemoved/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_modify_card/GNOME_Evolution_Addressbook_BookListener_notifyCardModified/g;
    s/GNOME_Evolution_Addressbook_BookListener_report_open_book_progress/GNOME_Evolution_Addressbook_BookListener_notifyOpenBookProgress/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_open_book/GNOME_Evolution_Addressbook_BookListener_notifyBookOpened/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_get_cursor/GNOME_Evolution_Addressbook_BookListener_notifyCursorRequested/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_get_view/GNOME_Evolution_Addressbook_BookListener_notifyViewRequested/g;
    s/GNOME_Evolution_Addressbook_BookListener_respond_get_changes/GNOME_Evolution_Addressbook_BookListener_notifyChangesRequested/g;
    s/GNOME_Evolution_Addressbook_BookListener_report_connection_status/GNOME_Evolution_Addressbook_BookListener_notifyConnectionStatus/g;

    s/Evolution_BookFactory/GNOME_Evolution_Addressbook_BookFactory/g;
    s/GNOME_Evolution_Addressbook_BookFactory_open_book/GNOME_Evolution_Addressbook_BookFactory_openBook/g;

    s/Evolution_SummaryComponent/GNOME_Evolution_Summary_Component/g;
    s/GNOME_Evolution_Summary_SummaryComponent_set_owner/GNOME_Evolution_Summary_Component_setOwner/g;
    s/GNOME_Evolution_Summary_SummaryComponent_unset_owner/GNOME_Evolution_Summary_Component_unsetOwner/g;
    s/GNOME_Evolution_Summary_SummaryComponent_create_view/GNOME_Evolution_Summary_Component_createView/g;
    s/GNOME_Evolution_Summary_SummaryComponent_destroy_view/GNOME_Evolution_Summary_Component_destroyView/g;

    s/Evolution_Summary([ \t])/GNOME_Evolution_Summary_ViewFrame$1/g;
    s/Evolution_Summary_set_title/GNOME_Evolution_Summary_ViewFrame_setTitle/g;
    s/Evolution_Summary_set_icon/GNOME_Evolution_Summary_ViewFrame_setIcon/g;
    s/Evolution_Summary_update_component/GNOME_Evolution_Summary_ViewFrame_updateComponent/g;

    s/GNOME_GNOME/GNOME/g;
    s/GNOME_GNOME/GNOME/g;
    s/GNOME_GNOME/GNOME/g;

svn path=/trunk/; revision=6535
2000-11-10 20:41:13 +00:00
4f8dfcf380 don't free the MessageList search when it's being reused
* message-list.c (cleanup_regenerate_messagelist): don't free the
	MessageList search when it's being reused

svn path=/trunk/; revision=6382
2000-11-03 22:41:03 +00:00
1cb19b5a1b Added new header files.
2000-11-03  Jeffrey Stedfast  <fejj@helixcode.com>

	* Makefile.am: Added new header files.

	* component-factory.c (owner_set_cb):
	s/session_init/mail_session_init

	* session.c: Renamed public functions to mail_session_*.
	FIXME: Rename session.c to mail-session.c

	* folder-browser-factory.c: #include "mail-callbacks.h", #include
	"mail-session.h" and replace forget_passwords with
	mail_session_forget_passwords

	* mail.h: Move session prototypes to mail-session.h, Move
	mail-crypto prototypes to mail-crypto.h, Move mail-callback
	prototypes to mail-callbacks.h

	* mail-session.h: New header file containing public prototypes
	for session.c

	* mail-format.c: #include "mail-crypto.h"

	* mail-view.c:
	* folder-browser.c: #include "mail-callbacks.h"

	* mail-crypto.h: New header file containing public prototypes
	for mail-crypto.c

	* mail-callbacks.h: New header file containing public prototypes
	for mail-callbacks.c

	* message-list.c (message_list_get_layout): Set useful defaults.
	(message_list_setup_etable): Don't set the Outbox defaults on a
	folder just because it doesn't have a corresponding saved file.

svn path=/trunk/; revision=6372
2000-11-03 18:55:41 +00:00
8952ed2a26 Added mail-display.h.
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
2000-11-03 09:28:00 +00:00
3e6229afab Sync with message menu. Addresses bugzilla bug #778.
2000-11-02  Jeffrey Stedfast  <fejj@helixcode.com>

	* message-list.c (on_right_click): Sync with message
	menu. Addresses bugzilla bug #778.

svn path=/trunk/; revision=6360
2000-11-02 21:44:10 +00:00
7b60f48ddd Turn on draw grid for the main ETable (this may not be working in ETable
2000-11-02  Christopher James Lahey  <clahey@helixcode.com>

	* message-list.c: Turn on draw grid for the main ETable (this may
	not be working in ETable itself.)

svn path=/trunk/; revision=6358
2000-11-02 19:29:04 +00:00
6db2305b33 ** Merged in camel-incremental-branch.
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-11-02 03:36:48 +00:00
9e6c10a18b Don't try to regenerate the message list if there is no folder. (The
* message-list.c (mail_do_regenerate_messagelist): Don't try to
	regenerate the message list if there is no folder. (The Bonobo UI
	code will call this as the callback for the "Threaded View"
	command.)

svn path=/trunk/; revision=6255
2000-10-29 20:41:55 +00:00