Commit Graph

22 Commits

Author SHA1 Message Date
8c0ef28e55 More fixing of the license texts.
svn path=/trunk/; revision=14220
2001-10-27 18:57:27 +00:00
5
cab9406217 So apparently the uicomp can just 'vanish' while we're using it. Joy. Take
2001-10-25    <NotZed@Ximian.com>

	* folder-browser-ui.c (fbui_sensitize_timeout): So apparently the
	uicomp can just 'vanish' while we're using it.  Joy.  Take care of
	that case here, fixes #13482.
	(fbui_sensitise_item): Check here too just for kicks.

	* mail-folder-cache.c (store_finalised): If we can't destroy our
	async event, then queue another one to do it.
	(store_finalised_finish): And handle it here, until we can, then
	free it.
	(mail_note_store): Queue an async event to get folderinfo, dont
	use mail_get_folderinfo.
	(update_folders_get): thread-async event to retrieve the
	folderinfo, and build it, then queues gui-async event to update
	the gui.
	(add_unmatched_info): Taken from mail-ops, adds unmatched if
	required.
	(add_vtrash_info): From mail-ops, add trash if required.
	(update_folders): Thread async event to update gui.
	(mail_note_store): Ref the store and storage when created.
	(update_1folder): Changed to assume we have info_lock, and store
	updates in an updates list.
	(setup_folder): Same.
	(folder_changed): Changed to call update_1folder directly.
	(real_folder_changed): Removed.
	(mail_note_folder): Changed to call update_1folder directly.
	(real_note_folder): Removed.
	(store_folder_subscribed): Call setup_folder directly.
	(real_folder_created): Removed.
	(real_flush_update): Function that actually does the updates in
	the gui thread.
	(mail_note_store): Go back to using mail_get_folderinfo.
	(update_folders): Fixed upf ro changed api's.
	(unset_folder_info): Changed to queue pending updates.
	(real_folder_deleted): Removed.
	(store_folder_unsubscribed): Do the removal work directly.
	(mail_note_store): Dont link to finalised event of store - we now
	ref it.
	(mail_note_store_remove): If we have any pending updates, clear
	them out.  Also cancel any pending folderinfo retrieve operations.
	(update_folders): Remove our update from the storeinfo list, if it
	still exists.
	(update_1folder): Make 'sent folder shows all counts' optional via
	an environmental variable EVOLUTION_COUNT_SENT for all those
	bloody whinging lusers out there.
	(mail_note_store_remove): Unref the storage when done.

	* mail-mt.c (mail_async_event_emit): If we're in main and have a
	gui task, set it to run via an idle function.
	(idle_async_event): Wrapper for calling do_async_event from idle
	function, and freeing the message when done.
	(idle_async_event): Call mail_msg_free not free on the finished
	message.

	* component-factory.c (mail_remove_storage): Destroy the storage
	async.
	(store_disconnect): This does the work.
	(free_storage): Un-note the store when we remove it, so the store
	noting code can unref things properly.
	(idle_quit): Return false when done, dont loop.

2001-10-24    <NotZed@Ximian.com>

	* component-factory.c (owner_set_cb): Setup an async_event
	handler.
	(idle_quit): Try to destroy the async_event, or keep dropping out
	if it can't (deadlock).

	* mail-mt.c (do_async_event): Set the threadid of the thread we're
	running in so we know its running/which thread its in.
	(mail_async_event_emit): Added new argument 'type' which is the
	type of thread to execute against, gui or another one.  Fixed all
	callers.
	(mail_async_event_destroy): Return -1 if this operation will fail
	(deadlock possibility).  If we're in the thread of the task
	we're going to wait for, then return a failure (since we will
	deadlock).
	(mail_async_event_emit): Chagned to use MailAsyncFunc type as the
	function type, which just takes 3 void args, change args to suit.

	* mail-folder-cache.c (mail_note_store): Record the pending update
	events in a pending list.  We should really be able to use an
	async event for this, but that doesn't return to the gui loop when
	done :-/
	(update_folders): Remove from pending update when done.

svn path=/trunk/; revision=14101
2001-10-25 21:21:33 +00:00
3
343f36cffe Completely re-done. We now hae a completely async dialogue when requested
2001-10-23    <NotZed@Ximian.com>

        * mail-session.c (get_password): Completely re-done.  We now hae a
        completely async dialogue when requested from antoehr thread, and
        dont use gtk_main() if we can avoid it (which is normally the
        case).  This stuff is only partially finished, and will mena the
        removal of the same from mail-mt.c, and the mail_user_message()
        code will be moved here and changed to work in a similar way.

        * mail-callbacks.c (empty_trash): Dont try and connect to remote
        stores just to get the trash.  Also, always run empty trash async,
        and make sure we unref the trash.
        (empty_trash): Hmm, dont unref the trash, causes a problem on
        exit, i suspect something else is doing funky unrefs on it.

        * mail-tools.c (mail_tool_get_trash): Pass a 'connect' arg, tell
        it whether it should tryand connect or not to the parent service,
        if it isn't already connected.

        * component-factory.c (owner_unset_cb): Dont try wait_all here,
        could potentially deadlock.
        (idle_quit): Keep returning TRUE if we have outstanding
        processing.  Note that this may busy-wait during exit processign
        with busy tasks :(
        (idle_quit): Keep calling ourselves till we no longer get called
        (i.e. gtk_main really quits).

        * mail-mt.c (mail_msg_active): New function, returns TRUE if
        events are still active/outstanding.
        (do_op_status): @$@$#@@!#@!!  didn't unlock the mail_msg_lock if
        data->activity was NULL and we had no global_shell_client anymore!
        Also shortcut processing if this is going to be the case.
        (mail_msg_init): Setup a temporary other gui_port for redoing with
        new semantics password, user message and progress reporting.
        (mail_get_password): #ifdef'd out all this code temporarily, till
        it gets fully moved to mail-session.c

2001-10-22    <NotZed@Ximian.com>

        * component-factory.c (owner_set_cb): Dont call enable_interaction
        here.
        (interactive_cb): But here instead, let the shell tell us when its
        ok to go interactive.

svn path=/trunk/; revision=13933
2001-10-23 06:28:27 +00:00
8c85ed61ba Added an async_event handler to store_info. (mail_note_store): Setup async
* mail-folder-cache.c: Added an async_event handler to store_info.
	(mail_note_store): Setup async event handler here.
	(store_finalised): Flush out async events here.
	(folder_changed): Use async event handler to emit event.
	(mail_note_folder): Chagned, do most of the work in the calling
	context, only do the corba stuff in main.
	(store_folder_subscribed): Use async event, and do more work locally.
	(store_folder_unsubscribed): Same.
	(store_folder_deleted): Call store_folder_unsubscribed if we have
	to do any work.
	(store_folder_created): Call store_folder_subscribed if we have to
	do any work.
	(store_folder_unsubscribed): Ref store while busy.
	(real_folder_deleted): And unref here.
	(store_folder_subscribed): Reg store while busy.
	(real_folder_created): Unref here.
	(mail_note_folder): Ref folder while busy.
	(real_note_folder): And unref here.
	(mail_note_folder): Hook onto folder_deleted event.
	(folder_deleted): Just mark this folder as no longer available.

	* mail-session.c (register_timeout): Use mail_call_main instead of
	proxy_event.
	(remove_timeout): Same here.

	* folder-browser.c (folder_changed): use the new mail_async_event
	stuff.
	(folder_changed_main): Remove old async event handling stuff.
	(FOLDER_BROWSER_LOCK/UNLOCK): Removed.
	(FolderBrowserPrivate): Removed too, sigh.

	* mail-mt.c (mail_async_event_new, mail_async_event_emit,
	mail_async_event_destroy): New functions to handle async events.
	(mail_proxy_event, mail_proxy_event_id): Removed old functions for
	async events.
	(do_call): Add suport for MAIL_CALL_p_pp.
	(mail_msg_free): Use mail_async_event instead of proxy_event.

	* message-list.c (message_changed): Promote the message_changed to
	a folder_changed and use main_folder_changed to process it.
	(main_message_changed): Remove.d
	(message_list_init): Setup async event handler.
	(message_list_destroy): Remove async handler.
	(folder_changed): Use async hanler to emit event in main loop.
	(message_changed): Same.

svn path=/trunk/; revision=13698
2001-10-16 19:13:31 +00:00
6
41802db263 New function to return the id of the currently executing proxied event.
2001-10-16    <NotZed@Ximian.com>

	* mail-mt.c (mail_proxy_event_id): New function to return the id
	of the currently executing proxied event.

	* folder-browser.h: Added private field.

	* folder-browser.c (folder_changed): Keep track of tasks
	outstanding in the tasks list, locked access.
	(FOLDER_BROWSER_LOCK, UNLOCK): Macros to lock the folder browser
	for poking about in diff threads.
	(folder_browser_finalise): Wait for any outstanding takss to
	finish before cleaning ourself up.
	(folder_browser_destroy): Move the seen_id handling to finalise,
	also add a loading_id handling code.
	(main_folder_changed): Remove our running task when done.

svn path=/trunk/; revision=13695
2001-10-16 17:34:59 +00:00
5
3ac3a15e3c Proxy get-password call to main thread. (forget_password): same for
2001-10-15    <NotZed@Ximian.com>

        * mail-session.c (get_password): Proxy get-password call to main
        thread.
        (forget_password): same for forget_password.
        (get_filter_driver): and same for get_filter_driver, since it uses
        gtk objects.

        * mail-mt.c (mail_call_main): new generic interface for calling
        stuff/proxying in the gui thread.

svn path=/trunk/; revision=13679
2001-10-15 18:55:18 +00:00
03dcbdb743 Added mail_msg_cleanup() prototype.
2001-09-28  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-mt.h: Added mail_msg_cleanup() prototype.

svn path=/trunk/; revision=13219
2001-09-28 18:40:55 +00:00
5
ba5b1b6be7 Deal with destroy vs finalise semantics. Only destroy widgets here.
2001-09-25    <NotZed@Ximian.com>

        * folder-browser.c (folder_browser_destroy): Deal with destroy vs
        finalise semantics.  Only destroy widgets here.
        (folder_browser_finalise): object finalise function, actually
        unref/free all other objects here.
        (folder_browser_class_init): Init the finalise hook.
        (got_folder): Check if message_list == NULL -> we've been
        destroyed before the thread got a chance to finish loading the
        folder.
        (folder_browser_is_drafts): Dont use a g_return_if_fail to return
        in what could be a valid state of the object.
        (folder_browser_is_sent): Likewise.
        (folder_browser_copy): Do nothing if message_list == NULL.

        * main.c (main): call  mail_msg_cleanup() before leaving threads.

        * component-factory.c (owner_unset_cb): Wait for all outstanding
        operations to finish before setting up to quit.
        (idle_quit): Wait for all outstanding ops to finish before
        cleanup.
        (unref_standard_folders): NULL out the standard folder before
        unreffing it.

        * mail-mt.c (mail_msg_wait_all): New function to wait for all
        outstanding thread operations.
        (mail_msg_cleanup): Destroy the io channels before we're
        finished.  Also wait for all outstanding threads first.  Made
        public.
        (mail_msg_init): Dont call mail_msg_cleanup atexit automatically.

svn path=/trunk/; revision=13129
2001-09-25 22:18:52 +00:00
0
412c2967bb Register vfolder sources here.
2001-09-20    <NotZed@Ximian.com>

        * mail-tools.c(mail_tool_uri_to_folder): Register vfolder sources here.

        * folder-browser.c (got_folder): Dont register vfolder sources
        here.

        * mail-ops.c (mail_get_folder): Add thread parameter.  Fix callers.

        * mail-vfolder.c (vfolder_setup): Use the 'slow' queue for setting
        up vfolders.

        * mail-mt.c (mail_msg_init): Limit the maximum number of threads
        on the 'new' thread to 10.
        (mail_msg_init): Create a new queue 'slow' for doing slow
        operations.

svn path=/trunk/; revision=13017
2001-09-20 21:01:53 +00:00
3e079da9b6 Pass a 'cache-me' argument to mail_get_password.
2001-09-18  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-session.c (get_password): Pass a 'cache-me' argument to
	mail_get_password.

	* mail-mt.c (pass_got): Make less confusing...
	(mail_get_password): Now takes an argument 'cache' that allows our
	caller to determine if the user wanted to cache his/her password
	or not.
	(pass_got): Set the cache option.

svn path=/trunk/; revision=12950
2001-09-18 20:14:38 +00:00
56d33b7e47 Now take a CamelService parameter (as passed by Camel). Allows us to have
2001-07-25  Peter Williams  <peterw@ximian.com>

	* mail-mt.c (mail_get_password): Now take a CamelService parameter
	(as passed by Camel). Allows us to have a "remember password"
	checkbox that is set correctly and whose settings can be
	propagated back to the proper MailConfigService.
	(do_get_pass): Add a checkbutton allowing the user to change
	whether the password is remembered or not.
	(pass_got): Apply the setting of the "remember password"
	checkbutton (if not cancelled.)

	* mail-mt.h: Update the prototype here.

	* mail-config.c (mail_config_service_set_save_passwd): New function,
	pretty bland.

	* mail-config.h: Prototype our bland new function. (Get it? It's a pun!)

	* mail-session.c (get_password): Pass the service as well.

svn path=/trunk/; revision=11408
2001-07-25 19:05:08 +00:00
37695c74b7 remvoed register/start/end etc code.
2001-07-19  Not Zed  <NotZed@Ximian.com>

        * mail-local.c (reconfigure_folder_reconfigure): remvoed
        register/start/end etc code.

        * mail-ops.c (get_messages_desc): Add the count here.
        (get_messages_get): Remove the register/start code, its handled
        above us.
        (save_messages_desc): Added count.
        (save_messages_save): Removed register/start/end code.

        * mail-mt.c (mail_msg_received, mail_msg_destroy): Changed to use
        camel_operation rather than mail_status.
        (mail_msgport_received, mail_msgport_replied): Turn of the
        mail_status stuff, we dont need to report on stuff running in the
        gui thread right?
        (retrieve_shell_view_interface_from_control, set_view_data,
        mail_statusf,  mail_status, mail_status_end, mail_status_start,
        status_timeout, do_del_status, set_status_op): removed now
        redundant stuff.
        (mail_msg_free): Removed reference to timeout_id.

svn path=/trunk/; revision=11225
2001-07-19 13:31:22 +00:00
cdea22d886 partial checkin before completing the changes
2001-07-18  Not Zed  <NotZed@Ximian.com>

        * mail-local.c (reconfigure_folder_reconfigure): Changed to use
        camel_operation rathre than mail_status.
        (reconfigure_folder_describe): re-enabled this function.

        * mail-ops.c (get_messages_get): Changed to use camel-progress for
        status reporting.
        (save_messages_save): Likewise.

2001-07-17  Not Zed  <NotZed@Ximian.com>

        * mail-mt.c (struct _mail_msg_priv, destroy_objects, mail_msg_new,
        mail_msg_free, do_op_status): Changed to use an EvolutionActivityClient for
        progress.

svn path=/trunk/; revision=11223
2001-07-19 11:50:49 +00:00
91cc026904 Update the copyrights, replacing Helix Code with Ximian and
helixcode.com with ximian.com all over the place.

svn path=/trunk/; revision=10440
2001-06-23 08:52:02 +00:00
d4b3c14fcd Renamed from session.c and made to be a subclass of CamelSession.
* mail-session.c: Renamed from session.c and made to be a subclass
	of CamelSession.

	* mail-mt.c (mail_user_message): Renamed from mail_get_accept and
	made more general-purpose, to implement the new
	camel_session_alert_user.

svn path=/trunk/; revision=9618
2001-04-27 21:08:51 +00:00
b860bc0e2d New async function that will be used for SSL certs later.
2001-03-09  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-mt.c (mail_get_accept): New async function that will be
	used for SSL certs later.

	* session.c (auth_callback): Changed to return a gpointer value.
	(mail_session_accept_dialog): New function to handle the new
	_ACCEPT authenticator mode.

svn path=/trunk/; revision=8622
2001-03-10 00:14:11 +00:00
351903ad90 Make op cancellable/report internals. (get_folder_get):
2001-02-23  Not Zed  <NotZed@Ximian.com>

        * mail-ops.c (create_folder_get): Make op cancellable/report
        internals.
        (get_folder_get):
        (sync_folder_sync):
        (get_folderinfo_get): Make op cancellable/report internals.

        * mail-vtrash.c (get_trash_get): Setup the operation registration,
        and create a pseudo "start/stop" operation.

        * component-factory.c (owner_set_cb): Make trash creation async.

        * mail-local.c (register_folder_desc): A description of what we're
        doing.

        * mail-mt.c (mail_msg_new): Set status callback to operation_new.
        (mail_operation_status): Operation status function, proxy messages
        to main thread, and attempt to present a meaningful ui experience
        for operations.

svn path=/trunk/; revision=8351
2001-02-22 22:27:40 +00:00
4459154549 Handle internal camel status return. (receive_done): Remove active
2001-02-07  Not Zed  <NotZed@Ximian.com>

        * mail-send-recv.c (operation_status): Handle internal camel status return.
        (receive_done): Remove active download when done.
        (mail_receive_uri): Initiate download of a single source, with no gui.
        (build_dialogue): Mark any new items as real active downloads.
        (do_show_status): Make the progress bar optional.

2001-02-06  Not Zed  <NotZed@Ximian.com>

        * mail-send-recv.c: camel_cancel->camel_operation.

        * mail-ops.old.c: camel_cancel->camel_operation.

        * mail-ops.c: camel_cancel->camel_operation.

        * mail-mt.c: camel_cancel->camel_operation.

        * mail-callbacks.c (stop_threads): camel_cancel->camel_operation.

        * mail-mt.h: CamelCancel->CamelOperation.

svn path=/trunk/; revision=8096
2001-02-08 01:45:37 +00:00
ff2d16601e make mail_gui_thread non-static.
* mail-mt.[ch]: make mail_gui_thread non-static.

	* main.c (main): Set up signal handler for SEGV, BUS, FPE
	(segv_redirect): if a gnome-segv'ing signal is received in
	a thread other than mail_gui_thread, re-deliver it to that
	thread to work around a problem with the gnome segv handler.

svn path=/trunk/; revision=7728
2001-01-22 23:16:33 +00:00
50ef085e18 Init a cancel field in the message. (mail_msg_free): Free it.
2001-01-21  Not Zed  <NotZed@Ximian.com>

        * mail-mt.c (mail_msg_new): Init a cancel field in the message.
        (mail_msg_free): Free it.
        (mail_msg_cancel): New function to attempt to cancel an
        operation by id.  Impelementation functions can still be
        uncancellable by not registering for cancellation, etc, or do it
        themselves as well.

        * mail-send-recv.c (fetch_mail_filter_folder): set folder_uid's
        properly, so we can save it later.
        (filter_folder_filter): Renamed from fetch_mail_filter_folder,
        since its going to be used for all filtering.
        (mail_fetch_mail): Changed from mail_filter_mail.
        (mail_filter_folder): New function, replaces
        mail_do_filter_ondemand functionality.
        (mail_filter_on_demand): New function, actually replaces
        mail_do_filter_ondemand.
        (receive_get_folder): Added an exception arg.
        (mail_send_message): New function to just send a message.
        (send_mail_send): Use mail_send_message.
        (send_queue_send): New send qeue code, use mail_send_message, and
        clean up some stuff.
        (mail_send_receive): Changed from mail_receive.
        (build_dialogue): Setup the sending data, as well.
        (mail_update_subfolders): New function to update folder info.
        (send_mail_send): hook into cancellation if we want.

svn path=/trunk/; revision=7672
2001-01-21 04:19:30 +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
a16344fff4 Fix for mail_get_message change, use queue thread.
2001-01-02  Not Zed  <NotZed@HelixCode.com>

	* mail-callbacks.c (view_msg): Fix for mail_get_message change,
	use queue thread.

	* folder-browser.c (done_message_selected): Fix mail_Get_message
	calls, use new thread.
	(do_message_selected): "

	* mail-ops.c (mail_get_message): Add a thread argument so callers
	can specify which queue it executes on.

	* mail-mt.c (mail_msg_free): Fix a free order problem.
	(mail_msg_destroy): Call mail_msg_free to do the work.
	(mail_msgport_replied): "
	(mail_msgport_replied): Check/display errors if we get them.
	(mail_msgport_received): If we have a describe function, say what
	we're doing, also set busy/unbusy.
	(mail_msgport_replied): Clear busy when we get a reply.
	(mail_get_password): Unset busy.
	(mail_msg_received): Set busy as we go.
	(mail_msg_destroy): Unset busy when done.
	(mail_status): Blah blah, new status interface, the other wans't
	workable with the way the shell api works.

2000-12-29  Not Zed  <NotZed@HelixCode.com>

	* folder-browser.c (do_message_selected): If we are reconfiguring,
	just keep polling till we are done (yeah kinda shitty, but easy).
	(folder_browser_set_uri): Clear reconfigure flag here.  ick.
	(got_folder): And here too.
	(on_right_click): Remove locking.
	(hide_sender): and here too.
	(hide_subject): And here.
	(on_right_click): If we are in reconfigure, then the whole menu is disabled.

	* mail-mt.c (status_busy_timeout): Clear the status_busy_timeout_id.

	* mail-local.c (local_storage_new_folder_cb): Made getting folders
	completely synchronous.  The shell expects it, and it was only
	synchronous before by a sideeffect.
	(do_reconfigure_folder): Remove locking stuff.
	(do_reconfigure_folder): Use our own much simpler copying routine
	than that stupid move_folder_contents thing.
	(update_progress): Use mail_status_message() instead.
	(do_reconfigure_folder): Set the reconfigure flag during
	reconfigure & set busy flag.
	(cleanup_reconfigure_folder): clear busy flag.

	* mail-tools.c (mail_tool_uri_to_folder): Remove the tool_lock
	stuff.
	(mail_tool_uri_to_folder_noex): Clear exception on exit.
	(mail_tool_move_folder_contents): Get rid of this really stupid
	function that is only used in one place.

	* component-factory.c (owner_set_cb): Use direct calls to get the
	folders, as this code must run synchronous.  Remove the event wait
	stuff.

	* mail-callbacks.c (edit_msg): Call mail_get_messages, and create
	the composers ourself.
	(do_edit_messages): get_messages callback, create the composers
	and connect to signals we need.
	(view_msg): Dont call do_view_messages, just call
	mail_get_messge for each to get them in parallel.
	(do_view_message): view a single message.

	* mail-ops.c (mail_edit_messages): Just use mail_get_messages
	for this operation.  Removed the other async operation stuff.
	Changed my mind, just removed entirely.
	(mail_do_view_messages): Removed.
	(mail_do_setup_folder): Removed.
	(mail_do_scan_subfolders): Make this run synchronously, as every
	caller expects it to (even if they didn't realise).

2000-12-28  Not Zed  <NotZed@HelixCode.com>

	* mail-callbacks.c (send_queued_mail): Dont expunge the folder
	here, but in send_queue, otherwise it might execute out of order.
	(expunge_folder): Remove the talbe prechange stuff, and infact
	references to the message_list folder, as we have our own folder.
	Also, dont allow expunge if we're already expunging.
	(expunged_folder): Clkear the expunging flag if we're finished.

	* folder-browser-factory.c (control_deactivate): Likewise here.
	Hrm, i thought this function required a callback, silly me.

	* mail-tools.c (mail_tool_make_message_attachment): Remov e
	locking.

	* folder-browser.c (on_message_selected): Use a timeout handler so
	we dont select immediately.
	(folder_browser_set_uri): Changed to use mail_get_folder.
	(got_folder): New callback called when get_folder is finished.
	(folder_browser_destroy): Use new sync interface.

	* mail-ops.c (mail_get_message): New function to asynchrounously
	get a message.
	: #define out mail_tool_camel_lock stuff entirely.
	(mail_get_folder): New function to asynchrounously get a folder.
	(mail_do_load_folder): Removed, replaced by more generic function
	above.
	(mail_do_display_message): Removed, replaced by the more generic
	funciton get_message.
	(mail_get_messages): New function to get a list of messages
	asynchronously.
	(mail_sync_folder): New interface to sync a folder async.
	(mail_expunge_folder): New interface for expunging folder, with
	callback.
	(do_send_queue): Remove lock stuff, and expunge if (and only if)
	successful, also sync the sent folder while we're at it.

	* session.c (mail_session_request_dialog): Changed to use new
	mail_get_password call.

	* mail-mt.[ch]: New threading/interthread messaging framework.

	* main.c (main): Init the message/thread system.

svn path=/trunk/; revision=7223
2001-01-03 01:18:21 +00:00