In order to correctly implement the week grid, we must
have a fast and optimized data structure to handle date
intervals.
This commit introduces, then, GcalRangeTree. The range tree
is an augmented AVL tree designed to handle intervals (i.e.
ranges) rather than single-dimensional keys.
It is a very good struct since common operations like insert
and removal are O(log n). It also is optimized for the ranges
we work on, so the nodes only take up the absolutely minimum
space required.
GNOME_COMPILE_WARNINGS is still being used, despite its deprecated
status. This commit also tweaks configure.ac a little, removing
redundant macro calls and definitions and quoting all macro arguments.
https://bugzilla.gnome.org/show_bug.cgi?id=770466
This is mainly a copy-paste from an old branch authored
by Matthias Clasen. The code style was updated to match
Calendar's one, and the theming was improved a little bit.
Instead of throwing it all for GcalWindow to handle,
add a new class called GcalQuickAddPopover that handles
event creation.
Events are always all day when created from the quick
add popover, unless the user wants to change it and click
'Edit Details' button.
In the future, we'll look forward adding natural language
support, so the user can type the times directly from the
entry (like e.g. "soccer at park from 10am to 11:30am").
The idea here is to make GcalSubscriber handle the container
responsibilities of the view, and the view will handle only the drawing
an allocating, this would allow us to remove GcalView interface and
merge its methods in GcalSubscriber.
The idea here is to make GcalSubscriber handle the container
responsibilities of the view, and the view will handle only the drawing
an allocating, this would allow us to remove GcalView interface and
merge its methods in GcalSubscriber.
GcalSubscriber abstract class is meant for handling the implementation
of ECalDataModelSubscriber interface. The code in each vfunc implemented
is the same for each view, then it makes sense to have a class holding
these implementations and make every views descend from it. This class
sits in the middle between GtkContainer and each of the views.
This cleaning is made in order to merge this branch into master as soon
as possible.
The implementation of GcalDayView is planned to go on the same lines as
GcalWeekView but for two days alone, so much of the code of the latter
could be reused. The approach of using shallow container and kinda
layout manager objects inside GcalDayView didn't worked that well for my
expertise at this time.
Implements an ECalDataModel object from evolution courtesy of Milan Crha
ECalDataModel hides the details of events retrieving from
calendars. Provides a time range and a subscriber system allowing
objects implements the necessary callbacks to be notified of events
happening on the selected time range.
This patch fixes bug #737729, removing all libgd dependencies.
Every GdHeaderButton was replaced by GtkButton, and GdNotification was replaced by a custom-styled GtkFrame inside a GtkRevealer.
GcalManager new design includes:
1. remove deprecated methods from eds
2. remove event cache
3. remove the need for keeping date range logic
4. reorder code according to HACKING code style document
This changes will cause some other changes among the application. While
this commit build just fine, work is missing yet. Next I will fix
GcalEventWigdet and the rest of the affected components.
Initial approach, it doesn't do anything but painting the background.
Still missing to handle chidlren allocation.
Integrated GcalAllDayGrid, GcalViewport and GcalDaysGrid.