Commit Graph
100 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 68c2b7d3ac project: remove GcalSubscriberView
The subscriber view was an unecessary layer and only
added more complication than it actually helped.

This commit merges GcalSubscriberView and GcalMonthView
into a single class.
2017-09-07 16:07:04 -03:00
Georges Basile Stavracas Neto 6d19e30973 project: libgcal library 2017-09-07 16:06:21 -03:00
Georges Basile Stavracas Neto 7c587e896e edit-dialog: reduce header circle icon 2017-09-07 15:01:50 -03:00
Georges Basile Stavracas Neto 8927e10ae0 edit-dialog: wrap in a scrolled window
As we're adding more and more widgets in the Edit dialog,
it is now growing too tall to fit normal screens. Thus, wrap
it in a scrolled window, and let the content height cover
75% of the main window at most.
2017-09-07 14:58:14 -03:00
Georges Basile Stavracas Neto a0e64ca3c8 edit-dialog: cleanup ui file 2017-09-07 14:38:46 -03:00
Georges Basile Stavracas Neto e68dc3aebf project: move GcalView to views/
It makes sense to put the interface together with
the other classes.
2017-09-07 14:37:37 -03:00
Georges Basile Stavracas Neto e60c8593dd window: propagate manager using properties 2017-09-07 14:35:44 -03:00
Georges Basile Stavracas Neto 36a39e6c5c window: simplify constructor
We don't need to pass information that can easily be
retrieved by the GSettings instance from GcalManager.
2017-09-07 13:21:09 -03:00
Georges Basile Stavracas Neto a0b6bdb04a application: move GSettings object to GcalManager
The first outcome of the test suite. This separation does
not make much sense now, and GcalManager is basically a
holder for all data types.

This commit moves the GSettings to the GcalManager instance
of the application. Of course, in the future, the plan is to
split GcalManager nicely.
2017-09-07 12:52:49 -03:00
Georges Basile Stavracas Neto 1d29fd4944 project: add some more tasks 2017-09-07 12:38:49 -03:00
Georges Basile Stavracas Neto c7845d1878 tests: add initial test suite 2017-09-07 12:37:46 -03:00
Georges Basile Stavracas Neto 98d8dbc39a project: update configure and meson requirement 2017-09-07 12:37:21 -03:00
Georges Basile Stavracas Neto 110c6be7c8 application: style fixes 2017-09-07 12:08:11 -03:00
Georges Basile Stavracas Neto 647e243bd5 project: don't compile source files twice
We can just link with the private library, and use the
main file to make it an executable. This drops the compile
time by 43% here.
2017-09-07 12:07:22 -03:00
Georges Basile Stavracas Neto 9c6c8770ec project: improve configure output 2017-09-07 11:43:37 -03:00
Georges Basile Stavracas Neto c7f7506d52 project: move evolution files to contrib/
It's better for the project organization if we nicely
organize external projects' files in contrib/, and our
own files in src/.
2017-09-07 11:41:05 -03:00
Georges Basile Stavracas Neto ebcf3f38df shell-search-provider: remove private field
This is a private class, and doesn't need private fields.
2017-09-07 02:37:39 -03:00
Georges Basile Stavracas Neto edc1d63f26 project: more meson improvements 2017-09-07 02:24:09 -03:00
Georges Basile Stavracas Neto de780276f9 manager: user the new code style 2017-09-07 02:23:56 -03:00
Georges Basile Stavracas Neto 00b9c1c7a7 project: style improvements in meson files 2017-09-07 02:15:37 -03:00
Georges Basile Stavracas Neto 941f3ee77d event: cache events
This speeds up Calendar a little bit, and more importantly,
allows me to sleep well at night now.
2017-09-07 02:09:53 -03:00
Georges Basile Stavracas Neto 2f52962f01 utils: remove debug spew 2017-09-07 01:52:21 -03:00
Georges Basile Stavracas Neto c43d74d16a project: update TODO.md 2017-09-07 00:04:27 -03:00
Georges Basile Stavracas Neto 53a8278953 views: correctly hide events according to the mod type
When deleting events with recurrence, we want to hide the event
widgets according to the modification type. So that selecting
e.g. subsequent in the modification type dialog hides the event,
and the subsequent ones, truly reflecting the operation that will
happen.

Currently, however, the views don't do that, and only hide the
event that was asked to be deleted.

Fix that by passing the object modification type, and adapting the
views to take that into account.
2017-09-07 00:02:40 -03:00
Georges Basile Stavracas Neto 1a496eea17 subscriber-view: update comments 2017-09-07 00:02:40 -03:00
Georges Basile Stavracas Neto 3b6b536663 recurrence: add GcalRecurrenceModType
Instead of reusing the ECalObjModType and mixing the
prefixes all around, do this small cleanup and add a
gcal-prefixed enum.
2017-09-07 00:02:40 -03:00
Georges Basile Stavracas Neto edce0ab076 recurrence: use refcount instead of copy/free 2017-09-06 22:15:13 -03:00
Georges Basile Stavracas Neto 0cb6f20aea view: update style 2017-09-06 21:53:17 -03:00
Georges Basile Stavracas Neto 8cbb5c1a4d project: update TODO, README and add CONTRIBUTING
Let's make the lives of newcomers easier :)
2017-09-06 21:49:00 -03:00
Georges Basile Stavracas Neto 6004123ba2 edit-dialog: fix time widgets sensitive when all day 2017-08-24 07:16:15 +09:00
Georges Basile Stavracas Neto 3eec69c559 edit-dialog: update style
Calendar matured its code style over time and
edit dialog kept the old style.
2017-08-24 07:07:36 +09:00
Georges Basile Stavracas Neto 316aeb9c67 quick-add-popover: properly place translator comment 2017-08-22 21:21:19 -03:00
Georges Basile Stavracas Neto 13d6f85d1f quick-add-popover: put day placeholder in the translatable string
As fairly pointed out, we should never split sentences [1].

[1] https://wiki.gnome.org/TranslationProject/DevGuidelines/Never%20split%20sentences

https://bugzilla.gnome.org/show_bug.cgi?id=786022
2017-08-22 20:51:16 -03:00
Georges Basile Stavracas Neto 282fb5fc33 month-view: don't draw dnd highlight on empty cells
https://bugzilla.gnome.org/show_bug.cgi?id=786102
2017-08-14 23:42:49 -03:00
Georges Basile Stavracas Neto 2a67a3d935 project: update .gitignore 2017-08-14 23:32:48 -03:00
Georges Basile Stavracas Neto 247e786ff0 project: update HACKING and TODO 2017-08-14 23:32:15 -03:00
Georges Basile Stavracas Neto dab25a0465 Bump 3.25.90 release 2017-08-11 14:11:55 -03:00
Georges Basile Stavracas Neto f9cb8823a9 build: generate 'dist' and 'distcheck' targets 2017-08-11 14:09:25 -03:00
Georges Basile Stavracas Neto d11ed85a7f month-view: grey out invalid days
It should be very clear that days outside the current
month are actually not valid. The current drawing
algorithm does not differentiate that, thought, and
draws everything at the same color.

Fix that by greying out the days outside the current
month.

https://bugzilla.gnome.org/show_bug.cgi?id=763771
2017-07-30 16:03:39 +01:00
Georges Basile Stavracas Neto 72a3bb4168 quick-add-popover, event-widget: add translator comments
https://bugzilla.gnome.org/show_bug.cgi?id=784645
2017-07-10 22:57:00 -03:00
Georges Basile Stavracas Neto 60067433c3 Bump 3.25.3 release 2017-06-19 17:11:30 -03:00
Georges Basile Stavracas Neto 3f9731bf89 manager: fix style 2017-06-10 08:30:27 -03:00
Georges Basile Stavracas Neto d294ea46a5 week-header: fix drawing stray lines when managing events 2017-05-24 17:27:07 -03:00
Georges Basile Stavracas Neto 1ef8fbcb34 edit-dialog: unconditionally update event dialog
When setting an event, we might modify the event in such a way that
the edit dialog can be broken if it doesn't update.

Fix that by unconditionally updating the event dialog when setting
an event.
2017-05-22 22:55:10 -03:00
Georges Basile Stavracas Neto a647033847 project: remove unused variables 2017-05-22 21:57:24 -03:00
Georges Basile Stavracas Neto 4e262f6d5d event: remove unused code 2017-05-17 14:47:03 -03:00
Georges Basile Stavracas Neto f2ce665240 flatpak: allow communicating with org.gnome.ControlCenter 2017-05-17 09:05:05 -03:00
Georges Basile Stavracas Neto 05af332937 source-dialog: use DBus to spawn Control Center
In a Flatpak'd world, we cannot rely on the fact that
gnome-control-center binary will be installed at the
app's sandbox. But since it's a core app, we can rely
on the fact that it's available outside the sandbox.

To make it work, use DBus rather than raw spawn to
open control center.
2017-05-17 09:03:24 -03:00
Georges Basile Stavracas Neto dde6b5bf05 week-view: improve scroll timeout logic
Instead of keeping an active timeout source spamming the
console, just connect to the right signal and wait for the
week view to be visible again.
2017-05-16 17:48:25 -03:00
Georges Basile Stavracas Neto f25a7b0dd8 application: only override log handler with --debug 2017-05-16 15:01:11 -03:00
Georges Basile Stavracas Neto dc72ff4924 log: ignore GdkPixbuf messages 2017-05-16 14:57:21 -03:00
Georges Basile Stavracas Neto 4323990138 window: fix style 2017-05-16 14:57:17 -03:00
Georges Basile Stavracas Neto 09fe510937 views: use the new GcalClock to redraw
Instead of having each view manage it's own timeout (or
even worse, making GcalWindow manage it), use the newly
introduced GcalClock API to do that.
2017-05-16 14:57:15 -03:00
Georges Basile Stavracas Neto 15563607dd manager: create and keep an internal clock
This clock will be used in the future by other classes
to update stuff.
2017-05-16 14:57:13 -03:00
Georges Basile Stavracas Neto e7a05bdc4c clock: introduce GcalClock
GcalClock is an internal clock for GNOME Calendar that
sends a few utility signals, such as :day-changed and
:minute-changed.

It also watches for suspend/resume events to properly
send the signal right after the resume.
2017-05-16 14:57:11 -03:00
Georges Basile Stavracas Neto f9454b6a8a event-widget: properly escape event description
When we escape first, then truncate, we might end up truncating at
the middle of a special character sequence, breaking the markup.

Fix that by escaping after truncating.
2017-05-08 21:26:21 -03:00
Georges Basile Stavracas Neto 817325da05 month-view: simplify code 2017-04-29 12:57:06 -03:00
Georges Basile Stavracas Neto 7dc5eb5bf5 week-grid, week-header: properly initialize datetimes
Since we use autoptr on those, we may end up falling in to
the early return and mistakenly unreferencing the not
initialized new date.
2017-04-29 12:57:06 -03:00
Georges Basile Stavracas Neto e2c40af9ff docs: update list of undocumented symbols 2017-04-29 10:47:25 -03:00
Georges Basile Stavracas Neto dac4f4cd50 project: cleanup gitignore 2017-04-29 10:47:25 -03:00
Georges Basile Stavracas Neto 45f11ed5c0 project: drop intltool usage 2017-04-29 10:47:25 -03:00
Georges Basile Stavracas Neto 0aaa58de0f Bump 3.25.1 release 2017-04-24 10:55:08 -03:00
Georges Basile Stavracas Neto b9c1a36256 project: update NEWS and appdata from gnome-3-24 2017-04-24 10:50:09 -03:00
Georges Basile Stavracas Neto 7d771830f1 edit-dialog: fix g_list_sort() usage 2017-04-24 10:03:28 -03:00
Georges Basile Stavracas Neto 9d91c11b52 year-view: simplify code
By storing the coordinates array in a local pointer,
we avoid 9 super slow full memory lookups. That matters
when we're inside the drawing function, trying to keep
60fps.
2017-04-19 16:48:51 -03:00
Georges Basile Stavracas Neto c5772f994e shell-search: don't crash 2017-04-19 16:46:19 -03:00
Georges Basile Stavracas Neto 141f8d87b8 window: attach update date timeout to window
So we can properly remove the timeout source whenever the
window is finalized.

https://bugzilla.gnome.org/show_bug.cgi?id=781431
2017-04-18 09:55:56 -03:00
Georges Basile Stavracas Neto dff41ebef5 event-widget: fix previous commit 2017-04-18 09:43:42 -03:00
Georges Basile Stavracas Neto 5b44a34407 event-widget: escape event location
https://bugzilla.gnome.org/show_bug.cgi?id=781434
2017-04-18 09:38:44 -03:00
Georges Basile Stavracas Neto 5396b946ad source-dialog: improve validation of remote calendars 2017-04-13 09:53:00 -03:00
Georges Basile Stavracas Neto fc074bcde3 source-dialog: improve URI handler
Now we have a more reliable way to detect whether
the passed URI is a file or a resource.

https://bugzilla.gnome.org/show_bug.cgi?id=780455
2017-04-13 09:17:52 -03:00
Georges Basile Stavracas Neto 78eb9a7435 window: add more shortcuts
Add the following new shortcuts:

 - Home: moves to today
 - PageUp: previous week/month/year
 - PageDn: next week/month/year

https://bugzilla.gnome.org/show_bug.cgi?id=740844
2017-04-13 07:32:21 -03:00
Georges Basile Stavracas Neto 1362762efe manager: fail when client unit isn't found
This is a temporary solution to avoid a crash that
some people are experiencing. More investigation is
required.

https://bugzilla.gnome.org/show_bug.cgi?id=781071
2017-04-13 07:08:35 -03:00
Georges Basile Stavracas Neto e26648a2c6 month-view: don't cancel selection on date change
https://bugzilla.gnome.org/show_bug.cgi?id=781244
2017-04-13 06:55:30 -03:00
Georges Basile Stavracas Neto 662373141b event-widget: correctly ellipsize descripton tooltip
https://bugzilla.gnome.org/show_bug.cgi?id=781185
2017-04-12 21:04:42 -03:00
Georges Basile Stavracas Neto aa5b963412 view: rework active-date
The current implementation is deficient in many ways, the
worst one being the it relying on GObject semi-synchronous
property emission.

This issue was exposed by the Week view code, where the active
date was updated, but delayed to reach the Week header and some
events were being added ~before~ the active date changed.

With this work, I was also able to figure out a bunch of code
that relied on this (i.e. luck) to work.
2017-04-12 20:51:23 -03:00
Georges Basile Stavracas Neto 2e84c00233 Merge branch 'wip/gbsneto/docs' 2017-04-12 15:17:37 -03:00
Georges Basile Stavracas Neto 7681b7a2da project: document classes 2017-04-12 15:17:17 -03:00
Georges Basile Stavracas Neto 57a2bf8983 week-grid, week-header: simplify code
We don't need to check whether the end date is NULL,
for GcalEvent always ensures that.
2017-04-12 15:12:03 -03:00
Georges Basile Stavracas Neto 89f142d79e week-grid: draw today indicator above events 2017-04-12 14:21:02 -03:00
Georges Basile Stavracas Neto 6c784d03c4 event-widget: escape summary and description 2017-04-11 10:38:29 -03:00
Georges Basile Stavracas Neto 8ad65d311b project: run gtkdocize before autoreconf 2017-04-08 20:59:51 -03:00
Georges Basile Stavracas Neto f9469f79ee doc: group sections 2017-04-08 20:59:51 -03:00
Georges Basile Stavracas Neto e3ef063e00 event: fix documentation 2017-04-08 20:59:51 -03:00
Georges Basile Stavracas Neto 014bcfddc5 doc: add skeleton documentation
This adds API documentation, generated at compile time.
2017-04-08 20:59:50 -03:00
Georges Basile Stavracas Neto b93fe11da8 view: cleanup unused code 2017-03-29 16:25:47 -03:00
Georges Basile Stavracas Neto 2f2867179d week-grid: fix event creation on RTL languages
On RTL languages, the calcs to detect the start and end
of the new event were wrong, leading to the weird behavior
it currently has.

Fix that by correctly calculating the start and end cells
on RTL languages.

https://bugzilla.gnome.org/show_bug.cgi?id=777429
2017-03-29 00:04:10 -03:00
Georges Basile Stavracas Neto 090a79100f project: update gitignore 2017-03-28 23:57:01 -03:00
Georges Basile Stavracas Neto 19b1563aab year-view: simplify code
The code in ECalDataModelSubscriber:component_changed() and
:component_removed() was actually duplicated, and we can
simplify the :component_changed() routine by simply removing
and readding the event.
2017-03-25 17:56:36 -03:00
Georges Basile Stavracas Neto 3bbd6b64e4 window: show quick add popover with a nice animation
Instead of plain show and hide it, let's add a smooth
animation.
2017-03-25 17:46:08 -03:00
Georges Basile Stavracas Neto a7d7726a35 year-view: optimize drawing
The current Year view drawing routine gathers events
every single time we draw the navigator. This is, to
the best case, slow to death. In fact, this is why
year view's navigator is so memory and processor
consuming.

To fix that, cache the added components and simply
query them at drawing time.
2017-03-25 11:22:22 -03:00
Georges Basile Stavracas Neto c2f3953dde week-header: don't attempt to add events incorrectly
One of the biggest issues of GNOME Calendar views right now
is that they rely on GObject property system to update the
active date. Even gcal_view_set_date() is just a wrapper
around GObject set.

Because GObject asynchronously updates the property by letting
the mainloop handle it, we can never be assured that all the
views had their views updated before updating the data model.

This patch temporarily adds sanity checks to GcalWeekHeader
to prevent making Calendar unusable, until we fix GcalView.
2017-03-24 22:21:24 -03:00
Georges Basile Stavracas Neto 2544773645 manager: use EDS selectable property to track disabled agendas
This way, we can keep GNOME Calendar and Evolution synchronized.
And we can save some code too.
2017-03-17 21:25:23 -03:00
Georges Basile Stavracas Neto 95e293beed project: update TODO 2017-03-17 21:09:33 -03:00
Georges Basile Stavracas Neto 82aa5fadb0 week-header: correctly check for updatable events
When comparing events' dates against week dates, we must
be careful to compare UTC with UTC. Otherwise, some events
will be left, specially at the first and last days.
2017-03-17 21:09:33 -03:00
Georges Basile Stavracas Neto f1b59d64d2 week-header: fix dnd at first column 2017-03-17 16:38:59 -03:00
Georges Basile Stavracas Neto 8b718ee0a0 week-view, week-header: instrument more functions 2017-03-17 16:38:28 -03:00
Georges Basile Stavracas Neto fa7f579592 window: correctly check today for week view 2017-03-17 16:11:42 -03:00
Georges Basile Stavracas Neto 002271ebb1 views: get rid of current date
We can easily track the current date with GDateTime API,
so we don't actually need the current date field.
2017-03-17 15:49:12 -03:00
Georges Basile Stavracas Neto 1dadd34409 week-view: instrument possibly crasher function 2017-03-17 15:06:02 -03:00