* 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 <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-09 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser-ui.c (folder_browser_ui_add_message): Create a
chaqrset picker submenu in the View menu.
* mail-format.c (mail_format_raw_message): Pass the mail-display
to get_data_wrapper_text.
(get_data_wrapper_text): Use the user's override charset if one is
provided, otherwise user the user's default charset.
(handle_text_plain): Pass along the mail-display to
get_data_wrapper_text.
(handle_application_pgp): Same.
(handle_text_enriched): Here too.
(mail_get_message_body): Pass NULL as the mail-display to
get_data_wrapper_text since we don't have access to a
mail-display.
* mail-display.c (mail_display_set_charset): New function to set a
charset on the maildisplay. Once set, the message is redisplayed
using the new charset.
(mail_display_destroy): Free the charset.
* folder-browser.c (folder_browser_charset_changed): New callback
for when a user overrides the message charset.
svn path=/trunk/; revision=13530
2001-10-05 <NotZed@Ximian.com>
* folder-browser.c: reformatted the menu tables so they're a bit
more bloody readable.
* mail-folder-cache.c (mail_note_store): Hook into
subscribed/unsubscribed events. Only 'add/remove' folders from
the add/removed events if we aren't subscribed, otherwise use the
subscribed events. Rest of fix for #11831
svn path=/trunk/; revision=13472
2001-10-04 <NotZed@Ximian.com>
* folder-browser.c (update_status_bar): Show "nn sent" as total in
sent folder, rather than just 'total'.
* mail-folder-cache.c (update_1folder): Also show total message
count for sent_folder.
svn path=/trunk/; revision=13429
2001-10-03 <NotZed@Ximian.com>
* folder-browser.c (update_status_bar): If we have hide deleted
set, then dont count deleted messages in the 'total' messages
count. Fixes#6591.
svn path=/trunk/; revision=13381
2001-10-02 Jeffrey Stedfast <fejj@ximian.com>
* mail-callbacks.c (transfer_msg): Pass an empty flags argument to
mail_transfer_messages - destination folder should already be
created by this point.
* folder-browser.c (message_list_drag_data_received): Pass an
empty flags argument to mail_transfer_messages.
(selection_received): Same.
* component-factory.c (xfer_folder): Pass the CREATE flag to
mail_transfer_messages() so that the dest folder gets created.
(destination_folder_handle_drop): Update for mail-ops API change.
* mail-ops.c (mail_transfer_messages): Now takes a dest_flags
argument that it passes along to mail_tool_uri_to_folder when
opening the destination folder.
svn path=/trunk/; revision=13357
2001-10-02 Jeffrey Stedfast <fejj@ximian.com>
* mail-vfolder.c (vfolder_setup_do): Pass an empty flags argument
to mail_tool_uri_to_folder.
(vfolder_adduri_do): Same.
* mail-session.c (get_folder): Pass an empty flags argument to
mail_tool_uri_to_folder.
* mail-send-recv.c (receive_get_folder): Pass an empty flags
argument to mail_tool_uri_to_folder.
* mail-ops.c (get_folder_get): Pass the flags to
mail_tool_uri_to_folder.
(mail_get_folder): Now takes a flags argument.
(remove_folder_get): Pass an empty flags argument to
mail_tool_uri_to_folder.
(mail_send_message): Pass an empty argument flag to
mail_tool_uri_to_folder.
(transfer_messages_transfer): Same. Destination folder should
already be created by this time.
* folder-info.c (do_get_info): Pass an empty flags argument to
mail_tool_uri_to_folder.
* importers/evolution-mbox-importer.c (folder_created_cb): Pass
the CREATE flag here too.
(load_file_fn): And here.
(load_file_fn): And here too.
* importers/evolution-outlook-importer.c (load_file_fn): Pass the
CREATE flag to mail_tool_uri_to_folder.
* folder-browser.c (folder_browser_new): Pass an empty flags
argument.
(x_evolution_message_parse): Pass an empty flags argument to
mail_tool_uri_to_folder.
* component-factory.c (create_folder): Pass a CREATE flag to
mail_get_folder here too.
(owner_set_cb): And here.
(xfer_folder): Shouldn't need the CREATE flag here, so not passing
any flags.
(destination_folder_handle_drop): Same.
* mail-local.c (mail_local_store_add_folder): Pass a CREATE flag
to mail_get_folder.
(reconfigure_folder_reconfigure): Pass an empty flags argument to
mail_tool_uri_to_folder.
* mail-tools.c (mail_tool_uri_to_folder): Take a flags argument.
(mail_tool_get_local_inbox): Pass an empty flags argument to
mail_tool_uri_to_folder.
svn path=/trunk/; revision=13353
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-20 <NotZed@Ximian.com>
* folder-browser.c (folder_browser_set_shell_view): Update the
status bar here, assuming we've just been activated.
* mail-ops.c (add_vtrash_info): Scan whole list, rather than
missing the last one. Also dont assume its always the last,
otherwise we could lose following folders.
* mail-vfolder.c
(all): d(x) out debug printfs
* mail-folder-cache.c
(update_1folder): If its a vtrash folder, or the outbox_folder,
and we have a folder, then make the 'count' the total message
count, not unread messages count.
svn path=/trunk/; revision=13036
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-19 <NotZed@Ximian.com>
* General cleanup of mail debug printfs.
* mail-folder-cache.[ch]: Completely rewritten. Removed all calls
to the old code everywhere they were used. Nuff said.
* folder-browser.h: Add shell_view to folder_browser & api to set
it.
* folder-browser-factory.c (control_activate): Set the shell-view
on the folder_browser.
(control_deactivate): And clear it here.
* folder-browser.c (folder_browser_destroy): Unhook from changed
events on the folder before giving it away.
(got_folder): Hook onto the folder-changed events.
(folder_changed): Event hook proxy for folder_changed events
(main_folder_changed): And the main code version.
(update_status_bar): And the one that actually does the work.
(on_selection_changed): Also call update_status_bar() to update
the selection count.
(folder_browser_set_shell_view): Implement function to set the
shell_view on the folder_browser.
(folder_browser_destroy): Release the shell_view here too.
* mail-tools.c (mail_tool_uri_to_folder): Dont 'note' the new
folder if its from a file: url, this is handled by hte local store
(yeeruughck).
* mail-local.c (mls_init):
(free_info):
(mls_finalise): Setup init/finalise funcs for the folderinfo hash.
(local_storage_removed_folder_cb): re-enable.
2001-09-18 <NotZed@Ximian.com>
* mail-local.c (MailLocalStore): Add a hash table to store
uri<>folderinfo data.
(mail_local_store_add_folder): Add a new folderinfo to our hash.
(mail_local_store_remove_folder): Remove a folder by uri.
(storage_listener_startup): Add this store to those monitored by
the folder tree.
svn path=/trunk/; revision=12974
* folder-browser.c (folder_browser_set_uri): Merged into
folder_browser_new: nothing ever changes the URI of an existing
folder browser any more.
(folder_browser_new): Make this take a uri argument and do the
work folder_browser_set_uri used to do, except that we set fb->uri
right away, so that if the folder browser's control is activated
before got_folder() gets called, then folder_browser_ui_add_list()
will have access to the correct uri for purposes of setting
ViewThreaded, etc. Fixes#4913.
(got_folder): Don't set fb->uri here since it will already have
been set. Don't call message_list_set_threaded, since it should be
a noop now (and if it's not, it would make the message list not
match the menu item).
* folder-browser-ui.c (folder_browser_ui_add_list): Remove some
code that was failing to work around the problems above.
* message-browser.c (message_browser_new): Pass uri to
folder_browser_new, remove call to set_uri.
* folder-browser-factory.c (folder_browser_factory_new_control):
Likewise. Also fix a s/destroy/unref/ in an error cleanup.
svn path=/trunk/; revision=12954
2001-09-10 <NotZed@Ximian.com>
* mail-local.c (mail_local_reconfigure_folder): Dynamically create
the folder type list from camel.
(reconfigure_clicked): And change code to handle changes.
2001-09-10 <NotZed@Ximian.com>
* merged mail_local patch from peterw. Many changes.
svn path=/trunk/; revision=12759
2001-08-24 Jeffrey Stedfast <fejj@ximian.com>
* mail-display.c (launch_cb): Use the new e_mkdtemp function.
* folder-browser.c (message_list_drag_data_get): Use the new
e_mkdtemp function.
svn path=/trunk/; revision=12462
2001-08-23 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (destination_folder_handle_drop): Check to
make sure we actually have drag data.
* folder-browser.c (message_list_drag_data_received): Check to
make sure we have valid data.
svn path=/trunk/; revision=12424
2001-08-21 Peter Williams <peterw@ximian.com>
* folder-browser-ui.c (fbui_sensitize_items): Rename to
fbui_real_sensitize_items. Now we queue a change and set up a timeout,
making sure weed out redundant changes, fixing flicker.
(fbui_sensitize_timeout): New function. The timeout.
(fbui_real_sensitize_items): Semi-new function. Rename of old
fbui_sensitize_items.
(folder_browser_ui_set_selection_state): Pass the FB instead of only
the UIC to sensitize_items.
(folder_browser_ui_message_loaded): Same.
* folder-browser.c (folder_browser_destroy): Kill the new timeout if
it is registered.
* folder-browser.h: Add some members to FolderBrowser for keeping
track of the queue of changes.
svn path=/trunk/; revision=12343
2001-08-09 Peter Williams <peterw@ximian.com>
Fix bug #215... desensitize menu items based on the number of
selected messages (and whether there's a message in the pane)
* folder-browser-ui.c (folder_browser_ui_add_message): Sensitize
the menu items appropriately based on the old state.
(fbui_sensitize_items): New function. Set the sensitivity of a
list of commands.
(folder_browser_ui_set_selection_state): New function. Move the FB
to a new state of selected-ness, and sensitize menu items
appropriately.
(folder_browser_ui_message_loaded): New function. When notified
that a message has been loaded, sensitize some menu items.
* folder-browser-ui.h: Prototype new functions.
* folder-browser.h: New enumeration,
FolderBrowserSelectionState, that records the previous state
of the selection (_NONE, _SINGLE, _MULTIPLE).
* folder-browser.c (got_folder): If the component is set,
set our selection state to _NONE, because that's the default
state of the ETree.
(on_selection_changed): When the number of selected messages
is updated, notify the FBUI code of our new state.
(folder_browser_gui_init): Hook up to the selection_changed
signal and default to the _NONE selection state.
(done_message_selected): Notify when a message is loaded.
2001-08-08 Peter Williams <peterw@ximian.com>
* mail-folder-cache.c: Display how many messages are selected,
too.
(make_folder_status): If multiple messages are selected, add that
to the string (the 0 and 1 cases are boring)
(selection_changed): New function, update the selected count.
(mail_folder_cache_note_fb): Connect to the selection_changed
signal.
svn path=/trunk/; revision=12012
* folder-browser.c (message_list_drag_data_get): Fix the fix for
#6722.
* mail-ops.c (save_messages_save): Likewise.
(save_part_save): Deal with the possibility that
camel_mime_filter_charset_new_convert will return NULL (bad
charset name). Fixes#6611.
svn path=/trunk/; revision=12008
2001-08-11 Jason Leach <jleach@ximian.com>
* folder-browser.c: Make the right click "Resend..." into "Edit as
New Message...", bug #6838.
svn path=/trunk/; revision=11927
2001-08-10 Jon Trowbridge <trow@ximian.com>
* e-msg-composer-hdrs.c (set_recipients): Removed comment about
the need to resolve nicknames properly, because we now do that.
2001-08-10 Jon Trowbridge <trow@ximian.com>
* e-filter-bar.h: Set the subitems to NULL in the pre-defined
ESearchBarItems.
* e-filter-bar.c (rule_editor_clicked): Set the ESearchBarItem's
subitems to NULL.
(build_items): Set the ESearchBarItem's subitems to NULL.
(e_filter_bar_new): Set the ESearchBarItem's subitems to NULL.
* e-search-bar.c: Added support for subitems, so that a search
option can key off of another option menu rather than just an
entry.
2001-08-10 Jon Trowbridge <trow@ximian.com>
* gui/component/addressbook.c: Set the ESearchBarItem
subitems explicitly to NULL.
2001-08-10 Jon Trowbridge <trow@ximian.com>
* gui/cal-search-bar.c: Where we have ESearchBarItems, set their
subitems to NULL.
2001-08-10 Jon Trowbridge <trow@ximian.com>
* folder-browser.c: Set our ESearchBarItems subitems to NULL.
svn path=/trunk/; revision=11904
2001-08-10 Jason Leach <jleach@ximian.com>
* folder-browser.c: Make the context menu for the Sent folder have
"Resend..." instead of "Resend", to clarify that it will bring up
a dialog needing your input rather than just blindly sending the
message again. Also give it the 'e' accelerator. Bug #6838.
svn path=/trunk/; revision=11901
2001-08-10 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (on_right_click): Added a comment about leaking
memory here, but we seem to not even use the 2 strings we
strdup...is this code still under construction?
* mail-ops.c (mail_send_message): Free the sent_folder_uri at the
bottom of the function (ironically enough we were freeing it if we
encountered an error but never free'd it on success :-)
(get_folderinfo_got): Fixed a memory leak...this one would have
gone away once we got rid of the debug g_warning though.
svn path=/trunk/; revision=11868
2001-08-09 Peter Williams <peterw@ximian.com>
[ * folder-browser.c (on_key_press): The bonobo menu items now
handle 'n' and 'p'. ]
(on_key_press): 'q' as well.
in ui:
2001-08-09 Peter Williams <peterw@ximian.com>
* evolution-mail-global.xml: Give the (pre)view pane toggle
an accelerator of 'q', like we were implementing the hard
manual way before.
svn path=/trunk/; revision=11858
2001-08-09 Peter Williams <peterw@ximian.com>
* folder-browser.c (on_key_press): The bonobo menu items now
handle 'n' and 'p'.
svn path=/trunk/; revision=11853
2001-08-09 Anna Marie Dirks <anna@ximian.com>
Fixes bug #6918
* folder-browser.c: Changed the "Store search as vFolder"
menu item to "Create vFolder from Search".
svn path=/trunk/; revision=11848
2001-08-09 Jeffrey Stedfast <fejj@ximian.com>
Fixes bug #6722
* mail-ops.c (save_messages_save): Don't set the default perms
here, let the user's umask deal with permissions.
* folder-browser.c (message_list_drag_data_get): Don't set any
default perms.
svn path=/trunk/; revision=11842
2001-08-06 Jeffrey Stedfast <fejj@ximian.com>
* mail-callbacks.c (expunge_folder): Set the message-display
message to NULL if we can't get an info too.
svn path=/trunk/; revision=11711
2001-08-04 Jason Leach <jleach@ximian.com>
* message-list.c (message_list_select): Add a @wraparound
argument, so the 'n' and 'p' keypresses (or anything else that
wants to) can wrap around to find the next unread.
* folder-browser.c (on_key_press): Tell it to wrap around here.
* mail-callbacks.c (delete_msg): Don't wrap around here (or the
other callbacks in this file).
svn path=/trunk/; revision=11651
2001-08-01 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (folder_browser_copy): Do the Right Thing (tm)
if the message list is not the widget in focus (which is to copy
the text selected in the html viewer instead). Fixes bug #5868.
svn path=/trunk/; revision=11558
2001-07-26 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (message_list_drag_data_get): If we don't have
any messages selected, break out. This fixes bug #5612.
* component-factory.c (xfer_folder): Fixed a strstr (url,
"noselect=yes") brokenness.
(destination_folder_handle_motion): Same.
(destination_folder_handle_drop): And again here.
* mail-format.c (handle_application_pgp): Implemented.
(setup_mime_tables): Setup the application/pgp handler to use
handle_application_pgp instead of handle_text_plain.
(handle_text_plain): Remove special-case hacks for application/pgp
types.
svn path=/trunk/; revision=11438
2001-07-25 Peter Williams <peterw@ximian.com>
* folder-browser.c (etree_key): Make it so Enter always opens the message
in another window.
svn path=/trunk/; revision=11409
2001-07-23 Jason Leach <jleach@ximian.com>
[Bug #5225: No UI way to mark as unimportant]
* folder-browser.c (on_right_click): Do the necessary stuff to
show or hide the correct "Mark Important" or "Mark as Unimportant"
menu items depending on the status of messages that are selected.
* folder-browser-ui.c: Add the MarkAsUnimportant verb here.
* mail-callbacks.c (mark_as_unimportant): Simple function that's
the callback for these new menu items.
svn path=/trunk/; revision=11316
2001-07-19 Jason Leach <jleach@ximian.com>
* mail-display.c (mail_display_new): Set the vertical scrolling
policy for the mail display to AUTOMATIC, only get a scrollbar if
the e-mail is longer than one frame.
* folder-browser.c (my_folder_browser_init): We were setting the
policy twice (and to two different things). Removed this one.
* message-list.c (message_list_init): Set the policy for the
message list scroll frame to be horizontal=NEVER,
vertical=AUTOMATIC (scrollbar only if you have >1 page of
messages).
svn path=/trunk/; revision=11239
2001-07-18 Jeffrey Stedfast <fejj@ximian.com>
* mail-tools.c (mail_tool_generate_forward_subject): Do what was
suggested in #4596.
svn path=/trunk/; revision=11210
2001-07-17 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (message_list_drag_data_recieved): Fix to
correctly handle text/uri-lists that contain more than a single
url.
* component-factory.c (destination_folder_handle_drop): Fix to
correctly handle text/uri-lists that contain more than a single
url.
svn path=/trunk/; revision=11174
2001-07-16 Peter Williams <peterw@ximian.com>
* mail-display.c (mail_display_redisplay): Use our own display_style
member instead of the global setting.
(mail_display_init): Initialize display_style.
* mail-display.h: Include "mail-config.h" and add a display_style member.
* mail-format.c (write_headers): Look at the MailDisplay's display_style
instead of using the full_headers data.
* folder-browser.c (folder_browser_set_message_display_style): Set
the MailDisplay's display style as well as the global display
style.
(my_folder_browser_init): Don't save preference changes by default. (This
is only observered wrt. the message display style but should apply to other
items.)
* folder-browser-factory.c (folder_browser_factory_new_control): Set this
FB to save the preferences set in it.
* folder-browser-ui.c (folder_browser_ui_add_message): Read our display's
state instead of the global setting.
svn path=/trunk/; revision=11131
2001-07-10 Jason Leach <jleach@ximian.com>
[Bug #4305: Make the automatic mark-as-read timer optional]
* mail-config.glade: Necessary changes to make the Mark as "Read"
label a toggle button instead.
* mail-accounts.c (construct): Connect to the "toggled" on our new
toggle.
(timeout_toggled): New callback, called from above.
* mail-config.c (mail_config_get_do_seen_timeout): New.
(mail_config_set_do_seen_timeout): New.
(mail_config_write_on_exit): Save the preference here.
(config_read): Load it here.
svn path=/trunk/; revision=10973
2001-07-06 Jeffrey Stedfast <fejj@ximian.com>
* folder-browser.c (folder_browser_copy): Mark the messages as
Seen also.
(folder_browser_class_init): Create an atom type for
X-Evolution-Message selection type.
(my_folder_browser_init): Add our multiple selection types, one of
which is the default string type.
* component-factory.c (destination_folder_handle_drop): Update to
use the new X-Evolution-Message type format.
* folder-browser.c (selection_get): Convert the
X-Evolution-Message clipboard type to whatever format the target
wants.
(message_list_drag_data_get): Update because the
X-Evolution-Message type changed.
(folder_browser_copy): Same.
(x_evolution_message_parse): And here too.
svn path=/trunk/; revision=10853