Commit Graph
1197 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto 3f4d11f68e event: normalize dates before applying them
I don't know the reasoning behind it, but sometimes
I see dates like March 32 or February 30. Events are
correctly added, so I suspect it's an issue with another
app.

In any case, we should be able to handle weird dates
without crashing, so normalize the dates before using
them.
2016-02-16 10:39:37 +09:00
Georges Basile Stavracas Neto f39991c7c3 month-view: reallocate children when date changes
The subscriber does not add components who are already
added to the view - and doesn't need to do it. To overcome
that fact, we have to reallocate the events even when
nothing was added.

Fix that by setting the GcalSubscriberView->children_changed
to TRUE and queueing an allocation right after the date
changes.

https://bugzilla.gnome.org/show_bug.cgi?id=762066
2016-02-15 21:18:13 -02:00
Georges Basile Stavracas Neto e8647eb829 month-view: use the event's dates instead of widget's ones
Conceptually, we need to compare the event's dates to make
sure we're allocating the widgets correctly, as widget's
dates may not represent the event's ones.
2016-02-15 21:11:17 -02:00
Georges Basile Stavracas Neto 87e36adbb6 month-view: rework allocation code
GcalEventWidget added API to automatically change
the widget rendering according to the initial and
final dates. Month view, however, was still handling
it manually (and wrongly).

Fix that by reworking the allocation code, documenting
it and using the apropriate API from GcalEventWidget.
2016-02-15 20:42:47 -02:00
Georges Basile Stavracas Neto 7a6a13d7e0 event: fix timezone handling
Using libical with libecal means that the dates
are always stored as UTF dates, and we receive the
timezone as the ECalComponentDateTime::tzid value.

This fact was net being considered when adding date
support on GcalEvent, and was causing various issues
when displaying dates.

Fix that by properly handling timezones in GcalEvent.
2016-02-15 20:42:47 -02:00
Georges Basile Stavracas Neto c66a1dbc6b event: fix is_multiday() method
We have to pass the end date first.
2016-02-15 20:42:47 -02:00
Georges Basile Stavracas Neto 6283d9d025 application: update event colors when agenda changes
When we change a source (aka agenda) color, we have to
restart Calendar in order to see it in action.

After the work on GcalEvent, events are now able to track
the agenda's color changes, and the event widget updates
itself in response to that.

The last step was simple notifying GcalApplication when an
agenda changes, so it knows when to recreate the color schemes.
2016-02-14 12:51:32 -02:00
Georges Basile Stavracas Neto 8511285525 year-view: move comparing function from gcal-event-widget.c
The compare_for_single_day() method is reproducing the
same functionality from gcal_event_compare(), and the only
consumer is the Year View. So, for now, simplify the
comparing function and put it in year view file.

Also, this commit vastly improves and documents the year
view's algorithm to add events to the sidebar list.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 070bc681fc edit-dialog: simplify code
We don't need to have 2 functions that do exactly
the same thing.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto a5658e3993 window: remove source when finalizing
Sometimes we crash the window right after closing it
because we set a timeout for save_geometry() before
destroying it, and the timeout is called after the
window is destroyed.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 34ff93ce3f time-selector: use GDateTime
Pretty much like the previous commit, but porting the
GcalTimeSelector class.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto afe8def60c date-selector: use GDateTime internally
Using a GDateTime improves consistency with the
other components (ideally, we'll move completely
to GDateTime) and simplifies the code.

This commit adds a new property GcalDateSelector::date
and adapts the API to use GDateTime.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 2775012346 manager: use GcalEvent on it's API
To make things consistend and clear, use the
GcalEvent class to handle events.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto c65fe989fe window: use a GcalEvent to delete events
Instead of using the GcalEventData struct, use the
deleted event. It holds a reference until the event
gets destroyed.

With this commit, we can safely drop GcalEventData
structure, since it's not used anymore.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 4676a21a58 search-view: use GcalEvent
Instead of relying on the now deprecated GcalEventData,
use the newly introduced GcalEvent class. As a side
effect, the code is simpler and much more saner to
deal with.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto eb360dc809 shell-provider: use GcalEvent instead of event data
Following the sequence of porting commits, make the Shell's
search provider class handle events using GcalEvent classes
instead of the old GcalEventData structure.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto e31e6eeac0 edit-dialog: use GcalEvent internally
Instead of using the ESource + ECalComponent combination,
use the new GcalEvent class, which wraps up and simplifies
most of the code.

This commit adds a GcalEditDialog::event property, and
adapts the dialog (and everything dependant on it's code)
to use the GcalEvent class.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 0ec0ea8121 event-widget: use GcalEvent internally
This saves a lot of code, and is much saner to maintain.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 2ded8b3147 event-widget: drop unused function 2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 5e0d4018f4 event: add a wrapper around events
Instead of relying on confusing structures, raw data
and direct access to components, add a wrapper for
events.
2016-02-14 12:17:37 -02:00
Georges Basile Stavracas Neto 9515c5e627 build: alphabetically sort source files 2016-02-12 15:17:48 -02:00
Isaque Galdino 9646d4f543 year-view: Fix for 01-01-2017 date
Previous fix was considering Jan 1st and Dec 31st to find the week
number, using ISO 8601 standard, and that was causing an issue with some
dates like Jan 1st, 2017 which was displaying week# 52 instead of
week #1.

The issue happened because ISO 8601 always consider Monday as the first
weekday, so as Jan 1st, 2017 is a Sunday, it' still considered week# 52
and not week# 1.

After checking GtkCalendar code I noticed it uses the same ISO 8601
standard but instead of using Jan 1st or Dec 31st, it always get the
week number based on the last day of that week, taking account if the
week starts on Sunday or Monday, depending on the locale. In our
example, using a calendar based on Sunday, Jan 1st, 2017 is the first
day of the week and Jan 7th, 2017 is the last one. Therefore I changed
week number code to always use the last day of the week.

https://bugzilla.gnome.org/show_bug.cgi?id=757622
2016-02-02 14:44:04 -02:00
Cosimo Cecchi f4d015759d Rename icon to match app ID
In preparation for xdg-app.

https://bugzilla.gnome.org/show_bug.cgi?id=761375
2016-01-31 15:13:55 -06:00
Isaque Galdino e8c75cea32 year-view: Added visual clue for days with events
Year view didn't have hints for days with events and this feature was
requested to be added to gnome-calendar.

This is an old request but in the past gnome-design team though it would
be better to keep the layout simple without hints for days with events.
Now with the changes in gnome-shell calendar and in order to keep them
in sync, this feature was added to gnome-calendar.

In order to implement this code we had to add a few css styles and a
code to add a small circle below everyday with events. Although
gnome-shell calendar uses an svg image with a 3x3 dot, we chose to use a
pango function to draw the dot.

https://bugzilla.gnome.org/show_bug.cgi?id=743317
2016-01-29 22:51:12 -02:00
Georges Basile Stavracas Neto ca327e2ce5 time-selector: turn into a final class 2016-01-19 21:12:19 -02:00
Georges Basile Stavracas Neto 65cfea9609 search-view: turn into a final class 2016-01-19 20:55:17 -02:00
Georges Basile Stavracas Neto f9101b9bc8 year-view: turn into a final class 2016-01-19 20:45:05 -02:00
Georges Basile Stavracas Neto 771d227520 window: turn into a final class 2016-01-19 20:27:21 -02:00
Georges Basile Stavracas Neto 50ce09617e source-dialog: remove private field 2016-01-19 20:03:19 -02:00
Georges Basile Stavracas Neto 80b03531f2 manager: turn into a final class 2016-01-19 19:31:04 -02:00
Georges Basile Stavracas Neto f001fb48b7 event-widget: turn into a final class 2016-01-19 19:12:13 -02:00
Georges Basile Stavracas Neto 5fe6578b16 date-selector: turn into a final class
There is no subclass of GcalDateSelector, and
actually it isn't needed. So, turn the class
into a final class and get rid of the needless
private field.
2016-01-19 18:54:29 -02:00
Georges Basile Stavracas Neto adc83a7a93 application: turn into a final class
GcalApplication is not derivable, so turn it
into a final class and get rid of the private
field.
2016-01-19 18:43:11 -02:00
Isaque Galdino c4853dd855 gnome-calendar: Fix week #s in year view
Changed year view to use ISO 8601 standard to display the week #s
correctly when showing first and last weeks.

Year view was always starting week #s as 1, based on Jan 1st, and it
kept count the weeks until Dec 31st. But according to ISO 8601 standard,
that's not always true, i.e. Jan 1st 2016, is still in the 53th week of
2015, while Dec 31st 2014 is already in the 1st week of 2015.

Now the code is using ISO 8601 GDate function to get the correct week
number for the first and the last weeks of the year only. Other weeks
continue to use the same logic.

More about ISO 6801: https://en.wikipedia.org/wiki/ISO_8601#Week_dates

https://bugzilla.gnome.org/show_bug.cgi?id=757622
2016-01-19 18:09:30 -02:00
Georges Basile Stavracas Neto 7b28416361 month-view: make lines stronger
The current lines are very light and people
with visual issues may not find them easy.

To fix that, make these lines slightly stronger,
enough to make them clearly visible.

https://bugzilla.gnome.org/show_bug.cgi?id=758679
2016-01-12 17:00:07 -02:00
Georges Basile Stavracas Neto df9af0e8f9 month-view: remove leftover
This was supposed to be removed, since there's no
use in setting a state and immediately restore the
context.
2016-01-04 22:24:10 -02:00
Georges Basile Stavracas Neto 6de0376ab6 month-view: fix warnings
We were calling gtk_style_context_get() with a state
different than that of the style_context, which yiels
warnings.

Fix that by saving, setting the flag and restoring the
context.
2016-01-04 16:50:47 -02:00
Georges Basile Stavracas Neto 21f3ed1ef1 project: more css names fixups 2016-01-04 16:50:46 -02:00
Georges Basile Stavracas Neto 5b8a26ec71 year-view: port to css nodes
Mainly by removing the gtk_widget_get_state_flags()
calls.
2016-01-04 16:50:40 -02:00
Georges Basile Stavracas Neto ef9868a0d7 event-widget: port to css nodes
This commit add a css name, and use the style
context's state flags as well.
2016-01-04 16:27:40 -02:00
Georges Basile Stavracas Neto 8b1054f638 month-view: set a css name
This will add a CSS Node in the style context,
and keep Calendar in sync with latest gtk+
upstream changes.
2016-01-04 16:27:40 -02:00
Georges Basile Stavracas Neto 2280a74856 edit-dialog: notify property before manually check sensitivity
When we check start & end time selector's sensitivity before
notifying the property change, the check is overriden by the
binding.

Fix that by performing the checks after the notification of the
property change.
2016-01-04 02:18:19 -02:00
Georges Basile Stavracas Neto abd6fa8b2d window: properly case ::manager property getter
It's a readwrite property, thus it must have an
case PROP_MANAGER set in get_property.
2015-12-31 00:37:36 -02:00
Georges Basile Stavracas Neto 961bf5dc88 window: setup edit dialog from UI file
This commit sets up the edit dialog from the window's ui
resource file, in a series of commits that tries to move
all C code to the UI definitions.

Also, GcalManager is a full GObject class, not a simple
pointer. As such, update the property spec to be of type
object, not pointer.
2015-12-30 17:37:12 -02:00
Georges Basile Stavracas Neto 13c4145507 edit-dialog: add ::writable and ::manager properties
By using these properties, we gain the possibility to
bind them to the widgets and save some needless code.

This commit adds GcalEditDialog::writable and ::manager
properties. Other needed properties will be eventually
added in the subsequent commits.
2015-12-30 17:34:29 -02:00
Georges Basile Stavracas Neto de207f9c63 edit-dialog: move bindings to UI file
We don't need to manually bind these properties in
the source code if we can make it on the UI files.
2015-12-30 15:05:20 -02:00
Georges Basile Stavracas Neto 4d19950c2c edit-dialog: cosmetic changes
Fixes some alignment issues, as well as some
needless checks. Also, use some handy glib
functions to shrink the code even more.
2015-12-30 14:59:16 -02:00
Georges Basile Stavracas Neto 3396291e3e edit-dialog: remove needless casts
These widgets are already stored as GtkWidgets,
and there is no need to do these casts.
2015-12-30 14:40:34 -02:00
Georges Basile Stavracas Neto 6f1eb7ca9d edit-dialog: turn into a final class
This commit updates GcalEditDialog's code for
it to be a final class. As such, we don't need
the GcalEditDialogPrivate type - we can simply
move our data to the GcalEditDialog struct.
2015-12-30 14:36:27 -02:00
Georges Basile Stavracas Neto 0ac827d87d edit-dialog: remove dead code
This is already set in the UI definition file
for the dialog.
2015-12-30 14:12:02 -02:00