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:
committed by
Georges Basile Stavracas Neto
parent
f58561fc4b
commit
59fcd01192
+39
-6
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user