Commit Graph
12 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 64fe7e543c utils/date-time-utils: Use g_time_zone_new_identifier()
g_time_zone_new() is deprecated in favor of it, so use it.
2021-02-26 19:26:49 -03:00
Georges Basile Stavracas Neto 9800fbec4b utils/date-time-utils: Trivial style cleanup 2021-02-26 19:26:49 -03:00
Evangelos Ribeiro Tzaras 07f544b78d gcal-date-time-utils: Fix week start
In locales where the first weekday is a monday, the previous code
had a off by one error determining the week a sunday is in.
The problem ultimately arose because in the
`gcal_date_time_get_start_of_week()` function the variable
`n_days_after_week_start` would become negative (-1 in this case) making
the following `g_date_time_add_days (date, -n_days_after_week_start)`
add 1 day resulting in `start_of_week` being set to the start of the
following week.

The solution was to make sure `n_days_after_week_start` would be
positive by adding 7 to it. The variable is taken modulo 7 hence this
should not introduce any bugs.

Fixes #583
2020-06-15 20:43:55 +02:00
Georges Basile Stavracas Neto 12fd607d56 utils: Make date comparison follow time comparison semantics
Right now, comparing dates with gcal_date_time_compare_date() gives
the exact opposite result of when comparing using g_date_time_compare().

As shown by this patch, this was a source of *many* bugs.
2020-04-14 19:08:06 +00:00
Michael Catanzaro a439fd2b1d date-time-utils: fall back to UTC when timezone is unrecognized
For whatever reason, libical doesn't support the Etc/UTC timezone.
Currently we crash gnome-calendar whenever libical doesn't support the
current timezone (as returned by GTimeZone). Let's fall back to UTC
instead.

Fixes #485
2020-02-18 17:07:55 -06:00
Georges Basile Stavracas Neto 34eb3a2343 utils: Use GDate to compare dates 2019-12-02 16:41:56 -03:00
Michael Catanzaro 8e6a3b9f3f Fix crashes when e_cal_util_get_system_timezone() returns NULL
The return value is nullable, but gnome-calendar fails to check it.

Because the nullable return value is inconvenient for us, we can instead
add and use gcal_context_get_icaltimezone() to supplement the existing
gcal_context_get_timezone().

We'll also need a function to convert from GTimeZone to ICalTimezone,
gcal_timezone_to_icaltimezone().

Fixes #419
2019-09-19 16:01:44 -05:00
Georges Basile Stavracas Neto 9644c30eee date-time-utils: Fix weekday calculation
GNOME Calendar needs to deal with two different
weekday ranges:

 1. Sunday → 0 ... Saturday → 6
 2. Monday → 1 ... Sunday → 7 (used by GDateTime)

When converting (2) into (1), the correct calculation
is `weekday % 7`.

However, gcal_date_time_get_start_of_week() was doing
`weekday - 1` instead.

Fix it and do the correct calculation instead.

https://gitlab.gnome.org/GNOME/gnome-calendar/issues/451
2019-09-14 11:14:01 -03:00
Milan Crha a0cae4356a Port to libecal-2.0
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/merge_requests/70
2019-05-17 21:58:55 +02:00
Georges Basile Stavracas Neto c52bacfc3f utils: Move more API to gcal-date-time-utils.c 2019-04-26 13:57:05 -03:00
Georges Basile Stavracas Neto ab1c0b6ca4 utils: Rename gcal_clear_datetime to gcal_clear_date_time
To keep it consistent with the rest of the API.
2019-04-26 13:27:37 -03:00
Georges Basile Stavracas Neto 68943eec57 utils: Add GDateTime utils
This will greatly help with the transition to GDateTime.
In the future, we can propose these APIs to GLib itself.
2019-04-26 12:59:29 -03:00