X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=webcit%2Fmessages.h;h=eb014f43852f55452d9afab34c491feccb266abf;hb=aeade41982c6c9a3e745a3b3c8262a3ec6952670;hp=eac391a2881a3587400705c4ee52121d1f510cfe;hpb=12ff276e33d5664b889233798dc35c0f04b895a7;p=citadel.git diff --git a/webcit/messages.h b/webcit/messages.h index eac391a28..eb014f438 100644 --- a/webcit/messages.h +++ b/webcit/messages.h @@ -1,9 +1,22 @@ +/* + * Copyright (c) 1996-2013 by the citadel.org team + * + * This program is open source software. You can redistribute it and/or + * modify it under the terms of the GNU General Public License, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ +extern CtxType CTX_MAILSUM; +extern CtxType CTX_MIME_ATACH; extern HashList *MsgHeaderHandler; extern HashList *MimeRenderHandler; extern HashList *ReadLoopHandler; typedef struct wc_mime_attachment wc_mime_attachment; -typedef void (*RenderMimeFunc)(wc_mime_attachment *Mime, StrBuf *RawData, StrBuf *FoundCharset); +typedef void (*RenderMimeFunc)(StrBuf *Target, WCTemplputParams *TP, StrBuf *FoundCharset); typedef struct _RenderMimeFuncStruct { RenderMimeFunc f; } RenderMimeFuncStruct; @@ -25,10 +38,13 @@ struct wc_mime_attachment { }; void DestroyMime(void *vMime); +#define MSGFLAG_READ (1<<0) typedef struct _message_summary { - time_t date; /* its creation date */ long msgnum; /* the message number on the citadel server */ + int Flags; + + time_t date; /* its creation date */ int nhdr; int format_type; StrBuf *euid; @@ -36,13 +52,16 @@ typedef struct _message_summary { StrBuf *to; /* the recipient */ StrBuf *subj; /* the title / subject */ StrBuf *reply_inreplyto; + long reply_inreplyto_hash; StrBuf *reply_references; - StrBuf *reply_to; + long reply_references_hash; + StrBuf *ReplyTo; StrBuf *cccc; StrBuf *hnod; StrBuf *AllRcpt; StrBuf *Room; StrBuf *Rfca; + StrBuf *EnvTo; StrBuf *OtherNode; const StrBuf *PartNum; @@ -52,7 +71,6 @@ typedef struct _message_summary { HashList *AllAttach; - int is_new; int hasattachments; @@ -77,7 +95,7 @@ static inline message_summary* GetMessagePtrAt(int n, HashList *Summ) typedef void (*ExamineMsgHeaderFunc)(message_summary *Msg, StrBuf *HdrLine, StrBuf *FoundCharset); -void evaluate_mime_part(message_summary *Msg, wc_mime_attachment *Mime); +void evaluate_mime_part(StrBuf *Target, WCTemplputParams *TP); typedef enum _eCustomRoomRenderer { @@ -139,6 +157,7 @@ typedef struct _SharedMessageStatus { long startmsg; /* which is the start message? */ long nummsgs; /* How many messages are available to your view? */ + long numNewmsgs; /* if you load the seen-status, this is the count of them. */ long num_displayed; /* counted up for LoadMsgFromServer */ /* TODO: unclear who should access this and why */ long lowest_found; /* smallest Message ID found; */ @@ -146,7 +165,8 @@ typedef struct _SharedMessageStatus { } SharedMessageStatus; -int load_msg_ptrs(const char *servcmd, +int load_msg_ptrs(const char *servcmd, + const char *filter, SharedMessageStatus *Stat, load_msg_ptrs_detailheaders LH); @@ -154,7 +174,9 @@ typedef int (*GetParamsGetServerCall_func)(SharedMessageStatus *Stat, void **ViewSpecific, long oper, char *cmd, - long len); + long len, + char *filter, + long flen); typedef int (*PrintViewHeader_func)(SharedMessageStatus *Stat, void **ViewSpecific); @@ -187,6 +209,13 @@ void RegisterReadLoopHandlerset( */ GetParamsGetServerCall_func GetParamsGetServerCall, + /** + * PrintpageHeader prints the surrounding information like iconbar, header etc. + * by default, output_headers() is called. + * + */ + PrintViewHeader_func PrintPageHeader, + /** * PrintViewHeader is here to print informations infront of your messages. * The message list is already loaded & sorted (if) so you can evaluate @@ -241,3 +270,26 @@ int ParseMessageListHeaders_Detail(StrBuf *Line, const char **pos, message_summary *Msg, StrBuf *ConversionBuffer); + + + +/** + * @brief function to register the availability to render a specific message + * @param HeaderName Mimetype we know howto display + * @param HdrNLen length... + * @param InlineRenderable Should we announce to citserver that we want to receive these mimeparts immediately? + * @param Priority if multipart/alternative; which mimepart/Renderer should be prefered? (only applies if InlineRenderable) + */ +void RegisterMimeRenderer(const char *HeaderName, long HdrNLen, + RenderMimeFunc MimeRenderer, + int InlineRenderable, + int Priority); + + +/** + * @brief fill the header parts of Msg with the headers loaded by MSG0 + * @param Msg empty message struct, only preinitialized with the msgid + * @param FoundCharset buffer with the prefered charset of the headers + * @param buf linebuffer used to buffer citserver replies + */ +int ReadOneMessageSummary(message_summary *Msg, StrBuf *FoundCharset, StrBuf *Buf);