Commit Graph
42 Commits
Author SHA1 Message Date
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 4dd4c2410f month-cell: Move day label to top, split from overflow 2017-11-11 17:48:59 -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 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 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 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 e59910f0e9 month-view: rewrite was a template widget 2017-10-06 20:32:00 -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 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 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 e60c8593dd window: propagate manager using properties 2017-09-07 14:35:44 -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 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
Abdullahi Usman d9a775e2fe month-view : correct overflow label position on rtl
The overflow layout displays "Other n events" when there are too much event
that a cell can accomodate.

But on rtl languages, due to the layering out of the cell, the position of the
overflow is not renderend on the mirrored date.

We fix that by mirroring the positon of the day on which the events occur so
that the events can appear on the right day.

https://bugzilla.gnome.org/show_bug.cgi?id=777427
2017-08-22 20:57:01 -03:00
Abdullahi Usman df08daad68 month-view: improve dates calculation for RTL languages.
Month view used to calculate the event's start date and end date from
the physical layout of the month and compare it with the event's
original start date and end date to see if there is a change and then
update as necessary by either slanted start or end, when either is/are
not equal to the one in the original start and end dates.

However, the way in which the start date and end date in RTL language are
calculated must be different since the layering of the days in the weeks
are opposite.  Month view uses precalculated days number to mirror the
last week, which already chop off the days_delay number from cell_idx value.
In RTL, this cause issues such that the days are calculated wrongly and a
slanted start or end is visible.  Because the date is not the same as the
original events date, month view thinks that the view needs an update and
so tries to update the view wrongly.

We can fix this by using the cell_idx value to calculate the days and then
substracting the days_delay value after that.

https://bugzilla.gnome.org/show_bug.cgi?id=777426
2017-08-18 23:53:04 -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
Alex Benishek 311195857f Move from GPL 2 to GPL 3
Right now the project contains a mix of GPL 2 and GPL 3 code.
This commit moves all of the perviously GPL 2 code to GPL 3

https://bugzilla.gnome.org/show_bug.cgi?id=752649
2017-08-10 07:16:36 -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
Yash Singh be9da0cbda views: ask for recurrence when dropping recurrent events
While dragging and dropping a recurrent event, pop
up the recurrence-dialog to allow the user to choose
the set of events to which the changes should be
applied.

https://bugzilla.gnome.org/show_bug.cgi?id=782755
2017-06-14 16:18:11 -03:00
Rafal Luzynski 2263fc9478 date formats: Use g_date_time_format()
Don't hardcode month-day order, use g_date_time_format() and
mark the format string for translation and let translators choose
their preferred formats.

This patch also removes context from the existing "%B %d" date
format because it is unnecessary and this allows the format to be
reused by the patch.

https://bugzilla.gnome.org/show_bug.cgi?id=780629
2017-06-01 11:37:00 -03:00
Yash Singh 9ffa913ad4 manager: pass ECalObjModType to update and remove
Currently, GcalManager always assumes E_CAL_OBJ_MOD_THIS
when modifying or deleting events. Since we're landing
the groundwork for recurrence management, we can't assume
this anymore.

This patch, then, allows GcalManager:modify_event() and
:remove_event() receive the ECalObjModType instead of
assuming E_CAL_OBJ_MOD_THIS. However, this commit does
not add recurrence support yet, and every call to these
functions are still passing E_CAL_OBJ_MOD_THIS.

https://bugzilla.gnome.org/show_bug.cgi?id=782755
2017-05-27 11:36:05 -03:00
Abdullahi Usman 9bbb12691a month-view: add margin to overflow layout
The overflow layout sit at the bottom of a cell to display "Other X events"
when there is no room to accomodate more.

The issue is that the overflow layout does not have margin property like
other views(layouts) in the cell, so instead it appears either too far from or
too close to the border depending on the text it accomodates.

We can fix this by setting the margin property.

https://bugzilla.gnome.com/show_bug.cgi?id=771581
2017-05-24 15:46:23 -03:00
Abdullahi Usman ad3e37606d month-view : adjust overflow layout and set it ellipsized at end.
The overflow layout used to display "Other X events" text when
there is no enough space to accomodate more events.

This used to get mixed-up/overlapped with the date label because the
overflow label uses whole cell width as width.

We can fix this by substracting date label width from overflow label
width to accomodate the date label.

https://bugzilla.gnome.com/show_bug.cgi?id=7771581

https://bugzilla.gnome.org/show_bug.cgi?id=771581
2017-05-22 22:05:07 -03:00
Abdullahi Usman 91408b355b month-view : add margin to overflow layout
The overflow layout sit at the bottom of a cell to display "Other X events"
when there is no room to accomodate more.

The issue is that the overflow layout does not have margin property like
other views(layouts) in the cell, so instead it appears either too far from or
too close to the border depending on the text it accomodates.

We can fix this by setting the margin property.

https://bugzilla.gnome.com/show_bug.cgi?id=7771581
2017-05-22 21:57:46 -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
Kevin Lopez ec3ef0d0a3 search-view: hide if click is performed outside
Result drop down should disappear when any click is performed outside
that drop down.

https://bugzilla.gnome.org/show_bug.cgi?id=74796

https://bugzilla.gnome.org/show_bug.cgi?id=747962
2017-05-04 08:55:50 -03:00
Georges Basile Stavracas Neto 817325da05 month-view: simplify code 2017-04-29 12:57:06 -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 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 b93fe11da8 view: cleanup unused code 2017-03-29 16:25:47 -03:00
Jente Hidskes de2578ac54 views: use ACTION_MOVE to display correct cursor
When dragging events around, the cursors show a + as opposed to a
an arrow indicating that the event is being moved. This can confuse
users.

The fix is to tell GTK that the drag being performed is a move.

https://bugzilla.gnome.org/show_bug.cgi?id=774922
2017-03-22 22:55:50 -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 339b49e7d5 views: cleanup code 2017-03-17 11:13:19 -03:00
Georges Basile Stavracas Neto d5825bbd35 project: override log domains
This way, we can have more useful debug spils.
2017-03-17 10:14:25 -03:00
Georges Basile Stavracas Neto 7cf41f8f45 month-view: fix warning on closing overflow popover 2017-02-14 18:00:05 -02:00
Georges Basile Stavracas Neto 8f34049793 views: sync header labels' style
The Week view exposed a bug where we had different
CSS selectors for the exact same label. This made
them look inconsistent, with different colors and
paddings.

Fix that by ensuring they all use the same style
class. The Year view drawing code needed to be
reworked a little.

https://bugzilla.gnome.org/show_bug.cgi?id=778391
2017-02-09 10:28:28 -02:00
Georges Basile Stavracas Neto e74cfc0e22 project: move views to views/ folder 2017-01-17 11:28:48 -02:00