Added text search filter
This commit is contained in:
parent
ec7a072920
commit
1101026d19
@ -182,9 +182,41 @@ static void mainWindow_list_add_entry(struct mainWindow *mainWindow,
|
|||||||
*/
|
*/
|
||||||
static gboolean mainWindow_list_entry_visible(GtkTreeModel *model, GtkTreeIter *iter, struct mainWindow *mainWindow)
|
static gboolean mainWindow_list_entry_visible(GtkTreeModel *model, GtkTreeIter *iter, struct mainWindow *mainWindow)
|
||||||
{
|
{
|
||||||
|
GRegex *regex;
|
||||||
|
GMatchInfo *match_info;
|
||||||
|
gchar *searchString;
|
||||||
|
gchar *temp;
|
||||||
|
|
||||||
|
gboolean search_matched = 0;
|
||||||
|
|
||||||
GDateTime *datetime;
|
GDateTime *datetime;
|
||||||
guint time;
|
guint time;
|
||||||
|
|
||||||
|
/* Check text search */
|
||||||
|
searchString = (gchar *)gtk_entry_get_text(GTK_ENTRY(mainWindow->searchEntry));
|
||||||
|
if (searchString[0] != 0) {
|
||||||
|
regex = g_regex_new(searchString, G_REGEX_CASELESS, 0, NULL);
|
||||||
|
|
||||||
|
gtk_tree_model_get(model, iter, COL_TEXT, &temp, -1);
|
||||||
|
if (g_regex_match(regex, temp, 0, &match_info) && g_match_info_matches(match_info))
|
||||||
|
search_matched = 1;
|
||||||
|
g_free(temp);
|
||||||
|
|
||||||
|
gtk_tree_model_get(model, iter, COL_TAGS_TEXT, &temp, -1);
|
||||||
|
if (g_regex_match(regex, temp, 0, &match_info) && g_match_info_matches(match_info))
|
||||||
|
search_matched = 1;
|
||||||
|
g_free(temp);
|
||||||
|
|
||||||
|
gtk_tree_model_get(model, iter, COL_TITLE, &temp, -1);
|
||||||
|
if (g_regex_match(regex, temp, 0, &match_info) && g_match_info_matches(match_info))
|
||||||
|
search_matched = 1;
|
||||||
|
g_free(temp);
|
||||||
|
|
||||||
|
if (!search_matched)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Check time span */
|
||||||
gtk_tree_model_get(model, iter, COL_TIMESTAMP, &datetime, -1);
|
gtk_tree_model_get(model, iter, COL_TIMESTAMP, &datetime, -1);
|
||||||
if (datetime) {
|
if (datetime) {
|
||||||
time = g_date_time_to_unix(datetime);
|
time = g_date_time_to_unix(datetime);
|
||||||
@ -515,9 +547,6 @@ void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data)
|
|||||||
g_date_time_unref(datetime);
|
g_date_time_unref(datetime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!widget || widget == mainWindow->searchEntry) {
|
|
||||||
NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_tree_model_filter_refilter(mainWindow->entryListFiltered);
|
gtk_tree_model_filter_refilter(mainWindow->entryListFiltered);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user