Georges Basile Stavracas Neto
46aee00f65
event-editor-dialog: More schedule to GcalScheduleSection
2020-10-31 13:30:56 -03:00
Georges Basile Stavracas Neto
997f6bb671
event-editor-dialog: Move reminders to GcalRemindersSection
...
Move all widgetry, logic, and setup to GcalReminderSection.
2020-10-31 13:30:56 -03:00
Georges Basile Stavracas Neto
a839a0d860
Introduce GcalEventEditorSection
...
This is the interface to represent sections of the event editor
dialog.
2020-10-31 13:30:56 -03:00
Georges Basile Stavracas Neto
f9c466a1be
event-editor-dialog: Notify context when setting property
...
The 'context' property is set a explicit notify property, meaning we have
to manually notify it when setting it.
2020-10-31 13:30:56 -03:00
Georges Basile Stavracas Neto
b4029b0c23
edit-dialog: Rename to GcalEventEditorDialog
2020-10-31 13:30:56 -03:00
Georges Basile Stavracas Neto
c73dc191db
project: Move GcalEditDialog and friends to src/gui/event-editor/
2020-10-30 15:13:35 -03:00
Georges Basile Stavracas Neto
e67ebcfc50
project: Move all UI-related files to src/gui/
...
So we can have a nice separation.
2020-10-30 14:44:33 -03:00
Georges Basile Stavracas Neto
92863f578f
project: Split GResource files in subdirs
2020-10-30 14:17:40 -03:00
Georges Basile Stavracas Neto
87ce5e6d49
project: Move css-code.h to src/gui/
...
It is only used there.
2020-10-30 13:47:38 -03:00
Georges Basile Stavracas Neto
eb954505e4
project: Split meson files in subdirs
...
It allows us to better control what each subdir does, etc. This is
only the first step; we want to also split GResources, etc.
2020-10-30 13:45:50 -03:00
Georges Basile Stavracas Neto
28be1e858d
build: Use meson summary instead of hardocded string
2020-09-16 10:28:33 -03:00
Georges Basile Stavracas Neto
5d858f1905
40.alpha
2020-09-16 10:28:32 -03:00
Georges Basile Stavracas Neto
dc06fa92e2
3.38.0
2020-09-12 12:49:29 -03:00
Georges Basile Stavracas Neto
a202818c54
Update screenshots
2020-09-12 12:47:23 -03:00
Georges Basile Stavracas Neto
5f381b01f2
3.37.92
2020-09-05 13:51:27 -03:00
Georges Basile Stavracas Neto
158c65db4b
event: Trivial cleanup
...
We can avoid a lookup by simply checking if the alarm id
isn't NULL.
2020-06-17 21:24:36 -03:00
Georges Basile Stavracas Neto
4b6a559924
manager: Assert that cloning was successful
...
Cloning an ECalComponent can fail, and we need to be able to
catch these failures.
Assert that cloning was successful before procceeding with
the move.
2020-06-17 21:24:36 -03:00
Georges Basile Stavracas Neto
1bb00b8989
edit-dialog: Commit sequence after poking at component
...
GcalEditDialog code pre-dates GcalEvent and apply changes directly
to the underlying ECalComponent. However, it doesn't commit the
sequence after doing so, which opens the door for doom.
Commit the component sequence after changing the recurrence data.
2020-06-17 21:24:36 -03:00
Georges Basile Stavracas Neto
c1ec9e734b
event: Commit component more often
...
GcalEvent was mising many points where committing the component
is required. Commit the component more often.
https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/620
2020-06-17 21:24:36 -03:00
Georges Basile Stavracas Neto
53bc8d15a7
edit-dialog: Fake a cancel response when moving
...
When moving an event to another calendar, the GcalEvent instance
that is being held by GcalEditDialog is not valid one. On the other
hand, moving an event shouldn't trigger an update either.
For now, simply fake a GTK_RESPONSE_CANCEL. In the future, it'll
be better to move most of the GcalWindow code to GcalEventDialog
itself.
2020-06-17 21:24:36 -03:00
Georges Basile Stavracas Neto
d5ed8626ca
edit-dialog: Factor out update code to a separate function
...
To simplify readability of the response function, move some of
its code to an auxiliary function.
2020-06-17 21:24:36 -03:00
Georges Basile Stavracas Neto
4b1e303448
year-view: Clone and modify new event when dropping
...
Pretty much the same rationale and implementation of the previous
commit.
2020-06-15 13:32:02 -03:00
Georges Basile Stavracas Neto
ed7121c995
month-cell: Clone and modify new event when dropping
...
Instead of modifying the original event, create a new event
from it and modify this new event instead. After updating it
through gcal_manager_update_event(), GcalMonthView will remove
the old instance and add the new one anyway.
2020-06-15 13:26:51 -03:00
Georges Basile Stavracas Neto
cab7d5907f
month-cell: Instrument drop function
...
It's useful for debugging DnD.
2020-06-15 13:26:12 -03:00
Georges Basile Stavracas Neto
8243e0b8ed
edit-dialog: Edit cloned event
...
Edit a cloned event instead of the actual event, so that it
can preserve the original event's integrity. This allows for
a major edit dialog cleanup in the future.
2020-06-15 13:19:38 -03:00
Georges Basile Stavracas Neto
dbd81f401c
event: Add API to clone events
...
This will be useful for updating events without having
to keep track of the event states.
Add the new API, and also a unit test.
2020-06-15 13:07:48 -03:00
Georges Basile Stavracas Neto
d18441204f
tests: Trivial cleanup
2020-06-15 13:07:37 -03:00
Georges Basile Stavracas Neto
e5986a05c1
calendar-monitor: Use inclusive end date for ECalClientView
...
May prevent a few events from being transmitted.
2020-04-16 16:31:36 -03:00
Georges Basile Stavracas Neto
0c510d6709
month-view: Ignore events outside current range
...
The month view looks specially awful when switching between
dates, since it doesn't implicitly filter the ranges it's
displaying.
Ignore events outside the current month range, since they'll
be removed anyway by the timeline.
2020-04-16 16:16:49 -03:00
Georges Basile Stavracas Neto
d2da70fb28
range: Properly compare ranges
...
The behavior of gcal_range_compare(), and the 'position' argument
of gcal_range_calculate_overlap(), should be the same. However,
because we were comparing the end dates in the wrong order, they
didn't match.
Fix that by properly comparing the end of the ranges.
2020-04-16 16:15:34 -03:00
Georges Basile Stavracas Neto
a790f30176
timeline: Add sentinel events to the queue
...
Moving to have one subscriber per event made us face an interesting
problem: when removing an event, there may be no subscribers that
contain this event, in which case we never queue any REMOVE_EVENT
and the range tree isn't updated.
Add sentinel events (that update the range tree) and subscriber events
(that update subscribers, but not the range tree).
2020-04-16 16:10:33 -03:00
Georges Basile Stavracas Neto
494bd187d8
timeline: Cancel additions and removals
...
When we add an event to the queue, and later remove it, if the
event is still in the queue, we can just cancel both out and
save the timeline some processing time.
2020-04-16 15:11:53 -03:00
Georges Basile Stavracas Neto
61815ddccf
timeline: Trivial code cleanup
2020-04-16 13:47:09 -03:00
Georges Basile Stavracas Neto
381ae0046a
timeline: Protect against NULL arrays
2020-04-15 20:49:47 -03:00
Georges Basile Stavracas Neto
3073b6b6d8
timeline: Also queue remove events
2020-04-15 20:35:17 -03:00
Georges Basile Stavracas Neto
b5cdc0bd38
timeline: Only diff when ranges intersect
...
When the old and the new range of the subscribers don't
overlap entirely, we can't use the regular diff algorithm.
It fails quite spectacularly.
Do a full cleanup when ranges don't overlap.
2020-04-15 20:35:04 -03:00
Georges Basile Stavracas Neto
a1a4804315
timeline: Only modify event tree once
...
Now that we queue one event per subscriber, we need to
make sure to update the range tree only once.
2020-04-15 19:16:00 -03:00
Georges Basile Stavracas Neto
678d0acc00
timeline: Remove subscriber from range tree as well
...
update_range() does not remove any subscriber. They must be
removed manually.
2020-04-15 18:49:36 -03:00
Georges Basile Stavracas Neto
e9812b2f28
timeline: Don't try to use removed subscribers
...
Because the timeline is essentially asynchronous, it may
try and process events after their subscribers were removed.
Protect against that.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/576
2020-04-15 18:49:36 -03:00
Georges Basile Stavracas Neto
db668a0b90
timeline: Queue one event per subscriber
...
Right now, GcalTimeline queues one event per N subscribers. Queue
one event per subscriber instead.
2020-04-15 18:49:36 -03:00
Georges Basile Stavracas Neto
98e6ac28e7
event: Remove unused method
...
Comparing ranges is so easy now that we don't need this
helper anymore.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
fd32492053
timeline, calendar-monitor: Remove useless event range checks
...
GcalRange is now smart enough to compare correctly with other ranges.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
d4a6cd0e61
timeline: Process events in batches
...
A batch size of 5 doesn't seem to impact the mainloop
any more than a batch of size 1, but it reduces the
amount of time spinning the loop quite considerably.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
16c156914a
calendar-monitor: Use GcalRange
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
f3c3bbf5ab
event: Use GcalRange in public API
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
12fd607d56
utils: Make date comparison follow time comparison semantics
...
Right now, comparing dates with gcal_date_time_compare_date() gives
the exact opposite result of when comparing using g_date_time_compare().
As shown by this patch, this was a source of *many* bugs.
2020-04-14 19:08:06 +00:00
Georges Basile Stavracas Neto
bed8e10609
range-tree: Add print utility
...
Useful for debugging
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
3efbc2436c
range-tree: Use GcalRange
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
b97c4a27e0
range-tree: Cleanup header
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
923e3b7b71
project: Move range tree to core/
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
0935a67558
event: Add helper API to return a GcalRange
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
d9733aee27
event: Simplify some code
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
dbfebc85fa
Introduce GcalRange
...
GcalRange is a new structure that represents a time range. It is
always inclusive at the start, and exclusive at the end.
2020-04-14 19:08:05 +00:00
Georges Basile Stavracas Neto
aaab4af282
timeline: Respond well to subscriber removal
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
fa0173e174
window: Remove subscribers on destroy
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
e4debb9912
views: Free GDateTimes with g_date_time_unref()
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
93542e8853
timeline: Add already cached events to new subscribers
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
6586c8738c
calendars-page: Add already connected calendars on startup
...
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/479
2020-04-01 23:10:01 -03:00
Georges Basile Stavracas Neto
d606bafd15
calendar-monitor: Properly cleanup ECalComponents
...
Unfortunately, they do not have autoptr functions.
2020-04-01 21:08:21 -03:00
Georges Basile Stavracas Neto
19fc8138ba
week-header: Use g_date_time_compare()
...
It is incorrect to use the date-only comparison here. Use the appropriate
GDateTime API and fix a truckload of issues.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/546
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
b703f5746d
week-header: Rename a variable
...
"event_start" and "event_end" clearly communicate they're the
start and end datetimes of the event. I'm dumb, so I need the
code to tell me what's it about easily.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
a65a370317
time-zone-monitor: Clear GTimeZone with g_time_zone_unref
...
GTimeZone is not an object, and it cannot be cleared with g_clear_object().
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
c77e4ecfb5
year-view: Small code cleanup
...
Merge update_date() with gcal_year_view_set_date(), and
tidy up the code style a bit.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
cfa4b56a05
timeline: Implement processing changes in idle
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
f052cb6589
event-widget: Remove idle on destroy
...
Finalize may be too late for us, since a widget
may be destroyed long before it's finalized.
Remove the idle timer on destroy then.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
7a0b55aa61
timeline: Replace useless function by GcalEvent counterpart
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
1f6559de68
Remove ECalDataModel and ECalDataModelSubscriber
...
Drop the bomb!
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
c68ef4b9ab
manager: Remove more unused API
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
399b9d8d00
Simplify calendar views
...
We don't need a split subscription update step in GcalView
anymore, since subscribers communicate range directly to
the timeline now.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
84eeb58804
Move Shell search to GcalShellSearchProvider
...
Add a custom timeline to GcalShellSearchProvier and use
it to gather events.
Do a massive cleanup of unused APIs as well.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
06fbe2c2b9
month-view: Properly notify the "context" property
...
After adding the EXPLICIT_NOTIFY flag, we needed to make
GcalMonthView notify about it manually, otherwise the
context wouldn't propagate to GcalMonthPopover. We never
did that.
Fixes https://gitlab.gnome.org/GNOME/gnome-calendar/-/issues/553
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
02f21fddab
manager: Remove main ECalDataModel
...
It is not used by any views, nor by the search engine.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
9cb29b6dc5
manager: Update event gathering API
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
72952e42cb
timeline: Add API to gather events at a certain range
...
Will be used by the month popover.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
70bcc18bf9
manager: Remove unused API
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
c0016b266b
search: Port to GcalTimeline
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
2d46e673ca
timeline: Add filtering API
...
This will be used by the search.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
7cfc264c6d
views: Remove ECalDataModel code
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
9787f02e5b
views: Implement GcalTimelineSubscriber
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
6bcf1a3705
manager: Add GcalTimelineSubscribers to GcalTimeline
...
Instead of subscribing to the ECalDataModel's API, use the
new API.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
3692a0ccf6
Introduce the new calendar monitoring API
...
It is, as expected, heavily inspired by the ECalDataModel code,
except it uses GDateTime, is timezone aware, and can handle all
day events correctly.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
94413c26b1
event: Remove event cache
...
It's for the best. The cache was being more
problematic than it was worth it.
2020-04-01 21:06:51 -03:00
Georges Basile Stavracas Neto
92f331cd9f
range-tree: Add API to remove data
...
It'll be useful to remove entries without knowing their
range.
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
ec0c17f6fb
range-tree: Support destroy function
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
78248bec5e
calendar: Mark all properties as G_PARAM_EXPLICIT_NOTIFY
...
We explicitly notify them all, so mark them as such. Otherwise,
GLib notifies it when changing these properties through bindings
and such.
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
90597ca128
calendar: Only notify visibility when it changes
...
Otherwise we get weird double-notify issues from it.
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
f182813e49
event: Protect event cache with a lock
...
We'll be creating events from multiple threads soon,
so make sure the event cache is protected enough.
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
ae2a6b9d21
range-tree: Switch to use GDateTime
...
Using raw integers forces us to select a pre-defined
start and end ranges for the timeline. Since we want
to reuse this data structure on GcalTimeline, make it
a bit more useful.
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
047078d67d
build: Move foward typedefs to gcal-types.h
...
Standard practice; gcal-types.h is meant to only be
used by header files.
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
58ce571e93
build: Include src/ files
...
This will be required by tests in order to
find headers in src/
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
f3a9fcf8f1
contrib: Fix and simplify range checks
2020-04-01 21:06:50 -03:00
Georges Basile Stavracas Neto
9f0c20fe24
flatpak: Build EDS without libcanberra
2020-04-01 22:52:39 +00:00
Georges Basile Stavracas Neto
0cb9645076
Bump 3.37 version
2020-03-17 00:26:25 -03:00
Georges Basile Stavracas Neto
fb2830bbc2
3.36.0
2020-03-06 22:34:50 -03:00
Georges Basile Stavracas Neto
22c9570f16
3.35.92
2020-02-29 15:19:34 -03:00
Georges Basile Stavracas Neto
bca17d78bb
flatpak: Upgrade to libical 3.0.7
2020-02-04 18:45:52 -03:00
Georges Basile Stavracas Neto
2be799d78d
edit-dialog: Make the new alarm row have a label
...
With the introduction of the new event editor, Calendar
saw it receive sections of editable properties of the
events. One of these sections is the "Reminders" section,
that contains the reminders (also called alarms) of an
event.
However, this section's row to add a new alarm does not
match the proposed mockups for it. It currently has a
combo box that shows the popover with selectable reminder
times, instead of being a clickable row.
Make it a clickable listbox row, and show the alarms popover
when clicked.
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/502
2019-12-06 16:37:12 -03:00
Georges Basile Stavracas Neto
866cdabe9c
edit-dialog: Move the all day switch to the top of the list
...
As nitpicked by Sam.
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
87c1ffb9d5
Reimplement alarm support
...
This is a complete reimplementation of alarms in Calendar.
Rejoice.
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
e871486766
edit-dialog: Split recurrency widgets in different rows
2019-12-02 16:41:56 -03:00