static gchar * cell_date_edit_text_get_text (ECellText *cell, ETableModel *model, gint col, gint row) { ECellDateEditText *ecd = E_CELL_DATE_EDIT_TEXT (cell); ECellDateEditValue *dv = e_table_model_value_at (model, col, row); icaltimezone *timezone; struct tm tmp_tm; if (!dv) return g_strdup (""); timezone = e_cell_date_edit_text_get_timezone (ecd); /* Note that although the property may be in a different * timezone, we convert it to the current timezone to display * it in the table. If the user actually edits the value, * it will be set to the current timezone. See set_value (). */ tmp_tm = icaltimetype_to_tm_with_zone (&dv->tt, dv->zone, timezone); return e_datetime_format_format_tm ( "calendar", "table", dv->tt.is_date ? DTFormatKindDate : DTFormatKindDateTime, &tmp_tm); }
static gchar * format_dt (const ECalComponentDateTime *dt, GHashTable *timezones, icaltimezone *users_zone) { struct tm tm; g_return_val_if_fail (dt != NULL, NULL); g_return_val_if_fail (timezones != NULL, NULL); if (!dt->value) return NULL; dt->value->zone = NULL; if (dt->tzid) { dt->value->zone = g_hash_table_lookup (timezones, dt->tzid); if (!dt->value->zone) dt->value->zone = icaltimezone_get_builtin_timezone_from_tzid (dt->tzid); if (!dt->value->zone && g_ascii_strcasecmp (dt->tzid, "UTC") == 0) dt->value->zone = icaltimezone_get_utc_timezone (); } if (dt->value->zone) tm = icaltimetype_to_tm_with_zone (dt->value, (icaltimezone *) dt->value->zone, users_zone); else tm = icaltimetype_to_tm (dt->value); return e_datetime_format_format_tm ("calendar", "table", dt->value->is_date ? DTFormatKindDate : DTFormatKindDateTime, &tm); }
static void dates_fill_details_dialog (DatesView *view, DatesData *d) { const gchar *location = NULL; gchar *string = NULL; GSList *text_list; ECalComponentDateTime time; struct tm timem; gchar time_text[256]; GtkTextBuffer *buffer; ECalComponentText summary; GtkWidget *widget; icaltimezone* from_zone; /* Set summary entry */ e_cal_component_get_summary (d->comp, &summary); widget = d->details_summary_entry; if (summary.value) gtk_entry_set_text (GTK_ENTRY (widget), summary.value); else if (summary.altrep) gtk_entry_set_text (GTK_ENTRY (widget), summary.altrep); else gtk_entry_set_text (GTK_ENTRY (widget), ""); /* Set event description textview */ /* NOTE: Docs say that only journal entries can have more than one * description, so just use text_list->data */ e_cal_component_get_location (d->comp, &location); e_cal_component_get_description_list (d->comp, &text_list); buffer = gtk_text_view_get_buffer ( GTK_TEXT_VIEW (d->details_textview)); /* NOTE: If there's a location property, we move it to the description */ if (location) string = g_strconcat (location, "\n", NULL); gtk_text_buffer_set_text (buffer, string ? string : "", -1); g_free (string); if (text_list) { ECalComponentText *desc = text_list->data; if (desc->value) { GtkTextIter iter; gtk_text_buffer_get_end_iter (buffer, &iter); gtk_text_buffer_insert (buffer, &iter, desc->value, -1); } e_cal_component_free_text_list (text_list); } /* Set time buttons and dialog */ e_cal_component_get_dtstart (d->comp, &time); from_zone = icaltimezone_get_builtin_timezone_from_tzid (time.tzid); timem = icaltimetype_to_tm_with_zone (time.value, from_zone, dates_view_get_zone(view)); strftime (time_text, 256, TIME_MARKUP, &timem); gtk_label_set_markup (GTK_LABEL (d->details_start_label), time_text); e_cal_component_free_datetime (&time); e_cal_component_get_dtend (d->comp, &time); from_zone = icaltimezone_get_builtin_timezone_from_tzid (time.tzid); timem = icaltimetype_to_tm_with_zone (time.value, from_zone, dates_view_get_zone(view)); strftime (time_text, 256, TIME_MARKUP, &timem); gtk_label_set_markup (GTK_LABEL (d->details_end_label), time_text); e_cal_component_free_datetime (&time); }
static void set_itip_view (SunOneInvitationList *list, int row) { SunOneInvitationListPrivate *priv = list->priv; ECalComponent *comp; ECalComponentText text; const char *string; ECalComponentDateTime datetime; GString *gstring = NULL; GSList *description_list, *l; SunOneItipView *itip_view; ECalComponentOrganizer organizer; if (row == -1) { if (GTK_WIDGET_VISIBLE (priv->control)) gtk_widget_hide (priv->control); return; } comp = sunone_invitation_list_model_get_comp (priv->model, row); if (!comp) return; itip_view = (SunOneItipView *)priv->control; sunone_itip_view_set_mode (itip_view, SUNONE_ITIP_VIEW_MODE_REQUEST); sunone_itip_view_set_item_type (itip_view, E_CAL_SOURCE_TYPE_EVENT); e_cal_component_get_organizer (comp, &organizer); sunone_itip_view_set_organizer (itip_view, organizer.cn ? organizer.cn : itip_strip_mailto (organizer.value)); sunone_itip_view_set_sentby (itip_view, organizer.sentby); e_cal_component_get_summary (comp, &text); sunone_itip_view_set_summary (itip_view, text.value ? text.value : _("None")); e_cal_component_get_location (comp, &string); sunone_itip_view_set_location (itip_view, string); e_cal_component_get_description_list (comp, &description_list); for (l = description_list; l; l = l->next) { ECalComponentText *text = l->data; if (!gstring && text->value) gstring = g_string_new (text->value); else if (text->value) g_string_append_printf (gstring, "\n\n%s", text->value); } e_cal_component_free_text_list (description_list); if (gstring) { sunone_itip_view_set_description (itip_view, gstring->str); g_string_free (gstring, TRUE); } else sunone_itip_view_set_description (itip_view, NULL); e_cal_component_get_dtstart (comp, &datetime); if (datetime.value) { struct tm start_tm; start_tm = icaltimetype_to_tm_with_zone (datetime.value, icaltimezone_get_utc_timezone (), priv->model->zone); sunone_itip_view_set_start (itip_view, &start_tm); } e_cal_component_free_datetime (&datetime); e_cal_component_get_dtend (comp, &datetime); if (datetime.value) { struct tm end_tm; end_tm = icaltimetype_to_tm_with_zone (datetime.value, icaltimezone_get_utc_timezone (), priv->model->zone); sunone_itip_view_set_end (itip_view, &end_tm); } e_cal_component_free_datetime (&datetime); /* Recurrence info */ sunone_itip_view_clear_upper_info_items (itip_view); if (e_cal_component_has_recurrences (comp)) { sunone_itip_view_add_upper_info_item (itip_view, SUNONE_ITIP_VIEW_INFO_ITEM_TYPE_INFO, "This meeting recurs"); } sunone_itip_view_set_status (itip_view, NULL); sunone_itip_view_set_comment (itip_view, NULL); sunone_itip_view_set_show_rsvp (itip_view, FALSE); if (!GTK_WIDGET_VISIBLE (priv->control)) gtk_widget_show (priv->control); }