Optimized filter parameter parsing code

newfile
Markus Koch 2017-02-03 20:25:34 +01:00
parent 7f296855d5
commit 6a8cbccbfe
2 changed files with 31 additions and 13 deletions

View File

@ -261,7 +261,6 @@ static void mainWindow_configure_treeView(struct mainWindow *mainWindow)
/*
* Test entries for debugging only
*/
GDateTime *dt;
GList *list = NULL;
@ -308,11 +307,11 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow)
g_signal_connect(mainWindow->dateStart,
"changed",
(GCallback) mainWindow_dateChanged,
(GCallback) mainWindow_filterChanged,
mainWindow);
g_signal_connect(mainWindow->dateEnd,
"changed",
(GCallback) mainWindow_dateChanged,
(GCallback) mainWindow_filterChanged,
mainWindow);
g_signal_connect(mainWindow->dateStart,
@ -323,6 +322,11 @@ static void mainWindow_connect_signals(struct mainWindow *mainWindow)
"focus-out-event",
(GCallback) mainWindow_checkDate,
mainWindow);
g_signal_connect(mainWindow->searchEntry,
"changed",
(GCallback) mainWindow_filterChanged,
mainWindow);
}
struct mainWindow *mainWindow_new()
@ -429,20 +433,34 @@ void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data)
}
}
void mainWindow_dateChanged(GtkWidget *widget, gpointer user_data)
/**
* @brief mainWindow_filterChanged updates the filter backend values
* @param widget The widget that caused the update request. Can be NULL to update all.
* @param user_data struct mainWindow *
*/
void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data)
{
GDateTime *datetime;
struct mainWindow *mainWindow = (struct mainWindow *)user_data;
datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text(GTK_ENTRY(mainWindow->dateStart)));
if (datetime) {
mainWindow->filterSettings.time_start = g_date_time_to_unix(datetime);
g_date_time_unref(datetime);
if (!widget || widget == mainWindow->dateStart) {
datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text(
GTK_ENTRY(mainWindow->dateStart)));
if (datetime) {
mainWindow->filterSettings.time_start = g_date_time_to_unix(datetime);
g_date_time_unref(datetime);
}
}
datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text(GTK_ENTRY(mainWindow->dateEnd)));
if (datetime) {
mainWindow->filterSettings.time_end = g_date_time_to_unix(datetime);
g_date_time_unref(datetime);
if (!widget || widget == mainWindow->dateEnd) {
datetime = mainWindow_get_date_from_string((gchar *)gtk_entry_get_text(
GTK_ENTRY(mainWindow->dateEnd)));
if (datetime) {
mainWindow->filterSettings.time_end = g_date_time_to_unix(datetime);
g_date_time_unref(datetime);
}
}
if (!widget || widget == mainWindow->searchEntry) {
NULL;
}
gtk_tree_model_filter_refilter(mainWindow->entryListFiltered);

View File

@ -34,7 +34,7 @@ void mainWindow_showPopover(GtkWidget *widget, GdkEvent *event, gpointer user_da
void mainWindow_chooseWorkspaceClicked(GtkWidget *widget, gint event, gpointer user_data);
void mainWindow_calendarSelected(GtkWidget *widget, gpointer user_data);
void mainWindow_entrySelected(GtkWidget *widget, gpointer user_data);
void mainWindow_dateChanged(GtkWidget *widget, gpointer user_data);
void mainWindow_filterChanged(GtkWidget *widget, gpointer user_data);
void mainWindow_checkDate(GtkWidget *widget, gint event, gpointer user_data);
#endif /* MAINWINDOW_H */