Commit Graph
3183 Commits
Author SHA1 Message Date
Zoey Ahmed c3635967bc window: Go back/forth views using hardware buttons
Refactor `on_window_previous_date_activated_cb` and
`on_window_next_date_activated_cb` into separate methods for going to
the prev/next view, to be used in the callbacks for both the
forward/back buttons in the UI, and for the `Gtk.GestureClick` callbacks
that listens for the hardware buttons to be pressed.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1494
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/682>
2026-01-15 17:02:17 +00:00
Jean-François Fortin Tam e6a4c204ab gui/calendar-list: Ellipsize long headers labels
This prevents long calendar accounts' names from breaking the whole UI.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1531
2026-01-06 10:53:48 -05:00
Georges Basile Stavracas Neto fcc8845669 50.alpha 2026-01-05 20:02:30 -03:00
Jean-François Fortin Tam 719f60e289 appdata: Add keywords to improve discoverability
The description is not used for searching by some software center apps,
like GNOME Software.

Use keywords to make this app easier to find, as per this documentation:
https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-keywords
2025-12-31 14:49:03 -05:00
99aea45334 utils: Honor "week-start-day" gsetting on startup
This lets users override the "first day of the week" through a
GSetting, instead of being forced to use whatever is defined by
the locale, which often may not be correct for their culture,
language or location.

Currently this would apply only upon (re)starting the app.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/160
Co-authored-by: Georges Basile Stavracas Neto <georges.stavracas@gmail.com>
Co-authored-by: Titouan Real <titouan.real@gmail.com>
Co-authored-by: Adrien Plazas <aplazas@gnome.org>
2025-12-28 13:02:27 -05:00
Hari Rana 6d47fc1db8 views/month-view-row: Add offset when allocating event widgets
The SEPARATOR_OFFSET constant is for the box shadow property
defined in month cells' CSS. Since the box-shadow property does
not contribute to layout, so these offsets need to be set manually.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/676>
2025-12-28 17:04:32 +00:00
Hari Rana b0a5ff18d5 views/month-view-row: Compute exact width of event widgets
Currently, month cells are using `round()` to allocate the width,
whereas event widgets are using implicit double → int conversion,
which causes event widgets to be offset by a pixel, and thus
touches month cells' borders.

This new approach guarantees the exact width of the event widgets
by invoking `round()`.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/676>
2025-12-28 17:04:32 +00:00
Lukáš Tyrychtr 6c36048ae3 gcal-search-button: Announce number of search results to screen reader
We do not have anything like live regions yet, so put raw announce calls
in the right place.

Fixes #1470.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/675>
2025-12-21 21:52:58 -03:00
Adrien Plazas 9c1a7fecfc week-header: Fix end of week comparison
This fixes comparison of an event to the end of the week, so "end" can't
incorrectly be 7 anymore.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/835

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/672>
2025-12-03 20:50:15 +01:00
Hari Rana 82198e0b8f views/month-view: Smoothen discrete scrolling animation
The current animation duration paired with the ease-out-quad function
eases out imperceptibly fast (almost instantaneously), which makes the
overall animation feel laggy.

This patch addresses the aforementioned issue by increasing the
duration to 500ms. This then makes the ease-out-quad function ease
out relatively slowly, which is addressed by changing the function
to ease-out-quart - a function that eases out much quicker.

As a result, the animation should feel much more fluid and natural,
without giving the impression that it's 3 times slower.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1125
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:59:50 -05:00
Hari Rana 0a8bd0e994 views/month-view: Use ease-out-sine when snapping to row
It should feel a little bit more natural as it is eases out slower.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:59:33 -05:00
Hari Rana bf86699f84 views/month-view: Check for user's reduced motion setting
"gtk-interface-reduced-motion" is the modern alternative to
"gtk-enable-animations" but gtk-enable-animations will be
kept as as a fallback.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/670>
2025-11-29 08:47:20 -05:00
Hari Rana f4702dde1f views/month-view: Remove offset
Since we're now relying on box shadows to render separators,
which don't contribute to layout, we no longer need to set some
sort of offset to compensate the separators.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/669>
2025-11-27 11:52:31 +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
Jean-François Fortin Tam e470ecfc25 quick-add-popover: Use semantic typographic wrapping of time ranges
Atomically maintain time ranges on the same line when possible.
This is done using invisible non-breaking whitespace characters.

When selecting a range of time in the week view's timetable,
this ensures eye-pleasing, natural-looking typography.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1503

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/661>
2025-11-19 13:34:54 +00:00
Dimitrios Christidis 938195e6e2 edit-calendar: Remove unnecessary assignment
g_clear_pointer() sets it to NULL.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/662>
2025-11-19 13:04:54 +00: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
FineFindusandKrifa75 2d9afa938f gui/edit-calendar-page: allow exporting calendars
Adds an export option to the edit page, allowing users to export an
entire calendar at once.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/31

Co-authored-by: Krifa75 <yahiaoui.fakhri@gmail.com>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/615>
2025-11-18 15:27:44 +00:00
Georges Basile Stavracas Neto 67ca9ed20c utils: Watch calendars for read-only change
This should make the list model update itself whenever a calendar
changes between read-only and read-write.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/660>
2025-11-18 12:09:01 -03:00
Hari Rana 81990357fe quick-add-popover: Make rows behave like radio buttons
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:44:30 -03:00
Hari Rana c624c9b53b quick-add-popover: Rework population and update
This emits the `changed` signal, allowing us to filter out a wider
variety of calendars. It also allows us to remove the loops
that needed to re-run every time the user changed the default
calendar or closed the popover.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:44:29 -03:00
Hari Rana b83498cb1f quick-add-popover: Use calendar row widget
The calendar row widget also makes it easy for us to display
hidden calendars.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:42:39 -03:00
Hari Rana 7e63f5f7e2 calendar-row: Add APIs
Since the calendar row widget is becoming an expandable widget,
several APIs were added to the widget:
- `gcal_calendar_row_get_calendar`
- `gcal_calendar_row_add_suffix`
- `gcal_calendar_row_get_first_suffix_child`
- `gcal_calendar_row_add_header_class`
- `gcal_calendar_row_remove_header_class`

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:37:18 -03:00
Hari Rana f8c5751174 calendar-row: Rename calendar-combo-row-item to calendar-row
Currently, the quick add popover implements its own row
widget for each calendar, which duplicates tons of unnecessary
code. This commit streamlines the calendar-combo-row-item row
widget to make it reusable elsewhere.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:37:07 -03:00
Hari Rana 324bde2c72 quick-add-popover: Port to libadwaita widgets and merge stack pages
Both stack pages are merged into one page to avoid additional
cycling through pages.

`GtkListBoxRow`s were replaced by `AdwActionRow`s with
`GtkCheckBox`es as children.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/90,
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1003

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:33:23 -03:00
Hari Rana ac6cccee53 quick-add-popover: Port to GListModel
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/362>
2025-11-18 11:31:24 -03:00
Georges Basile Stavracas Neto 564ce76349 views/month: Don't manually set can-focus property
Now that we're meddling with child visibility, hidden rows shouldn't
be focusable. At least that's what Hari discovered :)

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/659>
2025-11-08 22:02:49 -03:00
Georges Basile Stavracas Neto 084a495f5c views/month: Hide invisible rows
Change the child-visible property of rows when allocating. It's safe
to do in allocation because it doesn't affect layout, just rendering.

Related:
https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/402

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/659>
2025-11-08 21:18:55 -03:00
Hari Rana 0c09e41796 gui/quick-add-popover: Specify const for strings using gettext
`gettext` returns a static string.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/656>
2025-10-31 09:40:44 -04:00
Hari Rana c3098bf23a gui/quick-add-popover: Automatically free strings
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/656>
2025-10-31 09:39:05 -04:00
Hari Rana eefea2f7f4 gui/quick-add-popover: Handle memory leaks
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/656>
2025-10-31 09:31:23 -04:00
Philipp Sauberzweig ef4c70fa4c month-cell: Add pill style to first day of the month.
Add a pill style to the label of the first day of the month to make it easy to identify. Adjust the border radius of the existing pill style for the current date to be the same. Apply the font-weight using the new style class.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/647>
2025-10-28 14:06:44 +00:00
Philipp Sauberzweig 6e97c05a14 views: Merge month name and date number into a single label.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/647>
2025-10-28 14:06:44 +00:00
Philipp Sauberzweig e3df308e23 src/theme: Remove accent color background from today month cell.
Use the accent color background exclusively for the selected style.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/653>
2025-10-24 12:41:34 +02:00
Trystan Mata d8e22b5646 event-editor: Fix template update when updating all events
Change how the template end date is determined by mainly relying on the
new template start date:
- If all day, end date is start date plus 1 day (midnight enforced)
- If time-based, end date is start date plus the time span of the event
  properties

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/635>
2025-10-21 14:17:33 +00:00
Trystan Mata e11a3be44c schedule-section: Skip updating recurrence limit if no repeat
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/634>
2025-10-21 14:12:21 +00:00
Trystan Mata 20274b0b94 editor-dialog: Fix time-slot timezones
Uses the local timezone if the event was originally all-day.

Also set the end time to 1:00 if start and end date are the same.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/641>
2025-10-21 14:08:04 +00:00
Alice Mikhaylenko 2a73bbe974 gcal-utils: Fix gtk gettext domain
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/651>
2025-10-19 16:56:23 +04:00
Philipp Sauberzweig a32df2b070 views/month-cell: Remove dimming of out-of-month cells
The infinite scrolling month view obsoletes the out-of-month
dimming, as the view is no longer fixed in a specific month, nor
does it make out-of-month cells insensitive.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1145
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/646>
2025-10-17 18:06:17 -04:00
Lukáš Tyrychtr 3a544b22fc week-view: Add tooltip to the all day events expander
This adds a tooltip to the all day events expander button,
indicating whether the expander will expand or collapse
upon activation.

Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1449

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/637>
2025-10-17 13:59:26 -04:00
Hari Rana 3a93a4004d views/month-popover: Use adw_lerp() function
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/650>
2025-10-17 17:08:42 +00:00
Jean-François Fortin Tam 3e31bd1641 Revert "event-editor/notes: Add height-request"
The widget already auto-adjusts its height depending on text contents.
Let it use as much or as little height it needs.
This avoids extra scrolling in some cases.

This reverts commit a09c02591e.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1455
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/636>
2025-10-17 17:04:00 +00:00
Daniel Rusek 651fb25ab6 metainfo: Change component type to "desktop-application"
The "desktop" component type is deprecated

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/639>
2025-10-17 16:56:41 +00:00
Philipp Sauberzweig fc90d259b2 gui/views: Fix event margins in week header
Margins are already applied to the event widget itself through CSS.
This commit removes unnecessary margins and row spacing to bring
it in line with the month view.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/649>
2025-10-17 12:27:03 -04:00
Jean-François Fortin Tam 28e8e07219 gcal-event-editor: Add mnemonic for "Delete Event"
This lets keyboard-centric power users delete events in 1 second.
It can be useful in rare situations when you need to delete many events.

Fixes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1313
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/628>
2025-10-10 13:27:46 +00:00
Philipp Sauberzweig 2368a9f29d gui: stop dimming the sidebar headings 2025-10-07 18:36:03 +00:00
Philipp Sauberzweig 4a3982848a css: Use larger fraction of event-bg-color for event widget background color.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/643>
2025-10-06 18:47:32 +00:00