Commit Graph
214 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 1e6fe7af51 core/log: Add tab after time
This should fix the misaligned timestamps.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:37:25 -03:00
Georges Basile Stavracas Neto 1fbd193954 core/timeline: Sort events better
The previous sorter was a simple GcalRange proxy, but we need a more
robust and stable sorting mechanism. Use multiday, start and end dates,
length, and finally the last modified date to sort events.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/761>
2026-05-05 21:37:15 -03:00
Georges Basile Stavracas Neto 2f7dce36e2 core/event-list: Use gdkarrayimpl.c as backing store
GSequence is useful and provides us with a convenient API, however,
it pretty much guarantees cache misses when iterating, lots of pointer
chasing, and scattered memory.

gdkarrayimpl.c works around all of that, at the cost of more expensive
additions and removals. But because we do a lot more lookups compared
to edits, there should still be benefits to it.

Change the backing store to be based on gdkarrayimpl.c.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/757>
2026-05-03 15:29:31 -03:00
Georges Basile Stavracas Neto d47358f294 core/manager: Use an augmented timeline
Augment the range of events by a factor of 2.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/755>
2026-05-03 14:01:22 -03:00
Georges Basile Stavracas Neto b353c9f259 core/timeline: Add support for augmented timelines
Augmented timelines increase the range of dates from its subscribers
by the specified factor. They're useful for the interactive views,
since they prevent fetching new events so often as when views change.

Add the necessary API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/755>
2026-05-03 14:01:22 -03:00
Georges Basile Stavracas Neto afd9f9b954 core/timeline: Remove message queueing and listeners
"Let go and move on." - The Fool?

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:54 +00:00
Georges Basile Stavracas Neto 5c39162f86 core/search-provider: Port to GListModel
No deal

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:53 +00:00
Georges Basile Stavracas Neto 5fe24582d4 core/range-tree: Add gcal_range_tree_has_entries_at_range
It checks if there's any entry in that range. It's a little faster
than gcal_range_tree_count_entries_at_range() because it stops at
the first entry that matches it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:52 +00:00
Georges Basile Stavracas Neto df8033b3ba core/timeline: Cosmetics
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:51 +00:00
Georges Basile Stavracas Neto 71c5d0b70d core/timeline: Add plumbing for models
Add a GtkFlattenListModel that flattens out all events from the
calendar monitors. Keep a GtkFilterListModel, and a GtkSortListModel,
for each subscriber. Manually update the filter when the range of
the subscriber changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:50 +00:00
Georges Basile Stavracas Neto 5f5e438955 core/timeline-subscriber: Add set_model() vfunc
This is the entry point that will allow views to use models instead
of the manual add/remove/update_events vfuncs.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:50 +00:00
Georges Basile Stavracas Neto a303759913 core/timeline: Store calendar monitors in a GListModel
This will allow flattening and merging them.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:50 +00:00
Georges Basile Stavracas Neto cc6736a16f core/calendar-monitor: Implement GListModel
This uses GcalEventList to as the backing store of events, and proxies
the "items-changed" signal.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto 9eea2ee985 core/calendar-monitor: Use NULL-terminated arrays
This will help with next commits

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto 6da43e9353 Introduce GcalEventList
This is a GListModel implementation that is specific to
GcalEvents. Events are stored in a GSequence in order of
date.

Add a couple of tests exercising additions and removals.

WIP: add more tests
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:49 +00:00
Georges Basile Stavracas Neto 4796330de0 core/log: Ignore GWeather messages
Mostly noise, and lots of XML outputs.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:49 +00:00
Hari Rana 48e86c7f3d search/search-engine: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:04 +00:00
Hari Rana e0250064f6 core/shell-search-provider: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:04 +00:00
Hari Rana dc4cfe4ecf core/manager: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:03 +00:00
Hari Rana 4e9ea9cd51 core/timeline: Remove "context" property
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:03 +00:00
Georges Basile Stavracas Neto 9712280aea core/manager: Cosmetics 2026-03-03 20:12:45 -03:00
Georges Basile Stavracas Neto b4292c2026 core/manager: Increment before potentially decrementing
Otherwise we can go backwards first. Not going to break anything,
but this is a more robust logic.
2026-03-03 20:11:07 -03:00
Georges Basile Stavracas Neto e1438b3c8e core/manager: Use g_autoptr more
In the clients list.
2026-03-03 20:09:51 -03:00
voyage200 9f956c93d4 core/manager: Also refresh collections
Add on_collection_source_refreshed() callback. Track collection
source refresh in clients_synchronizing. Refresh collection sources
before calendar clients. Fix PROP_SYNCHRONIZING state by waiting for
all async ops.
2026-03-03 20:07:18 -03:00
mindonwarp b90b99f1bd core: Use GListModel for attendees instead of GSList
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/686>
2026-01-29 23:26:42 +00:00
mindonwarp 0149b7a042 core/editor: Replace g_return_* with g_assert
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:53 +00:00
mindonwarp 884855ee0b core: Add a wrapper object for event organizer
Add a wrapper for the ECalComponentOrganizer. An instance of this type
is kept as part of the GcalEvent structure.

The GcalEventOrganizer is just a "proxy" to the ECalComponentAttendee
and its purpose is to unclutter the GcalEvent interface and provide a
bindable base for a UI widget.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:52 +00:00
mindonwarp 4f6e705e8b core: Add a wrapper object for attendees
Wrap ECalComponentAttendee structure in calendar's own structure to
prevent propagating the dependency on libecal types to the ui layer.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:51 +00:00
Georges Basile Stavracas Neto 4c4fc5a965 core/range-tree: Properly free nodes
It was missing the GDateTime *max field.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664>
2025-11-19 18:01:11 -03:00
Georges Basile Stavracas Neto 36d3837e0b core/range-tree: Clear range from deleted nodes
Otherwise we leak the range.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/664>
2025-11-19 17:43:04 -03:00
Georges Basile Stavracas Neto 50217bba42 core/event: Cosmetics
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/663>
2025-11-19 09:48:25 -03:00
Georges Basile Stavracas Neto a884076dc5 core/event: Remove g_autoptr declaration
Turns out g_date_time_get_timezone() is transfer-none, so assigning it
to a g_autoptr variable is invalid.

Fixes 42f891ff42

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/663>
2025-11-19 09:47:29 -03:00
Georges Basile Stavracas Neto 6bb52f53e5 core/event: Improve setup function
Use g_autoptr, shuffle some code around, and fix a memory leak.
2025-11-18 14:58:08 -03:00
Federico Mena Quintero 63cf4374e4 Remove gcal_event_set/get_original_timezones()
They are unused now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550>
2025-08-27 20:00:01 -03:00
Georges Basile Stavracas Neto d16cc2bc68 utils: Remove get_source_parent_name_color
One less weird function lurking around.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/610>
2025-07-02 18:04:26 +00:00
Georges Basile Stavracas Neto e9ec77f15b core/calendar: Add "parent-source" property
Tracks the parent ESource of this calendar. Will be useful for future
patches.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/610>
2025-07-02 18:04:26 +00:00
Ignacy Kuchciński 33d87c3511 core/context: Delay reading time format
Reading time format from the settings portal during context init results
in interacting with xdg-desktop-portal before GtkApplication can
register the host app id. This makes portals not aware of the
application id, which could cause problems in the future.

Fix that by calling read_time_format during gcal_context_startup, which
is called after the GtkApplication startup chain-up.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/586>
2025-06-08 20:16:08 +00:00
Federico Mena Quintero 84cf41cc4f core/timeline: Fix leak of QueueData in queue_event_data()
The new QueueData was created even for REMOVE_EVENT, which causes an
early exit.  Only create the QueueData when needed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/582>
2025-05-30 14:10:05 +00:00
Federico Mena Quintero d1499329cc core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero cf48f79f36 core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero 26c3f83e3c core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero e2dc3460a6 core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero 1d5fd3eec9 core/calendar-monitor: Replace a manual GRWLockWriterLocker with G_RW_LOCK_WRITER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero 21b7607c39 core/calendar-monitor: Replace a manual GRWLockReaderLocker with G_RW_LOCK_READER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero f55f42b81c core/calendar-monitor: Replace a manual GRWLockReaderLocker with G_RW_LOCK_READER_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero 32ebd80613 core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero eeb9c99172 core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero 0d3975b556 core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero e884a09268 core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00
Federico Mena Quintero 872aae9183 core/calendar: Replace a manual GMutexLocker with G_MUTEX_AUTO_LOCK()
This takes care of static-scan's warning about a variable being set
but never read.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/581>
2025-05-28 18:08:54 +00:00