Georges Basile Stavracas Neto
f1f9d83943
views/month: Implement get_children_by_uuid
...
Closes: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1057
2023-08-14 14:57:51 -03:00
Georges Basile Stavracas Neto
1fd984306f
views/month: Animate discrete scrolls
...
When scrolling with a scroll wheel, animate towards a target
row. If multiple scrolls happen before the animation completes,
change the target row of the animation.
2023-08-13 18:37:12 -03:00
Georges Basile Stavracas Neto
8f04f40272
views/month: Factor out row offsetting in a function
...
And use it in the pixel-based variant.
2023-08-13 18:37:12 -03:00
Georges Basile Stavracas Neto
12a9e8193f
views/month: Rename a function
...
We'll introduce a variant of this function that operates directly
on row offsets, instead of pixel values.
2023-08-13 18:37:12 -03:00
Georges Basile Stavracas Neto
da2b7328e0
views/month: Implement event updates
...
Just do a stupid remove + add, which is far from ideal but will
be enough for the time being.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
95cc40d8a8
window: Use non-deprecated function
...
gtk_widget_compute_point() is the hot new thing.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
77f355ed53
month-cell: Small style improvements
...
As suggested by Allan.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
176f8f28a8
views/month: Show overflow popover when requested
...
Basically, all that we used to do, but written in a different
way for the new month view.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
15032b6d05
month-view-row: Add 'show-overflow' signal
...
It just proxies the day cell's signal.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
57fa7b2d48
window: Compare week for month view too
...
The new month view operates on week rows, so it makes sense to
perform the same check than that of the week view.
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1063
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
d5a36d4ad2
view: Operate on ranges
...
This is the data struct we should be using everywhere now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
80efa6fd26
style: Improve day cell visuals
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
9b343db339
views/month: Improve date calculation for cell style
...
Use the center the view as the date with which the day cells
are styled. This should be enough to highlight the month with
most days visible onscreen.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
e7846a6b9c
views/month-view: Change visuals of out-of-month day cells
...
This still looks like garbage becase of the rudimentary way we
compute the current date, but it's a start.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
7e26bd5649
views/dazzling: Make it *the* month view
...
And move the old one to the attic. I'll keep the files around for
a while.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
7f7f55826c
month-view-row: Implement RTL support
...
This was remarkably easy.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
5bc8fffc71
views/dazzling: Add cached events to shuffled row
...
Cached events won't be readded by the backend, because they're
alread present in the view, so we have to manually add them to
the rows.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
ac3998f07d
month-cell: Add padding beneath day number
...
We need to breathe!
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
ddfd3ae498
month-view-row: Slant edges of multiday events
...
When the start or end of the event block doesn't match the event's
range, add slanted edges.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
56d9040030
month-cell: Set sensitivitiness of the button
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
b9d4405e69
views/week-header: Check for NULL child
...
I'm not sure if this is actually correct, but I'm too tired to
think the week header through, so let's just be slightly more
protective for now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
a743f6884e
month-cell: Start insensitive
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
030f370015
month-cell: Don't change inscription visibility
...
Let's just change the text and preserve the visibility of the
inscription.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
c2b07a5e0a
views/dazzling: Detect week changes, not months
...
The new month view operates on weeks
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
d2c606a221
views/dazzling: Actually use start date
...
Oopsie
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
83acb98f9e
views/dazzling: Make debug prints more useful
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
66cb36e855
views/dazzling-month-view: Implement differential date change
...
Should make the Today button work properly now.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
1c307de688
views/dazzling: Remove unused field
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
f9f9ccbb8c
month-view-row: Rewrite layout algorithm
...
Calculate event blocks upfront, in a way that is agnostic to
pixel sizes, and keep them alive as long the event is around.
Calculate which event blocks are visible at layout time, and
only set the child visibility of the event widgets, instead
of truly showing or hiding them. This makes size_allocate not
queue relayouts.
There are many opportunities for optimizations that we can
eventually land, but this seems to work decently so far.
RTL support is still missing.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
b775256ef8
views/month-cell: Use GtkInscription
...
It allows us to change text without causing a relayout.
This will be important later.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
a04b5da975
month-view-row: Remove unnecessary field
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
6382b1f383
month-view-row: Remove redundant check
...
All events of a row are, technically, in the same row!
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
cc51e88ed2
month-view-row: React to event visibility
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
3506100f5b
views/dazzling-month-view: Show event popovers
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
3a36f75877
views/dazzling-month-view: Tentatively support wheel scroll
...
Add a dedicated discrete scroll event controller, and ensure
each event controller handles the right types of events.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
3f0b1e57de
views/dazzling-month-view: Handle events
...
Most of the code is copied from GcalMonthView, so it sucks
slightly. But it seems to work reasonably well so far.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
7f57cfeb83
range: Add API to check if range contains datetime
...
This will be used by next commits to make some code
more legible.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
f8f2c10a8e
views/dazzling-month-view: Propagate context to rows
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
adaf735ada
views/month-view-row: Remove unused variables
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
d62bd1ae77
views/dazzling-month-view: Sketch timeline subscription
...
Right now it does nothing beyond reporting a range, but eventually
we'll populate this code.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
628d530ee5
window: Don't leave GcalDazzlingMonthView alone in the rain
...
It is now part of the family, and we can't just bully this view
like this anymore.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
f36fcbbbbd
views/dazzling-month-view: Notify active-date changes
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
72d4f45cd1
views/dazzling-month-view: Initialize on current date
...
Calling gcal_view_set_date() ensures that all week rows have
their ranges setup. This will be useful later.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
a527bbe5dc
views: Sketch out new month view
...
Nothing really works here, this is very WIP. It doesn't even show
events. Let's build from here.
2023-08-11 15:13:44 -03:00
Georges Basile Stavracas Neto
3dc669f2ec
calendar-monitor: Set the right field when removing events
2023-08-07 14:51:52 +00:00
Georges Basile Stavracas Neto
04522b7817
core/calendar: Remove connection timeout
...
As per discussions, this is not really what we want here. There
already is offline caching and post-connection sync, so we want
to show events as soon as possible.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/1027
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/569
2023-08-07 14:51:52 +00:00
Georges Basile Stavracas Neto
2b78d57459
calendar-monitor: Don't replace new events
...
If an event is already present in the cache, don't attempt
to insert it, which replaces the available event instance
with the new one.
2023-08-02 11:05:06 -03:00
Georges Basile Stavracas Neto
9c21dff77d
calendar-monitor: Improve lifecycle of updated events
...
Keep a ref alive while updating the old event, as it may be
destroyed during signal emission.
2023-08-02 11:05:00 -03:00
Georges Basile Stavracas Neto
745e022aa0
calendar-monitor: Don't remove events unnecessarily
...
Apparently I never properly implemented range comparison in
remove_events_outside_range(). Do so now.
This makes the infinite scrolling month view stop flickering
events when changing weeks.
2023-08-02 11:04:52 -03:00
Georges Basile Stavracas Neto
f7ee9279ad
calendar-monitor: Operate in batches
...
Instead of smashing the main thread's mainloop with
potentially hundreds or even thousands of idles that
add, remove, or update individual events, pass arrays
of events around.
2023-08-02 11:04:40 -03:00
Georges Basile Stavracas Neto
8b403f10ef
calendar-monitor: Use a GPtrArray for accumulated events
...
This will ease future changes.
2023-08-02 11:04:37 -03:00
Georges Basile Stavracas Neto
e47ee2dc17
views/week: Simplify variable with g_autoptr
2023-08-02 11:04:25 -03:00
Georges Basile Stavracas Neto
07dd7780ad
view: Cosmetics
2023-08-02 11:04:12 -03:00
Georges Basile Stavracas Neto
eb0c123b3a
window: Use gtk_css_provider_load_from_string
...
And bump the GTK4 dependency version
2023-08-02 11:03:58 -03:00
Georges Basile Stavracas Neto
a7f0af6e8a
event-editor: Shuffle some code
...
Declaring the entries struct inline saves us a few
lines of code.
2023-08-02 11:03:50 -03:00
Georges Basile Stavracas Neto
5ec16818e3
gschema: Bring back some strings
2023-08-02 11:03:40 -03:00
Georges Basile Stavracas Neto
750ab0aef8
calendar-management/calendars: Update title
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
cfad123629
calendar-management: Cleanup some more
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
400eb12572
calendar-management/dialog: Update default sizes
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
106655def2
calendar-management/calendars: Switch to toasts
...
It's time to move on from the old in-app notification style.
Switch to toasts.
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
5e5eb75be0
calendar-management/new-calendar: Move add button to dialog
...
Move the add button from the headerbar into the dialog, make it
a pill button, and update the button label with the number of
calendars that will be added.
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
a13b4ae4f6
calendar-management/pages: Subclass AdwBin
...
It's simpler.
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
bdda09abb8
calendar-management: Port to AdwNavigationView
...
The interfacing that GcalCalendarManagementDialog had is somewhat
similar to AdwNavigationView, with pages and signaling basically
matching the same semantics.
We can save some code by switching to AdwNavigationView then, as
the heavy-lifting of page management is done there now.
The headerbar of the dialog is no more; instead, each page has its
own headerbar that automatically gets a back button.
Page activation and deactivation works essentially the same, but
uses AdwNavigationView signals to manage that.
2023-06-22 00:20:21 +00:00
Georges Basile Stavracas Neto
bd042ba4e8
calendar-button: Workaround listbox style
...
Use the 'modelbutton' CSS name to mimic the style of model buttons.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/849
2023-05-23 19:14:42 -03:00
Georges Basile Stavracas Neto
3c672e0784
Move sync indicator into a separate widget
...
And move the new widget into the headerbar itself, instead of
the calendars button.
2023-05-23 19:01:19 -03:00
Georges Basile Stavracas Neto
b5c9d5b73f
window: Use AdwToolbarView to look prettier
...
We're fashion now.
2023-05-23 17:01:54 -03:00
Georges Basile Stavracas Neto
e08e2609ff
build: Depend on libadwaita 1.14.alpha
2023-05-23 15:57:32 -03:00
Georges Basile Stavracas Neto
db38ae0012
event-popover: Remove leftover debug code
2023-05-11 17:25:20 -03:00
Georges Basile Stavracas Neto
7b68931973
search/engine: Increase range to a whole year
...
This is still not the ideal solution, but now that we have widgetry
that can handle hundreds of thousands of events, no limitations to
the maximum number of events, and no crashes related on the search
engine, we can increase the search range to a broader value and
show more results.
Helps: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/624
2023-04-22 10:22:57 +00:00
Georges Basile Stavracas Neto
d7b2a7d88c
search/hit-event: Fix compare function
...
The current compare function puts events closer to today at the end
of the list, instead of the beginning. Revert that.
2023-04-22 10:22:57 +00:00
Georges Basile Stavracas Neto
8170ee0455
search: Remove artificial limits
...
Now that we use a widget that appropriately handles infinite items,
we don't need to limit anything anymore.
Related: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/624
2023-04-22 10:22:57 +00:00
Georges Basile Stavracas Neto
badb7b3d9c
search/model: Shuffle some code around
2023-04-22 10:22:57 +00:00
Georges Basile Stavracas Neto
afdec9e811
search/hit: Fix double unref
...
When I originally wrote the code, I expected to create a new icon
every time that function was called. That expectation changed, but
the code wasn't fully updated.
Use g_value_set_object() instead of g_value_take_object().
2023-04-22 10:22:57 +00:00
Georges Basile Stavracas Neto
6d4b7d7bcc
Post-branching version bump
2023-04-22 12:01:48 +02:00
Georges Basile Stavracas Neto
0d0ef588ad
44.1
2023-04-22 11:51:06 +02:00
Georges Basile Stavracas Neto
5d9d0dec7c
event-popover: Set better default focus widget
...
When mapped, move focus to either the first meeting row - if any - or
to the edit button.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/980
2023-03-17 23:54:46 -03:00
Georges Basile Stavracas Neto
6df87fb5c1
meeting-row: Implement grab_focus()
...
We'll use this in the next commit to properly grab focus of the
first meeting row, if any.
2023-03-17 23:54:01 -03:00
Georges Basile Stavracas Neto
5e1ffbcbf6
meeting-row: Remove leftover layout code
...
It's not necessary anymore.
2023-03-17 23:52:06 -03:00
Georges Basile Stavracas Neto
430e429551
event-popover: Set default widget
...
Helps: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/980
2023-03-17 23:46:41 -03:00
Georges Basile Stavracas Neto
1700902a63
meeting-row: Make row unfocusable
...
But child widgets are. That is, the Join button.
Helps: https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/980
2023-03-17 23:45:53 -03:00
Georges Basile Stavracas Neto
f04c4fb119
event-popover: Update to GtkUriLauncher
...
And bump the GTK dependency to 4.10
2023-03-16 17:28:17 -03:00
Georges Basile Stavracas Neto
f0d74ddba3
gschema: Remove accidental new strings
...
I didn't realize these were translated, and accidentally broke string
freeze. Let's temporarily remove these strings for now.
2023-03-16 11:28:53 -03:00
Georges Basile Stavracas Neto
ac526c5a22
calendar-management: Switch to GtkColorDialogButton
2023-03-16 12:30:15 +00:00
Georges Basile Stavracas Neto
4df39fa2ce
calendar-manager/new: Switch to GtkFileDialog
...
Cleans up a few more compiler warnings.
2023-03-16 12:30:15 +00:00
Georges Basile Stavracas Neto
501347f797
views/month: Cleanup math
...
The Month view is a complicated beast when it comes to allocating
events, but it's unnecessarily complicated since it tries to take
margins of events into accounts. With GTK4, that's not necessary
anymore, as GTK4 will independently and correctly apply margins
in widgets by itself, we don't have to do manually anymore.
Clean that up.
2023-03-16 12:30:15 +00:00
Georges Basile Stavracas Neto
21412ea3ba
search-button: Port results to GtkListView
...
Port the search results list to GtkListview. Use bindings to set
the title, icon, and subtitle of each row. Remove GcalSearchHitRow
as it's unused now.
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
6b57c459a3
search/hit-event: Compare calendars too
...
This allows not mixing up similar events from different calendars.
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
5dd98ea01c
search/model: Don't ignore results past limits
...
Instead, monitor where items are added relative to each other, and
proxy the 'items-changed' call to match the inner list.
Helps https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/989
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
a216706026
search/model: Use boolean result to find equal hits
...
It's a bit better than using -1 with an unsigned int :)
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
dbfc1c030a
search-button: Cleanup unused shortcut controller
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
89d9a96c6f
search-button: React to 'stop-search' signal
...
Quit the search entry state when the search entry emits stop-search,
usually that's when Escape is pressed when the search entry is
focused.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/830
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
b4f11ce052
search-button: Don't do anything when popover closes
...
It's, at best, annoying. Also stop resetting the entry text when
hiding suggestions, as it may loop with the text changed callback.
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
4b15e7647c
search-button: Use 'search-changed' signal
...
It uses a 150ms delay, which helps with reducing the number of
queries we do.
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
485a6cf5a7
search-button: Instrument some functions
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
bd97430bf3
search-button: Use GtkSearchEntry
...
Allows us to cleanup style a bit. Next commits will use search entry
functionality better.
2023-03-16 09:28:30 -03:00
Georges Basile Stavracas Neto
0a0128bf4c
core/calendar-monitor: Keep event alive while removing it
...
This might be the last reference to it, so keep it alive while
the signal is being emitted.
2023-03-16 12:27:47 +00:00
Georges Basile Stavracas Neto
daec07c9f6
search: Rework threading
...
Search uses GcalTimeline, an object that is meant to be single
threaded, in multple threads. That mostly worked okay because
GcalTimeline mostly relies on GcalCalendarMonitor, which is
heavily threaded. But, sometimes it failed.
Rework that to be single-threaded, and asynchronous.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/981
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/987
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/988
2023-03-16 12:27:47 +00:00
Georges Basile Stavracas Neto
f751803e07
views/week-header: Use minute granurality
...
We end up losing minutes information when running through this code
path. Technically it's fine, because we copy the minutes from the
event, but it's better nonetheless to operate on the level of
granularity that Calendar supports.
2023-03-16 12:27:09 +00:00
Georges Basile Stavracas Neto
8b9af9241e
views/week-header: Don't change all day state
...
I don't know what I had in mind when I wrote this, since 2017 self
did not bother adding a proper commit message, but 2023 me is pretty
convinced we never want to change the event length when dragging it
around.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/896
2023-03-16 12:27:09 +00:00
Georges Basile Stavracas Neto
0650c89ee2
views/week: Cleanup unused struct field
...
We don't use 'scroll_scale' anymore
2023-03-16 12:26:28 +00:00