Commit Graph

242 Commits

Author SHA1 Message Date
91010cb266 Add an icon for the "New message" user creatable item.
* component-factory.c (create_component): Add an icon for the "New
message" user creatable item.

svn path=/trunk/; revision=15791
2002-02-22 02:24:05 +00:00
ce46cd2607 remove "New" from user creatable menu item
2002-02-07  JP Rosevear  <jpr@ximian.com>

	* component-factory.c (create_component): remove "New" from user
	creatable menu item

svn path=/trunk/; revision=15597
2002-02-07 19:38:51 +00:00
d4c2e5853d re-enable popup menu. (populate_folder_context_menu): If we're on a
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-30 07:28:21 +00:00
91dd1d75d7 Do some NULL checking on the url before using it.
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-25 19:08:00 +00:00
c76fc18144 Pass a NULL icon to `evolution_shell_component_add_user_creatable_item()'.
* component-factory.c (create_component): Pass a NULL icon to
`evolution_shell_component_add_user_creatable_item()'.

svn path=/trunk/; revision=15441
2002-01-23 22:23:51 +00:00
16b174cf0e If the first "token" in the body is "<html>", then treat this as a
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
2002-01-21 21:58:07 +00:00
1cca6b2433 Renamed. (mail_config_get_new_mail_notify_sound_file): Renamed.
2002-01-07  Jeffrey Stedfast  <fejj@ximian.com>

	* mail-config.c (mail_config_set_new_mail_notify_sound_file): Renamed.
	(mail_config_get_new_mail_notify_sound_file): Renamed.

	* mail-accounts.c (notify_radio_toggled): Replace EXEC with
	PLAY_SOUND.
	(construct): renamed the exec_command stuff to play_sound.

	* main.c (main): Init and shutdown gnome_sound.

	* mail-ops.c (fetch_mail_fetch): Don't do any new-mail
	notification here.
	(filter_folder_filter): call camel_filter_driver_flush.

	* mail-session.c (main_get_filter_driver): Set the filter-driver
	exec_func here instead.

	* mail-ops.c (mail_fetch_mail): Don't set the filter-driver
	exec_func here.

svn path=/trunk/; revision=15263
2002-01-08 00:48:54 +00:00
056f54ee28 Was x_evolution_message_parse from folder-browser.c. A space char is no
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-11-09 19:36:03 +00:00
0
093a00cf2b Argh!!! Dont free the async op data here, the async op is still running
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-30 03:28:40 +00:00
9
fedf164cb9 Copy the folder's full_name before trying to use it to rename.
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-29 05:06:28 +00:00
8
4229e6849d Remove uic, kill dumb warning.
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 10:53:02 +00:00
8
4689dccf16 Implemented. (mail_vfolder_rename_uri): We do want to check renamed uri's
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-28 05:11:53 +00:00
6
8f8b24c737 Changed to open the source store from '/', so we can do renames across
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-27 06:02:04 +00:00
c0cddd6d1d Update the licensing information to require version 2 of the GPL
(instead of version 2 or any later version).

svn path=/trunk/; revision=14191
2001-10-27 00:47:22 +00:00
6
8b01bc9334 Use a timeout not an idle handler.
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-26 02:03:22 +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
e58630b141 Unref the global search_context. (owner_set_cb): create the global
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-24 04:09:30 +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
739e7cd1da #include "component-factory.h". (do_op_status): Pass the component ID
* 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-22 21:16:10 +00:00
1
a02822a94e Clear variables once done, for debugging. (mail_vfolder_add_uri,
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
2001-10-21 20:28:58 +00:00
a4c585d56c Properly handle local vTrash folders.
2001-10-19  Jeffrey Stedfast  <fejj@ximian.com>

	* component-factory.c (destination_folder_handle_drop): Properly
	handle local vTrash folders.

svn path=/trunk/; revision=13813
2001-10-19 23:04:35 +00:00
a5efc9cddd Pass the @folder_type to ::handleDrop.
* 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-19 22:01:22 +00:00
8
ae5590f88d Added remove flag - its not adduri, its removeuri, its less typing than
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-19 00:45:02 +00:00
f620356a6f Call mail_vfolder_shutdown.
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-15 20:18:08 +00:00
dbcaac3afa Make sure the service/storage are non-NULL.
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-11 16:47:17 +00:00
0
7ce7e09762 IF the source and destination folders are the same, do nothing. Oh, and
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
2001-10-10 05:46:34 +00:00
e1581b7785 For mailstorage folders, connect to the control's "activate" signal, and
* 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-08 18:14:59 +00:00
664206faba Only create the folder when the shell has created it.
svn path=/trunk/; revision=13420
2001-10-04 20:02:00 +00:00
4
c413bd3b56 Do the url fragment/path -> folder name hack. Removing vfolders from shell
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-04 19:19:26 +00:00
378422f6e1 Pass an empty flags argument to mail_transfer_messages - destination
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 22:45:24 +00:00
8d4f5ab1c8 Pass an empty flags argument to mail_tool_uri_to_folder.
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-10-02 22:01:03 +00:00
f41afabb33 Check for errors
svn path=/trunk/; revision=13292
2001-10-01 23:43:29 +00:00
8d3a2ebd28 create storages for providers that are STORAGE and aren't EXTERNAL, rather
* 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-10-01 19:45:39 +00:00
8
4caf4a1d4e Setup vfolder storage before all others.
2001-09-28    <NotZed@Ximian.com>

	* component-factory.c (owner_set_cb): Setup vfolder storage before
	all others.

svn path=/trunk/; revision=13243
2001-09-29 00:00:33 +00:00
8
4b14db5520 Emit folder_deleted event. (remove_find_path): Fix, compare against path,
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
2001-09-28 23:54:30 +00:00
3bf97142fa Add a big comment explaining unread message counts so no one can mess them
* 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-26 19:28:14 +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
70a6a65a56 Throw up a warning dialog if we suspect the config database is corrupt.
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-25 20:16:14 +00:00
4
9a864d05fe Removed unused variables.
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
2001-09-24 19:31:36 +00:00
c553954772 All made redundant by new mail-folder-cache code. (delete_folders,
* 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 20:10:58 +00:00
1
b2e7adf9b8 Take a new argument 'done' that can callback when complete. Fixed callers
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-21 05:58:31 +00:00
0
096dad5a2a trigger a folder changed event, so the folderinfocache stuff has a chance
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-21 03:10:02 +00:00
0
a68b568135 Update the status bar here, assuming we've just been activated.
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-21 00:56:49 +00:00
0
586f083c3a Lock around hashtable/list manipulation. Also dont try scan vfolder_hash
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 22:59:11 +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
add469da50 Here too.
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 23:49:11 +00:00
9
9ab4b45c15 Added missing header.
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 10:01:32 +00:00
9
73c74dd70d General cleanup of mail debug printfs.
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-19 08:29:13 +00:00
6d03c10b69 Unsubscribe from the folder before deleting it. Also, use the url's path
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-18 03:07:09 +00:00
0d9c13bb37 Unsubscribe from the folder before deleting it.
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
2001-09-17 23:26:36 +00:00