recurrence: add a function to check equality of recurrences

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
This commit is contained in:
Yash Singh
2017-07-13 13:32:49 -03:00
committed by Georges Basile Stavracas Neto
parent f58561fc4b
commit 59fcd01192
2 changed files with 42 additions and 6 deletions
+39 -6
View File
@@ -89,6 +89,45 @@ gcal_recurrence_free (GcalRecurrence *recur)
g_slice_free (GcalRecurrence, recur);
}
/**
* gcal_recurrence_is_equal:
* @recur1: (nullable): a #GcalRecurrence
* @recur2: (nullable): a #GcalRecurrence
*
* Checks if @recur1 and @recur2 are equal or not
*
* Returns: %TRUE if both are equal, %FALSE otherwise
*/
gboolean
gcal_recurrence_is_equal (GcalRecurrence *recur1,
GcalRecurrence *recur2)
{
if (recur1 == recur2)
return TRUE;
else if (!recur1 || !recur2)
return FALSE;
if (recur1->frequency != recur2->frequency)
return FALSE;
if (recur1->limit_type != recur2->limit_type)
return FALSE;
if (recur1->limit_type == GCAL_RECURRENCE_UNTIL)
{
if (!g_date_time_equal (recur1->limit.until, recur2->limit.until))
return FALSE;
}
else if (recur1->limit_type == GCAL_RECURRENCE_COUNT)
{
if (recur1->limit.count != recur2->limit.count)
return FALSE;
}
return TRUE;
}
/**
* gcal_recurrence_parse_recurrence_rules:
* @comp: an #ECalComponent
@@ -192,12 +231,6 @@ gcal_recurrence_to_rrule (GcalRecurrence *recur)
rrule = g_new0 (struct icalrecurrencetype, 1);
icalrecurrencetype_clear (rrule);
rrule->until.second = 0;
rrule->until.minute = 0;
rrule->until.hour = 0;
rrule->until.is_date = TRUE;
rrule->until.is_utc = FALSE;
switch (recur->frequency)
{
case GCAL_RECURRENCE_DAILY:
+3
View File
@@ -67,6 +67,9 @@ GcalRecurrence* gcal_recurrence_copy (GcalRecurrence
void gcal_recurrence_free (GcalRecurrence *recur);
gboolean gcal_recurrence_is_equal (GcalRecurrence *recur1,
GcalRecurrence *recur2);
GcalRecurrence* gcal_recurrence_parse_recurrence_rules (ECalComponent *comp);
struct icalrecurrencetype* gcal_recurrence_to_rrule (GcalRecurrence *recur);