⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 newmail.c

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 C
📖 第 1 页 / 共 2 页
字号:

   		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 + -