Commit Graph
5781 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto fa03c6f9af views/week-grid: Port to GListModel
And, while at it, rewrite the layout algorithm to operate on blocks of
overlapping events, and segmented columns. Like the month view row,
layouts blocks are invalidated at any point in time, but recalculated
immediately before a relayout happens.

The reason for doing such a massive rewrite while in the middle of the
port to GListModel is because it's easier to handle GListModel data
with this approach, than with the previous approach of storing it all
in a GcalRangeTree.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1153
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 807f5608b1 search/model: Port to GListModel
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:52 +00:00
Georges Basile Stavracas Neto 34e28e31fe views/week: Port week header to GListModel
Rework the add/remove functions to make them internal. The remove
function can now operate on GcalEvent* instead of gchar* uuid,
since it's not bound to GcalTimelineSubscriber anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:52 +00:00
Georges Basile Stavracas Neto c635db3495 views/week: Port to GPtrArray
GLists are an artifact of times immemorial and we should
avoid using them as much as possible. In this commit, for
example, there were a couple of accidentally quadratic
pieces of code.

Port (mostly of) the week view header to GPtrArray.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:51 +00:00
Georges Basile Stavracas Neto 039b75755e views/month: Port to GListModel
Neutralize the add/remove/update vfuncs (we can't remove them yet).
Pass the event model to the individual week rows, and let them
filter their events using a GtkFilterListModel.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/742>
2026-05-03 16:57:51 +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 2bc9c96095 flatpak: Use intltool provided by shared-modules
Launchpad is currently dealing with DDoS issues. The shared-module
repository contains mirrors which can be useful for those who are
unable to build intltool.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/756>
2026-05-03 15:25:44 +00:00
Efstathios Iosifidis d55b35213e Update Greek translation
(cherry picked from commit c499ba7c2ba95cbdd1df949cc621ec930adc23f3)
2026-05-03 05:39:59 +00:00
Aefgh Threenine e1cbf52fe6 Update Thai translation
(cherry picked from commit 1a06db017fe719569723392ff33deacddacbf43a)
2026-05-02 17:04:34 +00:00
Martin 85fe57f8dc Update Slovenian translation 2026-04-29 14:42:08 +00:00
Danial Behzadi 7924404228 Update Persian translation
(cherry picked from commit e90c992b7c5951dddd79ca41091f6bf81f0d22e2)
2026-04-27 23:43:35 +00:00
Antonio Marin c5f79ea664 Update Romanian translation 2026-04-24 09:05:58 +00:00
Jordan Petridis b900a65760 Use standalone Month format when appropriate
Some locales use different strings for the months depending if they are
accompanied by a numberic date or not. When we use the month name as a
standalone, we should use %OB instead to accomodate for these locales.

For more see: https://docs.gtk.org/glib/method.DateTime.format.html

Close #1546

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/705>
2026-04-23 16:28:06 +00:00
Jan-Michael Brummer 63879a0d63 event-widget: Truncate long strings by char not by bytes
Longer text were truncated by bytes instead of chars leading to
invalid text as UTF text sizes are bigger than one byte.
Fix it by using the correct utf8 offset pointer.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/750>
2026-04-23 11:36:00 +00:00
Jan-Michael Brummer 5e30145971 weather-info: Remove duplicate code
gcal_weather_info_get_date is defined twice, remove it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/749>
2026-04-23 11:32:09 +00:00
Jose Riha ef00d2033a Update Slovak translation
(cherry picked from commit 7c1d1b88f696650f3489533d57b518d3c6b9baa7)
2026-04-21 09:20:02 +00:00
Nathan Follens d77c86ffb0 Update Dutch translation
(cherry picked from commit 2ca6a83cd3fccdfe1abd605a07d78ab36184a37b)
2026-04-20 21:11:18 +00:00
Miika Brenna Jarsve 8854cc2358 Update Norwegian Bokmål translation 2026-04-17 07:34:58 +00:00
Antonio Marin 4f019194cf Update Romanian translation 2026-04-11 17:08:05 +00:00
Martin d24abd4687 Update Slovenian translation 2026-04-09 19:42:05 +00:00
Alistair Francis 6c09758633 event-popover: Support the maps URI for opening locations
Open gnome-maps (or other map application) when clicking on a map icon
next to the location address.

Resolves: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/326
Signed-off-by: Alistair Francis <alistair@alistair23.me>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/590>
2026-04-09 12:04:11 +00:00
Jake Dane b0321c369d Replace style-*.css with media queries
Libadwaita 1.9 deprecates using style-dark.css, style-hc-dark.css and
style-hc.css. This moves these styles into style.css and conditionally
loads them using media queries.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/745>
2026-04-08 12:19:18 +00:00
Hari Rana 92b74849bf views/month-cell: Add AdwBin as parent to methods retrieving height of widget
This is future-proofing the uncertain decision of removing
GtkWidget's `margin-*` properties in the future, which is what
we're currently using to retrieve the height of certain widgets.

Whenever the intention is to get the entire size of a particular
widget, including properties that contribute to layout such as
margins, the `get_width()`/`get_height()` methods don't include
these properties during calculations. However, getting the size
of the parent widget will include them in its entirety.

As such, the safest path is to use AdwBin as the parent to the
respective widgets, and using it to retrieve the height.

See: <https://gitlab.gnome.org/GNOME/gtk/-/issues/6556#note_2056432>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/739>
2026-04-03 16:37:14 -04:00
Antonio Marin a578d93ce3 Update Romanian translation 2026-04-02 14:33:12 +00:00
Martin 6e085142c1 Update Slovenian translation 2026-04-01 16:42:20 +00:00
Hari Rana 9f8faf0db0 data: Add agenda view screenshot
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/718>
2026-04-01 11:20:44 +00:00
Hari Rana 49e0521b67 views/week-view: Adapt to high contrast
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/710>
2026-03-31 21:55:32 -04:00
Joshua Brot 1baefcc465 gui: Run Blueprint formatter
Reformatting blueprints to align with the updated formatter.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/736>
2026-03-27 18:16:29 -04:00
Joshua Brot a40a0da7ed ci: Use nightly blueprint-compiler
The current version of blueprint-compiler used to compile is different from
the version used to run the format check. This means that running the formatter
locally does not get the format check passing.

This commit changes the format check from getting the blueprint-compiler from
the latest Fedora image to getting it from the GNOME OS OCI nightly image,
ensuring that it is always up-to-date.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/736>
2026-03-27 14:59:16 -07:00
Zoey Ahmed fbfacb6972 gui/blueprint: Drop unneeded casts to built-ins
Blueprint can now "infer" the type a closure returns, as long as it is
not the property of a custom GType, so some of the casts (e.g. `as
<string>`) will not be necessary anymore

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/733>
2026-03-24 16:43:10 +00:00
Hari Rana c0063f29c8 calendar-management/calendars-page: Delete calendar during unmapping
The previous commit reintroduced
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1270

In order to solve this without destroying the dialog,
the calendar is forcefully deleted when unmapping.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00
Hari Rana 98a993de4d gui/window: Reuse calendar management dialog
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00
Hari Rana 8012dc4404 calendar-management/calendar-management-dialog: Replace hide() override with unmap()
`hide()` stopped working since we ported to AdwDialog. We certainly
don't want to override the `close()` virtual method from AdwDialog,
as page transitions begin while the dialog is closing. Instead,
we can override `unmap()`, which will do it at the very end.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/712>
2026-03-24 16:14:47 +00:00
mindonwarp 66fe1480ba Fix pipeline pages step
Adapt our CI to the changed outputs of the gnomeos-basic-ci
2026-03-23 23:19:51 +01: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 088d826c34 gui/importer: 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 b5d12237d5 gui/window: Remove "context" property
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
Hari Rana 170bed7755 gui/event-popover: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:02 +00:00
Hari Rana 037ffd3700 gui/event-widget: Replace "context" property with context getter method
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/702>
2026-03-23 19:30:02 +00:00