Commit Graph
26 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto c68ef4b9ab manager: Remove more unused API 2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto 399b9d8d00 Simplify calendar views
We don't need a split subscription update step in GcalView
anymore, since subscribers communicate range directly to
the timeline now.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto 84eeb58804 Move Shell search to GcalShellSearchProvider
Add a custom timeline to GcalShellSearchProvier and use
it to gather events.

Do a massive cleanup of unused APIs as well.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto 02f21fddab manager: Remove main ECalDataModel
It is not used by any views, nor by the search engine.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto 9cb29b6dc5 manager: Update event gathering API 2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto 70bcc18bf9 manager: Remove unused API 2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto 6bcf1a3705 manager: Add GcalTimelineSubscribers to GcalTimeline
Instead of subscribing to the ECalDataModel's API, use the
new API.
2020-04-01 21:06:51 -03:00
Niels De Graef 4d05ffb9d3 Don't forget to chain up to parent finalize
This can give a small memory leak and can prevent the necessary closing
of resources.
2019-12-02 19:53:59 +00:00
Georges Basile Stavracas Neto 58974cb7e2 manager: Only remove connected calendars
The "source-removed" signal can pass any kind of source,
including source collections that even have the calendar
extension, but are not connected.
2019-10-09 13:02:35 -03:00
Georges Basile Stavracas Neto 262cd40eec manager: Instrument removing calendars 2019-10-09 12:37:01 -03:00
Georges Basile Stavracas Neto 1308e33f1d manager: Always return if calendar creation fails
This is an embarrassing mistake: when an error is propagated,
we always need to return! The error matching should only be
used for deciding whether to warn or not.

https://gitlab.gnome.org/GNOME/gnome-calendar/issues/470
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/264
2019-10-09 12:37:01 -03:00
Michael Catanzaro 50b6d00784 manager: add GcalContext property
This improves access to the GcalContext inside GcalManager.

Also, remove test-manager since it only tests that gcal_manager_new()
returns non-NULL.
2019-09-19 16:04:04 -05: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
Michael Catanzaro 18ae67cb59 Use more g_signal_connect_object()
Most of these are probably paranoid, not bugs. I haven't done an
exhaustive review to see what really needs it: that would be
time-consuming and require significant familiarity with the Calendar
codebase. This was just a quick check. Anyway, I vote for paranoid
when it comes to using g_signal_connect() regardless. It's dangerous,
and there's no reason to ever leave a signal connected after the user
data object has been destroyed.

Fixes #423
2019-09-14 23:28:42 +00:00
Michael Catanzaro 5d2c0faf41 Fix use-after-free in GcalManager code
This was originally discovered and fixed by Milan Crha; I'm just
forward-porting his fix to the master branch. self->clients takes
ownership of this source but we don't currently have ownership here,
leading to a double free vulnerability.

Fixes #435
2019-09-03 12:07:26 +00:00
Georges Basile Stavracas Neto 1d6dee8bbb manager: Avoid reentrancy
While deleting the calendar, we may run into a situation
where the GcalCalendar instance is destroyed before the
GcalManager:calendar-removed signal is emitted, causing
us to emit the signal with a destroyed object.

Prevent that by increasing the ref count before emiting
the signal.
2019-07-13 19:51:02 -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 198180d023 manager: Fix typo 2019-05-10 13:44:43 -03:00
Georges Basile Stavracas Neto f4c4a91465 manager: Add 'synchronizing' property
Will be useful to know if there are any clients being
synchronized.
2019-05-10 12:42:13 -03:00
Georges Basile Stavracas Neto 7ad0f100a7 manager: Properly bind default calendar
We need to convert from ESource to GcalCalendar.
2019-05-10 11:20:51 -03:00
Georges Basile Stavracas Neto bb8d5b92ce manager: Handle default calendars via GcalCalendar 2019-05-04 12:05:39 -03:00
Georges Basile Stavracas Neto df182d1b88 manager: Remove "loading" property
The stack is robust enough to handle dynamically
loading the calendars.
2019-05-04 12:05:39 -03:00
Georges Basile Stavracas Neto e7c6120133 manager: Remove gcal_manager_is_client_writable()
It is now handled by GcalCalendar, and nobody else uses
it.
2019-05-04 12:05:39 -03:00
Georges Basile Stavracas Neto e800bb2476 manager: Remove gcal_manager_enable/disable_source()
This is now managed by GcalCalendar itself.
2019-05-04 12:05:39 -03:00
Georges Basile Stavracas Neto 2ef1cbc463 manager: Toggle data model sources when changed
Instead of other classes needing to manually set and
unset whether a source is registered in the data model,
we can now simply call GcalCalendar.set_visible() and
have the model be updated for us.
2019-05-04 12:05:39 -03:00
Georges Basile Stavracas Neto 1a5ff545a2 project: Move a few classes to core/ 2019-05-04 12:05:39 -03:00