diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-12-21 08:19:23 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2005-12-21 08:19:23 +0000 |
commit | a185556cfbf5881f994da3575777ebdcafd91091 (patch) | |
tree | e8460871671266a33da23796dbad3c3a4f753a32 /libsylph/virtual.c | |
parent | cf84cac1795e9141138a8c630ba8d5b516d24a47 (diff) |
some modification of searching.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@848 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'libsylph/virtual.c')
-rw-r--r-- | libsylph/virtual.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/libsylph/virtual.c b/libsylph/virtual.c index 897a7070..985215ee 100644 --- a/libsylph/virtual.c +++ b/libsylph/virtual.c @@ -144,19 +144,26 @@ static GSList *virtual_search_folder(FilterRule *rule, FolderItem *item) GSList *cur; FilterInfo fltinfo; gboolean full_headers; + gint count = 1, total; + GTimeVal tv_prev, tv_cur; g_return_val_if_fail(rule != NULL, NULL); g_return_val_if_fail(item != NULL, NULL); + g_return_val_if_fail(item->path != NULL, NULL); /* prevent circular reference */ if (item->stype == F_VIRTUAL) return NULL; + g_get_current_time(&tv_prev); + status_print(_("Searching %s ..."), item->path); + mlist = folder_item_get_msg_list(item, TRUE); + total = g_slist_length(mlist); memset(&fltinfo, 0, sizeof(FilterInfo)); - debug_print("start query search: %s\n", item->path ? item->path : ""); + debug_print("start query search: %s\n", item->path); full_headers = filter_rule_requires_full_headers(rule); @@ -164,6 +171,16 @@ static GSList *virtual_search_folder(FilterRule *rule, FolderItem *item) MsgInfo *msginfo = (MsgInfo *)cur->data; GSList *hlist; + g_get_current_time(&tv_cur); + if (tv_cur.tv_sec > tv_prev.tv_sec || + tv_cur.tv_usec - tv_prev.tv_usec > + PROGRESS_UPDATE_INTERVAL * 1000) { + status_print(_("Searching %s (%d / %d)..."), + item->path, count, total); + tv_prev = tv_cur; + } + ++count; + fltinfo.flags = msginfo->flags; if (full_headers) { gchar *file; |