Commit Graph
100 Commits
Author SHA1 Message Date
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
Georges Basile Stavracas Neto 666679f123 year-view: Remove stray message 2019-08-25 17:57:48 +03:00
Georges Basile Stavracas Neto f81320bdd1 3.33.4 2019-07-16 21:30:31 -03:00
Georges Basile Stavracas Neto 75d24803ed tests: Temporarily disable discoverer test 2019-07-16 21:30:31 -03:00
Georges Basile Stavracas Neto 00e883ca63 year-view: Optimize sidebar update
Use the cached events to fill the sidebar, instead of
querying e-d-s every time we need an update.
2019-07-13 20:44:27 -03:00
Georges Basile Stavracas Neto 9aec1c097d new-calendar-page: Properly cleanup sources
We can't control a widget's property at destruction time.
Cleanup the sources directly.
2019-07-13 20:07:30 -03:00
Georges Basile Stavracas Neto b49486d0f9 calendar: Disconnect from the visible signals as well
Missed from the initial implementation.
2019-07-13 19:54:47 -03:00
Georges Basile Stavracas Neto 07acf540ae calendar: Disconnect from the correct object
The name changed signal comes from the ESource, not
the extension.
2019-07-13 19:54:17 -03:00
Georges Basile Stavracas Neto bb2a1321be calendar: Use gulong for signal handlers
They are unsigned longs, not unsigned ints.
2019-07-13 19:52:53 -03:00
Georges Basile Stavracas Neto 1d6dee8bbb manager: Avoid reentrancy
While deleting the calendar, we may run into a situation
where the GcalCalendar instance is destroyed before the
GcalManager:calendar-removed signal is emitted, causing
us to emit the signal with a destroyed object.

Prevent that by increasing the ref count before emiting
the signal.
2019-07-13 19:51:02 -03:00
Georges Basile Stavracas Neto f0060b7699 new-calendar-page: Use the new discoverer
The new discoverer is a vast improvement over the code
that use used to have here. Right now, we fail to use
Soup to detect the URL, and that's been reported multiple
times already.

Use the new web discoverer code, and adjust the UI to
match the new code. Namely, use a GtkPopover to show
the credentials widget.

Fixes #380
2019-07-13 16:04:31 -03:00
Georges Basile Stavracas Neto ff0644ad76 utils: Add auxiliary function to format display names
This will be used by the web source discoverer to format
any URLs that contain a file name in their path.
2019-07-13 16:04:31 -03:00
Georges Basile Stavracas Neto 371fdbc881 Introduce new source discoverer
The new source discoverer is a complete overhaul of
the current code. It is async-only, correctly threaded,
and easier to maintain.

A major new feature of this web source discoverer is
that it now pings the server to see if the URL feeds
us back with an iCalendar file.

Furthermore, it continues to use E-D-S WebDAV discovery
functions as a fallback mechanism.

Fixes #380
2019-07-13 16:04:30 -03:00
Georges Basile Stavracas Neto 2aa9bc1f61 tests: Add calendar server and tests
This will be used to write a propert test suite
for the new calendar discoverer code.
2019-07-13 16:04:30 -03:00
Georges Basile Stavracas Neto 54690e285a build: Improve test generation 2019-07-13 16:04:30 -03:00
Georges Basile Stavracas Neto 02a5eca945 weather-service: Reorganize file 2019-07-09 21:47:14 -03:00
Georges Basile Stavracas Neto 8a98c697c4 week-header: Trivial style cleanup 2019-07-09 21:24:58 -03:00
Georges Basile Stavracas Neto c62bb2eb95 flatpak: Reorder some sources
Small cosmetic change.
2019-07-09 21:24:58 -03:00
Georges Basile Stavracas Neto 0b4119367a month-view: Use last cell to calculate multday event end
Instead of assuming all cells have the same width, use the last
cell to figure out the width of the event with the traditional:

    event width = end.x2 - start.x1
    event width = (end.x1 + end.width) - start.x1

https://gitlab.gnome.org/GNOME/gnome-calendar/issues/413
2019-06-26 11:04:39 -03:00
Georges Basile Stavracas Neto 33fc75ca01 calendar-management-page: Pass GcalCalendar 2019-06-25 14:16:47 -03:00
Georges Basile Stavracas Neto 47bed7bc77 new-calendar-page: Restore opening Online Accounts panel from label 2019-06-25 12:51:14 -03:00
Georges Basile Stavracas Neto a95097f594 calendar-management-dialog: Remove unused signal handler 2019-06-25 12:50:48 -03:00
Georges Basile Stavracas Neto 4a7536328e new-calendar-page: Add more file filters 2019-06-25 11:42:11 -03:00
Georges Basile Stavracas Neto fcfa403902 new-calendar-page: Reenable file filter
We were blocked on a GtkBuilder issue [1].

[1] https://gitlab.gnome.org/GNOME/gtk/issues/1973
2019-06-25 11:39:06 -03:00
Georges Basile Stavracas Neto 0f28e3fa53 new-calendar-page: Implement new designs
This looks soooooo much better =)

https://gitlab.gnome.org/GNOME/gnome-calendar/issues/388
2019-06-24 21:33:00 -03:00
Georges Basile Stavracas Neto 7da3197186 calendars-page: Remove previously deleted calendar if any
It is possible to delete a calendar, and immediately delete another.
When that happens, both should be deleted.
2019-06-24 21:33:00 -03:00
Georges Basile Stavracas Neto 39ebc5457a calendars-page: Fix callback parameters 2019-06-24 21:33:00 -03:00
Georges Basile Stavracas Neto e53a7532f2 calendars-page: Use the passed calendar for deletion 2019-06-24 21:33:00 -03:00
Georges Basile Stavracas Neto 78680d9b5b search-engine: Fix wrong debug message 2019-06-24 21:32:59 -03:00
Georges Basile Stavracas Neto 10e10f6605 edit-calendar-page: Silence warning 2019-06-24 21:32:59 -03:00
Georges Basile Stavracas Neto 170347b016 calendar-management-dialog: Trivial style cleanup 2019-06-24 21:32:59 -03:00
Georges Basile Stavracas Neto efa29b19d5 calendars-page: Use switch to toggle visibility 2019-06-24 21:32:59 -03:00
Georges Basile Stavracas Neto c092445363 calendar-management: Shuffle code around and cleanup 2019-06-24 21:32:59 -03:00
Georges Basile Stavracas Neto f7df717e1b edit-calendar-page: Add back button
And remove the remaining code (and a few extras) from the
calendar management dialog.
2019-06-24 21:32:59 -03:00
Georges Basile Stavracas Neto a2d15697d9 log: Increase prefix width
GcalCalendarManagementDialog is too wide and breaks the log
layout, so increase the spacing to fit it.
2019-06-24 21:32:58 -03:00
Georges Basile Stavracas Neto 5e9f7bf01e new-calendar-page: Add "Cancel" and "Add" header buttons 2019-06-24 21:32:58 -03:00
Georges Basile Stavracas Neto 804479ebcc calendar-management-page: Add helper to retrieve titlebar 2019-06-24 21:32:58 -03:00
Georges Basile Stavracas Neto e49ed1ed67 calendar-management: Move code to GcalNewCalendarPage 2019-06-24 21:32:58 -03:00
Georges Basile Stavracas Neto 9cc07c5786 calendar-management: Introduce GcalEditCalendarPage
This is the second of the three original pages we used to have.
This one edits calendars.
2019-06-24 21:32:58 -03:00
Georges Basile Stavracas Neto db4613ae71 new-calendar-page: Add stub page 2019-06-24 21:32:58 -03:00
Georges Basile Stavracas Neto 375b9fc53c calendar-management-dialog: Response to page switch 2019-06-24 21:32:57 -03:00