From d5a36d4ad29af47a43c4436f767d744e906536f8 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 8 Aug 2023 10:12:15 -0300 Subject: [PATCH] view: Operate on ranges This is the data struct we should be using everywhere now. --- src/gui/gcal-window.c | 35 ++++++++++++++++++------------- src/gui/views/gcal-view-private.h | 6 ++---- src/gui/views/gcal-view.c | 25 +++++++++------------- src/gui/views/gcal-week-grid.c | 4 +++- src/gui/views/gcal-week-header.c | 4 +++- 5 files changed, 38 insertions(+), 36 deletions(-) diff --git a/src/gui/gcal-window.c b/src/gui/gcal-window.c index 126b8b4e..92a33564 100644 --- a/src/gui/gcal-window.c +++ b/src/gui/gcal-window.c @@ -562,8 +562,7 @@ set_new_event_mode (GcalWindow *window, /* new-event interaction: second variant */ static void show_new_event_widget (GcalView *view, - GDateTime *start_span, - GDateTime *end_span, + GcalRange *range, gdouble x, gdouble y, GcalWindow *window) @@ -574,6 +573,8 @@ show_new_event_widget (GcalView *view, GCAL_ENTRY; + g_assert (range != NULL); + /* 1st and 2nd steps */ set_new_event_mode (window, TRUE); @@ -587,14 +588,16 @@ show_new_event_widget (GcalView *view, window->event_creation_data = g_new0 (NewEventData, 1); window->event_creation_data->x = x; window->event_creation_data->y = y; - window->event_creation_data->start_date = g_date_time_ref (start_span); - window->event_creation_data->end_date = end_span ? g_date_time_ref (end_span) : NULL; + window->event_creation_data->start_date = gcal_range_get_start (range); + window->event_creation_data->end_date = gcal_range_get_end (range); g_debug ("Quick add popover position (%f, %f)", x, y); /* Setup the quick add popover's dates */ - gcal_quick_add_popover_set_date_start (GCAL_QUICK_ADD_POPOVER (window->quick_add_popover), start_span); - gcal_quick_add_popover_set_date_end (GCAL_QUICK_ADD_POPOVER (window->quick_add_popover), end_span); + gcal_quick_add_popover_set_date_start (GCAL_QUICK_ADD_POPOVER (window->quick_add_popover), + window->event_creation_data->start_date); + gcal_quick_add_popover_set_date_end (GCAL_QUICK_ADD_POPOVER (window->quick_add_popover), + window->event_creation_data->end_date); /* Position and place the quick add popover */ gtk_widget_translate_coordinates (window->views[window->active_view], @@ -632,24 +635,26 @@ edit_event (GcalQuickAddPopover *popover, } static void -create_event_detailed_cb (GcalView *view, - gpointer start_span, - gpointer end_span, - gpointer user_data) +create_event_detailed_cb (GcalView *view, + GcalRange *range, + GcalWindow *self) { - GcalWindow *window = GCAL_WINDOW (user_data); + g_autoptr (GDateTime) range_start = NULL; + g_autoptr (GDateTime) range_end = NULL; GcalCalendar *default_calendar; GcalManager *manager; ECalComponent *comp; GcalEvent *event; - manager = gcal_context_get_manager (window->context); - comp = build_component_from_details ("", start_span, end_span); + manager = gcal_context_get_manager (self->context); + range_start = gcal_range_get_start (range); + range_end = gcal_range_get_end (range); + comp = build_component_from_details ("", range_start, range_end); default_calendar = gcal_manager_get_default_calendar (manager); event = gcal_event_new (default_calendar, comp, NULL); - gcal_event_editor_dialog_set_event (window->event_editor, event, TRUE); - gtk_widget_set_visible (GTK_WIDGET (window->event_editor), TRUE); + gcal_event_editor_dialog_set_event (self->event_editor, event, TRUE); + gtk_widget_set_visible (GTK_WIDGET (self->event_editor), TRUE); g_clear_object (&comp); } diff --git a/src/gui/views/gcal-view-private.h b/src/gui/views/gcal-view-private.h index e2a10a58..c1ee2522 100644 --- a/src/gui/views/gcal-view-private.h +++ b/src/gui/views/gcal-view-private.h @@ -25,14 +25,12 @@ G_BEGIN_DECLS void gcal_view_create_event (GcalView *self, - GDateTime *start, - GDateTime *end, + GcalRange *range, gdouble x, gdouble y); void gcal_view_create_event_detailed (GcalView *self, - GDateTime *start, - GDateTime *end); + GcalRange *range); void gcal_view_event_activated (GcalView *self, GcalEventWidget *event_widget); diff --git a/src/gui/views/gcal-view.c b/src/gui/views/gcal-view.c index fc16b813..ae3fca95 100644 --- a/src/gui/views/gcal-view.c +++ b/src/gui/views/gcal-view.c @@ -77,9 +77,8 @@ gcal_view_default_init (GcalViewInterface *iface) G_STRUCT_OFFSET (GcalViewInterface, create_event), NULL, NULL, NULL, G_TYPE_NONE, - 4, - G_TYPE_DATE_TIME, - G_TYPE_DATE_TIME, + 3, + GCAL_TYPE_RANGE, G_TYPE_DOUBLE, G_TYPE_DOUBLE); @@ -94,9 +93,8 @@ gcal_view_default_init (GcalViewInterface *iface) G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GcalViewInterface, create_event_detailed), NULL, NULL, NULL, - G_TYPE_NONE, 2, - G_TYPE_DATE_TIME, - G_TYPE_DATE_TIME); + G_TYPE_NONE, 1, + GCAL_TYPE_RANGE); /** * GcalView::event-activated: @@ -267,27 +265,24 @@ gcal_view_get_previous_date (GcalView *self) void gcal_view_create_event (GcalView *self, - GDateTime *start, - GDateTime *end, + GcalRange *range, gdouble x, gdouble y) { g_assert (GCAL_IS_VIEW (self)); - g_assert (start != NULL); - g_assert (end != NULL); + g_assert (range != NULL); - g_signal_emit (self, signals[CREATE_EVENT], 0, start, end, x, y); + g_signal_emit (self, signals[CREATE_EVENT], 0, range, x, y); } void gcal_view_create_event_detailed (GcalView *self, - GDateTime *start, - GDateTime *end) + GcalRange *range) { g_assert (GCAL_IS_VIEW (self)); - g_assert (start != NULL); + g_assert (range != NULL); - g_signal_emit (self, signals[CREATE_EVENT_DETAILED], 0, start, end); + g_signal_emit (self, signals[CREATE_EVENT_DETAILED], 0, range); } void diff --git a/src/gui/views/gcal-week-grid.c b/src/gui/views/gcal-week-grid.c index 1d696a14..c04f1a78 100644 --- a/src/gui/views/gcal-week-grid.c +++ b/src/gui/views/gcal-week-grid.c @@ -250,6 +250,7 @@ on_click_gesture_released_cb (GtkGestureClick *click_gesture, GcalWeekGrid *self) { g_autoptr (GDateTime) week_start = NULL; + g_autoptr (GcalRange) range = NULL; g_autoptr (GDateTime) start = NULL; g_autoptr (GDateTime) end = NULL; GtkAllocation alloc; @@ -319,7 +320,8 @@ on_click_gesture_released_cb (GtkGestureClick *click_gesture, &out_x, &out_y); - gcal_view_create_event (GCAL_VIEW (weekview), start, end, out_x, out_y); + range = gcal_range_new (start, end, GCAL_RANGE_DEFAULT); + gcal_view_create_event (GCAL_VIEW (weekview), range, out_x, out_y); gtk_event_controller_set_propagation_phase (self->motion_controller, GTK_PHASE_NONE); } diff --git a/src/gui/views/gcal-week-header.c b/src/gui/views/gcal-week-header.c index b1509cc7..7aee269f 100644 --- a/src/gui/views/gcal-week-header.c +++ b/src/gui/views/gcal-week-header.c @@ -301,6 +301,7 @@ on_button_released (GtkGestureClick *click_gesture, g_autoptr (GDateTime) selection_start = NULL; g_autoptr (GDateTime) selection_end = NULL; g_autoptr (GDateTime) week_start = NULL; + g_autoptr (GcalRange) range = NULL; GtkWidget *weekview; gboolean ltr; gdouble column_width; @@ -349,7 +350,8 @@ on_button_released (GtkGestureClick *click_gesture, NULL, &out_y); - gcal_view_create_event (GCAL_VIEW (weekview), selection_start, selection_end, out_x, out_y); + range = gcal_range_new (selection_start, selection_end, GCAL_RANGE_DATE_ONLY); + gcal_view_create_event (GCAL_VIEW (weekview), range, out_x, out_y); gtk_event_controller_set_propagation_phase (self->motion_controller, GTK_PHASE_NONE); }