2002-01-30 Not Zed <NotZed@Ximian.com>
* component-factory.c (create_component): re-enable popup menu.
(populate_folder_context_menu): If we're on a vfolder, and its not
UNMATCHED, create a change properties item, and set it up
approriately.
(change_prop_popup): Callback to edit the vfolder rule. For
#3358.
svn path=/trunk/; revision=15523
2002-01-25 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (destination_folder_handle_motion): Do some
NULL checking on the url before using it.
(destination_folder_handle_drop): Make sure the uri is non-NULL
before freeing.
svn path=/trunk/; revision=15473
2002-01-21 Jeffrey Stedfast <fejj@ximian.com>
* mail-format.c (handle_text_plain): If the first "token" in the
body is "<html>", then treat this as a text/html part rather than
a text/plain part. Fixes bug #16817.
* component-factory.c (destination_folder_handle_drop): Removed
some unused variables.
svn path=/trunk/; revision=15420
2001-11-08 Jeffrey Stedfast <fejj@ximian.com>
* mail-tools.c (mail_tools_x_evolution_message_parse): Was
x_evolution_message_parse from folder-browser.c. A space char is
no longer used to separate the folder URI and the first uid,
instead this is now done with a nul-char so update to parse the
newer/better format.
* component-factory.c (destination_folder_handle_drop): Update to
parse the new/better format.
* folder-browser.c (x_evolution_message_parse): Moved to
mail-tools.c
(message_list_drag_data_get): Instead of placing a space char
after the folder URI, instead use a nul-char.
svn path=/trunk/; revision=14645
2001-10-30 <NotZed@Ximian.com>
* subscribe-dialog.c (fe_cancel_op_foreach): Argh!!! Dont free the
async op data here, the async op is still running and will access
it! Just try to cancel it and mark it as cancelled (id == -1)
(fe_done_subscribing): Only remove outselves from the hash table
if we're not cancelled. The handle should always be set here,
since this code runs in the gui thread.
* message-list.c (on_cursor_activated_idle): If nothing
selected/cursor not activated, then select no message.
* mail-folder-cache.c (update_1folder): Make the trash count
optional on EVOLUTION_COUNT_TRASH, becuase some lusers are just
too stupid to understand what its for.
* component-factory.c (storage_xfer_folder): Return slightly
better error codes for copying folders, since its not implemented
yet.
* mail-vfolder.c, mail-local.c, mail-folder-cache.c,
message-list.c component-factory.c, mail-ops.c,
subscribe-dialog.c, mail-session.c: d() out some debug printfs,
w() out some warnings.
* folder-browser-ui.c (folder_browser_ui_add_message): Fix typo,
Resent->Resend.
svn path=/trunk/; revision=14412
2001-10-29 <NotZed@Ximian.com>
* mail-vfolder.c (rule_changed): Copy the folder's full_name
before trying to use it to rename.
(vfolder_edit_rule): Set 'orig' to be a reference of the original
rule.
(edit_rule_clicked): Dont lookup orig by name, copy it over
instead.
* folder-browser.c (got_folder): oops, emit signal before
unreffing object, incase we got killded during getting folder.
(got_folder): Reset get_id.
(folder_browser_new): Set get_id of the get_folder task.
(folder_browser_init): Init get_id.
(folder_browser_destroy): IF we have outstanding 'get folder' op,
cancel it.
svn path=/trunk/; revision=14323
2001-10-28 <NotZed@Ximian.com>
* folder-browser-ui.c (fbui_sensitize_timeout): Remove uic, kill
dumb warning.
* mail-autofilter.c (mail_filter_rename_uri): Implement function
for filters to keep track of uri's being renamed.
(mail_filter_delete_uri): Similarly for deleting uri's. Note that
these functions are just noops though.
(real_flush_updates): Also rename and delete uri's from filters.
(mls_delete_folder): Unref the store when done.
(mls_rename_folder): Fix implementation, shell already created
destination folder, so we can't just rename :(
(xfer_folder): Manually call rename code, since the shell will do
a remove/add later on, AND there's no way we can determine the new
path from the crock of an api we have to work with.
svn path=/trunk/; revision=14291
2001-10-28 <NotZed@Ximian.com>
* mail-vfolder.c (mail_vfolder_rename_uri): Implemented.
(mail_vfolder_rename_uri): We do want to check renamed uri's from
vstores.
(mail_vfolder_delete_uri): Same.
(store_folder_renamed): Fix the folder hash at the same time.
* mail-folder-cache.c (real_flush_updates): Pass the rename event
to vfolder rename uri.
* mail-local.c (mail_local_folder_reconfigure): Change the store
path to be same as parent + mbox to be full path.
(mls_delete_folder): Change store path to be parent path, and mbox
to be full path.
(mail_local_folder_reconfigure): Fix a leak of tmpname.
* component-factory.c (xfer_folder): Only do a rename if we have
remove set, cleaned up logic a bit.
(idle_quit): Put the components still active check last last of
all.
(storage_create_folder): IF we have a fragment, use that as part
part for parent.
svn path=/trunk/; revision=14276
2001-10-26 <NotZed@Ximian.com>
* mail-local.c (mlf_set_folder): Changed to open the source store
from '/', so we can do renames across directories. Of course,
this doesn't quite work with different filesystems, but we'll
assume this isn't a problem we're going to have.
(mail_local_folder_get_type): Setup parent_class.
(mlf_rename): Implement folder rename call, rename internal data.
Is this a security issue? Well, not really, no more than anything
else.
* mail-folder-cache.c (mail_note_store): Listen to rename event.
(store_folder_renamed): Function to handle it, empty.
(mail_note_store_remove): Unhook from rename event.
(mail_note_folder): Hook onto renamed event.
(unset_folder_info): Unhook from renamed event.
(folder_finalised): Lock around update.
(folder_deleted): Lock around update.
(real_flush_updates): If we have a path to remove remove it.
(rename_folders): Scan folderinfo's, if we can find ones renamed,
rename them, otherwise add them.
* component-factory.c (owner_unset_cb): Use a timeout not an idle handler.
(storage_xfer_folder): Implementation of xfer_folder signal
handler, so we can rename imap/vfolders/etc.
svn path=/trunk/; revision=14205
2001-10-26 <NotZed@Ximian.com>
* component-factory.c (owner_unset_cb): Use a timeout not an idle handler.
* mail-callbacks.c (providers_config): Only set the parent window.
* mail-accounts.c (mail_edit): Set the parent on the account editor.
svn path=/trunk/; revision=14121
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-23 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (owner_unset_cb): Unref the global
search_context.
(owner_set_cb): create the global search_context.
* folder-browser.c (folder_browser_gui_init): Pass along the
global search_context to the e_filter_bar_new call.
svn path=/trunk/; revision=13976
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
* mail-mt.c: #include "component-factory.h".
(do_op_status): Pass the component ID instead of the msg ID.
* component-factory.h (COMPONENT_ID): #define here instead of
`component-factory.c'.
(SUMMARY_FACTORY_ID): Likewise.
svn path=/trunk/; revision=13895
2001-10-21 <NotZed@Ximian.com>
* mail-vfolder.c (mail_vfolder_shutdown): Clear variables once
done, for debugging.
(mail_vfolder_add_uri, mail_vfolder_delete_uri): Dont do anything
if we're shutdown (context == NULL).
* component-factory.c (idle_quit): Move mail_vfolder_shutdown
here, it should be one of the last things shutdown.
* mail-format.c (handle_text_plain): Dont use (if (!p++), and then
check p!= later, since its now 1, oops. Fixes#13106, thought it
was a start of uuencoded stuff!
* folder-browser.c (on_right_click): Escape _'s before adding them
to menu from mailing list name, also remove some dead code that
someone forgot to remove when refactoring. #11307.
(folder_browser_is_drafts): Use the store's uri_cmp function to
compare to the drafts uri's.
(folder_browser_is_sent): Same. Slight cleanup for #11351.
svn path=/trunk/; revision=13856
* e-storage-set-view.c (tree_drag_data_received): Pass the
@folder_type to ::handleDrop.
* evolution-shell-component-dnd.c
(impl_GNOME_Evolution_ShellComponentDnd_DestinationFolder_handleMotion):
New arg @folder_type.
(impl_GNOME_Evolution_ShellComponentDnd_DestinationFolder_handleDrop):
Likewise.
* evolution-shell-component-dnd.h: Add @folder_type to
`DndDestinationFolderHandleDropFn' and
`DndDestinationFolderHandleMotionFn'.
* e-storage-set-view.c (tree_drag_motion): Pass the folder type to
`::handleMotion'.
* Evolution-ShellComponentDnd.idl: Pass @folder_type in
::handleDrop and ::handleMotion.
* component-factory.c (destination_folder_handle_motion): Get
@folder_type here too [to match the changes in the
EvolutionShellComponentDnd interface]. Also, remove a debugging
message.
(destination_folder_handle_drop): Likewise.
* gui/component/addressbook-component.c
(destination_folder_handle_motion): Get @folder_type here too [to
match the changes in the EvolutionShellComponentDnd interface].
Also, remove a debugging message.
(destination_folder_handle_drop): Likewise.
svn path=/trunk/; revision=13807
2001-10-18 <NotZed@Ximian.com>
* mail-vfolder.c (vfolder_adduri): Added remove flag - its not
adduri, its removeuri, its less typing than creating a removeuri.
(vfolder_adduri_do): Implement the remove flag.
(mail_vfolder_remove_uri): Changed to mail_vfolder_delte_uri, to
indicate its actually been deleted.
(mail_vfolder_add_uri): Added remove flag.
(rule_changed): When adding existing folders to a new rule, strdup
the list data.
* mail-folder-cache.c (store_finalised): Unhook from all events
when done.
(mail_note_store_remove): Remove a store from being noted.
(free_folder_info): Also if we have a folder, unhook all events.
Also remove the uri from vfolders.
(mail_note_folder): Remove warning about adding folders to stores
that aren't added yet - we might actually be removing the store.
* component-factory.c (mail_remove_storage): Call
mail_note_store_remove when we remove the storage.
svn path=/trunk/; revision=13782
2001-10-15 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (owner_unset_cb): Call
mail_vfolder_shutdown.
* mail-vfolder.c (mail_vfolder_shutdown): Unref all of our
VFolders.
* mail-folder-cache.c (real_note_folder): Remember to unref the
folder before returning if we have already noted this folder.
svn path=/trunk/; revision=13682
2001-10-11 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (free_storage): Make sure the
service/storage are non-NULL.
* mail-callbacks.c (e_gnome_dialog_parent_destroyed): Call
gtk_main_quit.
(send_receive_mail): Don't use e_gnome stuff since this doesn't
need to be run using gnome_dialog_run_and_close().
(composer_send_cb): Same.
(edit_msg): Here too.
(resend_msg): And here.
(search_msg): Same.
(filter_edit): Here too.
(filter_edit): Don't use e_gnome_dialog_set_parent() because we
don't do gnome_dialog_run_and_close on this dialog.
(e_gnome_error_dialog_parented): Removed.
(e_gnome_ok_dialog_parented): Removed.
svn path=/trunk/; revision=13583
2001-10-10 <NotZed@Ximian.com>
* mail-ops.c (transfer_messages_transfer): IF the source and
destination folders are the same, do nothing. Oh, and return an
error, otherwise the shell goes and removes it anyway. Fixes a
rather serious bug with dnd of folders onto their current
location.
2001-10-09 <NotZed@Ximian.com>
* component-factory.c (owner_unset_cb): Disconnect from all the
signals we were listening to, so we dont try and do shit twice on
exit (one on unset_cb, one on destroy).
(create_component): Setup the signal handlers using a table, so
they're easier to disconnect on finish.
svn path=/trunk/; revision=13545
* component-factory.c (create_view): For mailstorage folders,
connect to the control's "activate" signal, and don't try to
connect to the store.
(storage_activate): Instead, do it here, so if the connection
fails, or the user cancels, or whatever else, he can try again
later.
svn path=/trunk/; revision=13503
2001-10-04 <NotZed@Ximian.com>
* component-factory.c (storage_remove_folder): Do the url
fragment/path -> folder name hack. Removing vfolders from shell
works now?
svn path=/trunk/; revision=13416
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
* component-factory.c (mail_load_storage_by_uri): create storages
for providers that are STORAGE and aren't EXTERNAL, rather than
"(STORAGE and REMOTE) or spool, maildir, or vfolder".
(mail_remove_storage_by_uri): Use the same rule here (which makes
it possible now to remove maildir and spool stores now, which
weren't properly special-cased before). Remove some CamelException
misuse.
* mail-config.c (new_source_created): Fix up the broken INBOX-
shortcut-generating assumption a little by only assuming that if
you call camel_store_get_inbox(), that its full_name is the same
as its path. (This happens to always be true for inboxes now, and
will be always true by definition at some point in the future.)
Now maildir stores get working Inbox shortcuts.
* mail-send-recv.c (get_receive_type): If PROVIDER_IS_STORAGE
then use SEND_UPDATE, if not, use SEND_RECEIVE.
* mail-local.c (local_provider): The local provider is EXTERNAL.
(The shell creates it.)
(mail_local_reconfigure_folder): Allow reconfiguring between
IS_LOCAL providers.
* mail-accounts.c (news_delete): Don't need to check the provider
flags here... we know nntp is a STORAGE.
svn path=/trunk/; revision=13277
2001-09-28 <NotZed@Ximian.com>
* mail-local.c (mail_local_store_remove_folder): Emit
folder_deleted event.
(remove_find_path): Fix, compare against path, not full_name.
* mail-tools.c (mail_tool_uri_to_folder): Dont
vfolder_register_source anymore.
* mail-vfolder.c (rule_changed): Changed to access
mail_fodler_cahce to find out if the folder exist yet before
trying to open them, also use the cache as a cache so we dont have
to open the folder if its already been opened.
(vfolder_register_source, register_source): Removed.
(source_finalise): Removed,
(check_source): Removed. All handled through diff mechanism.
(mail_vfolder_add_uri): New function, records uri's of available
folders, and adds them to any active vfolders if required.
(mail_vfolder_remove_uri): New function, removes a uri from
available folders, and checks any rules to see fi they need
updating.
(vfolder_adduri): New async function to add a uri to all vfolders
that need it.
(store_folder_deleted): oops! free user, not rule!!
* mail-folder-cache.c: Add uri->folderinfo hashtable, and the
store from which they come into the store info struct.
Add uri to the folder_info.
(setup_folder): Store the uri in the folderinfo.
(setup_folder): And the uri in the folder_uri hashtable.
(mail_note_store): Store the store in the storeinfo, and setup the
folders_uri hashtable via the store's hash functions.
(setup_folder): Call mail_vfolder_add_uri to note this newly setup
folder uri.
(store_folder_deleted): Proxy call to main thread.
(real_folder_deleted): And tell the vfolder to remove this uri
from its folder list.
(setup_folder): Dont call vfolder_add_uri if noselect is set on
the uri.
2001-09-27 <NotZed@Ximian.com>
* mail-vfolder.c: Removed vfolder_info struct, vfolder_storage.
Neither used anymore.
svn path=/trunk/; revision=13242
* mail-folder-cache.c: Add a big comment explaining unread message
counts so no one can mess them up again in the future. :-)
(update_1folder): If info->unread_message_count is -1, don't do
anything.
* component-factory.c (component_factory_init): warn and exit if
oaf_active_server_register returns OAF_REG_ALREADY_ACTIVE.
svn path=/trunk/; revision=13155
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 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (owner_set_cb): Throw up a warning dialog if
we suspect the config database is corrupt.
* mail-config.c (config_read): If the account name is NULL, then
we have a corrupt config database most likely - so generate a fake
account name and set the corrupt but to TRUE.
(mail_config_is_corrupt): New function to find out if the config
is suspected of being corrupted.
svn path=/trunk/; revision=13116
2001-09-24 <NotZed@Ximian.com>
* mail-local.c (mls_get_folder): Removed unused variables.
* component-factory.c (storage_create_folder): Remove unused
variable.
* mail-format.c (write_default_header): Used to write a header
that we know about/normally print. Use a static header table to
index these.
(write_header): removed.
(default_header_index): Return the index of the default header.
(write_headers): Changed the way it writes headers a bit. Use
write_default_header or write_text_header directly. Also try and
use the header charset as a fallback if the header can't be
decoded using the locale charset.
svn path=/trunk/; revision=13097
* mail-callbacks.c (mail_storage_create_folder, folder_created,
create_folders): All made redundant by new mail-folder-cache
code.
(delete_folders, folder_deleted): Uh, code that isn't used
anywhere. Removed.
* component-factory.c (storage_create_folder): Dont call
folder_created, let the folder_created event handle the update.
* mail-ops.c (mail_scan_subfolders): Remove, no longer used.
svn path=/trunk/; revision=13059
2001-09-21 <NotZed@Ximian.com>
* mail-folder-cache.c (mail_note_store): Take a new argument
'done' that can callback when complete. Fixed callers
appropriately.
* mail-ops.c (mail_update_subfolders): Removed. Isn't used
anymore.
* mail-send-recv.c (receive_update_got_store): Remove call to
mail_update_subfolders.
svn path=/trunk/; revision=13044
2001-09-20 <NotZed@Ximian.com>
* component-factory.c (got_folder): trigger a folder changed
event, so the folderinfocache stuff has a chance to see if this is
the outbox_folder or not.
* mail-folder-cache.c (update_1folder): If we have -1 unread
count, pass that as 0 to the shell so it doesn't go bolding.
(setup_folder): Same.
svn path=/trunk/; revision=13041
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-vfolder.c (vfolder_register_source): Lock around
hashtable/list manipulation. Also dont try scan vfolder_hash if
it hasn't been setup yet.
(source_finalise): Lock around list access.
(rule_changed): Lock around hash access.
(context_rule_added): Lock around hash access.
(context_rule_removed): "
(rule_changed): Lock around list access.
* mail-local.c (storage_listener_startup): Fix for api change.
(local_storage_new_folder_cb): Dont skip over leading / in path.
(local_storage_removed_folder_cb): ditto.
* mail-folder-cache.c (create_folders): No longer pass prefix
between recursive calls - we have the path in the folderinfo.
(setup_folder): No longer take path arg, we get it from
folderinfo.
(mail_note_folder): No longer take path arg, we use
folder->full_name to key the folder table.
(mail_note_store): Consolidate note_store interface, pass storage
or corba_storage to it.
(mail_note_local_store): Removed.
* mail-ops.c
(add_unmatched_info): Scan for unmatched name and re-title.
svn path=/trunk/; revision=13023
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 Jeffrey Stedfast <fejj@ximian.com>
* mail-send-recv.c (receive_update_got_store): Here too.
* component-factory.c (create_view): Call mail_note_store()
instead of mail_scan_subfolders() here so that these folders get
hooked up with the unread count code.
svn path=/trunk/; revision=12999
2001-09-19 <NotZed@Ximian.com>
* component-factory.c: Added missing header.
* mail-local.c (mail_local_store_add_folder): Async load the
folder we just added, so it can update the folder counts in the
display. We just discard the folder afterwards?
* mail-ops.c (mail_get_folder): Use the queued thread to get
folders.
svn path=/trunk/; revision=12976
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
2001-09-17 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (storage_remove_folder): Unsubscribe from
the folder before deleting it. Also, use the url's path instead of
the shell's path since IMAP doesn't necessarily have to use "/" as
the dir sep.
* mail-ops.c (remove_folder_get): If the store supports
subscriptions, make sure to unsubscribe from the folder before
deleting it.
svn path=/trunk/; revision=12931
2001-09-17 Jeffrey Stedfast <fejj@ximian.com>
* component-factory.c (storage_remove_folder): Unsubscribe from
the folder before deleting it.
* mail-ops.c (remove_folder_get): If the store supports
subscriptions, make sure to unsubscribe from the folder before
deleting it.
svn path=/trunk/; revision=12921