Commit Graph
100 Commits
Author SHA1 Message Date
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
Georges Basile Stavracas Neto c80c06c86e views/week-view: Use new signal helpers 2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto 1359465c62 views/week-header: Use new signal helpers 2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto cdb80cfd3a views/view: Cosmetics 2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto 5d5709122f views/view: Add private signal helpers
They'll be useful to stop hijacking view signals.
2023-03-02 21:49:27 -03:00
Georges Basile Stavracas Neto 5a028471e9 views/week-header: Cosmetics 2023-03-02 21:25:02 -03:00
Georges Basile Stavracas Neto a77f6e39e4 views/view: Store signal id
This will be used by next commits
2023-03-02 21:14:02 -03:00
Georges Basile Stavracas Neto f0c8d7bd81 Post-release version bump 2023-02-14 22:30:54 -03:00
Georges Basile Stavracas Neto 9393f186b5 44.beta 2023-02-14 22:28:27 -03:00
Georges Basile Stavracas Neto 40fa82deab event-editor/dialog: Check if calendars changed too
In addition to checking if any event fields changed, check if the
caledar changed too.

Closes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/924
2023-02-06 22:48:40 +00:00
Georges Basile Stavracas Neto 40f3bee3d6 Post-branching version bump 2022-11-21 08:46:25 -03:00
Georges Basile Stavracas Neto 80dd2df7c3 utils: Remove obsolete comment 2022-11-21 08:45:09 -03:00
Georges Basile Stavracas Neto fc11c26e4d Post-release version bump 2022-10-17 23:43:10 -03:00
Georges Basile Stavracas Neto 54f1ada6be 43.1 2022-10-17 23:40:52 -03:00
Georges Basile Stavracas Neto 1fee8ff144 core/recurrence: Port to gatomicrefcount 2022-10-17 23:37:13 -03:00
Georges Basile Stavracas Neto e3c7a1d777 core/manager: Remove old hack around recurrences
We handle it all before reaching GcalManager now.
2022-10-17 23:37:13 -03:00