Currently, the repeat widgets - repeat_duration stack
and combobox are visible even when 'No Repeat' is
selected in repeat combobox.
This patch ensures that the repeat widgets are hidden
when 'No Repeat' is selected. When not selected,
repeat_duration_combo becomes visible which itself takes
care of the visibilty of the stack.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
An unnecessary condition check for assigning recurrence-changed
property of edit-dialog was causing a segmentation fault.
This patch removes this condition check and assigns the
recurrence-changed property correctly.
https://bugzilla.gnome.org/show_bug.cgi?id=782755
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
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
When setting an event, we might modify the event in such a way that
the edit dialog can be broken if it doesn't update.
Fix that by unconditionally updating the event dialog when setting
an event.
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=7771581https://bugzilla.gnome.org/show_bug.cgi?id=771581
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
In a Flatpak'd world, we cannot rely on the fact that
gnome-control-center binary will be installed at the
app's sandbox. But since it's a core app, we can rely
on the fact that it's available outside the sandbox.
To make it work, use DBus rather than raw spawn to
open control center.
GcalClock is an internal clock for GNOME Calendar that
sends a few utility signals, such as :day-changed and
:minute-changed.
It also watches for suspend/resume events to properly
send the signal right after the resume.
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
When we escape first, then truncate, we might end up truncating at
the middle of a special character sequence, breaking the markup.
Fix that by escaping after truncating.