[gnome-calendar] year-view: use icaltime_compare_date()
- From: Erick Pérez Castellanos <erickpc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] year-view: use icaltime_compare_date()
- Date: Wed, 28 Jan 2015 18:58:53 +0000 (UTC)
commit 9c33bd0dfce5a27f966037640d3dec5b18c74873
Author: Erick Pérez Castellanos <erick red gmail com>
Date: Tue Jan 27 17:48:34 2015 -0500
year-view: use icaltime_compare_date()
Hopefully, this fix once and for all the selection of the range to show
on the sidebar.
src/gcal-year-view.c | 34 +++++++++++++++-------------------
1 files changed, 15 insertions(+), 19 deletions(-)
---
diff --git a/src/gcal-year-view.c b/src/gcal-year-view.c
index a728a3a..04e0111 100644
--- a/src/gcal-year-view.c
+++ b/src/gcal-year-view.c
@@ -239,13 +239,11 @@ update_sidebar (GcalYearView *year_view)
gtk_container_foreach (GTK_CONTAINER (priv->events_sidebar), (GtkCallback) gtk_widget_destroy, NULL);
- days_span = icaltime_day_of_year(*(priv->end_selected_date)) -
icaltime_day_of_year(*(priv->start_selected_date));
- days_span = days_span == 0 ? 1 : days_span;
+ days_span = icaltime_day_of_year(*(priv->end_selected_date)) -
icaltime_day_of_year(*(priv->start_selected_date)) + 1;
days_widgets_array = g_new0 (GList*, days_span);
events = gcal_manager_get_events (priv->manager, priv->start_selected_date, priv->end_selected_date);
- /* XXX: compare_date_only does not work if is_date field is different */
if (events == NULL)
{
gchar *title;
@@ -255,9 +253,7 @@ update_sidebar (GcalYearView *year_view)
has_range = (priv->start_selected_date->day != priv->end_selected_date->day ||
priv->start_selected_date->month != priv->end_selected_date->month);
- if (priv->current_date->day == priv->start_selected_date->day &&
- priv->current_date->month == priv->start_selected_date->month &&
- priv->current_date->year == priv->start_selected_date->year)
+ if (icaltime_compare_date (priv->current_date, priv->start_selected_date) == 0)
{
title = g_strdup_printf ("%s%s", _("Today"), has_range ? "…" : "");
}
@@ -308,8 +304,8 @@ update_sidebar (GcalYearView *year_view)
icaltime_adjust (&second_date, 1, 0, 0, 0);
}
- start_comparison = icaltime_compare (*dt_start, date);
- if (start_comparison == 0 || start_comparison == -1 || (date.day == dt_start->day && date.month ==
dt_start->month))
+ start_comparison = icaltime_compare_date (dt_start, &date);
+ if (start_comparison <= 0)
{
if (child_widget_used)
cloned_child = gcal_event_widget_clone (GCAL_EVENT_WIDGET (child_widget));
@@ -327,14 +323,16 @@ update_sidebar (GcalYearView *year_view)
cloned_child,
(GCompareFunc)
gcal_event_widget_compare_for_single_day);
- date.is_date = dt_start->is_date;
- start_comparison = icaltime_compare (*dt_start, date);
- end_comparison = icaltime_compare (second_date, *dt_end);
- if (start_comparison == -1 && end_comparison == -1)
+ end_comparison = icaltime_compare_date (&second_date, dt_end);
+ /* XXX: hack ensuring allday events with end_date a day after */
+ if (end_comparison == -1 && second_date.year == dt_end->year && dt_end->is_date == 1)
+ end_comparison = 0;
+
+ if (start_comparison < 0 && end_comparison < 0)
gtk_style_context_add_class (gtk_widget_get_style_context (cloned_child), "slanted");
- else if (start_comparison == -1)
+ else if (start_comparison < 0)
gtk_style_context_add_class (gtk_widget_get_style_context (cloned_child), "slanted-start");
- else if (end_comparison == -1)
+ else if (end_comparison < 0)
gtk_style_context_add_class (gtk_widget_get_style_context (cloned_child), "slanted-end");
else
break;
@@ -403,9 +401,7 @@ update_sidebar_headers (GtkListBoxRow *row,
date = *(priv->start_selected_date);
icaltime_adjust (&date, row_shift, 0, 0, 0);
- /* XXX: compare_date_only does not work if is_date field is different */
- date.is_date = priv->current_date->is_date;
- if (icaltime_compare_date_only (date, *(priv->current_date)) == 0)
+ if (icaltime_compare_date (&date, priv->current_date) == 0)
label_str = g_strdup (_("Today"));
else
label_str = g_strdup_printf ("%s %d", gcal_get_month_name (date.month - 1), date.day);
@@ -1120,8 +1116,8 @@ gcal_year_view_component_changed (ECalDataModelSubscriber *subscriber,
* it should only add, what's new, and add it sorted in its position */
/* XXX: implement using shift as data and GtkListBox sort_func */
/* XXX: comparing against zero is not reliable, but it can only result in TRUE */
- start_comparison = icaltime_compare (*(dtstart.value), *(priv->start_selected_date));
- end_comparison = icaltime_compare (*(dtend.value), *(priv->end_selected_date));
+ start_comparison = icaltime_compare_date (dtstart.value, priv->start_selected_date);
+ end_comparison = icaltime_compare_date (dtend.value, priv->end_selected_date);
if (start_comparison >= 0 || end_comparison <= 0 || (start_comparison < 0 && end_comparison > 0))
priv->update_sidebar_needed = TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]