Federico Mena Quintero
1cfb58e3c4
Fix leak of date_time_end
...
It's replaced by this line:
date_time_end = all_day ? g_date_time_add_days (date_time_end, -1) : date_time_end;
so we need to be able to free that.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
ba69d04465
Remove unused variable
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
2ca29785dc
Remove superfluous conditional
...
Now that all cases set the same times to the
{start,end}_date_time_chooser widgets, we don't need that condition anymore.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
1309bf4a82
gcal_schedule_section_set_event(): Don't change the timezones when setting up the widgets
...
I think this was being done so that:
- create a new all-day event
- open it in the event editor
- switch to time-slot
- time choosers now say "UTC"
doesn't happen. I think this can be handled more gracefully.
Evolution does not handle it very gracefully; when turning off
all-day in its event editor, it sets the times to $now.
The iOS calendar app is better. If you turn all-day off, it picks
$next_hour_based_on_now for the start time, and $next_hour_plus_one
for the end time. So if you turn off all-day and it is 18:24 right
now, it will set the start_time to 19:00 and the end_time to 20:00 ---
that is, it creates a one-hour event at the next start of the hour
from now.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:58 -03:00
Federico Mena Quintero
a0a817ee8a
Add scaffolding for a new test-internals binary
...
* There is a gcal_tests_add_internal() function...
* called from tests/test-internals.c...
* ... which doesn't add any tests yet, but we'll have some soon.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:57 -03:00
Federico Mena Quintero
cdc602bb1f
Start sketching gcal_schedule_values_set_start_date()
...
But we need a test first!
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
938419c1d4
Handle the time_format as part of GcalScheduleValues and WidgetState
...
This will let us write tests for changing the time format without a
context object.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
11dcab5ddf
Set the state of the schedule_type_toggle_group in update_widgets()
...
And now the redundancy in gcal_schedule_section_set_event() is gone.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
253b1d4f17
Start transitioning gcal_schedule_section_set_event() to use update_widgets()
...
For now this is redundant, as update_widgets() only sets the
visibility of the time selectors, while the call to
adw_toggle_group_set_active_name() effectively does the same.
But that redundancy will go away in the next step.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
640488883b
Introduce a WidgetState structure and compute it from GcalScheduleValues
...
You may think, yet more indirection! But behold:
1. We take events from the widgets ("schedule type (all-day) changed") and turn
them into actions (gcal_schedule_values_set_all_day()).
2. Those actions (e.g. that function) decide how to change the GcalScheduleValues.
3. We compute the desired state of the wigets, based on the new
values.
4. We set the state of the widgets based on that.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
2c476f6d02
New function to set the all_day flag on GcalScheduleValues
...
You may think that this is too much indirection. But wait! This is
the start of enabling tests. Hang in there.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
a4d891aadd
New function to copy a GcalScheduleValues
...
These structs are immutable. Any changes will be made on a copy.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:17 -03:00
Federico Mena Quintero
939b60d6b4
gcal_schedule_section_apply(): extract an _apply_to_event() helper function
...
With this, there's no direct mutation of the self->event anywhere; the
_apply() function just uses self->event as a target for mutation
because that's what the surrounding architecture expects.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
70173639e4
gcal-schedule-section.c: Use the stored values instead of pulling them from the event every time
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
f51186c298
gcal_schedule_section_apply(): use the stored values as a reference
...
Also, update the values from the updated event at the end.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
68126bcfac
gcal_schedule_section_set_event(): set the widgets from the extracted values, not from the event
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
d44e6847c7
GcalScheduleSection: store the values when an event is set
...
We don't use them yet; just hooking things up for now.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Federico Mena Quintero
f75785a34c
GcalScheduleValues: new struct to hold values from a GcalEvent for the schedule widges
...
We'll move GcalScheduleSection to operate without a backing GcalEvent,
so we can add tests.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/550 >
2025-08-27 19:59:16 -03:00
Hari Rana
d477ac2d72
event-editor/multi-choice: Focus widget if increment/decrement buttons are pressed
...
This also re-sets the state flags of the buttons, because otherwise
the increment/decrement buttons lose their hovered state after
the widget gains focus.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/616 >
2025-07-27 07:20:15 -04:00
Hari Rana
576c82b060
event-editor/multi-choice: Add focus ring around the entire widget
...
The current behavior of the widget makes it so keyboard focus
outlines the toggle button rather than the entire widget. In some
cases, the outline touches the edges of the label, which makes it
look cramped.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/616 >
2025-07-19 17:55:11 -04:00
Jean-François Fortin Tam
3e4ef6f9c7
event-editor: Hide Cancel & Delete when read-only
...
Read-only events show a "Done" button instead of the "Save" button.
The "Done" button does the same thing as "Cancel",
so the "Cancel" button is then redundant.
Likewise, it is impossible to delete events from read-only calendars,
as stated by the banner message in that dialog. In that case,
there's no reason to show a big "Delete" button that you can't click on.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1168
2025-07-11 23:27:08 -04:00
Hari Rana
7be43df099
event-editor/multi-choice: Always set focus-visible flag when focused
...
This is to ensure that the focus ring never disappears until
the toggle button is unfocused.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:24 -04:00
Hari Rana
b4853da249
event-editor/multi-choice: Add keyboard interaction
...
A significant portion of the behavior was guided by the
"Date Picker Spin Button Example" page in the
ARIA Authoring Practices Guide (APG):
https://www.w3.org/WAI/ARIA/apg/patterns/spinbutton/examples/datepicker-spinbuttons/
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:21 -04:00
Hari Rana
5628a5f311
event-editor/multi-choice: Make up/down buttons unfocusable
...
Spin buttons' increment/decrement buttons are standardly not made
to be accessible/focusable.
This copies the behavior from the GtkSpinButton widget.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1036
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:19 -04:00
Hari Rana
2a7a4e3b30
event-editor/multi-choice: Implement GtkAccessibleRange
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:17 -04:00
Hari Rana
70b9fde162
event-editor/multi-choice: Implement GtkAccessible
...
This is needed to have the toggle button communicate with the
screen reader to use the parent widget to retrieve accessible
information, rather than the toggle button itself.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:15 -04:00
Hari Rana
196f86b4f4
event-editor/multi-choice: Use g_assert in public methods
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:11 -04:00
Hari Rana
d1a8e072b2
event-editor/multi-choice: Add file name to header
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:09 -04:00
Hari Rana
5ca18c7a34
event-editor/multi-choice: Document public methods
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:51:07 -04:00
Hari Rana
a6015bd357
event-editor/multi-choice: Properly space out code
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:50:58 -04:00
Hari Rana
640308652b
event-editor/multi-choice: Comment code sections
...
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/603 >
2025-06-29 08:50:41 -04:00
Hari Rana
f40ed5b90c
reminders-section: Modernize popover
...
This makes the alarms popover look much closer to the AdwComboRow widget.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/399 >
2025-06-29 01:03:00 +00:00
Jamie Gravendeel
a509de8b1e
gui: Port to Blueprint
...
This was mostly done with `blueprint-compiler port`.
Since Blueprint doesn't know about custom templates, I had to manually change some values from strings to literals.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-calendar/-/merge_requests/567 >
2025-06-08 14:31:01 +02:00
Hari Rana
a09c02591e
event-editor/notes: Add height-request
...
The larger physical size of the text view helps convey that it's
a text box, and not a regular button or list box row.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1081
2025-04-21 13:32:49 -04:00
Hari Rana
445000b3cc
event-editor/notes: Add 'focused' CSS class when focused
...
This mimics what GtkEntryRow does, and allows for an always visible
focus ring when the notes text view has focus.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1081
2025-04-21 13:32:49 -04:00
Hari Rana
140dd3b145
event-editor/notes: Make it an AdwPreferencesRow
2025-04-21 13:32:45 -04:00
Titouan Real
303cba1622
gui: Move DateChooser to common
...
DateChooser is used both by the event editor and the main window.
Moving it to common for a better file organization.
2025-04-09 15:35:20 +00:00
Titouan Real
9f0274c5e6
event-editor: Make all-day/time-slot toggles the same width
2025-03-12 12:59:34 +00:00
Aleksandr Melman
ea73614ebd
Edit gcal-date-time-chooser.ui
2025-03-06 00:13:45 +00:00
Titouan Real
42f891ff42
gui/event-editor: Add time zone selection
...
Creates a chooser managing a GDateTime. The chooser allows the user
to change the date, the time and the timezone independently.
This replaces the precedent GcalTimeChooserRow widget, because it is
easier to manage the different interactions with the user in a single
widget.
Co-authored-by: Georges Basile Stavracas Neto
<georges.stavracas@gmail.com >
2025-01-31 19:37:26 -03:00
Titouan Real
c24b665125
event-editor: Mark tooltip as translatable
2025-01-13 13:32:55 +00:00
Titouan Real
f031a608d7
event-editor: Init time-format correctly
2024-12-16 23:24:36 +01:00
Titouan Real
5ed9f469b0
time-selector: Port GtkDropdown to AdwToggleGroup
2024-12-16 17:42:26 -03:00
Titouan Real
ca32033c60
event-editor: Use new rows for date and time
...
Make the event editor use GcalTimeChooserRows and GcalDateChooserRows to
prompt the user.
2024-12-16 17:41:39 -03:00
Titouan Real
a37b0551ea
event-editor: Create GcalDateChooserRow
...
Create a new GcalDateChooserRow widget from AdwEntryRow that parses the
entry into a date, or lets the user pick a date from a popover.
2024-12-16 16:12:54 -03:00
Titouan Real
569233f948
event-editor: Create GcalTimeChooserRow
...
Create a new GcalTimeChooserRow widget from AdwEntryRow that parses the
entry into a time, or lets the user pick a time from a popover.
[feaneron] Improved code style, reworked regex management.
2024-12-16 15:54:32 -03:00
Titouan Real
f7d6a3dc9b
Event Editor: cleanup
2024-11-29 11:26:35 +01:00
Georges Basile Stavracas Neto
f227055122
event-editor/dialog: Use action in the Save / Done button
2024-11-28 09:11:52 -03:00
Georges Basile Stavracas Neto
363dd585df
event-editor/dialog: Switch to GSimpleActionGroup
2024-11-28 09:11:51 -03:00
Titouan Real
69de2e6c3f
EventEditor: Add shortcuts
2024-11-19 18:57:08 +01:00