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
Georges Basile Stavracas Neto
23e1544a25
edit-dialog: Simplify notes widgetry
...
Remove an intemediary GtkBox that is now not necessary anymore.
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
4a1c5b9cc6
edit-dialog: Split Reminders to its own section
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
ce47cfea86
time-selector: Make it a GtkBox directly
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
34eb3a2343
utils: Use GDate to compare dates
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
3896aac734
edit-dialog: Make date & time rows expandable
...
Add a human-readable label and move the widgets to the expandable
section.
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
948447d8bf
edit-dialog: Turn the All Day check a switch
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
d14175895a
date-selector: Reduce width
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
d5529f1782
edit-dialog: Move widgets to lisbox rows
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
bb310421c1
edit-dialog: Make it a HdyDialog subclass
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
646a002826
project: Add libhandy dependency
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
b772349c3f
Move UI files to src/
...
Keep it in sync with what To Do and Settings do.
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
d843885fc0
data: Remove unused menu.ui file
2019-12-02 16:41:56 -03:00
Georges Basile Stavracas Neto
15a76a636c
3.35.2
2019-11-25 11:30:44 -03:00
Georges Basile Stavracas Neto
58974cb7e2
manager: Only remove connected calendars
...
The "source-removed" signal can pass any kind of source,
including source collections that even have the calendar
extension, but are not connected.
2019-10-09 13:02:35 -03:00
Georges Basile Stavracas Neto
cafd17627c
year-view: Trivial code cleanup
2019-10-09 12:37:01 -03:00
Georges Basile Stavracas Neto
1c39e501f6
calendar: Always initialize color
2019-10-09 12:37:01 -03:00
Georges Basile Stavracas Neto
262cd40eec
manager: Instrument removing calendars
2019-10-09 12:37:01 -03:00
Georges Basile Stavracas Neto
1308e33f1d
manager: Always return if calendar creation fails
...
This is an embarrassing mistake: when an error is propagated,
we always need to return! The error matching should only be
used for deciding whether to warn or not.
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/470
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/264
2019-10-09 12:37:01 -03:00
Georges Basile Stavracas Neto
357ec18a0a
Fix GcalContext management
...
GObject automatically notifies when passing
properties as part of g_object_new(). This
happens after the instance is created, thus
after constructed().
By passing G_PARAM_EXPLICIT_NOTIFY, we avoid
this behavior. However, we are still notifying
PROP_CONTEXT in GcalWindow. Removing this other
notify fixes the crashes related to GcalContext.
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/417
2019-10-04 20:54:05 -03:00
Georges Basile Stavracas Neto
a0403b0b3e
search-model: Wait for results before returning
...
Dazzle is very sensitive to returning empty search results,
and ends up flickering when we pass a search model that is
not yet populated.
Wait for a few results, or for 150ms, before returning the
model.
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/468
2019-10-04 01:55:08 -03:00
Georges Basile Stavracas Neto
44092da60b
edit-dialog: Use GtkCalendar internally
...
Instead of tracking the ESource, which is an extra
complication on top of this messy code.
2019-10-04 00:58:41 -03:00
Georges Basile Stavracas Neto
970cc1fca5
application: Remove -d as short form of --debug
...
Both --debug and --date had their short form -d, causing
problems. Let's make -d stand for --date, since --debug
is more of a development tool.
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/456
2019-10-03 20:19:40 -03:00
Georges Basile Stavracas Neto
5d87a8459d
icons: Simplify icon management
2019-09-30 13:18:41 -03:00
Georges Basile Stavracas Neto
01da00b3fa
flatpak: Actually drop the suffix
...
I've been told they can be dropped with the nightly icon!
2019-09-30 13:14:29 -03:00
Georges Basile Stavracas Neto
1ba204540b
flatpak: Switch to (Nightly) suffix
2019-09-30 13:12:34 -03:00
Georges Basile Stavracas Neto
ec26156344
Revert "ci: Remove collon from job names"
...
We're actually not hitting that bug.
2019-09-30 12:53:21 -03:00
Georges Basile Stavracas Neto
bbbd89b17a
ci: Remove collon from job names
...
Looks like we're hitting https://gitlab.com/gitlab-com/support-forum/issues/2597
2019-09-30 12:50:36 -03:00
Georges Basile Stavracas Neto
86ce0b7c80
ci: Remove double deploy stages
2019-09-30 12:27:38 -03:00
Georges Basile Stavracas Neto
d91984ed54
ci: Actually deploy Flatpaks
2019-09-30 12:21:16 -03:00
Georges Basile Stavracas Neto
c3fb16bb1b
Reimplement Flatpak publishing
2019-09-30 12:19:06 -03:00
Georges Basile Stavracas Neto
151c47a8b3
Bump 3.35.0
2019-09-30 12:03:36 -03:00
Georges Basile Stavracas Neto
5e4bbe446f
utils: Pass GcalCalendar to ask_recurrence_modification_type()
...
The method ask_recurrence_modification_type() currently
receives an ESource, and tried to fetch the ECalClient
from the ESource by using g_object_get_data().
However, since we moved to GcalCalendar, we do not set
this data field in ESource.
Receive a GcalCalendar instead, and use the appropriate
function gcal_calendar_get_client() instead.
2019-09-14 21:38:53 -03:00
Georges Basile Stavracas Neto
9644c30eee
date-time-utils: Fix weekday calculation
...
GNOME Calendar needs to deal with two different
weekday ranges:
1. Sunday → 0 ... Saturday → 6
2. Monday → 1 ... Sunday → 7 (used by GDateTime)
When converting (2) into (1), the correct calculation
is `weekday % 7`.
However, gcal_date_time_get_start_of_week() was doing
`weekday - 1` instead.
Fix it and do the correct calculation instead.
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/451
2019-09-14 11:14:01 -03:00
Georges Basile Stavracas Neto
450aa5e158
log: Remove g_get_current_time
2019-09-14 10:46:14 -03:00
Georges Basile Stavracas Neto
e39bd95c87
log: Use g_autofree
2019-09-14 10:39:38 -03:00
Georges Basile Stavracas Neto
43f5de8a0c
main: Trivial style cleanup
2019-09-13 18:53:13 -03:00
Georges Basile Stavracas Neto
22596db1d1
window: Readd <Ctrl>n shortcut
...
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/383
2019-09-13 18:49:05 -03:00
Georges Basile Stavracas Neto
5b49c4fc46
3.34.0
2019-09-09 12:31:13 -03:00