aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-mt.c
Commit message (Collapse)AuthorAgeFilesLines
* Don't pop up a progress dialog to say "I already finished this a whileDan Winship2001-06-271-0/+5
| | | | | | | | | | | | | * mail-mt.c (op_status_timeout): Don't pop up a progress dialog to say "I already finished this a while ago". * component-factory.c (storage_create_folder): Pass the path prefix to folder_created so it can add it to the folder tree in the right place. * mail-callbacks.c (folder_created): Take a path prefix. svn path=/trunk/; revision=10508
* Renamed from session.c and made to be a subclass of CamelSession.Dan Winship2001-04-281-36/+24
| | | | | | | | | | | * 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
* more memory leaksDan Winship2001-04-181-2/+3
| | | | svn path=/trunk/; revision=9431
* Cleaned up #includes. Remove unneccesary includes of <gnome.h>,Kjartan Maraas2001-03-301-9/+18
| | | | | | | | | | | 2001-03-29 Kjartan Maraas <kmaraas@gnome.org> * *.*: Cleaned up #includes. Remove unneccesary includes of <gnome.h>, <gtk/gtk.h>, <bonobo.h> and replaced with more fine grained headers where needed. Also marked a bunch of strings for translations and added some missing prototypes. svn path=/trunk/; revision=9025
* Move the proxy event outside the lock (otherwise we always deadlock).Not Zed2001-03-171-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-17 Not Zed <NotZed@Ximian.com> * mail-mt.c (mail_msg_free): Move the proxy event outside the lock (otherwise we always deadlock). * mail-local.c (reconfigure_clicked): Clear the message list during update inside the folder thingy. This is a hell mess, need to move the gui stuff to mail-callbacks and make this reconfigure thing a more generic func. * message-list.c (ml_value_to_string): Cleanup the logic to use lookup tables. (sort_uid_to_rows): Removed due to rewrite below. (build_flat_diff): Changes for node/summary/etc changes. Also do changed nodes too. (clear_tree): Free the info reference for nodes in our hashtable. (build_subtree): Ref the info reference in our hash/tree node. (on_click): Dont free message info, since we just got our ref to it. (remove_node_diff): Free messageinfo off node. (build_flat): Ref messageinfo. (message_list_set_folder): Allow a NULL folder to be set - i.e. clear the view. (message_list_set_folder): Emit a no message sleeted signal. (build_tree): Change cursor keeping stuff to work with new info. Turned off BROKEN_ETREE - well maybe it'll work. Check for duplicate messages displayed, etc. 2001-03-16 Not Zed <NotZed@Ximian.com> * message-list.h: Added uid_nodemap; mapping of uid's to e-tree nodes. * message-list.c (build_flat): Changed to take a summary argument, and to store node in node map, etc, and store info's in e-tree. (build_subtree): Changed to store node in node map, and to store info's in tree directly. (ml_tree_value_at): Changed to get info directly from tree node, removed allocated return value logic. (ml_tree_value_at): Removed all "fake node" handling, no fake nodes should ever exist. (id_is_uid, id_is_subject, id_uid, id_subject): Removed macro's no longer used. (new_id_from_uid, new_id_from_subject): Removed no longer used. (get_message_uid): (get_message_info): Treat tree node data as messageinfo. (message_list_select): Dont free the messageinfo, as its part of our data, not retrieved from folder. (message_list_drag_data_get): ditto. (subtree_unread): Treat tree node data as messageinfo. (subtree_size): ditto. (subtree_earliest): ditto. (clear_tree): Reset uid_nodemap on clear. (save_node_state): tree nodes == messageinfo's. (add_node_diff): ditto. (remove_node_diff): ditto. (main_folder_changed): use uid_nodemap to lookup changed nodes. (main_message_changed): ditto. svn path=/trunk/; revision=8775
* Tell camel to init NSS. (mail_session_accept_dialog): Doh! NULL terminateJeffrey Stedfast2001-03-151-0/+2
| | | | | | | | | | | | 2001-03-14 Jeffrey Stedfast <fejj@ximian.com> * session.c (mail_session_init): Tell camel to init NSS. (mail_session_accept_dialog): Doh! NULL terminate the list of buttons and show the label. * mail-mt.c (do_get_accept): Same. svn path=/trunk/; revision=8721
* Tell camel to init NSS. (mail_session_accept_dialog): Doh! NULL terminateJeffrey Stedfast2001-03-151-1/+2
| | | | | | | | | | | | 2001-03-14 Jeffrey Stedfast <fejj@ximian.com> * session.c (mail_session_init): Tell camel to init NSS. (mail_session_accept_dialog): Doh! NULL terminate the list of buttons. * mail-mt.c (do_get_accept): Same. svn path=/trunk/; revision=8719
* New async function that will be used for SSL certs later.Jeffrey Stedfast2001-03-101-2/+88
| | | | | | | | | | | | | 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
* Check the container is not NIL before trying to set thje prop.Not Zed2001-03-021-0/+2
| | | | | | | | | 2001-03-02 Not Zed <NotZed@Ximian.com> * mail-mt.c (set_stop): Check the container is not NIL before trying to set thje prop. svn path=/trunk/; revision=8449
* Fixes for changes to search bar. (search_save): Removed. (search_full):Not Zed2001-03-011-3/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-03-01 Not Zed <NotZed@Ximian.com> * folder-browser.c (folder_browser_search_menu_activated): Fixes for changes to search bar. (search_save): Removed. (search_full): Removed. (search_full_clicked): Removed. (folder_browser_search_option_items[]): Removed. (folder_browser_search_query_changed): Changed for search bar changes. (folder_browser_clear_search): Removed. * mail-vfolder.c (vfolder_clone_rule): New function to clone a filter/search rule into a matching vfolder rule. * mail-send-recv.c (mail_receive_uri): Setup a timeout for status updates. (build_dialogue): Setup timeout id for status updates. (operation_status_timeout): New function to set the status via a timeout. (receive_done): Remove the timeout handler if we need to. (operation_status): (receive_status): Just update the info, and let the timeout handler update the gui. (do_free_status): (do_show_status): Removed gui thread status message processing. 2001-02-28 Not Zed <NotZed@Ximian.com> * folder-browser.c (folder_browser_config_search): New function to configure the FilterRule for the search mechanism. 2001-02-27 Not Zed <NotZed@Ximian.com> * folder-browser.c (folder_browser_gui_init): Setup the search bar as a filterbar. (got_folder): Set the whole search bar sensitive or not based on the search capability of the folder. * folder-browser.h: Changed to use efilterbar instead of esearchbar. svn path=/trunk/; revision=8438
* Make op cancellable/report internals. (get_folder_get):Not Zed2001-02-231-2/+201
| | | | | | | | | | | | | | | | | | | | | | | | | 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
* started hack for progress reporting, which is currently to the console.Not Zed2001-02-221-1/+74
| | | | | | | | | | | | | | | | 2001-02-22 Not Zed <NotZed@Ximian.com> * mail-local.c (local_storage_new_folder_cb): started hack for progress reporting, which is currently to the console. * mail-mt.c (set_stop): Set the stop button sensitivity. (mail_msg_received): enable/disable stop button while we're processing stuff in another thread. * message-list.c (ml_tree_value_at): If our uid entry vanishes before w'ere ready, then make a fake. svn path=/trunk/; revision=8338
* Handle internal camel status return. (receive_done): Remove activeNot Zed2001-02-081-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Check current_message for NULL - this fixes a bug running under SunOS (notJeffrey Stedfast2001-02-081-1/+1
| | | | | | | | | | 2001-02-07 Jeffrey Stedfast <fejj@ximian.com> * mail-mt.c (set_view_data): Check current_message for NULL - this fixes a bug running under SunOS (not a major deal tho as it's in a debug printf). svn path=/trunk/; revision=8093
* Moved bonobo includes from the .c to the .h. IncludeChristopher James Lahey2001-02-061-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2001-02-05 Christopher James Lahey <clahey@ximian.com> * evolution-mbox-importer.c, evolution-mbox-importer.h: Moved bonobo includes from the .c to the .h. Include evolution-mbox-importer.h in evolution-mbox-importer.c. * evolution-outlook-importer.c, evolution-outlook-importer.h: Moved bonobo includes from the .c to the .h. Include evolution-outlook-importer.h in evolution-outlook-importer.c. * mail-callbacks.c: Include mail-send-recv.h. * mail-local.c (mail_local_lookup_folder): Cast local_store to CAMEL_STORE. * mail-mt.c (mail_msg_cleanup): Make this function static. * mail-send-recv.c, mail-send-recv.h: Created mail_send_recv.h. Included it in mail-send-recv.c. Added a #include <libgnomeui/gnome-window-icon.h>. (mail_send_receive): Added a cast. * mail-summary.c (new_folder_cb, removed_folder_cb, create_summary_view): Cast the source func in calling g_idle_add. svn path=/trunk/; revision=8002
* Debug function to compare the tree we think we have, after an incrementalNot Zed2001-01-291-3/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* make mail_gui_thread non-static.Dan Winship2001-01-231-1/+1
| | | | | | | | | | | * 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
* Init a cancel field in the message. (mail_msg_free): Free it.Not Zed2001-01-211-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Setup a cancellation handle. (do_fetch_mail): REgister for cancellationNot Zed2001-01-161-1/+1
| | | | | | | | | | | | | | | | | | | | 2001-01-16 Not Zed <NotZed@Ximian.com> * mail-ops.c (mail_do_fetch_mail): Setup a cancellation handle. (do_fetch_mail): REgister for cancellation here. (cleanup_fetch_mail): And unregister for cancellation here. (mail_get_message): Add a cancel handle. (get_message_get): Register/deregister for cancel. (get_message_free): & clean up. * mail-mt.c (mail_msg_received): Removed debuggng. * mail-callbacks.c (stop_threads): Callback for stopping. * folder-browser-factory.c: Add a stop button verb thingy. (control_activate): Disable the stop button by default. svn path=/trunk/; revision=7527
* Removed old implementation.Not Zed2001-01-041-7/+105
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Fix for mail_get_message change, use queue thread.Not Zed2001-01-031-0/+517
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