void camel_gw_summary_add_offline (CamelFolderSummary *summary, const char *uid, CamelMimeMessage *message, const CamelMessageInfo *info) { CamelGroupwiseMessageInfo *mi ; const CamelFlag *flag ; const CamelTag *tag ; /* Create summary entry */ mi = (CamelGroupwiseMessageInfo *)camel_folder_summary_info_new_from_message (summary, message) ; /* Copy flags 'n' tags */ mi->info.flags = camel_message_info_flags(info) ; flag = camel_message_info_user_flags(info) ; while (flag) { camel_message_info_set_user_flag((CamelMessageInfo *)mi, flag->name, TRUE); flag = flag->next; } tag = camel_message_info_user_tags(info); while (tag) { camel_message_info_set_user_tag((CamelMessageInfo *)mi, tag->name, tag->value); tag = tag->next; } mi->info.size = camel_message_info_size(info); mi->info.uid = g_strdup (uid); camel_folder_summary_add (summary, (CamelMessageInfo *)mi); }
static gboolean vee_info_set_user_tag (CamelMessageInfo *mi, const gchar *name, const gchar *value) { gint res = FALSE; if (mi->uid) { CamelMessageInfo *rmi = camel_folder_summary_uid (((CamelVeeMessageInfo *)mi)->summary, mi->uid+8); HANDLE_NULL_INFO (FALSE); res = camel_message_info_set_user_tag (rmi, name, value); camel_message_info_free (rmi); } return res; }
static gboolean vee_info_set_user_tag (CamelMessageInfo *mi, const gchar *name, const gchar *value) { gint res = FALSE; if (mi->uid) { CamelMessageInfo *rmi = camel_folder_summary_get (((CamelVeeMessageInfo *) mi)->orig_summary, mi->uid + 8); CamelFolder *folder = camel_folder_summary_get_folder (mi->summary); HANDLE_NULL_INFO (FALSE); /* ignore changes done in the folder itself, * unless it's a vTrash or vJunk folder */ if (!CAMEL_IS_VTRASH_FOLDER (folder)) camel_vee_folder_ignore_next_changed_event ((CamelVeeFolder *) folder, camel_folder_summary_get_folder (rmi->summary)); res = camel_message_info_set_user_tag (rmi, name, value); camel_message_info_free (rmi); } return res; }
static gboolean camel_ews_utils_update_follow_up_flags (EEwsItem *item, CamelMessageInfo *info) { gboolean changed = FALSE, found; time_t completed_tt, dueby_tt; const gchar *followup_name; gint flag_status; /* PidTagFlagStatus */ found = FALSE; flag_status = e_ews_item_get_extended_property_as_int (item, NULL, 0x1090, &found); if (!found) flag_status = 0; /* PidTagFlagCompleteTime */ found = FALSE; completed_tt = e_ews_item_get_extended_property_as_time (item, NULL, 0x1091, &found); if (!found) completed_tt = (time_t) 0; /* PidLidFlagRequest */ found = FALSE; followup_name = e_ews_item_get_extended_property_as_string (item, "Common", 0x8530, &found); if (!found) followup_name = NULL; /* PidLidTaskDueDate */ found = FALSE; dueby_tt = e_ews_item_get_extended_property_as_time (item, "Task", 0x8105, &found); if (!found) dueby_tt = (time_t) 0; if (flag_status == 1) { /* complete */ if (!camel_message_info_get_user_tag (info, "follow-up")) changed = camel_message_info_set_user_tag (info, "follow-up", followup_name ? followup_name : "follow-up") || changed; if (completed_tt != (time_t) 0) { gchar *text = camel_header_format_date (completed_tt, 0); changed = camel_message_info_set_user_tag (info, "completed-on", text) || changed; g_free (text); } else { changed = camel_message_info_set_user_tag (info, "completed-on", NULL) || changed; } } else if (flag_status == 2) { /* follow-up */ changed = camel_message_info_set_user_tag (info, "follow-up", followup_name ? followup_name : "follow-up") || changed; changed = camel_message_info_set_user_tag (info, "completed-on", NULL) || changed; if (dueby_tt != (time_t) 0) { gchar *text = camel_header_format_date (dueby_tt, 0); changed = camel_message_info_set_user_tag (info, "due-by", text) || changed; g_free (text); } else { changed = camel_message_info_set_user_tag (info, "due-by", NULL) || changed; } } else { changed = camel_message_info_set_user_tag (info, "follow-up", NULL) || changed; changed = camel_message_info_set_user_tag (info, "completed-on", NULL) || changed; changed = camel_message_info_set_user_tag (info, "due-by", NULL) || changed; } return changed; }