[gnome-calendar/wip/pandusonu/week-view: 3/21] week-header: fix date handling
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/wip/pandusonu/week-view: 3/21] week-header: fix date handling
- Date: Thu, 8 Dec 2016 20:54:59 +0000 (UTC)
commit 1c48d0a543775ed2eeebd79dcb173301bbe49be7
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Thu Dec 8 00:21:36 2016 -0200
week-header: fix date handling
src/views/gcal-week-header.c | 71 +++++++++++++++++++-----------------------
1 files changed, 32 insertions(+), 39 deletions(-)
---
diff --git a/src/views/gcal-week-header.c b/src/views/gcal-week-header.c
index 093afa1..72307c5 100644
--- a/src/views/gcal-week-header.c
+++ b/src/views/gcal-week-header.c
@@ -136,18 +136,24 @@ static GDateTime*
get_start_of_week (icaltimetype *date)
{
icaltimetype *new_date;
+ GDateTime *dt;
new_date = g_new0 (icaltimetype, 1);
- *new_date = icaltime_from_day_of_year (icaltime_start_doy_week (*(date), get_first_weekday () + 1),
+ *new_date = icaltime_from_day_of_year (icaltime_start_doy_week (*date, get_first_weekday () + 1),
date->year);
new_date->is_date = 0;
new_date->hour = 0;
new_date->minute = 0;
new_date->second = 0;
- *new_date = icaltime_set_timezone (new_date, date->zone);
+ dt = g_date_time_new_local (new_date->year,
+ new_date->month,
+ new_date->day,
+ 0, 0, 0);
- return icaltime_to_datetime (new_date);
+ g_clear_pointer (&new_date, g_free);
+
+ return dt;
}
static GDateTime*
@@ -184,11 +190,11 @@ static gint
get_event_start_weekday (GcalWeekHeader *self,
GcalEvent *event)
{
- GDateTime *week_start, *event_start;
+ g_autoptr (GDateTime) week_start, event_start;
gint start_weekday;
week_start = get_start_of_week (self->current_date);
- event_start = gcal_event_get_date_start (event);
+ event_start = g_date_time_to_local (gcal_event_get_date_start (event));
/* Only calculate the start day if it starts in the current week */
if (g_date_time_compare (event_start, week_start) >= 0)
@@ -196,8 +202,6 @@ get_event_start_weekday (GcalWeekHeader *self,
else
start_weekday = 0;
- g_clear_pointer (&week_start, g_date_time_unref);
-
return start_weekday;
}
@@ -244,7 +248,7 @@ is_event_visible (GcalWeekHeader *self,
}
static void
-update_overflow_labels (GcalWeekHeader *self)
+update_overflow (GcalWeekHeader *self)
{
gint i;
@@ -451,12 +455,14 @@ split_event_widget_at_column (GcalWeekHeader *self,
/* Create a new widget after the current widget */
if (create_after)
{
+ g_autoptr (GDateTime) event_end;
GtkWidget *widget_after;
+ event_end = g_date_time_to_local (gcal_event_widget_get_date_end (GCAL_EVENT_WIDGET (widget)));
+
widget_after = gcal_event_widget_clone (GCAL_EVENT_WIDGET (widget));
gcal_event_widget_set_date_start (GCAL_EVENT_WIDGET (widget_after), end_column_date);
- gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget_after),
- gcal_event_widget_get_date_end (GCAL_EVENT_WIDGET (widget)));
+ gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget_after), event_end);
gtk_grid_attach (GTK_GRID (self->grid),
widget_after,
@@ -531,7 +537,8 @@ add_event_to_grid (GcalWeekHeader *self,
gint start,
gint end)
{
- GDateTime *week_start, *week_end, *widget_end_dt;
+ g_autoptr (GDateTime) week_start = NULL;
+ g_autoptr (GDateTime) week_end = NULL;
GtkWidget *widget;
gint position;
gint i;
@@ -561,11 +568,8 @@ add_event_to_grid (GcalWeekHeader *self,
week_start = get_start_of_week (self->active_date);
week_end = get_end_of_week (self->active_date);
- /* Setup the event's start date */
- widget_end_dt = g_date_time_add_days (week_start, 1);
-
gcal_event_widget_set_date_start (GCAL_EVENT_WIDGET (widget), week_start);
- gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget), widget_end_dt);
+ gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget), week_end);
/*
* In addition to moving the current column's events below, multiday
@@ -574,11 +578,8 @@ add_event_to_grid (GcalWeekHeader *self,
*/
for (i = start + 1; i <= end; i++)
{
- GDateTime *new_widget_end_dt;
gint new_position;
- new_widget_end_dt = g_date_time_add_days (widget_end_dt, 1);
-
/* Add the event to that day */
new_position = add_event_to_weekday (self, event, i);
@@ -618,18 +619,10 @@ add_event_to_grid (GcalWeekHeader *self,
}
/* Update the widget's end date */
- gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget), new_widget_end_dt);
-
- g_clear_pointer (&widget_end_dt, g_date_time_unref);
-
- widget_end_dt = new_widget_end_dt;
+ gcal_event_widget_set_date_end (GCAL_EVENT_WIDGET (widget), week_end);
}
gtk_widget_show (widget);
-
- g_clear_pointer (&widget_end_dt, g_date_time_unref);
- g_clear_pointer (&week_start, g_date_time_unref);
- g_clear_pointer (&week_end, g_date_time_unref);
}
static void
@@ -658,10 +651,10 @@ update_unchanged_events (GcalWeekHeader *self,
for (l = events; l != NULL; l = l->next)
{
- GDateTime *event_start, *event_end;
+ g_autoptr (GDateTime) event_start, event_end;
- event_start = gcal_event_get_date_start (l->data);
- event_end = gcal_event_get_date_end (l->data);
+ event_start = g_date_time_to_local (gcal_event_get_date_start (l->data));
+ event_end = g_date_time_to_local (gcal_event_get_date_end (l->data));
/*
* Check if the event must be updated. If we're going to the future, updatable events
@@ -767,7 +760,7 @@ header_collapse (GcalWeekHeader *self)
gtk_widget_set_visible (l->data, is_event_visible (self, left_attach, top_attach - 1));
}
- update_overflow_labels (self);
+ update_overflow (self);
g_clear_pointer (&children, g_list_free);
}
@@ -1121,7 +1114,10 @@ void
gcal_week_header_add_event (GcalWeekHeader *self,
GcalEvent *event)
{
- GDateTime *start_date, *end_date, *week_start, *week_end;
+ g_autoptr (GDateTime) start_date = NULL;
+ g_autoptr (GDateTime) end_date = NULL;
+ g_autoptr (GDateTime) week_start = NULL;
+ g_autoptr (GDateTime) week_end = NULL;
gint weekday;
gint width;
@@ -1129,8 +1125,8 @@ gcal_week_header_add_event (GcalWeekHeader *self,
week_start = get_start_of_week (self->active_date);
week_end = get_end_of_week (self->active_date);
- start_date = gcal_event_get_date_start (event);
- end_date = gcal_event_get_date_end (event);
+ start_date = g_date_time_to_local (gcal_event_get_date_start (event));
+ end_date = g_date_time_to_local (gcal_event_get_date_end (event));
weekday = get_event_start_weekday (self, event);
/* Calculate the real width of this event */
@@ -1148,10 +1144,7 @@ gcal_week_header_add_event (GcalWeekHeader *self,
check_mergeable_events (self);
/* And also update the overflow labels */
- update_overflow_labels (self);
-
- g_clear_pointer (&week_end, g_date_time_unref);
- g_clear_pointer (&week_start, g_date_time_unref);
+ update_overflow (self);
}
void
@@ -1210,7 +1203,7 @@ gcal_week_header_remove_event (GcalWeekHeader *self,
check_mergeable_events (self);
/* And also update the overflow labels */
- update_overflow_labels (self);
+ update_overflow (self);
g_clear_pointer (&children, g_list_free);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]