Earlier, the recurrence-dialog would pop up even when user only
wanted to change the recurrence-property of an already recurring
event. This is incorrect behavior.
This patch fixes this issue by making sure that recurrence-dialog
doesn't pop up when the new recurrence-property chosen by the
user is different from what the event already has. In this case,
the user only wants to change the recurence-property of the event
and there's no use of the recurrence-dialog.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
Currently, creating recurring events is not supported
in gnome-calendar.
This patch adds a Repeat combobox with a list of
simple recurrences such as:
* Monday - Friday events
* Daily events
* Weekly events
* Monthly events
* Yearly events
and also a list of recurrence-duration-types such as:
* If an event should repeat forever
* A date until which the event should repeat
* Number of times an event should repeat
It enables the user to create simple recurring events and
even modify the recurrence-property of an already
recurring event.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
Earlier, an event had no recurrence property. Hence, the event's
recurrence pattern etc. could not be analysed, and as a result
could not be changed by the user. gnome-calendar just displayed
all the recurrences of a recurring event but had no 'readable'
knowledge regarding the characteristics of those recurrences.
This patch adds the recurrence property, which is basically
a GcalRecurrence structure linked to the event.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
The gcal_recurrence_is_equal function checks if two recurrences are
equal or not. When a user is trying to modify the recurrence-rules
of an already recurring event, this function tells us if the
recurrence-dialog should pop up or not.
This patch also removes some unused code.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
The week view can display mutilple events that can partly or fully span
same time ranges.
But week view fails to make correct assumption about the width of events when
two or more events span some time ranges in which these events also span some
time ranges with other events, and whereby the number of these other events
that they span time ranges with does not coincide with the number of the events
that the other event also span. Week view ended up calculating cells that
appears horizontally jointed up. Also int16_compare() does not dereference the
pointer from g_ptr_array_sort() correctly and that makes it sort events
incorrectly and hence making events appears vertically jointed up.
If an event have other events in which they span some time, we calcuate its width
by taking into consideration of all the events that the other event may span
time with. The event that has the higher number of time spans is considered.
We also save and retrieve our positions using UINT_TO_POINTER and POINTER_TO_UINT()
respectively, and then dereference the pointer from g_ptr_array_sort() correctly.
https://bugzilla.gnome.org/show_bug.cgi?id=777416
The month and year values extracted from until-date
of recurrences were accidentally interchanged.
This patch fixes that issue by making the correct assignment.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
Currently, gnome-calendar has no component to deal
with recurrence-rules of events. This missing component
is however required to create and modify recurring events.
This patch adds the required GcalRecurrence component
which parses the recurrence-rules with details like:
* Frequency of the recurring event
* Duration of the recurrences:
** If they repeat until a particular date
** If they repeat a fixed number of times
** If they repeat forever
and then stores these details in a suitable format
in the GcalRecurrence structure. The gcal-recurrence
functions simplify the task of handling and editing
recurrences. This structure is the first step towards
creating a new 'recurrence' property of an event.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
The overflow layout used to display "Other X events" text when
there is no enough space to accomodate more events.
But due to the way the events were sorted, some events are folded to
'Other events' popover even when the cell has enough space to accomodate
the event(s) or when it is not required to be folded.
We rework how the events will be sorted. First, the events are sorted by their
start dates(starting with the closest). But if two or more events have same start date
then they are sorted according to their lengths. And still if they have same start
date and length then they are sorted according to their modified times(the closest first).
https://bugzilla.gnome.org/show_bug.cgi?id=778478
Currently when creating new events, in both week and month view,
the popover header shows just the date
e.g.
"New Event on April 29"
"New event from April 29 to May 2"
It could be better to show fancier headers with relative dates
e.g.
"New Event Today",
"New Event Tomorrow",
"New Event next Monday",
"New Event from Tomorrow to May 2"
With this patch I change the header title according to the above
logic
https://bugzilla.gnome.org/show_bug.cgi?id=747479
Setting 'rid' to NULL in gcal_manager_update_event()
when 'All events' chosen allows us to modify
All and Future Instances of recurrent events correctly.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
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
Setting the recurrence-dialog transient for toplevel widget
allows us to take care of
ask_recurrence_modification_type() calls in the
various views.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
The recurrence-dialog opens only if the event to be modified
is a recurring event and only if the user doesn't cancel
the modification in the edit-dialog. If the user presses
'Cancel' in the recurrence-dialog after making modifications
in the edit-dialog, then no changes are applied.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
Whenever a user chooses to modify an event which is
recurring, a new dialog will open automatically when
the user clicks 'Done' or 'Delete' in edit-dialog,
after making the desired changes. This new dialog
will ask the user to choose the set of events to
which the changes will be applied. The options
include 'This Event Only', 'Subsequent Events'
and 'All Events'. The function returns true and
the changes take place only if the user chooses any
option other than 'Cancel' or <Alt+F4>.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
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
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