utils: Move more API to gcal-date-time-utils.c

This commit is contained in:
Georges Basile Stavracas Neto
2019-04-26 13:57:05 -03:00
parent 527cb6fc5f
commit c52bacfc3f
19 changed files with 163 additions and 163 deletions
+3 -3
View File
@@ -454,10 +454,10 @@ MAX_MINUTES
gcal_clear_date_time
GcalWindowViewType
icaltime_get_type
datetime_compare_date
datetime_to_icaltime
gcal_date_time_compare_date
gcal_date_time_to_icaltime
datetime_is_date
icaltime_to_datetime
gcal_date_time_from_icaltime
gcal_dup_icaltime
gcal_get_weekday
gcal_get_month_name
+3 -3
View File
@@ -1047,12 +1047,12 @@ typedef enum
void
</FUNCTION>
<FUNCTION>
<NAME>datetime_compare_date</NAME>
<NAME>gcal_date_time_compare_date</NAME>
<RETURNS>gint </RETURNS>
GDateTime *dt1, GDateTime *dt2
</FUNCTION>
<FUNCTION>
<NAME>datetime_to_icaltime</NAME>
<NAME>gcal_date_time_to_icaltime</NAME>
<RETURNS>icaltimetype * </RETURNS>
GDateTime *dt
</FUNCTION>
@@ -1062,7 +1062,7 @@ GDateTime *dt
GDateTime *dt
</FUNCTION>
<FUNCTION>
<NAME>icaltime_to_datetime</NAME>
<NAME>gcal_date_time_from_icaltime</NAME>
<RETURNS>GDateTime * </RETURNS>
const icaltimetype *date
</FUNCTION>
+3 -3
View File
@@ -470,10 +470,10 @@ GcalWindowViewType
EventEditableProperty
GcalTranslateFunc
icaltime_get_type
datetime_compare_date
datetime_to_icaltime
gcal_date_time_compare_date
gcal_date_time_to_icaltime
datetime_is_date
icaltime_to_datetime
gcal_date_time_from_icaltime
gcal_dup_icaltime
gcal_get_weekday
gcal_get_month_name
+1 -1
View File
@@ -286,7 +286,7 @@ calendar_update_selected_day_display (GcalDateChooser *self)
{
d = GCAL_DATE_CHOOSER_DAY (self->days[row][col]);
date = gcal_date_chooser_day_get_date (d);
gcal_date_chooser_day_set_selected (d, datetime_compare_date (date, self->date) == 0);
gcal_date_chooser_day_set_selected (d, gcal_date_time_compare_date (date, self->date) == 0);
}
}
}
+2 -2
View File
@@ -1228,11 +1228,11 @@ gcal_event_widget_sort_events (GcalEventWidget *widget1,
e_cal_component_get_last_modified (gcal_event_get_component (widget1->event), &ical_dt);
if (ical_dt)
dt_time1 = icaltime_to_datetime (ical_dt);
dt_time1 = gcal_date_time_from_icaltime (ical_dt);
e_cal_component_get_last_modified (gcal_event_get_component (widget2->event), &ical_dt);
if (ical_dt)
dt_time2 = icaltime_to_datetime (ical_dt);
dt_time2 = gcal_date_time_from_icaltime (ical_dt);
return dt_time1 && dt_time2 ? g_date_time_compare (dt_time2, dt_time1) : 0;
}
+3 -3
View File
@@ -221,7 +221,7 @@ build_component_from_datetime (GcalEvent *self,
return NULL;
comp_dt = g_new0 (ECalComponentDateTime, 1);
comp_dt->value = datetime_to_icaltime (dt);
comp_dt->value = gcal_date_time_to_icaltime (dt);
comp_dt->value->is_date = self->all_day;
if (self->all_day)
@@ -358,7 +358,7 @@ gcal_event_set_component_internal (GcalEvent *self,
date.is_date ? 0 : date.hour,
date.is_date ? 0 : date.minute,
date.is_date ? 0 : date.second);
start_is_all_day = datetime_is_date (date_start);
start_is_all_day = gcal_date_time_is_date (date_start);
self->dt_start = date_start;
@@ -380,7 +380,7 @@ gcal_event_set_component_internal (GcalEvent *self,
date.is_date ? 0 : date.hour,
date.is_date ? 0 : date.minute,
date.is_date ? 0 : date.second);
end_is_all_day = datetime_is_date (date_end);
end_is_all_day = gcal_date_time_is_date (date_end);
self->dt_end = g_date_time_ref (date_end);
+3 -3
View File
@@ -439,7 +439,7 @@ update_header (GcalQuickAddPopover *self)
{
gboolean all_day;
all_day = datetime_is_date (self->date_start) && (self->date_end ? datetime_is_date (self->date_end) : TRUE);
all_day = gcal_date_time_is_date (self->date_start) && (self->date_end ? gcal_date_time_is_date (self->date_end) : TRUE);
if (all_day &&
(g_date_time_difference (self->date_end, self->date_start) / G_TIME_SPAN_DAY > 1 &&
@@ -653,8 +653,8 @@ edit_or_create_event (GcalQuickAddPopover *self,
manager = gcal_context_get_manager (self->context);
source = g_object_get_data (G_OBJECT (self->selected_row), "source");
single_day = datetime_compare_date (self->date_end, self->date_start) == 0;
all_day = datetime_compare_date (self->date_end, self->date_start) > 1 ||
single_day = gcal_date_time_compare_date (self->date_end, self->date_start) == 0;
all_day = gcal_date_time_compare_date (self->date_end, self->date_start) > 1 ||
g_date_time_compare (self->date_end, self->date_start) == 0;
tz = all_day ? g_time_zone_new_utc () : g_time_zone_new_local ();
+1 -1
View File
@@ -220,7 +220,7 @@ gcal_recurrence_parse_recurrence_rules (ECalComponent *comp)
else if (rrule.until.year != 0)
{
recur->limit_type = GCAL_RECURRENCE_UNTIL;
recur->limit.until = icaltime_to_datetime (&rrule.until);
recur->limit.until = gcal_date_time_from_icaltime (&rrule.until);
}
else
{
+1 -1
View File
@@ -138,7 +138,7 @@ open_event (GtkListBox *list,
icaltimetype *date_start;
data = g_object_get_data (G_OBJECT (row), "event-data");
date_start = datetime_to_icaltime (gcal_event_get_date_start (data->event));
date_start = gcal_date_time_to_icaltime (gcal_event_get_date_start (data->event));
g_signal_emit_by_name (user_data, "event-activated", date_start);
+111
View File
@@ -114,3 +114,114 @@ gcal_date_time_get_end_of_week (GDateTime *date)
week_start = gcal_date_time_get_start_of_week (date);
return g_date_time_add_weeks (week_start, 1);
}
/**
* gcal_date_time_compare_date:
* @dt1: (nullable): a #GDateTime
* @dt2: (nullable): a #GDateTime
*
* Compares the dates of @dt1 and @dt2. The times are
* ignored.
*
* Returns: negative, 0 or positive
*/
gint
gcal_date_time_compare_date (GDateTime *dt1,
GDateTime *dt2)
{
if (!dt1 && !dt2)
return 0;
else if (!dt1)
return -1;
else if (!dt2)
return 1;
if (g_date_time_get_year (dt1) != g_date_time_get_year (dt2))
return (g_date_time_get_year (dt1) - g_date_time_get_year (dt2)) * 360;
if (g_date_time_get_month (dt1) != g_date_time_get_month (dt2))
return (g_date_time_get_month (dt1) - g_date_time_get_month (dt2)) * 30;
if (g_date_time_get_day_of_month (dt1) != g_date_time_get_day_of_month (dt2))
return g_date_time_get_day_of_month (dt1) - g_date_time_get_day_of_month (dt2);
return 0;
}
/**
* gcal_date_time_to_icaltime:
* @dt: a #GDateTime
*
* Converts the #GDateTime's @dt to an #icaltimetype.
*
* Returns: (transfer full): a #icaltimetype.
*/
icaltimetype*
gcal_date_time_to_icaltime (GDateTime *dt)
{
icaltimetype *idt;
if (!dt)
return NULL;
idt = g_new0 (icaltimetype, 1);
idt->year = g_date_time_get_year (dt);
idt->month = g_date_time_get_month (dt);
idt->day = g_date_time_get_day_of_month (dt);
idt->hour = g_date_time_get_hour (dt);
idt->minute = g_date_time_get_minute (dt);
idt->second = g_date_time_get_seconds (dt);
idt->is_date = (idt->hour == 0 &&
idt->minute == 0 &&
idt->second == 0);
return idt;
}
/**
* gcal_date_time_is_date:
* @dt: a #GDateTime
*
* Checks if @dt represents a date. A pure date
* has the values of hour, minutes and seconds set
* to 0.
*
* Returns: %TRUE if @dt is a date, %FALSE if it's a
* timed datetime.
*/
gboolean
gcal_date_time_is_date (GDateTime *dt)
{
return g_date_time_get_hour (dt) == 0 &&
g_date_time_get_minute (dt) == 0 &&
g_date_time_get_seconds (dt) == 0;
}
/**
* gcal_date_time_from_icaltime:
* @date: an #icaltimetype
*
* Creates a #GDateTime from @date. The timezone is preserved.
*
* Returns: (transfer full): a #GDateTime.
*/
GDateTime*
gcal_date_time_from_icaltime (const icaltimetype *date)
{
g_autoptr (GTimeZone) tz = NULL;
g_autoptr (GDateTime) dt = NULL;
tz = date->zone ? g_time_zone_new (icaltime_get_tzid (*date)) : g_time_zone_new_utc ();
dt = g_date_time_new (tz,
date->year,
date->month,
date->day,
date->is_date ? 0 : date->hour,
date->is_date ? 0 : date->minute,
date->is_date ? 0 : date->second);
return g_steal_pointer (&dt);
}
+10
View File
@@ -21,6 +21,7 @@
#pragma once
#include <glib.h>
#include <libical/icaltime.h>
G_BEGIN_DECLS
@@ -41,4 +42,13 @@ GDateTime* gcal_date_time_get_start_of_week (GDateTime
GDateTime* gcal_date_time_get_end_of_week (GDateTime *date);
gint gcal_date_time_compare_date (GDateTime *dt1,
GDateTime *dt2);
icaltimetype* gcal_date_time_to_icaltime (GDateTime *dt);
gboolean gcal_date_time_is_date (GDateTime *dt);
GDateTime* gcal_date_time_from_icaltime (const icaltimetype *date);
G_END_DECLS
+3 -115
View File
@@ -102,118 +102,6 @@ month_item[12] =
G_DEFINE_BOXED_TYPE (icaltimetype, icaltime, gcal_dup_icaltime, g_free)
/**
* datetime_compare_date:
* @dt1: (nullable): a #GDateTime
* @dt2: (nullable): a #GDateTime
*
* Compares the dates of @dt1 and @dt2. The times are
* ignored.
*
* Returns: negative, 0 or positive
*/
gint
datetime_compare_date (GDateTime *dt1,
GDateTime *dt2)
{
if (!dt1 && !dt2)
return 0;
else if (!dt1)
return -1;
else if (!dt2)
return 1;
if (g_date_time_get_year (dt1) != g_date_time_get_year (dt2))
return (g_date_time_get_year (dt1) - g_date_time_get_year (dt2)) * 360;
if (g_date_time_get_month (dt1) != g_date_time_get_month (dt2))
return (g_date_time_get_month (dt1) - g_date_time_get_month (dt2)) * 30;
if (g_date_time_get_day_of_month (dt1) != g_date_time_get_day_of_month (dt2))
return g_date_time_get_day_of_month (dt1) - g_date_time_get_day_of_month (dt2);
return 0;
}
/**
* datetime_to_icaltime:
* @dt: a #GDateTime
*
* Converts the #GDateTime's @dt to an #icaltimetype.
*
* Returns: (transfer full): a #icaltimetype.
*/
icaltimetype*
datetime_to_icaltime (GDateTime *dt)
{
icaltimetype *idt;
if (!dt)
return NULL;
idt = g_new0 (icaltimetype, 1);
idt->year = g_date_time_get_year (dt);
idt->month = g_date_time_get_month (dt);
idt->day = g_date_time_get_day_of_month (dt);
idt->hour = g_date_time_get_hour (dt);
idt->minute = g_date_time_get_minute (dt);
idt->second = g_date_time_get_seconds (dt);
idt->is_date = (idt->hour == 0 &&
idt->minute == 0 &&
idt->second == 0);
return idt;
}
/**
* icaltime_to_datetime:
* @date: an #icaltimetype
*
* Converts the #icaltimetype's @date to a #GDateTime. The
* timezone is preserved.
*
* Returns: (transfer full): a #GDateTime.
*/
GDateTime*
icaltime_to_datetime (const icaltimetype *date)
{
GDateTime *dt;
GTimeZone *tz;
tz = date->zone ? g_time_zone_new (icaltime_get_tzid (*date)) : g_time_zone_new_utc ();
dt = g_date_time_new (tz,
date->year,
date->month,
date->day,
date->is_date ? 0 : date->hour,
date->is_date ? 0 : date->minute,
date->is_date ? 0 : date->second);
g_clear_pointer (&tz, g_time_zone_unref);
return dt;
}
/**
* datetime_is_date:
* @dt: a #GDateTime
*
* Checks if @dt represents a date. A pure date
* has the values of hour, minutes and seconds set
* to 0.
*
* Returns: %TRUE if @dt is a date, %FALSE if it's a
* timed datetime.
*/
gboolean
datetime_is_date (GDateTime *dt)
{
return g_date_time_get_hour (dt) == 0 &&
g_date_time_get_minute (dt) == 0 &&
g_date_time_get_seconds (dt) == 0;
}
/**
* gcal_dup_icaltime:
* @date: an #icaltimetype
@@ -509,7 +397,7 @@ build_component_from_details (const gchar *summary,
* 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);
all_day = gcal_date_time_is_date (initial_date) && (final_date ? gcal_date_time_is_date (final_date) : TRUE);
/*
* When the event is all day, we consider UTC timezone by default. Otherwise,
@@ -529,7 +417,7 @@ build_component_from_details (const gchar *summary,
}
/* Start date */
dt.value = datetime_to_icaltime (initial_date);
dt.value = gcal_date_time_to_icaltime (initial_date);
icaltime_set_timezone (dt.value, zone);
dt.value->is_date = all_day;
dt.tzid = icaltimezone_get_tzid (zone);
@@ -541,7 +429,7 @@ build_component_from_details (const gchar *summary,
if (!final_date)
final_date = g_date_time_add_days (initial_date, 1);
dt.value = datetime_to_icaltime (final_date);
dt.value = gcal_date_time_to_icaltime (final_date);
icaltime_set_timezone (dt.value, zone);
dt.value->is_date = all_day;
dt.tzid = icaltimezone_get_tzid (zone);
-9
View File
@@ -44,15 +44,6 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC (GWeatherLocation, gweather_location_unref)
GType icaltime_get_type (void) G_GNUC_CONST;
gint datetime_compare_date (GDateTime *dt1,
GDateTime *dt2);
icaltimetype* datetime_to_icaltime (GDateTime *dt);
gboolean datetime_is_date (GDateTime *dt);
GDateTime* icaltime_to_datetime (const icaltimetype *date);
icaltimetype* gcal_dup_icaltime (const icaltimetype *date);
gchar* gcal_get_weekday (gint i);
+2 -2
View File
@@ -99,7 +99,7 @@ update_style_flags (GcalMonthCell *self)
today = g_date_time_new_now_local ();
context = gtk_widget_get_style_context (GTK_WIDGET (self));
if (datetime_compare_date (self->date, today) == 0)
if (gcal_date_time_compare_date (self->date, today) == 0)
gtk_style_context_add_class (context, "today");
else
gtk_style_context_remove_class (context, "today");
@@ -480,7 +480,7 @@ gcal_month_cell_set_date (GcalMonthCell *self,
g_return_if_fail (GCAL_IS_MONTH_CELL (self));
if (self->date && date && datetime_compare_date (self->date, date) == 0)
if (self->date && date && gcal_date_time_compare_date (self->date, date) == 0)
return;
gcal_clear_date_time (&self->date);
+3 -3
View File
@@ -317,8 +317,8 @@ update_event_list (GcalMonthPopover *self)
0, 0, 0);
end_dt = g_date_time_add_days (start_dt, 1);
start = datetime_to_icaltime (start_dt);
end = datetime_to_icaltime (end_dt);
start = gcal_date_time_to_icaltime (start_dt);
end = gcal_date_time_to_icaltime (end_dt);
events = gcal_manager_get_events (gcal_context_get_manager (self->context), start, end);
@@ -878,7 +878,7 @@ gcal_month_popover_set_date (GcalMonthPopover *self,
{
g_return_if_fail (GCAL_IS_MONTH_POPOVER (self));
if (date && self->date && datetime_compare_date (self->date, date) == 0)
if (date && self->date && gcal_date_time_compare_date (self->date, date) == 0)
return;
gcal_clear_date_time (&self->date);
+3 -3
View File
@@ -995,15 +995,15 @@ update_month_cells (GcalMonthView *self)
selection_end = selection_start;
/* Swap dates if end is before start */
if (datetime_compare_date (selection_end, selection_start) < 0)
if (gcal_date_time_compare_date (selection_end, selection_start) < 0)
{
GDateTime *aux = selection_end;
selection_end = selection_start;
selection_start = aux;
}
selected = datetime_compare_date (gcal_month_cell_get_date (cell), selection_start) >= 0 &&
datetime_compare_date (gcal_month_cell_get_date (cell), selection_end) <= 0;
selected = gcal_date_time_compare_date (gcal_month_cell_get_date (cell), selection_start) >= 0 &&
gcal_date_time_compare_date (gcal_month_cell_get_date (cell), selection_end) <= 0;
}
gcal_month_cell_set_selected (cell, selected);
+1 -1
View File
@@ -1776,7 +1776,7 @@ gcal_week_header_add_event (GcalWeekHeader *self,
}
/* Start position */
if (datetime_compare_date (start_date, week_start) >= 0)
if (gcal_date_time_compare_date (start_date, week_start) >= 0)
start = floor (g_date_time_difference (start_date, week_start) / G_TIME_SPAN_DAY);
else
start = 0;
+1 -1
View File
@@ -133,7 +133,7 @@ update_grid_scroll_position (GcalWeekView *self)
week_end = gcal_date_time_get_end_of_week (self->date);
/* Don't animate when not today */
if (datetime_compare_date (now, week_start) < 0 || datetime_compare_date (now, week_end) >= 0)
if (gcal_date_time_compare_date (now, week_start) < 0 || gcal_date_time_compare_date (now, week_end) >= 0)
GCAL_GOTO (out);
vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scrolled_window));
+9 -9
View File
@@ -272,9 +272,9 @@ update_no_events_page (GcalYearView *year_view)
gchar *title;
now = g_date_time_new_now_local ();
has_range = datetime_compare_date (year_view->start_selected_date, year_view->end_selected_date);
has_range = gcal_date_time_compare_date (year_view->start_selected_date, year_view->end_selected_date);
if (datetime_compare_date (now, year_view->start_selected_date) == 0)
if (gcal_date_time_compare_date (now, year_view->start_selected_date) == 0)
{
title = g_strdup_printf ("%s%s", _("Today"), has_range ? "…" : "");
}
@@ -335,7 +335,7 @@ add_event_to_day_array (GcalYearView *year_view,
gint start_comparison;
cloned_child = child_widget;
start_comparison = datetime_compare_date (dt_start, date);
start_comparison = gcal_date_time_compare_date (dt_start, date);
if (start_comparison > 0)
{
@@ -382,7 +382,7 @@ add_event_to_day_array (GcalYearView *year_view,
cloned_child,
(GCompareFunc) compare_events);
end_comparison = datetime_compare_date (second_date, dt_end);
end_comparison = gcal_date_time_compare_date (second_date, dt_end);
/*
* If the end date surpassed the event's end date, we reached the
@@ -426,8 +426,8 @@ update_sidebar (GcalYearView *year_view)
days_widgets_array = g_new0 (GList*, days_span);
manager = gcal_context_get_manager (year_view->context);
start_icaldatetime = datetime_to_icaltime (year_view->start_selected_date);
end_icaldatetime = datetime_to_icaltime (year_view->end_selected_date);
start_icaldatetime = gcal_date_time_to_icaltime (year_view->start_selected_date);
end_icaldatetime = gcal_date_time_to_icaltime (year_view->end_selected_date);
events = gcal_manager_get_events (manager, start_icaldatetime, end_icaldatetime);
if (events == NULL)
{
@@ -513,7 +513,7 @@ update_sidebar_headers (GtkListBoxRow *row,
row_header = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
now = g_date_time_new_now_local ();
if (datetime_compare_date (year_view->start_selected_date, now) == 0)
if (gcal_date_time_compare_date (year_view->start_selected_date, now) == 0)
label_str = g_strdup (_("Today"));
else
/* Translators: This is a date format in the sidebar of the year view. */
@@ -709,8 +709,8 @@ count_events_at_day (GcalYearView *self,
event_end = g_date_time_ref (gcal_event_get_date_end (event));
if (datetime_compare_date (event_start, today_end) >= 0 ||
datetime_compare_date (event_end, today) < 0)
if (gcal_date_time_compare_date (event_start, today_end) >= 0 ||
gcal_date_time_compare_date (event_end, today) < 0)
{
continue;
}