diff options
author | NotZed <NotZed@HelixCode.com> | 2000-05-18 03:24:24 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2000-05-18 03:24:24 +0800 |
commit | 14bc1cbfc8a8c492e4a280655238159e004c53b3 (patch) | |
tree | a7c0f3dd3a277667989ca4f2d5f17a7a0d3a4b42 /camel/camel-folder-summary.c | |
parent | da0a13df5e4c8fdbf524a1a9f1ee9e593f5f0100 (diff) | |
download | gsoc2013-evolution-14bc1cbfc8a8c492e4a280655238159e004c53b3.tar.gz gsoc2013-evolution-14bc1cbfc8a8c492e4a280655238159e004c53b3.tar.zst gsoc2013-evolution-14bc1cbfc8a8c492e4a280655238159e004c53b3.zip |
All this basically to support user flags in the summary. They are not yet
All this basically to support user flags in the summary. They
are not yet saved to the message headers (complicates things a bit).
2000-05-17 NotZed <NotZed@HelixCode.com>
* providers/mbox/camel-mbox-folder.c (message_changed): Snoop
changes to user flags on the message into the summary as well.
* providers/mbox/camel-mbox-summary.c (camel_mbox_summary_init):
Changed version init to include the parent class version info
(i.e. add it not overwrite it).
* camel-folder-summary.c (message_info_new): Initialise user_flags
to empty.
(message_info_load): And load user flags.
(message_info_save): And save user flags.
(message_info_free): And free them.
(CAMEL_FOLDER_SUMMARY_VERSION): Bumped file revision.
* camel-folder-summary.h: Added user-flags to summary.
* camel-mime-message.c (camel_mime_message_set_user_flag): Dont
use a hashtable for user flags.
(camel_mime_message_get_user_flag): And changed here too.
(camel_flag_get): New interface to get a flag from a flag
list. Flag lists are easier to work with than hash tables, and
save memory too.
(camel_flag_set): And set.
(camel_flag_list_free): And free.
(free_key_only): Discard.
(finalize): Remove the flag list.
svn path=/trunk/; revision=3107
Diffstat (limited to 'camel/camel-folder-summary.c')
-rw-r--r-- | camel/camel-folder-summary.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/camel/camel-folder-summary.c b/camel/camel-folder-summary.c index 6f80a62325..01403a5cad 100644 --- a/camel/camel-folder-summary.c +++ b/camel/camel-folder-summary.c @@ -45,7 +45,7 @@ extern int strdup_count, malloc_count, free_count; #endif -#define CAMEL_FOLDER_SUMMARY_VERSION (3) +#define CAMEL_FOLDER_SUMMARY_VERSION (4) struct _CamelFolderSummaryPrivate { GHashTable *filter_charset; /* CamelMimeFilterCharset's indexed by source charset */ @@ -963,6 +963,7 @@ message_info_new(CamelFolderSummary *s, struct _header_raw *h) mi->subject = summary_format_string(h, "subject"); mi->from = summary_format_address(h, "from"); mi->to = summary_format_address(h, "to"); + mi->user_flags = NULL; mi->date_sent = header_decode_date(header_raw_find(&h, "date", NULL), NULL); mi->date_received = 0; @@ -974,6 +975,8 @@ static CamelMessageInfo * message_info_load(CamelFolderSummary *s, FILE *in) { CamelMessageInfo *mi; + guint count; + int i; mi = g_malloc0(s->message_info_size); @@ -989,12 +992,24 @@ message_info_load(CamelFolderSummary *s, FILE *in) camel_folder_summary_decode_string(in, &mi->to); mi->content = NULL; + camel_folder_summary_decode_uint32(in, &count); + for (i=0;i<count;i++) { + char *name; + camel_folder_summary_decode_string(in, &name); + camel_flag_set(&mi->user_flags, name); + g_free(name); + } + return mi; } static int message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *mi) { + guint32 count; + int i; + CamelFlag *flag; + io(printf("Saving message info\n")); camel_folder_summary_encode_string(out, mi->uid); @@ -1004,7 +1019,15 @@ message_info_save(CamelFolderSummary *s, FILE *out, CamelMessageInfo *mi) /* camel_folder_summary_encode_uint32(out, ms->xev_offset);*/ camel_folder_summary_encode_string(out, mi->subject); camel_folder_summary_encode_string(out, mi->from); - return camel_folder_summary_encode_string(out, mi->to); + camel_folder_summary_encode_string(out, mi->to); + + count = camel_flag_list_size(&mi->user_flags); + camel_folder_summary_encode_uint32(out, count); + flag = mi->user_flags; + while (flag) { + camel_folder_summary_encode_string(out, flag->name); + flag = flag->next; + } } static void @@ -1014,6 +1037,7 @@ message_info_free(CamelFolderSummary *s, CamelMessageInfo *mi) g_free(mi->subject); g_free(mi->from); g_free(mi->to); + camel_flag_list_free(&mi->user_flags); g_free(mi); } |