Commit Graph
100 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 5f86b88c3b views/month: Increase overflow popover min width
Makes it so that it's at least 1.25 the width of a day cell, and at
most 1.5 of that.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1166
2024-08-13 16:25:45 +00:00
Georges Basile Stavracas Neto 2b85b9c680 views/month: Rename a variable
Makes it clearer that this is the day cell.
2024-08-13 16:25:45 +00:00
Georges Basile Stavracas Neto 54657788d0 views/month: Use variables some more
Makes it easier to reason about the if conditions there.
2024-08-13 16:25:45 +00:00
Georges Basile Stavracas Neto 74eb734a12 Post-release version bump 2024-08-05 14:25:34 -03:00
Georges Basile Stavracas Neto 9a13378d7c 47.beta 2024-08-05 13:31:14 -03:00
Georges Basile Stavracas Neto 147acf8ff1 Post-release version bump 2024-07-25 11:10:06 -06:00
Georges Basile Stavracas Neto 5d0d764c09 47.alpha 2024-07-25 11:08:23 -06:00
Georges Basile Stavracas Neto 75a42c7d83 event-widget: Truncate the correct string
I shouldn't write code in a hurry
2024-07-09 17:40:01 -03:00
Georges Basile Stavracas Neto 06bf58d5fa event-widget: Don't modify translated strings 2024-07-09 17:35:48 -03:00
Georges Basile Stavracas Neto ae03627f0c utils: Port to AdwAlertDialog 2024-07-09 17:09:29 -03:00
Georges Basile Stavracas Neto 5a0aef6def tests: Disable a pair of tests
They're failing CI, I don't know why, and I'm afraid it's not really
related to GNOME Calendar itself. So just disable them for now.
2024-07-09 19:04:46 +00:00
Georges Basile Stavracas Neto b1a8720384 build: Properly sort tests alphabetically 2024-07-09 19:04:46 +00:00
Georges Basile Stavracas Neto de5f663373 style: Use CSS variables for event widget styling
This vastly simplifies the code!
2024-06-11 17:22:35 -03:00
Georges Basile Stavracas Neto 00919f6305 build: Depend on GTK4 >= 4.15.2
We'll start using CSS variables
2024-06-11 17:21:57 -03:00
Georges Basile Stavracas Neto eced2151aa calendar-management/edit: Use external-link-symbolic icon
As per mockups.
2024-05-02 14:54:43 -03:00
Georges Basile Stavracas Neto 9add430c30 calendar-management/edit: Always show calendar location
As per mockups.

See https://gitlab.gnome.org/Teams/Design/app-mockups/-/issues/102
2024-05-02 14:54:43 -03:00
Georges Basile Stavracas Neto 41390a246e build: Bump minimum libadwaita version to 1.6.alpha 2024-05-01 11:10:23 -03:00
Georges Basile Stavracas Neto 0228df3bc9 calendar-management/page: Remove unused vfuncs 2024-05-01 10:45:57 -03:00
Georges Basile Stavracas Neto 57ba8e2bf1 calendar-management: Rework page interface
Make GcalCalendarManagementPage require implementors to be
AdwNavigationPages
2024-05-01 10:44:16 -03:00
Georges Basile Stavracas Neto 7bbd144b56 Post-branching version bump 2024-04-21 19:51:05 -03:00
Georges Basile Stavracas Neto d8a2f70cd4 46.1 2024-04-21 19:45:31 -03:00
Georges Basile Stavracas Neto 36c05e7650 Post-release version bump 2024-03-18 12:13:30 -03:00
Georges Basile Stavracas Neto 64f2fb7b4d 46.0 2024-03-18 12:10:37 -03:00
Georges Basile Stavracas Neto ef91ca2856 Post-release version bump 2024-03-05 09:11:32 -03:00
Georges Basile Stavracas Neto 7191987bbc 46.rc 2024-03-05 08:59:28 -03:00
Georges Basile Stavracas Neto cbe89a9daa gui/event-editor: Rework calendars menu
Use a GtkListBox and bind from the model. Create rows from the model
items, and bind properties as needed.

The action target is set only when the calendar is writable because
setting an invalid action+target pair makes the row insensitive.

Remove the ancient menu icon hack.
2024-03-01 00:39:42 -03:00
Georges Basile Stavracas Neto 4795999092 Revert "event-editor: Revert "New Event" string back to "Unnamed Event""
This reverts commit 18da9c9f3b.
2024-02-25 14:32:07 -03:00
Georges Basile Stavracas Neto 18da9c9f3b event-editor: Revert "New Event" string back to "Unnamed Event" 2024-02-25 13:18:06 -03:00
Georges Basile Stavracas Neto 1257af8b89 Post-release version bump 2024-02-24 17:58:17 -03:00
Georges Basile Stavracas Neto e688acbd16 46.beta1 2024-02-24 17:55:35 -03:00
Georges Basile Stavracas Neto b82f0165c1 46.beta 2024-02-24 17:52:49 -03:00
Georges Basile Stavracas Neto ac8c7d6c4f gui/event-widget: Set weak ref on preview popover
So that when it's destroyed, the internal ref becomes NULL and we then
can safely call g_clear_pointer() on it.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1154
2024-02-18 17:25:42 -03:00
Georges Basile Stavracas Neto 1114e566d9 style: Update month border colors
Use a defined color for that, and make them more in line with the
Adwaita style.
2024-01-27 13:36:28 -03:00
Georges Basile Stavracas Neto 350cc6479f window: Use adw_dialog_present() everywhere 2024-01-27 12:53:22 -03:00
Georges Basile Stavracas Neto 26c71e18f6 event-editor: Use adw_dialog_close() to hide 2024-01-27 12:53:10 -03:00
Georges Basile Stavracas Neto df8526f471 event-editor: Cleanup some code
Remove the constructed() override, we can do that in init().
2024-01-27 12:40:23 -03:00
Georges Basile Stavracas Neto b52b27eace event-editor: Turn into an AdwDialog 2024-01-27 12:38:35 -03:00
Georges Basile Stavracas Neto 72d3caaf94 calendar-management: Make it an AdwDialog
So it can behave like a bottom sheet when collapsed.
2024-01-27 12:32:12 -03:00
Georges Basile Stavracas Neto b42f3d46d4 build: Depend on libadwaita 1.5.alpha 2024-01-27 12:32:12 -03:00
Georges Basile Stavracas Neto 1fbd5e0621 event-widget: Use GtkInscription for summary text
It's slightly more performant than a GtkLabel, which is demonstrably
the widget dominating the perf profile of the app.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1125
2023-12-17 22:32:18 +00:00
Georges Basile Stavracas Neto 1043917ecf event-editor/time-selector: Don't change dropdown on callback
The 'update_time' function shouldn't try to update the dropdown,
as it is actually invoked by the dropdown itself. This causes a
cyclic loop with signal emission.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1133
2023-12-13 19:41:41 -03:00
Georges Basile Stavracas Neto 3b9bf55dd5 event-editor/time-selector: Properly diff times
Helps: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1133
2023-12-13 19:41:41 -03:00
Georges Basile Stavracas Neto a944aafa00 gui/date-chooser: Use translated weekday abbreviations
It matches what GNOME Shell does, and makes the app more localizable.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1122
2023-11-17 13:47:48 -03:00
Georges Basile Stavracas Neto 82a6fa364e event-editor/date-selector: Use portal for week dates
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1022
2023-11-07 18:55:05 +00:00
Georges Basile Stavracas Neto bed4c9b62c Post-branching version bump 2023-10-23 10:15:46 -03:00
Georges Basile Stavracas Neto e91eccffde Post-release version bump 2023-10-23 10:15:14 -03:00
Georges Basile Stavracas Neto a40ddb658c 45.1 2023-10-23 10:12:32 -03:00
Georges Basile Stavracas Neto ab714d6f39 gui/event-popover: Show at the top
Seems slightly less worse than showing at the sides of the event.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1006
2023-10-18 15:51:32 -03:00
Georges Basile Stavracas Neto 4fb2cd87b0 event-popover: Rework spacings
This allows the scrolled window to have infinite borders
2023-10-18 15:47:46 -03:00
Georges Basile Stavracas Neto ddaf0e17a4 views/month: Create timed ranges
This allows proper range comparisons.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1106
2023-09-28 13:21:30 -03:00
Georges Basile Stavracas Neto 3ff57f71e4 views/month: Dispose overflow popover 2023-09-28 11:52:40 -03:00
Georges Basile Stavracas Neto e9ab7effad calendar-management/edit: Remove unnecessary binding
This is handled by the C code now.
2023-09-28 11:52:11 -03:00
Georges Basile Stavracas Neto 80a258c705 core/timeline: Use g_clear_handle_id
Saves us a few lines of code.
2023-09-28 11:33:30 -03:00
Georges Basile Stavracas Neto 96625ec595 core/calendar-monitor: Protect against NULL range 2023-09-28 11:33:02 -03:00
Georges Basile Stavracas Neto 27ee81b072 views/month: Only diff when current range exists
Right after bring created, the current date - and consequently
the range - is NULL. We shouldn't diff in this case.
2023-09-28 11:25:27 -03:00
Georges Basile Stavracas Neto 9a665a94c7 application: Add message when running as a service 2023-09-28 11:19:23 -03:00
Georges Basile Stavracas Neto 750c62d4f2 core/context: Use Settings portal for 24h setting
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1105
2023-09-23 02:54:09 -03:00
Georges Basile Stavracas Neto b26f33ea10 utils: Remove 24h utility function
The last user of this function is gone now.
2023-09-23 02:39:39 -03:00
Georges Basile Stavracas Neto 38108ffa7a event-widget: Fetch 24h setting from context
Instead of using the auxiliary function.
2023-09-23 02:39:07 -03:00
Georges Basile Stavracas Neto c8543aa822 views/week/header: Use en dash
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1107
2023-09-22 11:47:47 -03:00
Georges Basile Stavracas Neto a7f798a815 views/month: Use en dash
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1107
2023-09-22 11:45:47 -03:00
Georges Basile Stavracas Neto a25cd4fec7 Post-release version bump 2023-09-18 09:07:26 -03:00
Georges Basile Stavracas Neto 619d95c336 45.0 2023-09-18 09:04:06 -03:00
Georges Basile Stavracas Neto 77c908b394 event-widget: Properly unparent preview popover
GcalEventWidget currently doesn't track the preview popover, and
that can easily crash Calendar upon destruction.

Track that, and unparent on dispose.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/986
2023-09-14 12:09:11 -03:00
Georges Basile Stavracas Neto 8d79fe2ffd views/month: Demote assertion to regular check
We can have a NULL selection start, when starting the drag on the
header section.
2023-09-13 18:34:22 -03:00
Georges Basile Stavracas Neto 439b46af89 core/calendar-monitor: Remove g_autoptr from a variable
g_hash_table_lookup() is not transfer-full, so this g_autoptr + the
g_hash_table_remove() call end up double-unreffing the event, which
causes a crash.

Remove g_autoptr from the variable.
2023-09-13 17:51:34 -03:00
Georges Basile Stavracas Neto dd61f8ef6f views/month/row: Adjust for exclusive end date
Subtract a second from the end date so we can properly compare dates.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1098
2023-09-13 14:25:45 -03:00
Georges Basile Stavracas Neto 07c5b6280a core/calendar-monitor: Transfer event ownership properly
g_steal_pointer() is not enough, since the event is not declared
with g_autoptr.

Use g_object_ref().

Fixes: f7ee9279ad
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1097
2023-09-13 14:18:36 -03:00
Georges Basile Stavracas Neto a1810433ed core/timeline: Don't excise events from queue
When removing the last subscriber (something that can happen when
closing the main window), GcalTimeline clears the event queue. But
that leaves us in an inconsistent state, as we don't process any of
the potentially removed events.

Don't do that.

Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1087
2023-09-13 09:17:12 -03:00
Georges Basile Stavracas Neto f1767037ac views/month: Clear selection after showing overflow
This should prevent selection after clicking any overflow button.
2023-09-13 09:17:12 -03:00
Georges Basile Stavracas Neto ad34aa40fc views/month: Add header above week rows
Otherwise GTK4 will pick the rows, even when they're clipped.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1095
2023-09-09 20:14:39 -03:00
Georges Basile Stavracas Neto 9ace504ec4 Post-release version bump 2023-09-02 10:35:15 -03:00
Georges Basile Stavracas Neto 42df20b904 45.rc 2023-09-02 10:33:32 -03:00
Georges Basile Stavracas Neto 5503e5ca50 views/month: Handle reduced animations setting
Move rows slightly faster in that case.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1080
2023-09-02 10:28:39 -03:00
Georges Basile Stavracas Neto 20ad7f3676 views/month: Reset offset when animation is done 2023-09-02 10:26:41 -03:00
Georges Basile Stavracas Neto b0813fb605 month-view-row: Clamp last cell to [first cell, 6]
This is not ideal but it's what we've got for now.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1083
2023-09-02 10:26:41 -03:00
Georges Basile Stavracas Neto e3a350126b gui/month-cell: Accept drops from other months
We support that now fairly easily, let's enable it.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1077
2023-08-25 18:07:04 -03:00
Georges Basile Stavracas Neto f6c4fe108d core/calendar-monitor: Join view thread in dispose
Joining the calendar view thread in finalize is too late; dispose
is an earlier phase, and recoverable.

Do that.

Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1085
2023-08-25 17:18:16 -03:00
Georges Basile Stavracas Neto d8742df706 core/calendar-monitor: Remove unnecessary g_main_loop_quit() 2023-08-23 11:25:59 -03:00
Georges Basile Stavracas Neto ef1f154c7a core/shell-search-provider: Check for pending search
Now that GcalTimeline properly notifies about the complete state,
it uncovered an issue where GcalShellSearchProvider was dereferencing
a NULL pointer.

Protect against that.
2023-08-23 11:19:10 -03:00
Georges Basile Stavracas Neto b32353e0ed core/timeline: Update completed when adding or removing
We need to do that, so we can keep properly keep the complete
property up-to-date.
2023-08-23 11:19:10 -03:00
Georges Basile Stavracas Neto 0eb3ebb1fa core/timeline: Track complete state differently
Don't try and track the number of completed calendars; instead,
recalculate the completed state from scratch every time. This
is not a performance concern, as we're dealing with at most some
hundreds of calendars.
2023-08-23 11:19:10 -03:00
Georges Basile Stavracas Neto f16b0a1563 core/calendar-monitor: Assert more startup conditions
The calendar view thread can start spinning its own mainloop
before g_thread_new() returns, and in that case we have a NULL
thread.

Check that either the GThread is what we expect it to be, OR,
the thread is NULL and there are no messages in the queue.
2023-08-23 10:17:01 -03:00
Georges Basile Stavracas Neto 8403052d88 core/calendar-monitor: Initialize and clear mutex
An oversight from previous commits
2023-08-23 10:11:13 -03:00
Georges Basile Stavracas Neto 373da242d0 core/calendar: Ensure notify happens in main thread
The notify signals of ESourceSelectable seem to come from the
ESourceRegistry thread, and this has the potential to derail
the execution of Calendar. This might be true for all signals
we connect to.

Make sure to always emit notify signals on the main thread.
2023-08-23 09:33:01 -03:00
Georges Basile Stavracas Neto 42de771c24 core/calendar-monitor: Join thread before NULLifying it
This allows the threading macros to compare against the correct
value.
2023-08-23 09:33:01 -03:00
Georges Basile Stavracas Neto 6f45dcc26f core/calendar: Notify about the right property
When we change colors, notify about colors, not the name.
2023-08-22 17:28:13 -03:00
Georges Basile Stavracas Neto 9e341d87e4 core/monitor: Assert we're in the right thread
Right now everything works as expected, but this should catch cases
where we're running functions on the wrong thread.
2023-08-22 17:25:56 -03:00
Georges Basile Stavracas Neto df66e484a7 core: Add global threading utility
For now, we only store what's the main thread of the program.
2023-08-22 17:25:56 -03:00
Georges Basile Stavracas Neto 9e3a727eb7 Post-release version bump 2023-08-18 12:53:01 -03:00
Georges Basile Stavracas Neto a489b76a68 45.beta 2023-08-18 12:50:25 -03:00
Georges Basile Stavracas Neto 970ece7814 Bump release version to 45.beta
I missed the alpha release :/
2023-08-18 12:01:35 -03:00
Georges Basile Stavracas Neto da84b727b3 core/subscriber: Pass old event on update
Now that we keep precise control over GcalEvent instances, and
can use simple pointer comparisons everywhere, GcalMonthView
implemented its update function as a simple remove + add pair.

The problem is that we're not passing the old event instance,
so removals never actually happen, since the new instance is
not yet available to subscribers.

Pass old event in additio to the new one, and use it where it
makes sense.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1073
2023-08-18 10:41:41 -03:00
Georges Basile Stavracas Neto 60223adc5c core/calendar-monitor: Replace signals by callbacks
This should save quite some resources when manipulating events.
Signals are relatively expensive, and 2 pointer chases are
definitely better than a global lock + FFI stashing + signal
manipulation.
2023-08-18 10:41:18 -03:00
Georges Basile Stavracas Neto ec840fbab9 style: Improve selection visuals of month cells
Add specific CSS rules for the selected state, and make it a bit
more prominent.
2023-08-17 21:22:49 -03:00
Georges Basile Stavracas Neto bd989aae66 views/month: Implement event creation flow
Add a click gesture to detect when we have to start monitoring
cursor motion. Also add a motion event controller to react to
cursor motion, and enable and disable the this motion controller
on button press and release, respectively.

Selection is implemented as a pair of GDateTimes stored in the
month view struct. Whenever a selection begins, the start date
is set; the end date is only set when moving the cursor. It is
valid to have a start of the selection, and no end (meaning, a
1 day selection); it is, however, forbidden to have an end but
not a start.

Future improvements can be added later, such as scrolling when
moving the cursor close to the edges of the month view. We're
gonna have to live without that for now though.

Implement the GcalView.clear_marks vfunc now that we have a
selection to operate on.
2023-08-17 21:13:54 -03:00
Georges Basile Stavracas Neto ded56392ef views/month: Use inclusive week end to format title
Otherwise we end up with D+1 in the last date.
2023-08-17 19:41:55 -03:00
Georges Basile Stavracas Neto 0e4c4d5177 views/month: Use month and year rangers in titles 2023-08-17 18:46:52 -03:00
Georges Basile Stavracas Neto 632484b719 month-cell: Cleanup unused function
We handle weather internally now, no need to expose a function to
set that.
2023-08-17 18:28:30 -03:00
Georges Basile Stavracas Neto f344241a1a weather-service: Cleanup unused method 2023-08-17 18:28:30 -03:00