39 Commits
Author SHA1 Message Date
mindonwarp c2964baaed views/week-header: Avoid setting date when dates share the same start-of-week
Instead of checking `g_date_time_get_week_of_year()`, which doesn't
care about "first day of week" settings, we use our
`gcal_date_time_get_start_of_week()` utility function. This function
determines the first day of the week the passed date belongs to,
constructs a new `GDateTime` object that represents the first day
of week as 'Y-M-D 00:00:00' in local timezone, all while taking
into account the "first day of week" Desktop setting.

Fixes: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/work_items/1212>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/868>
2026-10-04 23:00:35 +00:00
mindonwarp 592a63c782 views/week: Signal range changed on first weekday changed
Adds the missing call to the `GcalTimelineSubscriber::range-changed`
after redrawing the week view grids, fixing rearranged days appearing
empty.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/867>
2026-10-04 22:03:26 +00:00
mindonwarp 6f511b600a appdata: Add release info tag for 52~alpha
Since we now have fatal criticals enabled, we are prone to crashes
caused by our external dependencies emitting criticals. The newest case
is the Adwaita About dialog. The critical happened because `ministream`
couldn't find a release tag for 52.0

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/864>
2026-10-04 12:35:19 +02:00
mindonwarp 81fa0f29c4 core: Catch errors when trying to read from settings portal
`g_dbus_proxy_call_sync` will return NULL and set the recoverable
`error` in case of failure.

We didn't catch this previously so reading the variant from the return
value caused a CRITICAL because a user didn't have the `week-start-day`
setting (introduced in 50.alpha) and the returned `GVariant` was NULL.

Now, we check whether en error is set after calling
`g_dbus_proxy_call_sync` and propagate it to the calling method so it
can gracefully handle it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/862>
2026-10-03 13:26:49 +02:00
mindonwarp 0a72c05311 views/agenda: Fix critical in first weekday changed
The `gcal_agenda_view_first_weekday_changed` uses the same
`gtk_list_view_scroll_to` method that expects the scroll position to be
smaller than the number of items in the list model.

When the list model contains no items, the method reports a critical
which crashes the Calendar whith `fatal-criticals` enabled.

This is the same fix that Georges made in the
`gcal_agenda_view_set_date` method. We now check the number of items
before trying to scroll the list view to position zero.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/861>
2026-10-03 12:58:02 +02:00
mindonwarp 93c7bdcb6a views: Redraw the agenda view when week-start-day changes
Updates the visible rows after the selected date shifts within the week.
The agenda view displays all events starting from the selected day and
up until the last day of the same week.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 20:03:20 +02:00
mindonwarp a6a977e5ca views: Redraw the date chooser (mini-calendar) after changing week-start-day
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:22:00 +00:00
mindonwarp be55238eaa views: Redraw month view rows after changing week-start-day
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:22:00 +00:00
mindonwarp 1fd99f71b2 views: Redraw week view after changing week-start-day
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:22:00 +00:00
mindonwarp fc5cf5229c gui: Extend the GcalView interface with a method to redraw the weekday layout
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:22:00 +00:00
mindonwarp 107d4a067e gui: Use the new GcalContext API to get week start day once
This gets the globally set start-of-week setting on application startup.
Making the views redraw themselves on setting change while running will
be a later step.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:22:00 +00:00
mindonwarp acd8fbaf69 utils: Use ISO weekday numbering for 'get_first_weekday' function
Change the 'get_first_weekday' function to number the weekdays
Monday(1)-Sunday(7) like ISO does. Change the function name to reflect
that. Add tests for different locales, although the tests depend on
system-installed locales.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:22:00 +00:00
mindonwarp a0a6ae2a2c core/utils: Find the actual 'default' locale start of week day
Use the gcal-utils to find the actual day in case the desktop setting
for start of week is set to 'default'. After this commit, all usages of
that function have to be changed to use the GcalContext instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:21:59 +00:00
mindonwarp 059d72499f core: Get week start day from GcalContext
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:21:59 +00:00
mindonwarp c874bde622 refactor: Reduce code duplication in GcalContext
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:21:58 +00:00
mindonwarp 6e1330430b core: Get week start day from settings portal
Uses the already available settings portal in GcalContext to fetch and
track changes in global "week start day" desktop setting. Will use this
later to redraw views.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:21:58 +00:00
mindonwarp c0a74ed76f utils: Align GcalWeekDay enum with ISO 8601
Start the enum from Monday-Sunday (1-7). Adapt code that references the
`is_workday()` utility method, which in turn uses the GcalWeekDay enum
to combine pairs of days by bitwise or-ing.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:21:57 +00:00
mindonwarp 2ef27531f4 chore: Set gsettings-desktop-schemas dep to 50.alpha
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/822>
2026-09-26 17:21:57 +00:00
Alen b4f4d6b588 Update Bosnian translation 2026-09-18 18:24:53 +00:00
mindonwarp 97f5e3c0c1 po: Add missing source files to POTFILES.in
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/833>
2026-09-15 18:46:00 +02:00
Alen 94ecf902e4 Update Bosnian translation 2026-09-15 16:24:15 +00:00
Alen 45903c2125 Update Bosnian translation 2026-09-14 19:52:27 +00:00
Alen 9cf3a57447 Update Bosnian translation 2026-09-14 18:41:38 +00:00
Alen be7ee6d4c6 Update Bosnian translation 2026-09-05 08:36:14 +00:00
mindonwarp 7baed29551 event-editor: Remove dead code
Looks like the gcal-time-chooser-row.blp was resurrected from a
forgotten .ui file with "blueprint-compiler port". The .ui and .h were
not removed with !516

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/775>
2026-06-07 09:23:34 +02: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
mindonwarp 5a6a49cb3c Exclude test code from coverage in CI build
Use the new grcov-c-options from gnomeos-basic-ci to exclude the tests/
subdir from coverage calculations.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/732>
2026-03-23 19:16:14 +00: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 d4a540b5f2 event-editor: Improve l10n for GcalOrganizerRow subtitle summary
Use formatted gettext and provide value placeholders for number of
attendees in the subtitle summary text.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/687>
2026-01-29 01:25:49 +00:00
mindonwarp f8a9ea1973 event-editor: Add a custom widget for the event organizer row
Move the AdwActionRow for the event organizer into its own widget. In
preparation for further widget customization.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:55 +00:00
mindonwarp 79a37917c7 event-editor: Reuse attendees list model in subviews
Store a list model of attendees inside the event editor dialog and use
this model when displaying the details page. The attendees section (like
other sections) gets injected with the event and gets another copy of
the attendees from the event. Both the section and the details page can
now avoid resetting themselves when the underlying data (event) doesn't
change. Note: the details page uses a ListBox for the sake of the UI
style, which can underperform with a lot of attendees (building the
visual tree can be laggy).

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:55 +00:00
mindonwarp e7d10964e8 event-editor: Extract attendee summary row into a separate widget
Make the summary row reusable and filterable based on the attendee type.
This gives us the possibility to have separate summaries for
people/groups and resources/rooms.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:55 +00:00
mindonwarp bf31a02a80 event-editor: Add "show-attendees-detail-page" action
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:54 +00:00
mindonwarp f37cd9e7ad event-editor: Add filter by attendee type for details page
Pre-filter attendees based on type before filtering by response.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:54 +00:00
mindonwarp 4fb5c1ebb3 event-editor: Pass only attendees to the details page instead of event
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:53 +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 ba3ca061ce event-editor: Add attendees section and details page
UX/UI designed by Philipp Sauberzweig (@PhilippSauberz).

The event editor dialog is now a NavigationView and the participants
details open in a separate page. Group attendees/participants in
AdwPreferencesGroups and bind groups'
ListBox widgets to backing filter models. These are just "views" into a
single GListStore containing all the event attendees.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/671>
2026-01-21 19:37:52 +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