These libraries are bound for E-D-S so they live at the lowest layer of
Evolution for now -- even libeutil can link to them (but please don't).
This is the first step toward moving mail handing to a D-Bus service.
This implements https://bugzilla.gnome.org/show_bug.cgi?id=663527#c3.
Account reordering is now done by drag-and-drop instead of up/down
buttons.
Turned out to be a wee bit more complicated than I initially thought.
This scraps EAccountManager and EAccountTreeView and replaces them with
new classes centered around EMailAccountStore, which EMailSession owns.
EMailAccountStore is the model behind the account list in Preferences.
The folder tree model now uses it to sort its own top-level rows using
gtk_tree_path_compare(). It also broadcasts account operations through
signals so we don't have to rely so heavily on EAccountList signals,
since EAccountList is going away soon.
Also as part of this work, the e-mail-local.h and e-mail-store.h APIs
have been merged into EMailSession and MailFolderCache.
Drop EMFolderTreeModel's "session" property now that it has a "backend"
property and call em_folder_tree_model_set_backend() where we used to
call em_folder_tree_model_set_session().
The session can still be obtained through e_mail_backend_get_session().
Reducing diff noise with the account-mgmt branch.
Trying to erode our dependency on EAccount as much as possible, or at
least isolate its usage, to make things easier for me on the branch.
Lists all the CamelStores added to EMFolderTreeModel. Note that
CamelStores with a corresponding EAccount are only added if the EAccount
is enabled, so it's safe to assume all returned CamelStores are enabled.
Global variables in shared libraries are a bad idea. EMailBackend now
owns the MailSession instance, which is actually now EMailSession.
Move the blocking utility functions in mail-tools.c to e-mail-session.c
and add asynchronous variants. Same approach as Camel.
Replace EMailReader.get_shell_backend() with EMailReader.get_backend(),
which returns an EMailBackend. Easier access to the EMailSession.
Emit a signal when we have an updated unread count for a folder rather than
pushing the update directly to a particular treemodel. This doesn't yet remove
the dependency on EMFolderTreeModel, but it's a first step.
https://bugzilla.gnome.org/show_bug.cgi?id=604627
Revert the expanded tree model column and add a "selection"property to
EMFolderTreeModel, which the sidebar sets. If set, all new EMFolderTree
instances will automatically mimic its expanded and selected state.
Each EShellView now maintains a GKeyFile for recording disposable widget
state such as tree view path expansion, scroll bar positions, combo box
selections, etc. The EShellView records changes to the key file to
~/.evolution/<shell-backend>/config/state, and automatically restores
the GKeyFile at startup.
Currently only the mailer uses the key file, but it's intended to serve
all shell views. It replaces the use of Camel "cmeta" files, as well as
"et-expanded-*" and "folder-tree-expand-state.xml" files.
Also, the mailer's folder tree model now includes a column for tracking
which sidebar folders are expanded. Folder tree widgets appearing in
dialog windows can copy the sidebar's expanded state using
em_folder_tree_clone_expanded().
2008-06-20 Milan Crha <mcrha@redhat.com>
** Fix for bug #534039
* em-folder-tree-model.h: (em_folder_tree_model_signal_block):
* em-folder-tree-model.c: (em_folder_tree_model_signal_block):
Removed obsolete function.
* mail-vfolder.c: (vfolder_load_storage):
Add storage to the tree model when everything is loaded, thus
everything will be shown when enabling the Search Folders on demand.
Also ensure the Search Folders to be enabled next start.
* mail-vfolder.c: (mail_vfolder_add_uri), (mail_vfolder_delete_uri):
Track folders even when Search Folders disabled, to have them
known when enabling Search Folders on demand.
svn path=/trunk/; revision=35658
2008-06-06 Matthew Barnes <mbarnes@redhat.com>
** Allow evolution to build with G_DISABLE_SINGLE_INCLUDES and
GTK_DISABLE_SINGLE_INCLUDES defined. (#536637)
svn path=/trunk/; revision=35606
2008-01-02 Srinivasa Ragavan <sragavan@novell.com>
* em-event.c: (eme_target_free):
* em-event.h:
* em-folder-tree-model.c: (em_folder_tree_model_get_folder_name):
* em-folder-tree-model.h:
* mail-folder-cache.c: (real_flush_updates): Send the folder name
along with the new mail event.
svn path=/trunk/; revision=34744
2007-11-05 Milan Crha <mcrha@redhat.com>
** Fix for bug #343011
(restore collapse state of selected folder after start)
* em-folder-tree.c: (emft_maybe_expand_row): Do not expand subtree of
a node, only make it visible.
* em-folder-tree-model.h: (em_folder_tree_model_get_expanded_uri),
(em_folder_tree_model_set_expanded_uri):
* em-folder-tree-model.c: (em_folder_tree_model_get_expanded_uri),
(em_folder_tree_model_set_expanded_uri):
Same as ..._get/_set_expanded, but using 'uri', instead of 'key'.
* em-folder-tree-model.c: (emftm_uri_to_key): New helper function.
* mail-component.c: (impl_createView): Restore collapsed state after
selecting last selected folder, if necessary.
svn path=/trunk/; revision=34503
2004-06-10 Jeffrey Stedfast <fejj@novell.com>
Fixes bug #58825. Ugh. Really Gross Hack (tm).
* em-folder-tree.c (emft_tree_row_expanded): If the store that we
are expanding matches the uri that we've been requested to select
(e.g. from before the store was added to the tree), then give the
uri to the get_folder_info_op.
(em_folder_tree_set_selected): If the store for the uri isn't in
the tree yet, save the uri for later.
* mail-component.c (folder_selected_cb): Set the selected state of
the folder-tree and save it.
(impl_createControls): Restore the selected state on the
folder-tree.
* em-folder-tree-model.c (em_folder_tree_model_set_selected): New
function to set the selected-uri saved state.
(em_folder_tree_model_get_selected): New function to get the
selected uri saved state.
(em_folder_tree_model_save_state): Renamed.
* em-folder-tree.c (emft_update_model_expanded_state): Don't let
path be NULL if the node is a store node (path == NULL for any
other case is a bug).
(emft_maybe_expand_row): Same.
svn path=/trunk/; revision=26294
2004-05-26 Not Zed <NotZed@Ximian.com>
* importers/evolution-mbox-importer.c (create_control_fn): set the
default selection to inbox.
* importers/evolution-outlook-importer.c (folder_selected)
(create_control_fn): copied from mbox importer. fixes a crash &
lets you choose the target folder.
2004-05-25 Not Zed <NotZed@Ximian.com>
* mail-component.c (mc_add_local_store_done): removed, now
redundant.
* em-folder-tree.c (em_folder_tree_set_selected): fix for path changes.
* em-folder-tree-model.c (em_folder_tree_model_set_unread_count):
change to use full name rather than path name.
* em-folder-tree-model.h: renamed path_hash to full_hash.
* em-folder-tree-model.c (folder_subscribed): dont use
g_path_get_dirname here, it is os dependent, we want / always.
(full_hash_free): rename from path_hash free.
svn path=/trunk/; revision=26090
2004-05-07 Jeffrey Stedfast <fejj@ximian.com>
Fix for bug #57152.
* em-folder-tree.c (emft_get_folder_info__got): If we queried for
a recursive folder-info listing, then pass fully_loaded as TRUE to
set_folder_info().
(emft_get_folder_info__got): If we find that a folder doesn't have
children, set the expanded state to FALSE.
* em-folder-tree-model.c (em_folder_tree_model_set_folder_info):
Now takes a "fully_loaded" argument to hint to set_folder_info
whether or not folder-info's without child nodes can possibly have
children (eg. if fully_loaded is set and fi->child is NULL, then
'load' will be FALSE no matter what fi->flags contains).
svn path=/trunk/; revision=25826
2004-03-16 Jeffrey Stedfast <fejj@ximian.com>
Fix for bug #55358.
* em-folder-tree.c (emft_expand_node): Changed to be the callback
function for em_folder_tree_model_expand_foreach().
(emft_maybe_expand_row): Renamed from emft_loading_row_cb(). We
now handle both "loading-row" an "loaded-row" signals. Also
updated for slight change in key generation.
(em_folder_tree_new_with_model): Connect to the "loaded-row"
signal.
(emft_update_model_expanded_state): Updated for slight change in
key generation.
* em-folder-tree-model.c (em_folder_tree_model_add_store): Emit
the "loaded-row" signal for the newly added store.
(em_folder_tree_model_set_folder_info): Emit "loaded-row" for the
row we've just set the info on (but only after we've added a child
node if there is one, so the signal handler can expand the newly
added row if appropriate).
(em_folder_tree_model_class_init): Setup the "loaded-row" signal.
(em_folder_tree_model_finalize): The tree-state is now an xml file
and not a binary file, so change the expanded free func.
(em_folder_tree_model_load_state): Load the expand-state xml
file. If one doesn't exist, setup some defaults.
(em_folder_tree_model_get_expanded): Scan the XML tree for the
node.
(em_folder_tree_model_set_expanded): Same.
(em_folder_tree_model_save_expanded): Save the expand-state xml
tree to disk.
(em_folder_tree_model_expand_foreach): New function to iterate
over all xml nodes and call the callback if the expand state is
"true".
svn path=/trunk/; revision=25094
2004-03-11 Not Zed <NotZed@Ximian.com>
* em-format-html.c (efh_format_header): pass the raw header in
instead of name and value.
(efh_format_headers): if we have specific headers to show, iterate
over all headers and print out all matching ones, so duplicate
headers are properly displayed. Related to #55298.
* em-folder-selector.c (em_folder_selector_construct): dont set
this to be modal. otherwise you can't click on error popups. duh.
2004-03-08 Not Zed <NotZed@Ximian.com>
* em-folder-selection-button.c
(em_folder_selection_button_clicked): don't let the user select
virtual/vtrash folders or non-selectable folders.
* mail-component.c (impl_createControls): disable selection of
non-select rows.
* em-folder-selector.c (em_folder_selector_create_new): exclude
folders with noinferiors set.
* em-folder-tree.c (folder_tree_new): add folder tree arg, hook
onto the selection funciton for the tree selection.
(emft_select_func): selection override function. allow certain
things to be excluded.
(em_folder_tree_set_excluded): api to set what is excluded from
the selectability.
(emft_tree_row_activated): call emft_select_func check to see if
this row is excluded before emitting an activated signal.
* em-folder-tree-model.c (em_folder_tree_model_set_folder_info):
save folder info->flags in the tree store.
* mail-folder-cache.c (create_folders): use tail recursion.
(get_folders): tail recurse.
* (*): Fixed for api changes in camel.
svn path=/trunk/; revision=25020
2004-03-10 Jeffrey Stedfast <fejj@ximian.com>
Partial fix for bug #53862
* em-folder-selector.c (emfs_response): Connect to the newly added
"folder-added" signal and save a created_uri string so that we can
be sure to only listen for the creation of the folder the user
created in *our* create-folder dilog (and not from some other
place).
* em-folder-tree-model.c (folder_subscribed): Emit a new
"folder-added" signal.
svn path=/trunk/; revision=25013
2004-02-09 Not Zed <NotZed@Ximian.com>
* em-folder-tree.c (tree_drag_data_delete): merged in code from
em_folder_tree_model_drag_data_delete.
(tree_drag_data_get): similar.
(tree_drag_data_received): similar.
(drag_text_uri_list): removed, use em_utils_selection_set_urilist
in tree_drag_data_get instead.
(em_folder_tree_enable_drag_and_drop): merged in
em_folder_tree_model_set_drag_drop_types.
(tree_drag_motion): merge in drop_possible, handle qualifiers, and
return the right type.
(em_folder_tree_model_row_drop_target): rename to
emft_drop_target, and make private. Beefed up substantially,
handles illogical drops, dropping on to special folders and
properly handling vfolder uri's (at least within the same tree
instance).
* em-folder-tree-model.c: Moved all of the DND stuff to
em-folder-tree, where it belongs, made it all static. Should
allow for some sharing of code too.
svn path=/trunk/; revision=24679