Commit Graph
117 Commits
Author SHA1 Message Date
Georges Basile Stavracas Neto f67009bbba week-header: Use GDateTime to fetch weekday names 2019-04-26 16:00:33 -03:00
Georges Basile Stavracas Neto c88cf19e86 week-header: Simplify set_date() 2019-04-26 15:20:47 -03:00
Georges Basile Stavracas Neto c64849a29a week-header: Compare week number 2019-04-26 15:17:20 -03:00
Georges Basile Stavracas Neto c52bacfc3f utils: Move more API to gcal-date-time-utils.c 2019-04-26 13:57:05 -03:00
Georges Basile Stavracas Neto ab1c0b6ca4 utils: Rename gcal_clear_datetime to gcal_clear_date_time
To keep it consistent with the rest of the API.
2019-04-26 13:27:37 -03:00
Georges Basile Stavracas Neto 073fc961c1 view: Turn 'active-date' into a GDateTime property
Drop the bomb!
2019-04-26 13:04:37 -03:00
Georges Basile Stavracas Neto 01fdf79e6a Use weather service from GcalContext
All those properties were a waste compared to storing it
into the context.
2019-04-25 16:30:56 -03:00
Georges Basile Stavracas Neto 1297ad695b application: Remove gcal_application_get_clock()
That moved to GcalContext, and now that all pieces who
used it have access to the context, we can just use it.
2019-04-25 16:30:55 -03:00
Georges Basile Stavracas Neto 54506973fc event-widget: Receive a context 2019-04-25 16:30:55 -03:00
Georges Basile Stavracas Neto c175599550 view: Replace the manager property by the context 2019-04-25 16:30:55 -03:00
Georges Basile Stavracas Neto a799678f68 event: rewrite timezone support
Now with something that hopefully works.

https://gitlab.gnome.org/GNOME/gnome-calendar/issues/43
https://gitlab.gnome.org/GNOME/gnome-calendar/issues/302
2018-09-14 20:16:54 -03:00
Georges Basile Stavracas Neto cfa8794313 manager: Move GcalClock to GcalApplication
GcalManager is basically an object that is shared
among classes that need to modify calendars, while
GcalClock is just a wall clock implementation.

Move it to GcalApplication, so that objects without
access to GcalManager can still access the clock.
2018-05-04 21:37:53 -03:00
Andrea Azzarone 9d0b44d4e3 view: Auto disconnect weather-changed signal handler
Use g_signal_connect_object in order to auto disconnect the weather-changed
signal handler when the view object is finalized.

https://gitlab.gnome.org/GNOME/gnome-calendar/issues/271
2018-04-11 17:45:02 +02:00
Georges Basile Stavracas Neto 194407ecfb views: Instrument and fix reference leaks 2018-01-28 12:08:04 -02:00
Georges Basile Stavracas Neto 037567209c view: Remove first weekday helpers when unecessary
Not all views need to know the first weekday, and those
who need, it can be stored internally.
2018-01-28 10:20:19 -02:00
Georges Basile Stavracas Neto b936759e5c project: Make time format a first-class citizen
The current code deals with 12/24h clock formats almost like
a workaround of the issue. This commit adds proper support to
different clock formats.
2018-01-28 02:30:55 -02:00
Georges Basile Stavracas Neto 499db7bfd4 weather: Rework weather management
This commit brings a few changes that I was too lazy to
split in different commits:

 * Remove a few useless arguments in the GcalWeatherService API
 * Move the weather management code from GcalWindow to GcalWeatherSettings
 * A few style changes
2018-01-27 20:36:29 -02:00
Georges Basile Stavracas Neto 9f1885d807 weather-service: use GPtrArray for public API
Using GLists and GSLists is a bad practice. These data
structures are too much inneficient and GPtrArray has
the advantage of having a free function pointer, so we
can hide the underlying free function from the consumers
of this API.

This also gets rid of another allocation cycle in Month
view.
2017-12-16 23:12:06 -02:00
Florian Brosch eceb826e77 Whitespace changes 2017-12-11 22:13:16 -02:00
Florian Brosch d51d1ea2cd view: Move weather API to interface GcalView
This allows us to get rid of similar code.
2017-12-11 22:09:59 -02:00
Florian Brosch 759e6ef0b1 week-header: Rename WeatherInfoPos to WeatherInfoDay and drop positions. 2017-12-11 21:38:08 -02:00
Florian Brosch 660e1c6178 Avoid single line comments. 2017-12-11 21:38:08 -02:00
Florian Brosch f0fa9eca70 week-header: Properly handle weather infos on date changes 2017-12-11 21:32:01 -02:00
Florian Brosch a188c68653 week-header: Style temperatures 2017-12-11 21:29:33 -02:00
Florian Brosch 30297f084d weather: week: Add space between icon and temperature 2017-12-11 21:29:33 -02:00
Florian Brosch 4ffbf68b23 week-header: Add initial weather support.
This is still work in progress. API is stable but presentation
is not. It also contains some LOCs for unfinished mouse-over and
click-events.
2017-12-11 21:23:20 -02: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
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
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 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
Mohammed Sadiq 4dde284170 week-header: fix memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=782561
2017-05-15 17:23:31 -03:00
Orkun Tezer a54e91a9b3 week-header: use g_date_time_add_days for dnd date calculation
Dnd at week header crashes with segmentation fault

The problem, calculation of dnd_date returns NULL when week_start is
in previous month.

Fix that by using g_date_time_add_days() function

https://bugzilla.gnome.org/show_bug.cgi?id=781955
2017-05-08 21:49:46 -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
Orkun Tezer a6e347d8f2 week-header: Move events at column after remove event from list
The Problem: When user remove 4rt fullday event, header only shows two
events and not shows 3rd fullday event

Because, we check and set visibility of event that user wants to remove
from calendar, before remove event from event list which causes 3rd
event unvisible.

Fix that with check and set visibility of event after remove event
from event list, then visibilties and overflow corretly calculated

https://bugzilla.gnome.org/show_bug.cgi?id=777423
2017-05-03 21:55:39 -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 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 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 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
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 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 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
Joyjit Choudhury 35b2f90cab week-view: set correct week number
In this commit, the correct week number is set in week-view.

The problem is, the week number of week-view is being set according to
the first day of the week (if the first and last day of the week
are in the same year), or the first and last day of the week
(if the first and last day are in different years).

To fix this, the week number is being set according to the middle day
of the week (according to ISO 8601 standards), resulting in correct
week numbers.

https://bugzilla.gnome.org/show_bug.cgi?id=779331
2017-03-16 20:31:37 -03:00
Georges Basile Stavracas Neto 0266202d40 week-header: continue fixing event positions 2017-03-15 09:50:51 -03:00
Georges Basile Stavracas Neto 669869cf3f week-header: fix calc of events' start and end positions
Another shot in this issue. Again.

https://bugzilla.gnome.org/show_bug.cgi?id=780051
2017-03-15 17:45:49 +05:30
Georges Basile Stavracas Neto f608f8fd9d week-header: don't account first weekday twice
The auxiliary functions to calculate the week start
already takes the first weekday into account. We,
however, were considering it again when calculating
the event position.

Fix that by only considering it once, through the
get_start_of_week() function.

https://bugzilla.gnome.org/show_bug.cgi?id=780051
2017-03-14 20:27:32 -03:00