view: Operate on ranges
This is the data struct we should be using everywhere now.
This commit is contained in:
+20
-15
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
+10
-15
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user