[anjal] Add provision to search message store.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Add provision to search message store.
- Date: Fri, 15 May 2009 13:56:11 -0400 (EDT)
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]