aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers/imap/camel-imap-summary.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/providers/imap/camel-imap-summary.c')
-rw-r--r--camel/providers/imap/camel-imap-summary.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/camel/providers/imap/camel-imap-summary.c b/camel/providers/imap/camel-imap-summary.c
index cd7444559e..e662f013c9 100644
--- a/camel/providers/imap/camel-imap-summary.c
+++ b/camel/providers/imap/camel-imap-summary.c
@@ -197,3 +197,33 @@ content_info_save (CamelFolderSummary *s, FILE *out,
} else
return fputc (0, out);
}
+
+void
+camel_imap_summary_add_offline (CamelFolderSummary *summary, const char *uid,
+ CamelMimeMessage *message,
+ const CamelMessageInfo *info)
+{
+ CamelMessageInfo *mi;
+ CamelFlag *flag;
+ CamelTag *tag;
+
+ /* Create summary entry */
+ mi = camel_folder_summary_info_new_from_message (summary, message);
+
+ /* Copy flags 'n' tags */
+ mi->flags = info->flags;
+ flag = info->user_flags;
+ while (flag) {
+ camel_flag_set (&mi->user_flags, flag->name, TRUE);
+ flag = flag->next;
+ }
+ tag = info->user_tags;
+ while (tag) {
+ camel_tag_set (&mi->user_tags, tag->name, tag->value);
+ tag = tag->next;
+ }
+
+ /* Set uid and add to summary */
+ camel_message_info_set_uid (mi, g_strdup (uid));
+ camel_folder_summary_add (summary, mi);
+}