[anjal] Add provision to search message store.



commit 99a4396d0c71d643b82f4230cb4ed6f3172c6879
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Fri May 15 23:26:57 2009 +0530

    Add provision to search message store.
---
 src/em-tree-store.c |   49 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/src/em-tree-store.c b/src/em-tree-store.c
index 73df892..dd8cd44 100644
--- a/src/em-tree-store.c
+++ b/src/em-tree-store.c
@@ -1101,6 +1101,54 @@ em_tree_store_add_folder (EMTreeStore *emts, CamelFolder *folder, const char *ex
 		  g_warning ("error: %s\n", camel_exception_get_description (&ex));
 		  camel_exception_clear (&ex);
 	 }
+
+	 if (uids->len > camel_folder_summary_cache_size (f->folder->summary)){
+		  camel_folder_summary_set_need_preview (f->folder->summary, TRUE);
+		  camel_folder_summary_reload_from_db (f->folder->summary, &ex);
+	 }
+	 if (camel_exception_is_set (&ex)) {
+		  g_warning ("error: %s\n", camel_exception_get_description (&ex));
+				camel_exception_clear (&ex);
+	 }
+	 for (j=0; j<uids->len; j++) {
+		  CamelMessageInfo *mi = camel_folder_get_message_info (f->folder, uids->pdata[j]);
+		  emts_insert_info_base(emts, mi, f);
+	 }
+
+	 if (prune) {
+		  emts_prune_empty(emts, (EMTreeNode *)emts->root->children.head);
+		  emts_sort_view (emts, f);
+	 }
+}
+
+void
+em_tree_store_search_folder (EMTreeStore *emts, CamelFolder *folder, const char *expr, gboolean prune)
+{
+	 struct _EMTreeStorePrivate *p = _PRIVATE(emts);	 
+	 GPtrArray *uids;
+	 CamelException ex;
+	 int j;
+	 struct _emts_folder *f = (struct _emts_folder *)p->folders.head;
+	 
+	 camel_exception_init (&ex);
+	 
+  	 emts_node_free_rec(p, emts->root);
+	 #warning "free real nodes"
+	 g_hash_table_destroy(p->id_table);
+
+	 p->id_table = g_hash_table_new((GHashFunc)emts_id_hash, (GCompareFunc)emts_id_equal);
+	 emts->root = emts_node_alloc(p);
+
+	 g_hash_table_destroy (f->uid_table);
+	 f->uid_table = g_hash_table_new(g_str_hash, g_str_equal);
+	 
+	 uids = camel_folder_search_by_expression (f->folder, expr, &ex);
+	 if (camel_exception_is_set (&ex)) {
+		  g_warning ("error: %s\n", camel_exception_get_description (&ex));
+		  camel_exception_clear (&ex);
+	 }
+	 printf("Search has %d mails\n", uids ? uids->len : 0);
+ 
 	 if (uids->len > camel_folder_summary_cache_size (f->folder->summary)){
 		  camel_folder_summary_set_need_preview (f->folder->summary, TRUE);
 		  camel_folder_summary_reload_from_db (f->folder->summary, &ex);
@@ -1111,6 +1159,7 @@ em_tree_store_add_folder (EMTreeStore *emts, CamelFolder *folder, const char *ex
 	 }
 	 for (j=0; j<uids->len; j++) {
 		  CamelMessageInfo *mi = camel_folder_get_message_info (f->folder, uids->pdata[j]);
+		  printf("Inserting %s\n", camel_message_info_subject(mi));
 		  emts_insert_info_base(emts, mi, f);
 	 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]