diff --git a/glade/mainWindow.glade b/glade/mainWindow.glade
index f750c18..cfc1fff 100644
--- a/glade/mainWindow.glade
+++ b/glade/mainWindow.glade
@@ -41,6 +41,82 @@
0
+
+
+
+ False
+ True
+ 1
+
+
+
+
+ True
+ False
+
+
+ False
+ True
+ 2
+
+
True
@@ -88,7 +164,7 @@
False
True
- 1
+ 3
diff --git a/src/mainwindow.c b/src/mainwindow.c
index ce84569..442b22b 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -194,21 +194,29 @@ static gboolean mainWindow_list_entry_visible(GtkTreeModel *model, GtkTreeIter *
/* Check text search */
searchString = (gchar *)gtk_entry_get_text(GTK_ENTRY(mainWindow->searchEntry));
- if (searchString[0] != 0) {
+ if (searchString[0] != 0 && (
+ mainWindow->filterSettings.search_title ||
+ mainWindow->filterSettings.search_tags ||
+ mainWindow->filterSettings.search_text)) {
regex = g_regex_new(searchString, G_REGEX_CASELESS, 0, NULL);
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);
-
- gtk_tree_model_get(model, iter, COL_TEXT, &temp, -1);
- if (!search_matched && g_regex_match(regex, temp, 0, &match_info) && g_match_info_matches(match_info))
+ if (mainWindow->filterSettings.search_title &&
+ 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 (!search_matched && g_regex_match(regex, temp, 0, &match_info) && g_match_info_matches(match_info))
+ if (!search_matched &&
+ mainWindow->filterSettings.search_tags &&
+ 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_TEXT, &temp, -1);
+ if (!search_matched &&
+ mainWindow->filterSettings.search_text &&
+ g_regex_match(regex, temp, 0, &match_info) && g_match_info_matches(match_info))
search_matched = 1;
g_free(temp);
@@ -390,6 +398,19 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow)
"changed",
(GCallback) mainWindow_filterChanged,
mainWindow);
+
+ g_signal_connect(mainWindow->checkSearchTitle,
+ "toggled",
+ (GCallback) mainWindow_filterChanged,
+ mainWindow);
+ g_signal_connect(mainWindow->checkSearchTags,
+ "toggled",
+ (GCallback) mainWindow_filterChanged,
+ mainWindow);
+ g_signal_connect(mainWindow->checkSearchText,
+ "toggled",
+ (GCallback) mainWindow_filterChanged,
+ mainWindow);
}
/**
@@ -412,6 +433,9 @@ struct mainWindow *mainWindow_new()
mainWindow->entryText = GTK_WIDGET(gtk_builder_get_object(builder, "entryText"));
mainWindow->popoverDate = GTK_WIDGET(gtk_builder_get_object(builder, "popoverDate"));
mainWindow->calendarRange = GTK_WIDGET(gtk_builder_get_object(builder, "calendarRange"));
+ mainWindow->checkSearchTitle = GTK_WIDGET(gtk_builder_get_object(builder, "checkSearchTitle"));
+ mainWindow->checkSearchTags = GTK_WIDGET(gtk_builder_get_object(builder, "checkSearchTags"));
+ mainWindow->checkSearchText = GTK_WIDGET(gtk_builder_get_object(builder, "checkSearchText"));
mainWindow->entryListView = GTK_TREE_VIEW(gtk_builder_get_object(builder, "entryListView"));
mainWindow->entryListSelection = GTK_TREE_SELECTION(gtk_builder_get_object(builder, "entryListSelection"));
mainWindow->textBuffer = GTK_TEXT_BUFFER(gtk_builder_get_object(builder, "entryTextBuffer"));
@@ -426,6 +450,10 @@ struct mainWindow *mainWindow_new()
mainWindow_configure_treeView(mainWindow);
mainWindow_connect_signals(mainWindow);
+ gtk_toggle_button_set_active(mainWindow->checkSearchTitle, 1);
+ gtk_toggle_button_set_active(mainWindow->checkSearchTags, 1);
+ gtk_toggle_button_set_active(mainWindow->checkSearchText, 0);
+
/**
* These need to be set to oldest and newest after indexing date
*/
@@ -548,6 +576,13 @@ void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data)
}
}
+ mainWindow->filterSettings.search_title = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ mainWindow->checkSearchTitle));
+ mainWindow->filterSettings.search_tags = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ mainWindow->checkSearchTags));
+ mainWindow->filterSettings.search_text = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(
+ mainWindow->checkSearchText));
+
gtk_tree_model_filter_refilter(mainWindow->entryListFiltered);
}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index c7b6982..d7ebed0 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -13,6 +13,9 @@ struct mainWindow {
GtkWidget *entryText;
GtkWidget *popoverDate;
GtkWidget *calendarRange;
+ GtkWidget *checkSearchTitle;
+ GtkWidget *checkSearchTags;
+ GtkWidget *checkSearchText;
GtkTreeView *entryListView;
GtkTreeSelection *entryListSelection;
GtkTextBuffer *textBuffer;
@@ -24,6 +27,9 @@ struct mainWindow {
struct filterSettings {
guint time_start;
guint time_end;
+ gboolean search_title;
+ gboolean search_tags;
+ gboolean search_text;
} filterSettings;
};