utils: use GDateTime to build component
As part of our epic journey to GDateTime, and to prepare ground for the future work, use GDateTime as arguments for building the ECalComponent.
This commit is contained in:
+16
-23
@@ -239,9 +239,6 @@ show_popover_for_position (GcalMonthView *view,
|
|||||||
|
|
||||||
gint start_day, end_day;
|
gint start_day, end_day;
|
||||||
|
|
||||||
icaltimetype *start_date;
|
|
||||||
icaltimetype *end_date = NULL;
|
|
||||||
|
|
||||||
widget = GTK_WIDGET (view);
|
widget = GTK_WIDGET (view);
|
||||||
priv = gcal_month_view_get_instance_private (GCAL_MONTH_VIEW (widget));
|
priv = gcal_month_view_get_instance_private (GCAL_MONTH_VIEW (widget));
|
||||||
ppriv = GCAL_SUBSCRIBER_VIEW (widget)->priv;
|
ppriv = GCAL_SUBSCRIBER_VIEW (widget)->priv;
|
||||||
@@ -268,26 +265,23 @@ show_popover_for_position (GcalMonthView *view,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
start_date = gcal_dup_icaltime (priv->date);
|
GDateTime *start_dt, *end_dt;
|
||||||
start_date->day = start_day;
|
|
||||||
start_date->is_date = 1;
|
|
||||||
|
|
||||||
end_date = gcal_dup_icaltime (priv->date);
|
start_dt = g_date_time_new_local (priv->date->year, priv->date->month, start_day, 0, 0, 0);
|
||||||
end_date->day = end_day;
|
end_dt = g_date_time_new_local (priv->date->year, priv->date->month, end_day + 1, 0, 0, 0);
|
||||||
end_date->is_date = 1;
|
|
||||||
if (start_date->day > end_date->day)
|
/* Swap dates if start > end */
|
||||||
|
if (start_day > end_day)
|
||||||
{
|
{
|
||||||
gint day = start_date->day;
|
GDateTime *aux = start_dt;
|
||||||
start_date->day = end_date->day;
|
start_dt = end_dt;
|
||||||
end_date->day = day;
|
end_dt = aux;
|
||||||
}
|
}
|
||||||
|
|
||||||
end_date->day += 1;
|
g_signal_emit_by_name (GCAL_VIEW (widget), "create-event", start_dt, end_dt, x, y);
|
||||||
|
|
||||||
g_signal_emit_by_name (GCAL_VIEW (widget), "create-event", start_date, end_date, x, y);
|
g_date_time_unref (start_dt);
|
||||||
|
g_date_time_unref (end_dt);
|
||||||
g_free (start_date);
|
|
||||||
g_free (end_date);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_widget_queue_draw (widget);
|
gtk_widget_queue_draw (widget);
|
||||||
@@ -747,19 +741,18 @@ add_new_event_button_cb (GtkWidget *button,
|
|||||||
{
|
{
|
||||||
GcalMonthViewPrivate *priv;
|
GcalMonthViewPrivate *priv;
|
||||||
gint day;
|
gint day;
|
||||||
icaltimetype *start_date;
|
GDateTime *start_date;
|
||||||
|
|
||||||
priv = gcal_month_view_get_instance_private (GCAL_MONTH_VIEW (user_data));
|
priv = gcal_month_view_get_instance_private (GCAL_MONTH_VIEW (user_data));
|
||||||
|
|
||||||
gtk_widget_hide (priv->overflow_popover);
|
gtk_widget_hide (priv->overflow_popover);
|
||||||
|
|
||||||
day = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (priv->overflow_popover), "selected-day"));
|
day = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (priv->overflow_popover), "selected-day"));
|
||||||
start_date = gcal_dup_icaltime (priv->date);
|
start_date = g_date_time_new_local (priv->date->year, priv->date->month, day, 0, 0, 0);
|
||||||
start_date->day = day;
|
|
||||||
start_date->is_date = 1;
|
|
||||||
|
|
||||||
g_signal_emit_by_name (GCAL_VIEW (user_data), "create-event-detailed", start_date, NULL);
|
g_signal_emit_by_name (GCAL_VIEW (user_data), "create-event-detailed", start_date, NULL);
|
||||||
g_free (start_date);
|
|
||||||
|
g_date_time_unref (start_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
+33
-17
@@ -416,33 +416,49 @@ get_first_weekday (void)
|
|||||||
* Returns: (Transfer full): an {@link ECalComponent} object
|
* Returns: (Transfer full): an {@link ECalComponent} object
|
||||||
**/
|
**/
|
||||||
ECalComponent*
|
ECalComponent*
|
||||||
build_component_from_details (const gchar *summary,
|
build_component_from_details (const gchar *summary,
|
||||||
const icaltimetype *initial_date,
|
GDateTime *initial_date,
|
||||||
const icaltimetype *final_date)
|
GDateTime *final_date)
|
||||||
{
|
{
|
||||||
ECalComponent *event;
|
ECalComponent *event;
|
||||||
ECalComponentDateTime dt;
|
ECalComponentDateTime dt;
|
||||||
ECalComponentText summ;
|
ECalComponentText summ;
|
||||||
|
GDateTime *utc_start, *utc_end;
|
||||||
|
gboolean all_day;
|
||||||
|
|
||||||
event = e_cal_component_new ();
|
event = e_cal_component_new ();
|
||||||
e_cal_component_set_new_vtype (event, E_CAL_COMPONENT_EVENT);
|
e_cal_component_set_new_vtype (event, E_CAL_COMPONENT_EVENT);
|
||||||
|
|
||||||
dt.value = (icaltimetype*) initial_date;
|
/*
|
||||||
|
* Check if the event is all day. Notice that it can be all day even
|
||||||
|
* without the final date.
|
||||||
|
*/
|
||||||
|
all_day = datetime_is_date (initial_date) && (final_date ? datetime_is_date (final_date) : TRUE);
|
||||||
|
|
||||||
|
/* Start date */
|
||||||
|
utc_start = g_date_time_to_utc (initial_date);
|
||||||
|
|
||||||
|
dt.value = datetime_to_icaltime (utc_start);
|
||||||
|
dt.value->is_date = all_day;
|
||||||
|
dt.tzid = format_utc_offset (g_date_time_get_utc_offset (initial_date));
|
||||||
e_cal_component_set_dtstart (event, &dt);
|
e_cal_component_set_dtstart (event, &dt);
|
||||||
|
|
||||||
if (final_date != NULL)
|
e_cal_component_free_datetime (&dt);
|
||||||
{
|
g_date_time_unref (utc_start);
|
||||||
dt.value = (icaltimetype*) final_date;
|
|
||||||
e_cal_component_set_dtend (event, &dt);
|
/* End date */
|
||||||
}
|
if (!final_date)
|
||||||
else
|
final_date = g_date_time_add_days (initial_date, 1);
|
||||||
{
|
|
||||||
icaltimetype *dt_end = gcal_dup_icaltime (initial_date);
|
utc_end = g_date_time_to_utc (final_date);
|
||||||
icaltime_adjust (dt_end, 1, 0, 0, 0);
|
|
||||||
dt.value = dt_end;
|
dt.value = datetime_to_icaltime (utc_end);
|
||||||
e_cal_component_set_dtend (event, &dt);
|
dt.value->is_date = all_day;
|
||||||
g_free (dt_end);
|
dt.tzid = format_utc_offset (g_date_time_get_utc_offset (final_date));
|
||||||
}
|
e_cal_component_set_dtend (event, &dt);
|
||||||
|
|
||||||
|
e_cal_component_free_datetime (&dt);
|
||||||
|
g_date_time_unref (utc_end);
|
||||||
|
|
||||||
summ.altrep = NULL;
|
summ.altrep = NULL;
|
||||||
summ.value = summary;
|
summ.value = summary;
|
||||||
|
|||||||
+2
-2
@@ -88,8 +88,8 @@ gchar* get_uuid_from_component (ESource
|
|||||||
gint get_first_weekday (void);
|
gint get_first_weekday (void);
|
||||||
|
|
||||||
ECalComponent* build_component_from_details (const gchar *summary,
|
ECalComponent* build_component_from_details (const gchar *summary,
|
||||||
const icaltimetype *initial_date,
|
GDateTime *initial_date,
|
||||||
const icaltimetype *final_date);
|
GDateTime *final_date);
|
||||||
|
|
||||||
gint icaltime_compare_date (const icaltimetype *date1,
|
gint icaltime_compare_date (const icaltimetype *date1,
|
||||||
const icaltimetype *date2);
|
const icaltimetype *date2);
|
||||||
|
|||||||
+7
-7
@@ -40,8 +40,8 @@ typedef struct
|
|||||||
{
|
{
|
||||||
gint x;
|
gint x;
|
||||||
gint y;
|
gint y;
|
||||||
icaltimetype *start_date;
|
GDateTime *start_date;
|
||||||
icaltimetype *end_date;
|
GDateTime *end_date;
|
||||||
} NewEventData;
|
} NewEventData;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@@ -694,17 +694,17 @@ show_new_event_widget (GcalView *view,
|
|||||||
|
|
||||||
if (window->event_creation_data != NULL)
|
if (window->event_creation_data != NULL)
|
||||||
{
|
{
|
||||||
g_free (window->event_creation_data->start_date);
|
g_date_time_unref (window->event_creation_data->start_date);
|
||||||
g_free (window->event_creation_data->end_date);
|
g_date_time_unref (window->event_creation_data->end_date);
|
||||||
g_free (window->event_creation_data);
|
g_free (window->event_creation_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
window->event_creation_data = g_new0 (NewEventData, 1);
|
window->event_creation_data = g_new0 (NewEventData, 1);
|
||||||
window->event_creation_data->x = x;
|
window->event_creation_data->x = x;
|
||||||
window->event_creation_data->y = y;
|
window->event_creation_data->y = y;
|
||||||
window->event_creation_data->start_date = gcal_dup_icaltime (start_span);
|
window->event_creation_data->start_date = g_date_time_ref (start_span);
|
||||||
if (end_span != NULL)
|
if (end_span != NULL)
|
||||||
window->event_creation_data->end_date = gcal_dup_icaltime (end_span);
|
window->event_creation_data->end_date = g_date_time_ref (end_span);
|
||||||
g_debug ("[show_new_event] position (%f, %f)", x, y);
|
g_debug ("[show_new_event] position (%f, %f)", x, y);
|
||||||
|
|
||||||
/* Setup new event widget data */
|
/* Setup new event widget data */
|
||||||
@@ -1111,7 +1111,7 @@ create_event_detailed_cb (GcalView *view,
|
|||||||
ECalComponent *comp;
|
ECalComponent *comp;
|
||||||
GcalEvent *event;
|
GcalEvent *event;
|
||||||
|
|
||||||
comp = build_component_from_details ("", (icaltimetype*) start_span, (icaltimetype*) end_span);
|
comp = build_component_from_details ("", start_span, end_span);
|
||||||
event = gcal_event_new (gcal_manager_get_default_source (window->manager), comp);
|
event = gcal_event_new (gcal_manager_get_default_source (window->manager), comp);
|
||||||
|
|
||||||
gcal_edit_dialog_set_event_is_new (GCAL_EDIT_DIALOG (window->edit_dialog), TRUE);
|
gcal_edit_dialog_set_event_is_new (GCAL_EDIT_DIALOG (window->edit_dialog), TRUE);
|
||||||
|
|||||||
+15
-11
@@ -1031,29 +1031,33 @@ static void
|
|||||||
add_event_clicked_cb (GcalYearView *year_view,
|
add_event_clicked_cb (GcalYearView *year_view,
|
||||||
GtkButton *button)
|
GtkButton *button)
|
||||||
{
|
{
|
||||||
icaltimetype *start_date, *end_date = NULL;
|
GDateTime *start_date, *end_date = NULL;
|
||||||
|
|
||||||
if (year_view->start_selected_date->day == 0)
|
if (year_view->start_selected_date->day == 0)
|
||||||
{
|
{
|
||||||
start_date = gcal_dup_icaltime (year_view->current_date);
|
start_date = g_date_time_new_local (year_view->current_date->year,
|
||||||
|
year_view->current_date->month,
|
||||||
|
year_view->current_date->day,
|
||||||
|
0, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
start_date = gcal_dup_icaltime (year_view->start_selected_date);
|
icaltimetype *dtstart, *dtend;
|
||||||
end_date = gcal_dup_icaltime (year_view->end_selected_date);
|
|
||||||
end_date->day += 1;
|
dtstart = year_view->start_selected_date;
|
||||||
*end_date = icaltime_normalize (*end_date);
|
dtend = year_view->end_selected_date;
|
||||||
end_date->is_date = 1;
|
|
||||||
|
start_date = g_date_time_new_local (dtstart->year, dtstart->month, dtstart->day, 0, 0, 0);
|
||||||
|
end_date = g_date_time_new_local (dtend->year, dtend->month, dtend->day + 1, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (year_view->popover_mode)
|
if (year_view->popover_mode)
|
||||||
gtk_widget_hide (year_view->popover);
|
gtk_widget_hide (year_view->popover);
|
||||||
|
|
||||||
start_date->is_date = 1;
|
|
||||||
g_signal_emit_by_name (GCAL_VIEW (year_view), "create-event-detailed", start_date, end_date);
|
g_signal_emit_by_name (GCAL_VIEW (year_view), "create-event-detailed", start_date, end_date);
|
||||||
g_free (start_date);
|
|
||||||
if (end_date != NULL)
|
g_clear_pointer (&start_date, g_date_time_unref);
|
||||||
g_free (end_date);
|
g_clear_pointer (&end_date, g_date_time_unref);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user