Commit Graph
100 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto a3d1bfcfc5 application: load custom css files
So that theme maintainers can drop their CSS here,
and make Calendar look beautiful everywhere.
2017-11-19 13:42:11 -02:00
Georges Basile Stavracas Neto 41fb5c83d6 theme: fine tune line color 2017-11-19 13:34:23 -02:00
Georges Basile Stavracas Neto bb2566dab8 month-view: hide last row if it's empty
This can make it put up to 5 events in my 1366x768 screen!

\o/
2017-11-19 12:29:29 -02:00
Georges Basile Stavracas Neto 0f1a8c93f2 month-view: fix hiding event widgets when removing 2017-11-19 12:18:32 -02:00
Georges Basile Stavracas Neto 1f1e351c47 month-view: remove useless field
This also fixes the bug where changing the text
direction doesn't reposition the event widgets.
2017-11-19 12:11:02 -02:00
Georges Basile Stavracas Neto 2e750b69e5 month-view: reorganize code
This is another major reorganization of the Month view's
allocation code. The goal is not to reduce the number
of lines, but to make them readable and maintainable.

During this reorganization, multiple bugs that were never
hit were ironed out! That itself would be a major win, but
since the code is actually more readable, we can expect
more improvements from now on.
2017-11-19 12:05:52 -02:00
Georges Basile Stavracas Neto 192e860edc trivial: style fix 2017-11-18 21:57:25 -02:00
Georges Basile Stavracas Neto 9fa9de2df7 month-view: use a custom structure to help multiday allocation
Instead of using 3 different, barely synchronized arrays. This
makes the code easier to read, and is more semantic too.
2017-11-18 21:57:25 -02:00
Georges Basile Stavracas Neto 7af8dd3c40 Bump 3.27.2 release 2017-11-15 21:31:35 -02:00
Georges Basile Stavracas Neto 34d20a07ec month-popover: remove leftover comment 2017-11-15 21:04:46 -02:00
Georges Basile Stavracas Neto 4d23949a99 month-view: properly update today mark
https://bugzilla.gnome.org/show_bug.cgi?id=775103
2017-11-15 20:15:28 -02:00
Georges Basile Stavracas Neto 7470db159d flatpak: add libdazzle 2017-11-15 20:04:07 -02:00
Georges Basile Stavracas Neto a66ff3bf85 Merge branch 'wip/gbsneto/month-cell-subwindow' 2017-11-15 19:25:39 -02:00
Georges Basile Stavracas Neto 54839efbf4 month-view: fix rtl
This removes much of the subtle complexities of the size allocation
function in month view, and finally delivers a readable and working
implementation of the month view.

This also introduces a small code refactoring, and fixes clicking
on a cell on RTL.
2017-11-15 19:03:10 -02:00
Georges Basile Stavracas Neto b638a1537c event-widget: also compare by multiday 2017-11-15 15:32:37 -02:00
Georges Basile Stavracas Neto 09cd5d05cb month-popover: sort events 2017-11-15 03:17:04 -02:00
Georges Basile Stavracas Neto 72b9b34235 month-view: win the fight against the sizing machinery
We can now guarantee that the month cells unconditionally get
their desired allocations, but the event widgets are only created
when necessary.

I won.
2017-11-15 02:31:03 -02:00
Georges Basile Stavracas Neto eff50668d4 month-view: introduce new overflow popover window
This ~almost~ implements a perfectly semantic transition (which
is kinda impossible now).
2017-11-15 02:03:26 -02:00
Georges Basile Stavracas Neto 8d6785b6f7 month-view: implement a different hiding algorithm
As if the previous one wasn't crazy enough :(
2017-11-13 19:27:55 -02:00
Georges Basile Stavracas Neto b4cc36b344 month-view: fight the sizing machinery even harder
Make sure something changed in child widgets AND events,
otherwise just top allocating at all.
2017-11-13 17:06:38 -02:00
Georges Basile Stavracas Neto 31409b6e44 month-view: improve layout algorithm
Multiday event handling was a mess, and still it. But this commit
makes it at least layout things correctly.

It's not perfect, though; This commit brought back that terrible
allocation cycle issue, since we're showing and hiding events in
size-allocate.
2017-11-13 14:23:35 -02:00
Georges Basile Stavracas Neto 2c9f7e2041 month-view: reorganize header 2017-11-13 12:44:04 -02:00
Georges Basile Stavracas Neto 86b565a817 month-view: Improve code readability
No real changes except code reorganization and refactoring, just
to make it a little bit less painful to read and maintain.
2017-11-13 12:40:45 -02:00
Georges Basile Stavracas Neto 2a11959bdd month-cell: show +X in overflow label
Instead of "Other X Events".
2017-11-11 18:15:18 -02:00
Georges Basile Stavracas Neto b5ad149261 month-cell: improve calculation of header box height
Should also consider the top and bottom margins.
2017-11-11 18:15:02 -02:00
Georges Basile Stavracas Neto 432e7ab7ea month-cell: move day label to the start of the cell 2017-11-11 18:08:22 -02:00
Georges Basile Stavracas Neto 4dd4c2410f month-cell: Move day label to top, split from overflow 2017-11-11 17:48:59 -02:00
Georges Basile Stavracas Neto af90070cf4 doap: remove Isaque and Erick as maintainers
They don't maintain it anymore.
2017-11-11 17:35:01 -02:00
Georges Basile Stavracas Neto 1968151114 project: add libdazzle dependency 2017-11-11 17:33:49 -02:00
Georges Basile Stavracas Neto caffb60065 utils: add autoptr support for ESource 2017-11-08 23:26:25 -02:00
Georges Basile Stavracas Neto 5977eeefc8 month-cell: only update label when date changes
If the date is the same, we don't need to update the label.
This might cause an infinite resize loop.
2017-10-31 01:11:26 -02:00
Georges Basile Stavracas Neto 907e55ccbe month-view: remove reminescent dnd code
Month view does not manage Drag n' Drop anymore, but
this code was left behind by accident.
2017-10-31 01:00:15 -02:00
Georges Basile Stavracas Neto 1e54c9db12 month-view: only idle add month cell update when necessary 2017-10-31 00:34:45 -02:00
Georges Basile Stavracas Neto 523609f2c0 month-view: always update month cells in idle
This way, we can schedule the multiple resizing queueing
operations to after the size-allocate phase is over.
2017-10-29 19:05:42 -02:00
Georges Basile Stavracas Neto e04b7f0fd3 event-widget: lazily relayout main grid 2017-10-29 19:05:34 -02:00
Georges Basile Stavracas Neto 2357f5d766 month-cell: draw out-of-month cell day labels differently 2017-10-07 11:41:00 -03:00
Georges Basile Stavracas Neto 3411dbb13d month-view: don't outsmart GTK resizing machinery
If we need to resize, then let's just accept we need to
resize the month view (event if that's an expensive
operation) and do the resizing.

This fixed many minor annoyances like invisible overflow
labels, on-the-fly text direction changes, etc.
2017-10-07 11:40:48 -03:00
Georges Basile Stavracas Neto a5e733f705 month-cell: don't enbold overflow label
Only the day label should be made bold.
2017-10-07 11:27:56 -03:00
Georges Basile Stavracas Neto ff9c663c8c month-view: only update selection if there's a start date
We can potentially not have an end date set, but there's always
a start date. If there isn't, it means the user clicked from
outside of month view, or at an invalid cell, in which cases we
shouldn't display the quick add popover anyway.
2017-10-07 11:20:23 -03:00
Georges Basile Stavracas Neto a0c224a0d5 edit-dialog: alarm rows are not activatable
Otherwise, they show that annoying hover effect
that is ultimately useless, since clicking on the
row won't do anything.
2017-10-07 11:08:51 -03:00
Georges Basile Stavracas Neto df40a4d8bf month-view: don't hide month view when dragging from popover 2017-10-07 11:01:32 -03:00
Georges Basile Stavracas Neto 37fb5e8492 month-view: fix event positioning on RTL locales
We have to pick the mirrored column index on RTL locales.
2017-10-06 21:23:05 -03:00
Georges Basile Stavracas Neto f83471c609 window: trivial code refactoring 2017-10-06 20:32:00 -03:00
Georges Basile Stavracas Neto 999160495d log: accept NULL log domains 2017-10-06 20:32:00 -03:00
Georges Basile Stavracas Neto e59910f0e9 month-view: rewrite was a template widget 2017-10-06 20:32:00 -03:00
Georges Basile Stavracas Neto b9310a84a3 widgets: ensure types on class_init
This will avoid GtkBuilder crashing because it couldn't
find the correct type for a given widget.
2017-09-20 19:14:15 -03:00
Georges Basile Stavracas Neto 8a2376ae55 event: refactor gcal_event_is_multiday 2017-09-14 14:05:53 -03:00
Georges Basile Stavracas Neto 349839ee49 event-widget: make font relative to initial font size 2017-09-14 13:50:43 -03:00
Georges Basile Stavracas Neto 4262f2fb25 project: update meson file code style 2017-09-14 13:31:19 -03:00
Georges Basile Stavracas Neto f486569e19 week-grid: improve positioning code 2017-09-14 13:31:04 -03:00
Georges Basile Stavracas Neto 925e17e16c event-widget: fix dragging events 2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto d099f0f243 event-widget: use semibold for hour label
We want to emphasize the hour, but not so much.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto af52f8bac4 event-widget: adjust spacing between labels 2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto 25e5e9ecc1 view: don't add time headers in event lists
Nowadays, GcalEventWidget draws the time by itself. This
makes adding a time header pretty much useless.

Fix this double information by removing the time headers
from event listboxs.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto 766de8c025 event-widget: remove alarm icon
This tiny icon wasn't really adding any value, but was
cluttering an already information-intensive view.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto 2a923939d9 event-widget: draw horizontal timed events differently
This makes more clear which events are timed, and which events
are all day. They are also super cute!
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto 7dd42d4186 event-widget: add .timed style class to timed events
Another CSS tool for us to play with.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto f42d5d0598 event-widget: add .vertical and .horizontal style classes
Depending on the GtkOrientation passed to it, just like the regular
behavior of GTK widgets. This way, we can have a finer control over
CSS selectors.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto 713200773f project: add example of commit message 2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto a853376629 event-widget: turn into a GtkBin subclass
The current GcalEventWidget implementation is a direct
GtkWidget subclass, which means we have to take care of
all the implementation details such as raising GdkWindows
and managing the drawing all by ourselves.

The event widget, however, can be easily described through
a GtkBuilder file. This would simplify the implementation
and makes us maintain less code.

Fix that by making GcalEventWidget a GtkBin subclass.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto b3cfbe3d31 event-widget: update style 2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto f3f2ba271b event-widget: update code style 2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto d2d4e7a9b6 event-widget: remove unused prototypes
These are not implemented anymore, and just add more noise
to the header file.
2017-09-14 13:26:28 -03:00
Georges Basile Stavracas Neto f027c4c1a9 Bump for 3.27.0 unstable release cycle 2017-09-11 23:39:38 -03:00
Georges Basile Stavracas Neto 290d4bb7a6 project: style fixups to meson 2017-09-09 10:09:02 -03:00
Georges Basile Stavracas Neto ea548d1584 project: update TODO
We just merged GcalSubscriberView and GcalMonthView
2017-09-09 10:08:33 -03:00
Georges Basile Stavracas Neto ffe67a1304 project: add more tasks to TODO 2017-09-08 23:15:50 -03:00
Georges Basile Stavracas Neto 8f7230cf5f window: remove stray debug message 2017-09-08 22:59:47 -03:00
Georges Basile Stavracas Neto 5a0a3fcd9c event: fix various reference ownership issues 2017-09-08 22:25:18 -03:00
Georges Basile Stavracas Neto 242db0436a main: remove double ; 2017-09-08 22:23:44 -03:00
Georges Basile Stavracas Neto 7f14e9f561 project: rewrite HACKING guides
Now I don't have to pass all this tribal knowledge every
single time.
2017-09-08 21:34:52 -03:00
Georges Basile Stavracas Neto 9c50ae9b9c main: simplify code even more 2017-09-08 21:04:02 -03:00
Georges Basile Stavracas Neto 27a44c3092 project: don't install private library
Instead, bring back building all the objects into
calendar itself, and only use the private library
internally.
2017-09-08 21:04:02 -03:00
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