AdvancedSearch *asearch;
gboolean want_reexec;
+ gboolean want_history;
};
void quicksearch_set_on_progress_cb(QuickSearch* search,
static void quicksearch_set_running(QuickSearch *quicksearch, gboolean run);
static void quicksearch_set_matchstring(QuickSearch *quicksearch, const gchar *matchstring);
static void quicksearch_set_active(QuickSearch *quicksearch, gboolean active);
+static void quicksearch_set_popdown_strings(QuickSearch *quicksearch);
+
+static void quicksearch_add_to_history(QuickSearch* quicksearch)
+{
+ gchar* search_string = quicksearch->request.matchstring;
+
+ /* add to history, for extended search add only correct matching rules */
+ if (quicksearch->want_history && !quicksearch->in_typing && search_string && strlen(search_string) != 0) {
+ switch (prefs_common.summary_quicksearch_type) {
+ case ADVANCED_SEARCH_EXTENDED:
+ if (advsearch_has_proper_predicate(quicksearch->asearch)) {
+ quicksearch->extended_search_strings =
+ add_history(quicksearch->extended_search_strings,
+ g_strdup(search_string));
+ prefs_common.summary_quicksearch_history =
+ add_history(prefs_common.summary_quicksearch_history,
+ g_strdup(search_string));
+ }
+ break;
+ default:
+ quicksearch->normal_search_strings =
+ add_history(quicksearch->normal_search_strings,
+ g_strdup(search_string));
+ prefs_common.summary_quicksearch_history =
+ add_history(prefs_common.summary_quicksearch_history,
+ g_strdup(search_string));
+ break;
+ }
+
+ quicksearch_set_popdown_strings(quicksearch);
+ }
+
+ quicksearch->want_history = FALSE;
+}
static void quicksearch_invoke_execute(QuickSearch *quicksearch, gboolean run_only_if_fast)
{
}
do {
+ gboolean active = quicksearch->request.matchstring != NULL
+ && g_strcmp0(quicksearch->request.matchstring, "");
advsearch_set(quicksearch->asearch, quicksearch->request.type,
quicksearch->request.matchstring);
if (run_only_if_fast && !advsearch_is_fast(quicksearch->asearch))
return;
- quicksearch_set_active(quicksearch, advsearch_has_proper_predicate(quicksearch->asearch));
+ quicksearch_add_to_history(quicksearch);
+
+ quicksearch_set_active(quicksearch, active);
quicksearch->want_reexec = FALSE;
quicksearch_set_running(quicksearch, TRUE);
gboolean quicksearch_run_on_folder(QuickSearch* quicksearch, FolderItem *folderItem, MsgInfoList **result)
{
if (quicksearch_has_sat_predicate(quicksearch)) {
- gboolean searchres = advsearch_search_msgs_in_folders(quicksearch->asearch, result, folderItem, FALSE);
+ gboolean searchres;
+ main_window_cursor_wait(mainwindow_get_mainwindow());
+ searchres = advsearch_search_msgs_in_folders(quicksearch->asearch, result, folderItem, FALSE);
+ main_window_cursor_normal(mainwindow_get_mainwindow());
if (quicksearch->want_reexec) {
advsearch_set(quicksearch->asearch, quicksearch->request.type, "");
}
{
gchar *search_string = quicksearch_get_text(quicksearch);
quicksearch_set_matchstring(quicksearch, search_string);
-
- /* add to history, for extended search add only correct matching rules */
- if (!quicksearch->in_typing && search_string && strlen(search_string) != 0) {
- switch (prefs_common.summary_quicksearch_type) {
- case ADVANCED_SEARCH_EXTENDED:
- if (advsearch_has_proper_predicate(quicksearch->asearch)) {
- quicksearch->extended_search_strings =
- add_history(quicksearch->extended_search_strings,
- g_strdup(search_string));
- prefs_common.summary_quicksearch_history =
- add_history(prefs_common.summary_quicksearch_history,
- g_strdup(search_string));
- }
- break;
- default:
- quicksearch->normal_search_strings =
- add_history(quicksearch->normal_search_strings,
- g_strdup(search_string));
- prefs_common.summary_quicksearch_history =
- add_history(prefs_common.summary_quicksearch_history,
- g_strdup(search_string));
- break;
- }
-
- quicksearch_set_popdown_strings(quicksearch);
-
- }
-
g_free(search_string);
+ quicksearch->want_history = TRUE;
+
quicksearch_invoke_execute(quicksearch, run_only_if_fast);
}
*/
static gchar *search_descr_strings[] = {
"a", N_("all messages"),
- "ag #", N_("messages whose age is greater than #"),
- "al #", N_("messages whose age is less than #"),
+ "ag #", N_("messages whose age is greater than # days"),
+ "al #", N_("messages whose age is less than # days"),
"b S", N_("messages which contain S in the message body"),
"B S", N_("messages which contain S in the whole message"),
"c S", N_("messages carbon-copied to S"),
"r", N_("messages which have been replied to"),
"R", N_("read messages"),
"s S", N_("messages which contain S in subject"),
- "se #", N_("messages whose score is equal to #"),
- "sg #", N_("messages whose score is greater than #"),
- "sl #", N_("messages whose score is lower than #"),
- "Se #", N_("messages whose size is equal to #"),
- "Sg #", N_("messages whose size is greater than #"),
- "Ss #", N_("messages whose size is smaller than #"),
+ "se #", N_("messages whose score is equal to # points"),
+ "sg #", N_("messages whose score is greater than # points"),
+ "sl #", N_("messages whose score is lower than # points"),
+ "Se #", N_("messages whose size is equal to # bytes"),
+ "Sg #", N_("messages whose size is greater than # bytes"),
+ "Ss #", N_("messages whose size is smaller than # bytes"),
"t S", N_("messages which have been sent to S"),
"tg S", N_("messages which tags contain S"),
"tagged",N_("messages which have tag(s)"),
static void quicksearch_error(gpointer data)
{
- alertpanel_error(_("Something went wrong during search. Please check you logs."));
+ alertpanel_error(_("Something went wrong during search. Please check your logs."));
}
QuickSearch *quicksearch_new()