search: use new compare function
This commit is contained in:
+1
-26
@@ -218,7 +218,6 @@ sort_by_event (GtkListBoxRow *row1,
|
|||||||
GcalEventData *ev1, *ev2;
|
GcalEventData *ev1, *ev2;
|
||||||
ECalComponentDateTime date1, date2;
|
ECalComponentDateTime date1, date2;
|
||||||
gint result;
|
gint result;
|
||||||
time_t start1, start2, diff1, diff2;
|
|
||||||
|
|
||||||
priv = gcal_search_view_get_instance_private (GCAL_SEARCH_VIEW (user_data));
|
priv = gcal_search_view_get_instance_private (GCAL_SEARCH_VIEW (user_data));
|
||||||
|
|
||||||
@@ -232,31 +231,7 @@ sort_by_event (GtkListBoxRow *row1,
|
|||||||
e_cal_component_get_dtstart (ev1->event_component, &date1);
|
e_cal_component_get_dtstart (ev1->event_component, &date1);
|
||||||
e_cal_component_get_dtstart (ev2->event_component, &date2);
|
e_cal_component_get_dtstart (ev2->event_component, &date2);
|
||||||
|
|
||||||
start1 = icaltime_as_timet_with_zone (*(date1.value), date1.value->zone != NULL ? date1.value->zone : e_cal_util_get_system_timezone ());
|
result = icaltime_compare_with_current (date1.value, date2.value, &(priv->current_utc_date));
|
||||||
start2 = icaltime_as_timet_with_zone (*(date2.value), date2.value->zone != NULL ? date2.value->zone : e_cal_util_get_system_timezone ());
|
|
||||||
diff1 = start1 - priv->current_utc_date;
|
|
||||||
diff2 = start2 - priv->current_utc_date;
|
|
||||||
|
|
||||||
if (diff1 == diff2)
|
|
||||||
{
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (diff1 == 0)
|
|
||||||
result = -1;
|
|
||||||
else if (diff2 == 0)
|
|
||||||
result = 1;
|
|
||||||
|
|
||||||
if (diff1 > 0 && diff2 < 0)
|
|
||||||
result = -1;
|
|
||||||
else if (diff2 > 0 && diff1 < 0)
|
|
||||||
result = 1;
|
|
||||||
else if (diff1 < 0 && diff2 < 0)
|
|
||||||
result = ABS (diff1) - ABS (diff2);
|
|
||||||
else if (diff1 > 0 && diff2 > 0)
|
|
||||||
result = diff1 - diff2;
|
|
||||||
}
|
|
||||||
|
|
||||||
e_cal_component_free_datetime (&date1);
|
e_cal_component_free_datetime (&date1);
|
||||||
e_cal_component_free_datetime (&date2);
|
e_cal_component_free_datetime (&date2);
|
||||||
|
|||||||
@@ -62,6 +62,30 @@ free_event_data (gpointer data)
|
|||||||
g_free (event_data);
|
g_free (event_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
sort_event_data (gconstpointer a,
|
||||||
|
gconstpointer b,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
ECalComponent *comp1, *comp2;
|
||||||
|
ECalComponentDateTime date1, date2;
|
||||||
|
gint result;
|
||||||
|
|
||||||
|
|
||||||
|
comp1 = ((GcalEventData*) a)->event_component;
|
||||||
|
comp2 = ((GcalEventData*) b)->event_component;
|
||||||
|
|
||||||
|
e_cal_component_get_dtstart (comp1, &date1);
|
||||||
|
e_cal_component_get_dtstart (comp2, &date2);
|
||||||
|
|
||||||
|
result = icaltime_compare_with_current (date1.value, date2.value, user_data);
|
||||||
|
|
||||||
|
e_cal_component_free_datetime (&date1);
|
||||||
|
e_cal_component_free_datetime (&date2);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
execute_search (GcalShellSearchProvider *search_provider)
|
execute_search (GcalShellSearchProvider *search_provider)
|
||||||
{
|
{
|
||||||
@@ -309,6 +333,7 @@ query_completed_cb (GcalShellSearchProvider *search_provider,
|
|||||||
|
|
||||||
GcalEventData *data;
|
GcalEventData *data;
|
||||||
gchar *uuid;
|
gchar *uuid;
|
||||||
|
time_t current_time_t;
|
||||||
|
|
||||||
g_hash_table_remove_all (priv->events);
|
g_hash_table_remove_all (priv->events);
|
||||||
|
|
||||||
@@ -320,8 +345,9 @@ query_completed_cb (GcalShellSearchProvider *search_provider,
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
g_variant_builder_init (&builder, G_VARIANT_TYPE ("as"));
|
||||||
/* FIXME: add sorting and ranking */
|
|
||||||
//events = g_list_sort (events, search_compare_func);
|
current_time_t = time (NULL);
|
||||||
|
events = g_list_sort_with_data (events, sort_event_data, ¤t_time_t);
|
||||||
for (l = events; l != NULL; l = g_list_next (l))
|
for (l = events; l != NULL; l = g_list_next (l))
|
||||||
{
|
{
|
||||||
data = l->data;
|
data = l->data;
|
||||||
|
|||||||
Reference in New Issue
Block a user