diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2013-06-19 22:48:21 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2013-06-20 02:15:25 +0800 |
commit | a100a1588a2a880da482f4bbc15aa02d7abab312 (patch) | |
tree | 0704558ac3be2608da7f5facdd80ccd5a4688fa7 | |
parent | 3ecab2f66278d486698e06d316a53f2f51670c49 (diff) | |
download | gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.tar gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.tar.gz gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.tar.bz2 gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.tar.lz gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.tar.xz gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.tar.zst gsoc2013-evolution-a100a1588a2a880da482f4bbc15aa02d7abab312.zip |
Add e_tree_model_node_get_n_nodes().
Returns the total number of nodes in the tree model, including hidden
nodes in collapsed tree branches.
-rw-r--r-- | doc/reference/evolution-util/evolution-util-sections.txt | 1 | ||||
-rw-r--r-- | e-util/e-tree-model.c | 13 | ||||
-rw-r--r-- | e-util/e-tree-model.h | 2 | ||||
-rw-r--r-- | mail/message-list.c | 18 |
4 files changed, 34 insertions, 0 deletions
diff --git a/doc/reference/evolution-util/evolution-util-sections.txt b/doc/reference/evolution-util/evolution-util-sections.txt index c41d18c752..9df7b9b3e9 100644 --- a/doc/reference/evolution-util/evolution-util-sections.txt +++ b/doc/reference/evolution-util/evolution-util-sections.txt @@ -4265,6 +4265,7 @@ e_tree_model_node_get_first_child e_tree_model_node_get_next e_tree_model_node_is_root e_tree_model_node_is_expandable +e_tree_model_node_get_n_nodes e_tree_model_node_get_n_children e_tree_model_node_depth e_tree_model_get_expanded_default diff --git a/e-util/e-tree-model.c b/e-util/e-tree-model.c index 85248918b2..b03824d153 100644 --- a/e-util/e-tree-model.c +++ b/e-util/e-tree-model.c @@ -359,6 +359,19 @@ e_tree_model_node_is_expandable (ETreeModel *tree_model, } guint +e_tree_model_node_get_n_nodes (ETreeModel *tree_model) +{ + ETreeModelInterface *interface; + + g_return_val_if_fail (E_IS_TREE_MODEL (tree_model), 0); + + interface = E_TREE_MODEL_GET_INTERFACE (tree_model); + g_return_val_if_fail (interface->get_n_nodes != NULL, 0); + + return interface->get_n_nodes (tree_model); +} + +guint e_tree_model_node_get_n_children (ETreeModel *tree_model, ETreePath path) { diff --git a/e-util/e-tree-model.h b/e-util/e-tree-model.h index c6ed8c8799..08a397cb31 100644 --- a/e-util/e-tree-model.h +++ b/e-util/e-tree-model.h @@ -65,6 +65,7 @@ struct _ETreeModelInterface { ETreePath path); gboolean (*is_expandable) (ETreeModel *tree_model, ETreePath path); + guint (*get_n_nodes) (ETreeModel *tree_model); guint (*get_n_children) (ETreeModel *tree_model, ETreePath path); guint (*depth) (ETreeModel *tree_model, @@ -147,6 +148,7 @@ gboolean e_tree_model_node_is_root (ETreeModel *tree_model, ETreePath path); gboolean e_tree_model_node_is_expandable (ETreeModel *tree_model, ETreePath path); +guint e_tree_model_node_get_n_nodes (ETreeModel *tree_model); guint e_tree_model_node_get_n_children (ETreeModel *tree_model, ETreePath path); diff --git a/mail/message-list.c b/mail/message-list.c index ada7f11871..d6a22485ea 100644 --- a/mail/message-list.c +++ b/mail/message-list.c @@ -2704,6 +2704,23 @@ message_list_is_expandable (ETreeModel *tree_model, } static guint +message_list_get_n_nodes (ETreeModel *tree_model) +{ + ETreePath root; + guint n_nodes = 0; + + root = e_tree_model_get_root (tree_model); + + if (root == NULL) + return 0; + + /* The root node is an empty placeholder, so + * subtract one from the count to exclude it. */ + + return g_node_n_nodes ((GNode *) root, G_TRAVERSE_ALL) - 1; +} + +static guint message_list_get_n_children (ETreeModel *tree_model, ETreePath path) { @@ -3154,6 +3171,7 @@ message_list_tree_model_init (ETreeModelInterface *interface) interface->get_next = message_list_get_next; interface->is_root = message_list_is_root; interface->is_expandable = message_list_is_expandable; + interface->get_n_nodes = message_list_get_n_nodes; interface->get_n_children = message_list_get_n_children; interface->depth = message_list_depth; interface->get_expanded_default = message_list_get_expanded_default; |