X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-search.c;h=477638f4c79239ca73268b83e3fb12dac7b25d64;hb=df58ac68d388fbf2e8b9b6185a486bdf140b6642;hp=94a5c3efd5f7edab32768a95d9cb81370046538c;hpb=250e23c3f8c9b93a86641c4c8acecc1adb817e02;p=modest diff --git a/src/modest-search.c b/src/modest-search.c index 94a5c3e..477638f 100644 --- a/src/modest-search.c +++ b/src/modest-search.c @@ -43,6 +43,8 @@ #include #include #include +#include +#include #include @@ -52,6 +54,7 @@ #include "modest-tny-account.h" #include "modest-search.h" #include "modest-runtime.h" +#include "modest-platform.h" static gchar * g_strdup_or_null (const gchar *str) @@ -65,7 +68,6 @@ g_strdup_or_null (const gchar *str) return string; } - static GList* add_hit (GList *list, TnyHeader *header, TnyFolder *folder) { @@ -420,15 +422,19 @@ modest_search_folder (TnyFolder *folder, ModestSearch *search) while (!tny_iterator_is_done (iter)) { TnyHeader *cur = (TnyHeader *) tny_iterator_get_current (iter); - time_t t = tny_header_get_date_sent (cur); + const time_t t = tny_header_get_date_sent (cur); gboolean found = FALSE; + /* Ignore deleted (not yet expunged) emails: */ + if (tny_header_get_flags(cur) & TNY_HEADER_FLAG_DELETED) + goto go_next; + if (search->flags & MODEST_SEARCH_BEFORE) - if (!(t <= search->before)) + if (!(t <= search->end_date)) goto go_next; if (search->flags & MODEST_SEARCH_AFTER) - if (!(t >= search->after)) + if (!(t >= search->start_date)) goto go_next; if (search->flags & MODEST_SEARCH_SIZE) @@ -488,6 +494,7 @@ modest_search_folder (TnyFolder *folder, ModestSearch *search) retval = add_hit (retval, cur, folder); } } + if (msg) g_object_unref (msg); } @@ -583,6 +590,13 @@ modest_search_all_accounts (ModestSearch *search) if (account) { /* g_debug ("DEBUG: %s: Searching account %s", __FUNCTION__, tny_account_get_name (account)); */ + + /* Give the account time to go online if necessary, + * for instance if this is immediately after startup, + * after D-Bus activation: */ + modest_platform_check_and_wait_for_account_is_online (account); + + /* Search: */ res = modest_search_account (account, search); if (res != NULL) {