static gboolean execute_search (GcalShellSearchProvider *search_provider) { GcalShellSearchProviderPrivate *priv; guint i; gchar *search_query; icaltimezone *zone; time_t range_start, range_end; priv = search_provider->priv; if (!gcal_manager_load_completed (priv->manager)) return TRUE; zone = gcal_manager_get_system_timezone (priv->manager); priv->pending_search->date = icaltime_current_time_with_zone (zone); icaltime_adjust (&(priv->pending_search->date), -7, 0, 0, 0); /* -1 weeks from today */ range_start = icaltime_as_timet_with_zone (priv->pending_search->date, zone); icaltime_adjust (&(priv->pending_search->date), 21 * 2, 0, 0, 0); /* +3 weeks from today */ range_end = icaltime_as_timet_with_zone (priv->pending_search->date, zone); gcal_manager_set_shell_search_subscriber (priv->manager, E_CAL_DATA_MODEL_SUBSCRIBER (search_provider), range_start, range_end); search_query = g_strdup_printf ("(or (contains? \"summary\" \"%s\") (contains? \"description\" \"%s\"))", priv->pending_search->terms[0], priv->pending_search->terms[0]); for (i = 1; i < g_strv_length (priv->pending_search->terms); i++) { gchar *complete_query; gchar *second_query = g_strdup_printf ("(or (contains? \"summary\" \"%s\") (contains? \"description\" \"%s\"))", priv->pending_search->terms[0], priv->pending_search->terms[0]); complete_query = g_strdup_printf ("(and %s %s)", search_query, second_query); g_free (second_query); g_free (search_query); search_query = complete_query; } gcal_manager_set_shell_search_query (priv->manager, search_query); g_free (search_query); priv->scheduled_search_id = 0; g_application_hold (g_application_get_default ()); return FALSE; }
static void gcal_year_view_component_added (ECalDataModelSubscriber *subscriber, ECalClient *client, ECalComponent *comp) { GcalYearViewPrivate *priv; GcalYearView *year_view = GCAL_YEAR_VIEW (subscriber); GcalEventData *data; GList **days_widgets_array; GList *l; gint i, days_span; ECalComponentDateTime date; time_t event_start, event_end, range_start, range_end; icaltimezone *zone; priv = year_view->priv; update_selected_dates_from_button_data (year_view); days_span = icaltime_day_of_year(*(priv->end_selected_date)) - icaltime_day_of_year(*(priv->start_selected_date)) + 1; days_widgets_array = g_new0 (GList*, days_span); data = g_new0 (GcalEventData, 1); data->source = e_client_get_source (E_CLIENT (client)); data->event_component = e_cal_component_clone (comp); /* check if event belongs to range */ zone = gcal_manager_get_system_timezone (priv->manager); range_start = icaltime_as_timet_with_zone (*(priv->start_selected_date), zone); range_end = icaltime_as_timet_with_zone (*(priv->end_selected_date), zone); e_cal_component_get_dtstart (comp, &date); event_start = icaltime_as_timet_with_zone (*(date.value), date.value->zone != NULL ? date.value->zone : zone); e_cal_component_free_datetime (&date); e_cal_component_get_dtend (comp, &date); if (date.value != NULL) event_end = icaltime_as_timet_with_zone (*(date.value), date.value->zone != NULL ? date.value->zone : zone); else event_end = event_start; e_cal_component_free_datetime (&date); if (!((event_start <= range_start && event_end >= range_end) || (event_start >= range_start && event_end <= range_end) || (event_start >= range_start && event_start <= range_end) || (event_end >= range_start && event_end <= range_end))) { g_object_unref (data->event_component); goto out; } add_event_to_day_array (year_view, data, days_widgets_array, days_span); gtk_stack_set_visible_child_name (GTK_STACK (priv->navigator_stack), "events-list"); for (i = 0; i < days_span; i++) { GList *current_day = days_widgets_array[i]; for (l = current_day; l != NULL; l = g_list_next (l)) { GtkWidget *child_widget = l->data; gtk_widget_show (child_widget); g_signal_connect (child_widget, "activate", G_CALLBACK (event_activated), year_view); g_object_set_data (G_OBJECT (child_widget), "shift", GINT_TO_POINTER (i)); gtk_container_add (GTK_CONTAINER (priv->events_sidebar), child_widget); } g_list_free (current_day); } out: g_free (data); g_free (days_widgets_array); }