diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2011-05-25 04:14:59 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2011-05-25 04:14:59 +0800 |
commit | 7dbc147e266e0922e6d5c3042aeea508fc069d00 (patch) | |
tree | e70df076c51012981e83b2e56319f2fb3157c23e | |
parent | 47c740b2ba957c1bbab7088cd77b3761f56857bc (diff) | |
download | gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.tar gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.tar.gz gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.tar.bz2 gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.tar.lz gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.tar.xz gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.tar.zst gsoc2013-evolution-7dbc147e266e0922e6d5c3042aeea508fc069d00.zip |
Add em_folder_tree_get_selected().
Returns the CamelStore and folder name of the selected row.
-rw-r--r-- | mail/em-folder-tree.c | 36 | ||||
-rw-r--r-- | mail/em-folder-tree.h | 3 |
2 files changed, 39 insertions, 0 deletions
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c index 3bb5d509d5..9689c53dda 100644 --- a/mail/em-folder-tree.c +++ b/mail/em-folder-tree.c @@ -3149,6 +3149,42 @@ em_folder_tree_edit_selected (EMFolderTree *folder_tree) gtk_tree_path_free (path); } +gboolean +em_folder_tree_get_selected (EMFolderTree *folder_tree, + CamelStore **out_store, + gchar **out_folder_name) +{ + GtkTreeView *tree_view; + GtkTreeSelection *selection; + GtkTreeModel *model; + GtkTreeIter iter; + CamelStore *store = NULL; + gchar *folder_name = NULL; + + g_return_val_if_fail (EM_IS_FOLDER_TREE (folder_tree), FALSE); + + tree_view = GTK_TREE_VIEW (folder_tree); + selection = gtk_tree_view_get_selection (tree_view); + + if (!gtk_tree_selection_get_selected (selection, &model, &iter)) + return FALSE; + + gtk_tree_model_get ( + model, &iter, + COL_POINTER_CAMEL_STORE, &store, + COL_STRING_FULL_NAME, &folder_name, -1); + + if (out_store != NULL) + *out_store = g_object_ref (store); + + if (out_folder_name != NULL) + *out_folder_name = folder_name; + else + g_free (folder_name); + + return TRUE; +} + gchar * em_folder_tree_get_selected_uri (EMFolderTree *folder_tree) { diff --git a/mail/em-folder-tree.h b/mail/em-folder-tree.h index 0e6eba4659..3a28d5c314 100644 --- a/mail/em-folder-tree.h +++ b/mail/em-folder-tree.h @@ -123,6 +123,9 @@ void em_folder_tree_select_next_path (EMFolderTree *folder_tree, void em_folder_tree_select_prev_path (EMFolderTree *folder_tree, gboolean skip_read_folders); void em_folder_tree_edit_selected (EMFolderTree *folder_tree); +gboolean em_folder_tree_get_selected (EMFolderTree *folder_tree, + CamelStore **out_store, + gchar **out_folder_name); gchar * em_folder_tree_get_selected_uri (EMFolderTree *folder_tree); gchar * em_folder_tree_get_selected_path (EMFolderTree *folder_tree); |