diff --git a/glade/mainWindow.glade b/glade/mainWindow.glade
index 0efa1a3..93e019e 100644
--- a/glade/mainWindow.glade
+++ b/glade/mainWindow.glade
@@ -64,8 +64,8 @@
True
@@ -89,8 +89,8 @@
True
@@ -185,6 +185,7 @@
True
True
True
+
False
@@ -197,4 +198,17 @@
+
diff --git a/src/mainwindow.c b/src/mainwindow.c
index 2178bef..e123aa4 100644
--- a/src/mainwindow.c
+++ b/src/mainwindow.c
@@ -63,6 +63,20 @@ static void mainWindow_configure_treeView(struct mainWindow *mainWindow)
COL_TAGS, "F",
COL_TIMESTAMP, 11,
-1);
+
+ /* debug 2 code here */
+ g_signal_connect(mainWindow->dateStart,
+ "focus-in-event",
+ mainWindow_showPopover,
+ mainWindow);
+ g_signal_connect(mainWindow->dateEnd,
+ "focus-in-event",
+ mainWindow_showPopover,
+ mainWindow);
+ g_signal_connect(mainWindow->calendarRange,
+ "day-selected",
+ mainWindow_calendarSelected,
+ mainWindow);
}
struct mainWindow *mainWindow_new()
@@ -79,6 +93,8 @@ struct mainWindow *mainWindow_new()
mainWindow->dateStart = GTK_WIDGET(gtk_builder_get_object(builder, "dateStart"));
mainWindow->dateEnd = GTK_WIDGET(gtk_builder_get_object(builder, "dateEnd"));
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->entryListView = GTK_TREE_VIEW(gtk_builder_get_object(builder, "entryListView"));
mainWindow->entryListStore = GTK_LIST_STORE(gtk_builder_get_object(builder, "entryListStore"));
@@ -90,3 +106,34 @@ struct mainWindow *mainWindow_new()
return mainWindow;
}
+
+void mainWindow_chooseWorkspaceClicked(GtkWidget *widget, gint event, gpointer user_data)
+{
+ printf("Choose workspace.\n");
+ fflush(stdout);
+}
+
+void mainWindow_showPopover(GtkWidget *widget, GdkEvent *event, gpointer user_data)
+{
+ struct mainWindow *mainWindow = (struct mainWindow *)user_data;
+
+ mainWindow->selectedDateEntry = widget;
+
+ if (!gtk_widget_get_visible(mainWindow->popoverDate))
+ gtk_popover_popup(GTK_POPOVER(mainWindow->popoverDate));
+ gtk_popover_set_relative_to(GTK_POPOVER(mainWindow->popoverDate), widget);
+}
+
+void mainWindow_calendarSelected(GtkWidget *widget, gpointer user_data)
+{
+ struct mainWindow *mainWindow = (struct mainWindow *)user_data;
+ guint year, month, day;
+ gchar *text;
+
+ gtk_calendar_get_date(GTK_CALENDAR(mainWindow->calendarRange), &year, &month, &day);
+ text = g_strdup_printf("%d-%02d-%02d", year, month, day);
+ gtk_entry_set_text(GTK_ENTRY(mainWindow->selectedDateEntry), text);
+ g_free(text);
+
+ gtk_popover_popdown(GTK_POPOVER(mainWindow->popoverDate));
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 48d78ce..500d4a8 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -11,10 +11,19 @@ struct mainWindow {
GtkWidget *dateStart;
GtkWidget *dateEnd;
GtkWidget *entryText;
+ GtkWidget *popoverDate;
+ GtkWidget *calendarRange;
GtkTreeView *entryListView;
GtkListStore *entryListStore;
+
+ GtkWidget *selectedDateEntry;
};
struct mainWindow *mainWindow_new();
+/* Slots */
+void mainWindow_showPopover(GtkWidget *widget, GdkEvent *event, gpointer user_data);
+void mainWindow_chooseWorkspaceClicked(GtkWidget *widget, gint event, gpointer user_data);
+void mainWindow_calendarSelected(GtkWidget *widget, gpointer user_data);
+
#endif /* MAINWINDOW_H */