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
Georges Basile Stavracas Neto
e1616039d6
views/week: Special case discrete events
...
They behave slightly differently from smooth scroll events, and
they don't emit 'scroll-begin' nor 'scroll-end', so we have to
execute that the callbacks of these signals do inside the scroll
callback itself.
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
a55bf69dfb
views/week: Don't swap callback arguments
...
No function changes
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
189c809271
views/week: Store and restore zoom level
...
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/916
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
a9e4a5ae12
views/week: Connect to 'scroll-begin'
...
The scroll-begin callback is being connected to the 'scroll' signal.
This is an obvious oversight.
Connect to the right signal.
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
8d92808992
views/week: Operate on zoom levels
...
Instead of freely using heights and pixel sizes, operate on zoom
levels.
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
42ee33c783
gschema: Remove unused key
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
c2fcf0049e
gschema: Cosmetics
...
Cleanup indentation.
2023-03-16 12:26:28 +00:00
Georges Basile Stavracas Neto
b93aa0dd23
calendar-button: Stop spinning when not synchronizing
...
GtkSpinner queues relayouts even when the stack is not displaying
it, and this causes excessive redrawing. This button design looks
obsolete and should eventually be reworked, but for now, let's
just stop spinning when the spinner is invisible.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/971
2023-03-16 12:25:15 +00:00
Georges Basile Stavracas Neto
98dff07ee7
Post-release version bump
2023-03-16 09:23:45 -03:00
Georges Basile Stavracas Neto
8498973383
44.0
2023-03-16 09:19:56 -03:00
Georges Basile Stavracas Neto
267a801c42
Post-release version bump
2023-03-06 23:25:31 -03:00
Georges Basile Stavracas Neto
6b3676a53f
44.rc
2023-03-06 23:17:02 -03:00
Georges Basile Stavracas Neto
9ea2ceef1a
gui: Fix search from Shell overview
2023-03-05 11:53:50 -03:00
Georges Basile Stavracas Neto
d6a216d0fa
gui: Propagate context to GcalSearchButton
...
The people who introduced this code were not careful enough to
make sure the code they removed from GcalWindow was added back
in GcalToolbarEnd.
They also simply commented out some code instead of properly
reimplementing that.
I regret having trusted their code :(
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/880
2023-03-05 11:41:35 -03:00
Georges Basile Stavracas Neto
0322bcf54c
utils/source-discoverer: Test URI before discovery
...
This makes sure that we have a valid host set. This check is
copies from Soup's private SOUP_URI_IS_VALID() macro.
Add a test for this behavior.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/794
2023-03-05 11:24:49 -03:00
Georges Basile Stavracas Neto
075b91d279
tests: Set bug base
2023-03-05 11:24:49 -03:00
Georges Basile Stavracas Neto
fd7baeb787
utils/source-discoverer: Pass error
...
An oversight of the GUri port.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/794
2023-03-03 19:50:30 -03:00
Georges Basile Stavracas Neto
0e8332b07b
calendar-management/new: Switch to a GtkDialog
...
The implementation of the credentials popover has relied on a hack,
and sadly this hack doesn't work anymore.
It's too late for a redesign, so for now, just put it into a dialog
and show it on top of the calendar management dialog.
2023-03-03 19:50:30 -03:00
Georges Basile Stavracas Neto
4f9d7de032
calendar-management/new: Dispose template
2023-03-03 19:50:30 -03:00
Georges Basile Stavracas Neto
2b947e83a6
utils/source-discoverer: Use caldav-stub and caldav
...
As per suggestion from Milan, use caldav-stub as the parent name,
and caldav as the backend name.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/539
2023-03-03 19:50:30 -03:00
Georges Basile Stavracas Neto
98f6ccdb88
utils/source-discoverer: Set security method
...
Set the security method of the discovered source into the newly
created source. This should preserve the TLS security method in
these sources.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/40
2023-03-03 19:50:30 -03:00
Georges Basile Stavracas Neto
02c2119c39
utils/source-discoverer: Use g_strcmp0
...
Cosmetical change.
2023-03-03 19:50:30 -03:00
Georges Basile Stavracas Neto
69728fc814
views/agenda: Properly activate events
...
The code that activates event is just a sad FIXME in the file, and
the implementation is simple enough.
Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/897
2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto
e13eb17816
views/agenda: Cleanup unused Week View (!!!)
...
This is to show how much I suck at reviewing code. Look at this
massive gold nugget of garbage. Nobody on their serious mind would
have let that pass code review.
But I did. And now I deserve the punishment to deal with this.
Of course, the author didn't seem to have spared more than a fraction
of a second of their brain power to even consider what they were
doing here. But that's what code review is for - preventing garbage
like this from landing. And yet, here we are, removing an invisible
Week view from the sidebar.
2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto
bd9ff41a37
views/month-view: Use new signal helpers
2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto
bedf4e610d
views/week-grid: Use new signal helpers
2023-03-02 21:49:27 -03:00