/*
- * $Id$
- *
* Functions which deal with the fetching and displaying of messages.
- *
*/
#include "webcit.h"
int state=0;
Buf = NewStrBuf();
- lprintf(9, "MSG4 %ld|%s\n", Msg->msgnum, ChrPtr(Msg->PartNum));
if (Msg->PartNum != NULL) {
serv_printf("MSG4 %ld|%s", Msg->msgnum, ChrPtr(Msg->PartNum));
}
-
-
-void load_seen_flags(void)
+/**
+ * \brief sets FlagToSet for each of ScanMe that appears in MatchMSet
+ * \param ScanMe List of BasicMsgStruct to be searched it MatchSet
+ * \param MatchMSet MSet we want to flag
+ * \param FlagToSet Flag to set on each BasicMsgStruct->Flags if in MSet
+ */
+void SetFlagsFromMSet(HashList *ScanMe, MSet *MatchMSet, int FlagToSet, int Reverse)
{
- message_summary *Msg;
const char *HashKey;
long HKLen;
HashPos *at;
void *vMsg;
+ message_summary *Msg;
+
+ at = GetNewHashPos(ScanMe, 0);
+ while (GetNextHashPos(ScanMe, at, &HKLen, &HashKey, &vMsg)) {
+ /* Are you a new message, or an old message? */
+ Msg = (message_summary*) vMsg;
+ if (Reverse && IsInMSetList(MatchMSet, Msg->msgnum)) {
+ Msg->Flags = Msg->Flags | FlagToSet;
+ }
+ else if (!Reverse && !IsInMSetList(MatchMSet, Msg->msgnum)) {
+ Msg->Flags = Msg->Flags | FlagToSet;
+ }
+ }
+ DeleteHashPos(&at);
+}
+
+
+void load_seen_flags(void)
+{
StrBuf *OldMsg;
wcsession *WCC = WC;
+ MSet *MatchMSet;
OldMsg = NewStrBuf();
serv_puts("GTSN");
FreeStrBuf(&OldMsg);
return;
}
- at = GetNewHashPos(WCC->summ, 0);
- while (GetNextHashPos(WCC->summ, at, &HKLen, &HashKey, &vMsg)) {
- /* Are you a new message, or an old message? */
- Msg = (message_summary*) vMsg;
- if (is_msg_in_mset(ChrPtr(OldMsg), Msg->msgnum)) {
- Msg->is_new = 0;
- }
- else {
- Msg->is_new = 1;
- }
+
+ if (ParseMSet(&MatchMSet, OldMsg))
+ {
+ SetFlagsFromMSet(WCC->summ, MatchMSet, MSGFLAG_READ, 0);
}
+ DeleteMSet(&MatchMSet);
FreeStrBuf(&OldMsg);
- DeleteHashPos(&at);
}
extern readloop_struct rlid[];
while ( GetNextHashPos(WCC->summ, at, &HKLen, &HashKey, &vMsg)) {
Msg = (message_summary*) vMsg;
if ((Msg->msgnum >= Stat.startmsg) && (Stat.num_displayed <= Stat.maxmsgs)) {
- ViewMsg->LoadMsgFromServer(&Stat, &ViewSpecific, Msg, Msg->is_new, i);
+ ViewMsg->LoadMsgFromServer(&Stat,
+ &ViewSpecific,
+ Msg,
+ (Msg->Flags & MSGFLAG_READ) != 0,
+ i);
}
i++;
}
att->Data = WCC->upload;
WCC->upload = NULL;
WCC->upload_length = 0;
- display_enter();
- return;
+
+ /* and keep going, because we don't do attachments in two posts anymore */
}
- if (havebstr("cancel_button")) {
+ if (!strcasecmp(bstr("submit_action"), "cancel")) {
sprintf(WCC->ImportantMessage,
_("Cancelled. Message was not posted."));
- } else if (havebstr("attach_button")) {
- display_enter();
- return;
} else if (lbstr("postseq") == dont_post) {
sprintf(WCC->ImportantMessage,
_("Automatically cancelled because you have already "
"saved this message."));
- } else if (havebstr("remove_attach_button")) {
- /* now thats st00pit. need to find it by name. */
- void *vAtt;
- StrBuf *WhichAttachment;
- HashPos *at;
- long len;
- const char *key;
-
- WhichAttachment = NewStrBufDup(sbstr("which_attachment"));
- StrBufUnescape(WhichAttachment, 0);
- at = GetNewHashPos(WCC->attachments, 0);
- do {
- GetHashPos(WCC->attachments, at, &len, &key, &vAtt);
-
- att = (wc_mime_attachment*) vAtt;
- if ((att != NULL) &&
- (strcmp(ChrPtr(WhichAttachment),
- ChrPtr(att->FileName) ) == 0))
- {
- DeleteEntryFromHash(WCC->attachments, at);
- break;
- }
- }
- while (NextHashPos(WCC->attachments, at));
- FreeStrBuf(&WhichAttachment);
- display_enter();
- return;
} else {
const char CMD[] = "ENT0 1|%s|%d|4|%s|%s||%s|%s|%s|%s|%s";
StrBuf *Recp = NULL;
int save_to_drafts;
long HeaderLen;
- save_to_drafts = havebstr("save_button");
+ save_to_drafts = !strcasecmp(bstr("submit_action"), "drafts");
Buf = NewStrBuf();
if (save_to_drafts) {
return;
}
}
+ FreeStrBuf(&Recp);
FreeStrBuf(&Buf);
FreeStrBuf(&Cc);
FreeStrBuf(&Bcc);
}
-
-
void view_mimepart(void) {
mimepart(0);
}
FreeStrBuf(&partnum);
}
+
void h_readnew(void) { readloop(readnew, eUseDefault);}
void h_readold(void) { readloop(readold, eUseDefault);}
void h_readfwd(void) { readloop(readfwd, eUseDefault);}
NULL);
RegisterPreference("mailbox",_("Mailbox view mode"), PRF_STRING, NULL);
- WebcitAddUrlHandler(HKEY("readnew"), "", 0, h_readnew, NEED_URL);
- WebcitAddUrlHandler(HKEY("readold"), "", 0, h_readold, NEED_URL);
- WebcitAddUrlHandler(HKEY("readfwd"), "", 0, h_readfwd, NEED_URL);
+ WebcitAddUrlHandler(HKEY("readnew"), "", 0, h_readnew, ANONYMOUS|NEED_URL);
+ WebcitAddUrlHandler(HKEY("readold"), "", 0, h_readold, ANONYMOUS|NEED_URL);
+ WebcitAddUrlHandler(HKEY("readfwd"), "", 0, h_readfwd, ANONYMOUS|NEED_URL);
WebcitAddUrlHandler(HKEY("headers"), "", 0, h_headers, NEED_URL);
- WebcitAddUrlHandler(HKEY("readgt"), "", 0, h_readgt, NEED_URL);
- WebcitAddUrlHandler(HKEY("readlt"), "", 0, h_readlt, NEED_URL);
+ WebcitAddUrlHandler(HKEY("readgt"), "", 0, h_readgt, ANONYMOUS|NEED_URL);
+ WebcitAddUrlHandler(HKEY("readlt"), "", 0, h_readlt, ANONYMOUS|NEED_URL);
WebcitAddUrlHandler(HKEY("do_search"), "", 0, h_do_search, 0);
WebcitAddUrlHandler(HKEY("display_enter"), "", 0, display_enter, 0);
WebcitAddUrlHandler(HKEY("post"), "", 0, post_message, PROHIBIT_STARTPAGE);