X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-search.c;h=46d5c90fedc5d89dd376a6b0d6c08480f035e55d;hp=0b0dbb3ffaf52ab1fc6f61fa7e4fd14c88728b75;hb=1ae76d480a98068ec23fb6fc6d231605302b809f;hpb=0c5bc44e42151314a5453c80bd432f50dacc31af diff --git a/src/modest-search.c b/src/modest-search.c index 0b0dbb3..46d5c90 100644 --- a/src/modest-search.c +++ b/src/modest-search.c @@ -374,12 +374,19 @@ static gboolean search_mime_part_and_child_parts (TnyMimePart *part, ModestSearc * @folder: a #TnyFolder instance * @search: a #ModestSearch query * - * This operation will search @folder for headers that match the query @search. + * This operation will search @folder for headers that match the query @search, + * if the folder itself matches the query. * It will return a doubly linked list with URIs that point to the message. **/ GList * modest_search_folder (TnyFolder *folder, ModestSearch *search) { + /* Check that we should be searching this folder. */ + /* Note that we don't try to search sub-folders. + * Maybe we should, but that should be specified. */ + if (search->folder && strlen (search->folder) && (strcmp (tny_folder_get_id (folder), search->folder) != 0)) + return NULL; + GList *retval = NULL; TnyIterator *iter = NULL; TnyList *list = NULL; @@ -471,16 +478,16 @@ modest_search_folder (TnyFolder *folder, ModestSearch *search) if (msg) { g_object_unref (msg); } - } - - found = search_mime_part_and_child_parts (TNY_MIME_PART (msg), - search); - if (found) { - retval = add_hit (retval, cur, folder); - } + } else { - g_object_unref (msg); - + found = search_mime_part_and_child_parts (TNY_MIME_PART (msg), + search); + if (found) { + retval = add_hit (retval, cur, folder); + } + } + if (msg) + g_object_unref (msg); } go_next: @@ -541,12 +548,14 @@ modest_search_account (TnyAccount *account, ModestSearch *search) g_object_unref (iter); g_object_unref (folders); + /* printf ("DEBUG: %s: hits length = %d\n", __FUNCTION__, g_list_length (hits)); */ return hits; } GList * modest_search_all_accounts (ModestSearch *search) { + /* printf ("DEBUG: %s: query=%s\n", __FUNCTION__, search->query); */ ModestTnyAccountStore *astore; TnyList *accounts; TnyIterator *iter; @@ -566,20 +575,21 @@ modest_search_all_accounts (ModestSearch *search) GList *res; account = TNY_ACCOUNT (tny_iterator_get_current (iter)); - + + /* g_debug ("DEBUG: %s: Searching account %s", - __FUNCTION__, tny_account_get_name (account)); */ + __FUNCTION__, tny_account_get_name (account)); */ res = modest_search_account (account, search); - + if (res != NULL) { - + if (hits == NULL) { hits = res; } else { hits = g_list_concat (hits, res); } } - + g_object_unref (account); tny_iterator_next (iter); } @@ -587,6 +597,7 @@ modest_search_all_accounts (ModestSearch *search) g_object_unref (accounts); g_object_unref (iter); + /* printf ("DEBUG: %s: end: hits length=%d\n", __FUNCTION__, g_list_length(hits)); */ return hits; }