📄 newmail.c
字号:
to_his[i].hits=0;
}
SysDateTimeRead(&year,&month,&day,&hour,&minute,&second);
if(month == 1) strcpy(Monthstr,"JAN");
if(month == 2) strcpy(Monthstr,"FEB");
if(month == 3) strcpy(Monthstr,"MAR");
if(month == 4) strcpy(Monthstr,"APL");
if(month == 5) strcpy(Monthstr,"MAY");
if(month == 6) strcpy(Monthstr,"JUN");
if(month == 7) strcpy(Monthstr,"JLY");
if(month == 8) strcpy(Monthstr,"AUG");
if(month == 9) strcpy(Monthstr,"SEP");
if(month == 10) strcpy(Monthstr,"OCT");
if(month == 11) strcpy(Monthstr,"NOV");
if(month == 12) strcpy(Monthstr,"DEC");
// p2=NULL;p3=NULL;p4=NULL;p5=NULL;p6=NULL;
/*newmail_ptr = */strcat(newmail_ptr ,"from:");
// newmail_ptr = strcat(newmail_ptr,from_buf); newmail_ptr= strcat(newmail_ptr,"\n");
// newmail_ptr = strcat(newmail_ptr,"To:");newmail_ptr = strcat(newmail_ptr,to_buf);
// newmail_ptr = strcat(newmail_ptr,"\n"); newmail_ptr = strcat(newmail_ptr,"Subject:");
// newmail_ptr = strcat(newmail_ptr,sub_buf);newmail_ptr = strcat(newmail_ptr,"\n");
// newmail_ptr = strcat(newmail_ptr,"Date:");p2 = DToS(day);p2 = strrev(p2);newmail_ptr = strcat(newmail_ptr,p2);
// newmail_ptr = strcat(newmail_ptr,":");newmail_ptr = strcat(newmail_ptr,Monthstr);
// newmail_ptr = strcat(newmail_ptr,":");
// p3 = DToS(year);p3 = strrev(p3);newmail_ptr = strcat(newmail_ptr,p3);
// newmail_ptr = strcat(newmail_ptr,":");
// p4 = DToS(hour);p4 = strrev(p4);newmail_ptr = strcat(newmail_ptr,p4);
// newmail_ptr = strcat(newmail_ptr,":");
// p5 = DToS(minute);p5 = strrev(p5);newmail_ptr = strcat(newmail_ptr,p5);
// newmail_ptr = strcat(newmail_ptr,":");
// p6 = DToS(second);p6 = strrev(p6);newmail_ptr = strcat(newmail_ptr,p6);
sprintf(newmail_ptr,"From:%s\nTo:%s\nSubject:%s\nDate:%02d %s %4d %02d:%02d:%02d\n",from_buf,to_buf,sub_buf,day,Monthstr,year,hour,minute,second);
point=newmail_ptr+strlen(newmail_ptr);
DestroyWindow(newmailwin1);return point;
}
U8 NewMail(struct mail_head *reply, U8 mode)
{
char *mail_buf,*text_head;
U8 buf_index=0,quit=0,save_err=0;
U16 mail_len,id;
register U8 i,l;
static MSG Msg;
U32 gc,newmailwin,bt_send,bt_exit,edit1,keyboard1,cur;
// U32 SendId,QuitId;
// U16 xSrc,ySrc,xDest,yDest,message;
// U32 size,areaId;
// P_U16 data;
const U16 buf_size[]={10240,5120,2560,1024,0};
U8 time[]={0xff,4,5,12,30};
U16 wndwidth, wndHeight;
const char *str1[3]=
{
"退出并发送",
"退出不发送",
"取消此操作",
};
char title_str[20];
switch (mode) {
case NEW_MAIL:
strcpy(title_str,"撰 写 邮 件");
break;
case REPLY_MAIL:
strcpy(title_str,"回 复 邮 件");
break;
case EDIT_MAIL:
strcpy(title_str,"编 辑 邮 件");
break;
case OUTSIDE_MAIL:
strcpy(title_str,"编 辑 邮 件");
break;
case RESEND_MAIL:
strcpy(title_str,"重 发 邮 件");
break;
default:
return 1;
}
wndwidth = ( PHY_LCD_W > ASIX_LCD_W ) ? ASIX_LCD_W : PHY_LCD_W;
wndHeight = ( PHY_LCD_H > ASIX_LCD_H ) ? ASIX_LCD_H : PHY_LCD_H;
gc=GetGC();
ClearScreen(gc,GPC_WHITE);
if (mode!=OUTSIDE_MAIL) {
OutboxIndex=(struct outbox_index *)(Datatemp+OUTBOX_INDEX_HEAD);
for (i=0;(OutboxIndex[i].flag!=EMPTYINDEX )&&(i<(MAXBOXITEM-1));i++);
if ( i==(MAXBOXITEM-1) ) {
cur = GetCurWindow( );
if(MessageBox(cur,"目录已满,请删除一些邮件", "友情提醒", MB_OK ) == IDOK)
//AdvHintWin("目录已满","请删除一些邮件",60,0);
return 1;
}
}
/* we allocate the mail edit buffer and initiate it*/
while (buf_size[buf_index]!=0) {
if ( (mail_buf=(P_U8)Lmalloc(buf_size[buf_index]*sizeof(char)))!=NULL )
break;
buf_index++;
}
if (buf_index==4) {
cur = GetCurWindow( );
if(MessageBox( cur,"严重错误,内存不足", "友情提醒", MB_OK ) == IDOK)
//AdvHintWin("严重错误!","内存不足",60,0);
return 1;
}
memset(mail_buf,0x0,buf_size[buf_index]*sizeof(char));
/* we call the wizard to guide user input FORM,TO,Sub,and Date*/
if ((text_head=newmail_wizard(mail_buf,reply,mode))==NULL) {
//the user has canceled the newmail wizard
Lfree(mail_buf);
return 0;
}
newmailwin=CreateWindow(WNDCLASS_WIN,title_str,WS_OVERLAPPEDWINDOW,0,0,159,239,0,0,NULL);
bt_send = CreateWindow(WNDCLASS_BUTTON, "发 送", WS_CHILD|BS_TOOLBAR, 0,223,80,16,newmailwin,0,NULL);
bt_exit = CreateWindow(WNDCLASS_BUTTON, "退 出", WS_CHILD|BS_TOOLBAR, 80,223,80,16,newmailwin,0,NULL);
if ((mode==OUTSIDE_MAIL||mode==EDIT_MAIL||mode==RESEND_MAIL)&&(reply->text!=NULL))
// strcpy(text_head,reply->text);
{
edit1 = CreateWindow( WNDCLASS_EDITOR,reply->text,WS_CHILD | ES_MULTI_REGULAR,20,30,120,90,newmailwin,500,NULL);
}else{edit1 = CreateWindow( WNDCLASS_EDITOR,"欢迎使用",WS_CHILD | ES_MULTI_REGULAR,20,30,120,90,newmailwin,500,NULL);}
//keyboard1 = CreateWindow( WNDCLASS_KEYBAR,NULL,WS_CHILD,0,200,159,16,newmailwin,0,NULL);
keyboard1 = CreateWindow( WNDCLASS_KEYBD,
NULL,
WS_CHILD|KBS_PINGYING|0xff,
1,140,
158,50,
newmailwin,
0,
NULL);
SetFocus( edit1 );
while(!quit)
{
ASIXGetMessage(&Msg, NULL, 0, 0);
switch ( Msg.message )
{
case ASIX_RTC:
break;
case WM_COMMAND:
if(Msg.lparam == bt_exit){
cur = GetCurWindow( );
id = MessageBox(cur, "该邮件未被发送,需要发送吗?", "友情提醒", MB_YESNOCANCEL );
if (id == IDYES){
if (mode==OUTSIDE_MAIL) {
for (l=0;(OutSideMail1[l]!=NULL)&&(l<MAXBOXITEM) ;l++);
mail_len=(unsigned short)strlen(mail_buf);
if ((OutSideMail1[l]=Lmalloc(mail_len+10))!=NULL){
memset(OutSideMail1[l],0x0,mail_len+10);
memcpy(OutSideMail1[l],mail_buf,mail_len);
Lfree(mail_buf);
mail_buf=NULL;
} else {
OutSideMail1[l]=mail_buf;
}
quit=1;
break;
}
if (mode==EDIT_MAIL)
if (DelMail(reply->index,DELOUTBOX,0)){
save_err=1;quit=1;
break;
}
text_head = GetEditorStr( edit1,NULL,0 );
mail_buf = strcat(mail_buf,"\n");
mail_buf = strcat(mail_buf,text_head);
save_err=SaveMail(mail_buf,SAVEOUTBOX);
quit=1;
}else if (id == IDNO) {
if (mode==OUTSIDE_MAIL)
Lfree(mail_buf);
quit=1;
}else if (id == IDCANCEL) break;
}else if (Msg.lparam == bt_send){
if (mode==OUTSIDE_MAIL) {
for (l=0;(OutSideMail1[l]!=NULL)&&(l<MAXBOXITEM) ;l++);
mail_len=(unsigned short)strlen(mail_buf);
if ((OutSideMail1[l]=Lmalloc(mail_len+10))!=NULL){
memset(OutSideMail1[l],0x0,mail_len+10);
memcpy(OutSideMail1[l],mail_buf,mail_len);
Lfree(mail_buf);
mail_buf=NULL;
} else {
OutSideMail1[l]=mail_buf;
}
quit=1;
break;
}
if (mode==EDIT_MAIL){
if (DelMail(reply->index,DELOUTBOX,0)){
save_err=1;quit=1;
break;
}
text_head = GetEditorStr( edit1,NULL,0 );
mail_buf = strcat(mail_buf,"\n");
mail_buf = strcat(mail_buf,text_head);
save_err=SaveMail(mail_buf,SAVEOUTBOX);
quit=1;
}
if (mode==NEW_MAIL){
//GetEditorStr( edit1, text_head,buf_size[buf_index]-1 );
text_head = GetEditorStr( edit1, NULL,0 );
mail_buf = strcat(mail_buf,"\n");
mail_buf = strcat(mail_buf,text_head);
save_err=SaveMail(mail_buf,SAVEOUTBOX);
quit=1;
}
}
case WM_QUIT:
quit=1;
break;
default:
break;
}
DefWindowProc(Msg.message, Msg.lparam, Msg.data, Msg.wparam);
}
//GetEditorStr( edit1, text_head, sizeof(buf_size[buf_index])-1 );
DestroyWindow(newmailwin);
if ((mail_buf!=NULL)&&(mode!=OUTSIDE_MAIL))
Lfree(mail_buf);
//closefulledit();
//if (save_err) {
// AdvHintWin("严重错误!","存邮件错!",60,0);
// return 1;
//}
return 0;
}
U8 OutSideMail(const char *to, const char *text)
{
register U8 i;
static struct mail_head Outter_head;
U8 rv;
static U8 verbose=1;
//U16 id;
U32 cur;
const char *str1[2]=
{
" 确 定 ",
"不再显示该信息",
};
for (i=0;(OutSideMail1[i]!=NULL)&&(i<(MAXBOXITEM-1));i++);
if (i==(MAXBOXITEM-1)) {
cur = GetCurWindow( );
if(MessageBox( cur , "目录缓存满!,请在ASIX中删除", "友情提醒", MB_OK ) == IDOK)
//AdvHintWin("目录缓存满!","请在ASIX中删除",60,0);
return 1;
}
memset((char *)&Outter_head,0x0,sizeof(struct mail_head));
if ((to!=NULL)&&(*to!='\0'))
Outter_head.to=to;
if ((text!=NULL)&&(*text!='\0'))
Outter_head.text=text;
if (((rv=NewMail((struct mail_head *)&Outter_head,OUTSIDE_MAIL))==0) && verbose){
cur = GetCurWindow( );
if ( MessageBox( cur , "目录缓存满!,请在ASIX中删除", "友情提醒", MB_OK ) == IDOK)
//SelButtonWin("邮件已存入发件箱","请在ASIX中发送",str1,2,0))
verbose=0;
}
return rv;
}
int isaddr(s)
register char *s;
{
//char c;
if(s == NULL)
return TRUE; /* Can't happen */
//while((c = *s++) != '\0'){
// if(c != '[' && c != ']' && !isdigit(c) && c != '.')
// return FALSE;
//}
return TRUE;
}
char *DToS(U16 num)
{
U16 i=0,j=0;
static char p0[5]={0};
static char p0year[5]={0};
static char p0dan[5]={0};
if((num<1000)&&(num>=10)){
for(i=0;i<4;i++){
p0[i]=0;
j = num%10;
if(j == 0) p0[i]='0';
if(j == 1) p0[i]='1';
if(j == 2) p0[i]='2';
if(j == 3) p0[i]='3';
if(j == 4) p0[i]='4';
if(j == 5) p0[i]='5';
if(j == 6) p0[i]='6';
if(j == 7) p0[i]='7';
if(j == 8) p0[i]='8';
if(j == 9) p0[i]='9';
num = num/10;
if(num == 0)i=4;
}return p0;
}else if(num>1000)
{ for(i=0;i<4;i++){
p0[i]=0;
j = num%10;
if(j == 0) p0year[i]='0';
if(j == 1) p0year[i]='1';
if(j == 2) p0year[i]='2';
if(j == 3) p0year[i]='3';
if(j == 4) p0year[i]='4';
if(j == 5) p0year[i]='5';
if(j == 6) p0year[i]='6';
if(j == 7) p0year[i]='7';
if(j == 8) p0year[i]='8';
if(j == 9) p0year[i]='9';
num = num/10;
if(num == 0)i=4;
}return p0year;
}else if(num<10)
{
for(i=0;i<4;i++){
p0dan[i]=0;
j = num%10;
if(j == 0) p0year[i]='0';
if(j == 1) p0dan[i]='1';
if(j == 2) p0dan[i]='2';
if(j == 3) p0dan[i]='3';
if(j == 4) p0dan[i]='4';
if(j == 5) p0dan[i]='5';
if(j == 6) p0dan[i]='6';
if(j == 7) p0dan[i]='7';
if(j == 8) p0dan[i]='8';
if(j == 9) p0dan[i]='9';
num = num/10;
if(num == 0)i=4;
}return p0dan;
}
return NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -