aboutsummaryrefslogtreecommitdiff
path: root/libsylph/virtual.c
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-12-21 08:19:23 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2005-12-21 08:19:23 +0000
commita185556cfbf5881f994da3575777ebdcafd91091 (patch)
treee8460871671266a33da23796dbad3c3a4f753a32 /libsylph/virtual.c
parentcf84cac1795e9141138a8c630ba8d5b516d24a47 (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.c19
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;