#define Use_MsgBase #include #include #include "proboard.hpp" #define SEND_HEADER_LINE() \ { \ k = io.send(s,hotkeys); \ switch(k) \ { \ case 0: break; \ case 1: return 'S'; \ default: return k; \ } \ if(/*!rip_mode &&*/ linecounter()) return 'S'; \ s.clear(); \ } static void status_button( int num , char *text) { rip_button(590 - num*40,11,620 - num*40,21,0,0,"",text,""); } byte Message::show() { char *hotkeys="AN\r"; String s; char k; //if(rip_mode) io.show_remote = FALSE; s << '\r' << S_MSGHEADER_MESSAGENUM(form("%ld",msgNum()),msgArea->name) << " \7"; //s << form("\r\7Message #\6%-5ld\2 [%s] \7",msgNum(),msgArea->name); if(attr & MSGATTR_PRIVATE) s << S_MSGHEADER_PRIVATE << ' '; if(msgArea->msgKind == MSG_NET) { if(attr & MSGATTR_CRASH) s << S_MSGHEADER_CRASH << ' '; if(attr & MSGATTR_KILL) s << S_MSGHEADER_KILL << ' '; if(attr & MSGATTR_FILE) s << S_MSGHEADER_FILE << ' '; if(attr & MSGATTR_SENT) s << S_MSGHEADER_SENT << ' '; } if(prev) s << form("\7[%ld <ÄÄ] ",msgArea->msgNum(prev)); if(next) s << form("\7[ÄÄ> %ld] ",msgArea->msgNum(next)); s << '\n'; SEND_HEADER_LINE(); String org(from); String rip_org(from); String dest(to); String rip_dest(to); org << "\7"; dest << "\7"; if(msgArea->msgKind == MSG_NET) { int pt_from = pointNum(0); int pt_to = pointNum(1); org << form(" (%d:%d/%d",origZone,origNet,origNode); dest << form(" (%d:%d/%d",destZone,destNet,destNode); if(pt_from) org << form(".%d",pointNum(0)); if(pt_to) dest << form(".%d",pointNum(1)); org << ')'; dest << ')'; rip_org << form(" (%d:%d/%d",origZone,origNet,origNode); rip_dest << form(" (%d:%d/%d",destZone,destNet,destNode); if(pt_from) rip_org << form(".%d",pointNum(0)); if(pt_to) rip_dest << form(".%d",pointNum(1)); rip_org << ')'; rip_dest << ')'; } /* if(rip_mode) { io.show_remote = TRUE; String rip_subj; for(int i=0; subj[i] ; i++) { if(strchr("\\|",subj[i])) rip_subj << '\\'; rip_subj << subj[i]; } rip_send("\r!|Y00000100|1B0000020PI8030E080F080700080107000000\n"); rip_send(form("!|1U2I0R9Q130000<>%s<>|1U2I159Q1H0000<>%s<>\n",(char *)rip_org,(char *)rip_dest)); rip_send("!|1B0000020PI8030E080F080700000107000000\n"); rip_send( form( "!|1UCS0RFA130000<>%d %s %04d<>|1UFK0RH8130000<>%02d:%02d<>\n", postDate[ 0 ], months_short[ postDate[ 1 ] ], postDate[ 2 ] + 1900, // Y2K FIX! postTime[ 0 ], postTime[ 1 ] ) ); if(attr & MSGATTR_RECEIVED) { rip_send("!|1B0000020PI803000F0F0807000G0107000000\n"); rip_send("!|1UA015CI1H0000<>Received<>\n"); rip_send("!|1B0000020PI8030E080F080700000107000000\n"); if ( recvDate.ok() ) rip_send( form( "!|1UCS15FA1H0000<>%d %s %04d<>|1UFK15H81H0000<>%02d:%02d<>\n", recvDate[ 0 ], months_short[ recvDate[ 1 ] ], recvDate[ 2 ] + 1900, // Y2K FIX recvTime[ 0 ], recvTime[ 1 ], recvTime[ 2 ] ) ); } rip_send("!|1B0000020PI8030B080F080700080107000000\n"); rip_send(form("!|1U2I1LH81X0000<>%s<>\n",(char *)rip_subj)); rip_send(form("!|1B0000020PHC020E080F080100000107000000|1U0K0B280N0000<>#%ld<>\n",msgNum())); rip_send(form("!|1B0000020PHC020E080F080300000107000000|1U2I0B9Q0N0000<>%s<>\n",msgArea->name)); rip_send("!|1B0000020PVK020E080F080300000107000000|Y02000400\n"); int button_num = 0; if(attr & MSGATTR_PRIVATE) status_button(button_num++,"PVT"); if(msgArea->msgKind == MSG_NET) { if(attr & MSGATTR_CRASH) status_button(button_num++,"CR"); if(attr & MSGATTR_KILL) status_button(button_num++,"KILL"); if(attr & MSGATTR_FILE) status_button(button_num++,"FILE"); if(attr & MSGATTR_SENT) status_button(button_num++,"SNT"); } if(prev || next) rip_send("!|1B0000020QOY020E000F080500000107000000\n"); if(prev) rip_send("!|1UA00BB40N1O00<><<>-\n"); if(next) rip_send("!|1UBE0BCI0N1Q00<>><>+\n"); rip_send("!|1B0000020QPE020F000F080300020E07000000|Y00000100\n"); rip_screenlines = 24; io.show_remote = FALSE; } */ // Y2K FIXED! s << S_MSGHEADER_FROM( (char *) org, form( "%2d %s %04d", postDate[ 0 ], months_short[ postDate[ 1 ] ], postDate[ 2 ] + 1900 ), form( "%02d:%02d", postTime[ 0 ], postTime[ 1 ] ) ) << '\n'; //s << form("\6From: \3%-47.47s \6Posted:\3 %2d %s %02d\5 %02d:%02d\n", // (char *)org,postDate[0],months_short[postDate[1]],postDate[2],postTime[0],postTime[1]); SEND_HEADER_LINE(); s << S_MSGHEADER_TO((char *)dest) << ' '; //s << form("\6To : \3%-47.47s \6",(char *)dest); if(attr & MSGATTR_RECEIVED) { if(recvDate.ok()) { // Y2K FIX! s << S_MSGHEADER_RECEIVED_ON( form( "%2d %s %04d", recvDate[ 0 ], months_short[ recvDate[ 1 ] ], recvDate[ 2 ] + 1900 ), form( "%02d:%02d", recvTime[ 0 ], recvTime[ 1 ] ) ); //s << form("Received:\3 %2d %s %02d\5 %02d:%02d",recvDate[0],months_short[recvDate[1]],recvDate[2],recvTime[0],recvTime[1],recvTime[2]); } else { s << S_MSGHEADER_RECEIVED; //s << "Received"; } } s << '\n'; SEND_HEADER_LINE(); if(attr & MSGATTR_FILE) s << S_MSGHEADER_FILEATTACHED(subj) << '\n'; else s << S_MSGHEADER_SUBJECT(subj) << '\n'; SEND_HEADER_LINE(); s << "\n\7"; SEND_HEADER_LINE(); s = ""; io.show_remote = TRUE; io << "\7"; int inkludge=0; String wrap; int inquote=0; int index=0; char line[100]; memset(line,0,100); bool msgdone = FALSE; for(long txt_off = 0; !msgdone ;txt_off += 255) { char r[256]; int l = msgBase()->readMsgText(*this,r,txt_off,255); if(l < 255) msgdone = TRUE; for(int j=0;j') inquote=1; if(inquote) { if(avatar) io << char(22) << char(1) << char(0xB); else if(ansi_mode) io << ""; } if(strncmp(line,"SEEN-BY",7)) { io << line << '\n'; if(linecounter()) return 'S'; } if(inquote) { if(avatar) io << char(22) << char(1) << char(0xF); else if(ansi_mode) io << ""; } memset(line,0,100); index=0; } else { if(x>=' ' || x==0x1B) line[index++] = x; } if(index>79) { wordwrap(line,wrap,79); if(strncmp(line,"SEEN-BY",7)) { io << line << '\n'; if(linecounter()) return 'S'; } memset(line,0,100); strcpy(line,wrap); index=strlen(line); } } } if(index) if(strncmp(line,"SEEN-BY",7)) { io << line << '\n'; if(linecounter()) return 'S'; } return 0; }