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);
|
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:
|
* gcal_recurrence_parse_recurrence_rules:
|
||||||
* @comp: an #ECalComponent
|
* @comp: an #ECalComponent
|
||||||
@@ -192,12 +231,6 @@ gcal_recurrence_to_rrule (GcalRecurrence *recur)
|
|||||||
rrule = g_new0 (struct icalrecurrencetype, 1);
|
rrule = g_new0 (struct icalrecurrencetype, 1);
|
||||||
icalrecurrencetype_clear (rrule);
|
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)
|
switch (recur->frequency)
|
||||||
{
|
{
|
||||||
case GCAL_RECURRENCE_DAILY:
|
case GCAL_RECURRENCE_DAILY:
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ GcalRecurrence* gcal_recurrence_copy (GcalRecurrence
|
|||||||
|
|
||||||
void gcal_recurrence_free (GcalRecurrence *recur);
|
void gcal_recurrence_free (GcalRecurrence *recur);
|
||||||
|
|
||||||
|
gboolean gcal_recurrence_is_equal (GcalRecurrence *recur1,
|
||||||
|
GcalRecurrence *recur2);
|
||||||
|
|
||||||
GcalRecurrence* gcal_recurrence_parse_recurrence_rules (ECalComponent *comp);
|
GcalRecurrence* gcal_recurrence_parse_recurrence_rules (ECalComponent *comp);
|
||||||
|
|
||||||
struct icalrecurrencetype* gcal_recurrence_to_rrule (GcalRecurrence *recur);
|
struct icalrecurrencetype* gcal_recurrence_to_rrule (GcalRecurrence *recur);
|
||||||
|
|||||||
Reference in New Issue
Block a user