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

📄 mmiunitconversion.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 5 页
字号:
  line.y2=132;
  line.color=0xb9d9ea;
  DrawLine(line);
  line.x1=117;
  line.y1=61;
  line.x2=117;
  line.y2=132;
  line.color=0xb9d9ea;
  DrawLine(line);
  set_font_type(UNI12X12_FONT);
  dspl_TextOut(13, 67, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtInitValue));
  if(Mmi_getCurrentLanguage()==ENGLISH_LANGUAGE)
  	{
  	set_font_type(UNI12X12_FONT);
  	dspl_TextOut(13, 79, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtValue));
  	}  
  set_font_type(UNI12X12_FONT);
  dspl_TextOut(14, 67, DSPL_TXTATTR_TRANSPARENT, (char*)str);
  if(!data->position)
  	{
  	if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
  		{
#if(MAIN_LCD_SIZE==3)
 	    dspl_BitBlt(7, 70, 5, 6, 0, (void *)uptriangle, 0);
#endif
  	    dspl_BitBlt(54,69, 4, 8, 0, (void *)blue_left_bmp,  0);
 	    dspl_BitBlt(112,69, 4, 8, 0, (void *)blue_right_bmp,  0);
    	rectangle.x1=59;
 	    rectangle.y1=64;
 	    rectangle.x2=110;
 	    rectangle.y2=79;
 	    rectangle.color=0x5ac7ff;
 	    rectangle.fillcolor=0x5ac7ff;
 	    DrawRectagle(rectangle);
 	    set_font_type(UNI12X12_FONT);
 	    dspl_colorTextOut(59+(51-6*wstrBitlen(string))/2, 67, DSPL_TXTATTR_TRANSPARENT, (char*)string, 0xffffff);
  		}
  	else
  		{
#if(MAIN_LCD_SIZE==3)
  		dspl_BitBlt(7, 70, 5, 6, 0, (void *)uptriangle, 0);
#endif
  	    dspl_BitBlt(70,69, 4, 8, 0, (void *)blue_left_bmp,  0);
 	    dspl_BitBlt(112,69, 4, 8, 0, (void *)blue_right_bmp,  0);
    	rectangle.x1=75;
 	    rectangle.y1=64;
 	    rectangle.x2=110;
 	    rectangle.y2=79;
 	    rectangle.color=0x5ac7ff;
 	    rectangle.fillcolor=0x5ac7ff;
 	    DrawRectagle(rectangle);
 	    set_font_type(UNI12X12_FONT);
 	    dspl_colorTextOut(75+(35-6*wstrBitlen(string))/2, 67, DSPL_TXTATTR_TRANSPARENT, (char*)string, 0xffffff);
  		}
  	}  
  else
  	{
  	if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
  		{
	  	 set_font_type(UNI12X12_FONT);
	     dspl_TextOut(59+(51-6*wstrBitlen(string))/2, 67, DSPL_TXTATTR_TRANSPARENT, (char*)string);
  		}
  	else
  		{
  		 set_font_type(UNI12X12_FONT);
	     dspl_TextOut(75+(35-6*wstrBitlen(string))/2, 67, DSPL_TXTATTR_TRANSPARENT, (char*)string);
  		}
  	}
  //set_font_type(UNI12X12_FONT);
  //dspl_colorTextOut(60, 25, 0, (char*)s, 0x0000ff);  
  //display the third line content
  memset((char*)str,0,sizeof(str));
  memset((char*)handle_str,0,sizeof(handle_str));
  sprintf((char*)str,"%f",data->unit1.value);
  strncpy(handle_str,str,handle(str));
  if(pointflag)
  	{
  	strcat(handle_str,".");
  	}
  TRACE_EVENT(data->string);
 /* if((data->stringbuffer[0]=='.')&&(data->stringbuffer[1]=='0')&&(strlen(data->stringbuffer)==2)
  	||(data->stringbuffer[0]=='.')&&(data->stringbuffer[1]=='0')&&(data->stringbuffer[2]=='0')&&(strlen(data->stringbuffer)==3)
  	||(data->stringbuffer[0]=='.')&&(data->stringbuffer[1]=='0')&&(data->stringbuffer[2]=='0')&&(data->stringbuffer[3]=='0')&&(strlen(data->stringbuffer)==4))
  	{
  	   memset((char*)handle_str,0,sizeof(handle_str));
  	   strcpy(handle_str,"0");
       strcat(handle_str,data->stringbuffer);
  	}
  for(i=0;i<strlen(data->stringbuffer);i++)
  	{
  	  if(data->stringbuffer[i]=='.')
  	  	j=i;
  	}
  TRACE_EVENT(data->stringbuffer);
  if(((data->stringbuffer[j+1]=='0')&&(data->stringbuffer[j+2]=='\0')
  	||(data->stringbuffer[j+1]=='0')&&(data->stringbuffer[j+2]=='0')&&(data->stringbuffer[j+3]=='\0')
  	||(data->stringbuffer[j+1]=='0')&&(data->stringbuffer[j+2]=='0')&&(data->stringbuffer[j+3]=='0')&&(data->stringbuffer[j+4]=='\0')
  	||(data->stringbuffer[strlen(data->stringbuffer)]=='0'))
  	&&(j!=0))
  	{
  	   TRACE_EVENT("data->stringbuffer[strlen(data->stringbuffer)]=='0'");
  	   memset((char*)handle_str,0,sizeof(handle_str));  	  
       
  	}  */
  if(!strlen(data->stringbuffer))
  	{
        strcpy(data->stringbuffer,"0");
        strcpy(handle_str,data->stringbuffer);  
        set_font_type(UNI12X12_FONT);
        dspl_TextOut(115-6*strlen(handle_str),85 ,DSPL_TXTATTR_TRANSPARENT ,handle_str);
        memset(data->stringbuffer,0,sizeof(data->stringbuffer));
  	}
  else
  	{
  	    strcpy(handle_str,data->stringbuffer);  
        set_font_type(UNI12X12_FONT);
        dspl_TextOut(115-6*strlen(handle_str),85 ,DSPL_TXTATTR_TRANSPARENT ,handle_str);
  	}
  //display line
 // dspl_DrawLine(4, 60, 116,60);
  //display the fourth line content
  memset((char*)str,0,sizeof(str)); 
 // memset((char*)s,0,sizeof(s));
  strcpy((char*)str,MmiRsrcGetText(TxtResultValue));  
//  strcpy((char*)s,":");
  set_font_type(UNI12X12_FONT);
  dspl_TextOut(13,103,DSPL_TXTATTR_TRANSPARENT,(char*)str);
  if(Mmi_getCurrentLanguage()==ENGLISH_LANGUAGE)
  	{
  	set_font_type(UNI12X12_FONT);
  	dspl_TextOut(13, 115, DSPL_TXTATTR_TRANSPARENT, MmiRsrcGetText(TxtValue));
  	}
  if(data->position)
  	{
  	if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
  		{
#if(MAIN_LCD_SIZE==3)
	  	 dspl_BitBlt(7,106,5,6,0,(void *)downtriangle,0);  
#endif
  		 dspl_BitBlt(54,105, 4, 8, 0, (void *)yellow_left_bmp,  0);
	     dspl_BitBlt(112,105, 4, 8, 0, (void *)yellow_right_bmp,  0);
	     rectangle.x1=59;
	     rectangle.y1=100;
	     rectangle.x2=110;
	     rectangle.y2=115;
	     rectangle.color=0x5ac7ff;
	     rectangle.fillcolor=0x5ac7ff;
	     DrawRectagle(rectangle);
	     set_font_type(UNI12X12_FONT);
	     dspl_colorTextOut(59+(51-6*wstrBitlen(string1))/2, 103, DSPL_TXTATTR_TRANSPARENT, (char*)string1, 0xffffff);
  		}
  	else
  		{
#if(MAIN_LCD_SIZE==3)
  		 dspl_BitBlt(7,106,5,6,0,(void *)downtriangle,0);  
#endif
  		 dspl_BitBlt(70,105, 4, 8, 0, (void *)yellow_left_bmp,  0);
	     dspl_BitBlt(112,105, 4, 8, 0, (void *)yellow_right_bmp,  0);
	     rectangle.x1=75;
	     rectangle.y1=100;
	     rectangle.x2=110;
	     rectangle.y2=115;
	     rectangle.color=0x5ac7ff;
	     rectangle.fillcolor=0x5ac7ff;
	     DrawRectagle(rectangle);
	     set_font_type(UNI12X12_FONT);
	     dspl_colorTextOut(75+(35-6*wstrBitlen(string1))/2, 103, DSPL_TXTATTR_TRANSPARENT, (char*)string1, 0xffffff);
  		}
  	}
  else
  	{
  	if(Mmi_getCurrentLanguage()==CHINESE_LANGUAGE)
  		{
	  	 set_font_type(UNI12X12_FONT);
	     dspl_TextOut(59+(51-6*wstrBitlen(string1))/2, 103, DSPL_TXTATTR_TRANSPARENT, (char*)string1);
  		}
  	else
  		{
  		 set_font_type(UNI12X12_FONT);
	     dspl_TextOut(75+(35-6*wstrBitlen(string1))/2, 103, DSPL_TXTATTR_TRANSPARENT, (char*)string1);
  		}
  	}  	
 // set_font_type(UNI12X12_FONT);
 // dspl_colorTextOut(23,77,0,(char*)str,0x0000ff);
 // set_font_type(UNI12X12_FONT);
 // dspl_colorTextOut(60,77,0,(char*)s,0x0000ff);
 // set_font_type(UNI12X12_FONT);
 // dspl_colorTextOut(67,77,0,(char*)string1,0x0000ff);
  //display the fifth line content
  memset((char*)str,0,sizeof(str));
  memset((char*)handle_str,0,sizeof(handle_str));  
  sprintf((char*)str,"%f",data->unit2.value);
  strncpy(handle_str,str,handle(str));
  for(i=0;i<strlen(handle_str);i++)
  	{
  	if(handle_str[i]=='.')
  		unit2point=TRUE;
  	}
  if(pointflag)
  	{
  	//if(!unit2point)
  	//strcat(handle_str,".");
  	}
 /* if((data->stringbuffer[0]=='.')&&(data->stringbuffer[1]=='0')&&(strlen(data->stringbuffer)==2)
  	||(data->stringbuffer[0]=='.')&&(data->stringbuffer[1]=='0')&&(data->stringbuffer[2]=='0')&&(strlen(data->stringbuffer)==3)
  	||(data->stringbuffer[0]=='.')&&(data->stringbuffer[1]=='0')&&(data->stringbuffer[2]=='0')&&(data->stringbuffer[3]=='0')&&(strlen(data->stringbuffer)==4))
  	{
  	   memset((char*)handle_str,0,sizeof(handle_str));
  	   strcpy(handle_str,"0");
       strcat(handle_str,data->stringbuffer);
  	}*/
  set_font_type(UNI12X12_FONT);//gdy
  dspl_TextOut(115-6*strlen(handle_str),118, DSPL_TXTATTR_TRANSPARENT, handle_str);  //gdy
  //	}
 // dspl_BitBlt(6, 113, 44, 19, 0, (void *)left_right, 0);
 // dspl_colorTextOut(51, 115, 0, MmiRsrcGetText(TxtUnitChange), 0xff0000); 
 // old_color=dspl_GetBkgColor();
 // dspl_SetBkgColor(0x70db93);
 // dspl_Clear(0, 142, 120, 160);
  if(strlen(data->stringbuffer))
    displaySoftKeys(TxtNext,TxtDelete);
  else
  	displaySoftKeys(TxtNext,TxtSoftBack);
 // dspl_SetBkgColor(old_color);
}

int handle(char* s)
{
  int i=0,j=0,k=0;
  BOOL point=false,flag=false;
 
  //remove the surplus 0s

  while(s[i])
  	{
  	//if(flag)
  	//	k++;
	if(s[i]=='.')
		{
		point=true;
		flag=true;
		}
	if(!point)
		j=i;
  	if((s[i]!='0')&&(s[i]!='.')&&point)
  		j=i;
  	i++;
  	}
  //if(k>5)
  //  return j+1+5-k;
  //else
  	return j+1;
}

static void conversion_DialogCB(T_MFW_HND win, USHORT event,  SHORT value, void * parameter)
{
    T_MFW_WIN       	*win_data   = ( (T_MFW_HDR *) win )->data;
	convertdata* data = (convertdata *) win_data->user;	
	T_DISPLAY_DATA display_info;	
	
	TRACE_EVENT("conversion_DialogCB");

	switch(event)
		{
		  case CONVERT_INIT:
		  	data->kbd=kbd_create(data->win,KEY_ALL,(T_MFW_CB)conversion_kbd_cb);
		  	data->index=0;
		  	data->unit_type=LENGTH;
		  	data->unit_id=TxtLength;
		  	data->position=FALSE;
		  	data->unit1.unit=METER,
		  	data->unit1.value=0;
		  	data->unit2.unit=METER,
		  	data->unit2.value=0;
		  	winShow(win);
		  	break;
		  case CONVERT_EXIT:
		  	conversion_destroy(win);
		  	break;
		}
}

static int conversion_kbd_cb (MfwEvt e, MfwKbd *kc)
{
   T_MFW_HND win = mfw_parent(mfw_header());
   T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
   T_DISPLAY_DATA    display_info;
   convertdata * data = (convertdata *)win_data->user;
   char string2[MAX_STRING_LENGTH];   
   double t;

   TRACE_EVENT("conversion_kbd_cb");
   switch(kc->code)
   	{
   	case KCD_0:
   	case KCD_1:
   	case KCD_2:
   	case KCD_3:
   	case KCD_4:
   	case KCD_5:
   	case KCD_6:
   	case KCD_7:
   	case KCD_8:
   	case KCD_9:
   	case KCD_HASH:   		
   		if(kc->code==KCD_HASH)
   			{
   			if(!afterpointflag)
   				{
   				  if(!strlen(data->stringbuffer))
   				  	{
   				  	data->stringbuffer[data->index]='0';
   				  	data->index++;
   				  	data->stringbuffer[data->index]='.';
   				  	data->index++;
   				  	}
   				  else
   				  	{
   			        data->stringbuffer[data->index]='.';
   		            data->index++;
   				  	}
   		          afterpointflag=TRUE;
   				}
   			}
   		else
   			{
   			if(afterpointcount1<3)
   				{
   				  if(kc->code==KCD_0)
   				  	{
   				  	  if(!strlen(data->stringbuffer))
   				  	  	break;
   				  	}
   		          data->stringbuffer[data->index]='0'+kc->code;
   		          data->index++; 
   		          if(afterpointflag)
   		          	{
   		              afterpointcount1++;
   		          	}
   				}
   			else{
   				 break;
   				}
   			}
   		memset(data->string,0,sizeof(data->string));
   		strcpy(data->string,data->stringbuffer);
   		TRACE_EVENT("data->stringbuffer=:");
   		TRACE_EVENT(data->string);
   		data->unit1.value=change((char*)data->stringbuffer);   		
   		switch(data->unit_type)
   			{
   			case LENGTH:
   		       switch(data->unit1.unit)
   			     {
   			     case METER:
   			     	t=data->unit1.value;
   			     	break;
   			     case DECIMETER:
   			     	t=data->unit1.value/10;
   			     	break;
   			     case CENTIMETER:
   			     	t=data->unit1.value/100;
   			     	break;
   			     case MILLIMETER:
   			     	t=data->unit1.value/1000;
   			     	break;
   			     case INCH:
   			     	t=data->unit1.value*2.45/100;
   			     	break;
   			     case FOOT:
   			     	t=data->unit1.value*30.48/100;
   			     	break;
   			     case MILE:
   			     	t=data->unit1.value*1609;
   			     	break;
   			     case YARD:
   			     	t=data->unit1.value*0.914;
   			     	break;
   			        			     
   			     }
   		       switch(data->unit2.unit)
   		       	{
   		       	 case METER:
   			     	data->unit2.value=t;
   			     	break;
   			     case DECIMETER:
   			     	data->unit2.value=t*10;
   			     	break;
   			     case CENTIMETER:
   			     	data->unit2.value=t*100;
   			     	break;
   			     case MILLIMETER:
   			     	data->unit1.value=t*1000;
   			     	break;
   			     case INCH:
   			     	data->unit2.value=t*100/2.45;
   			     	break;
   			     case FOOT:
   			     	data->unit2.value=t*100/30.48;
   			     	break;
   			     case MILE:
   			     	data->unit2.value=t/1609;
   			     	break;
   			     case YARD:
   			     	data->unit2.value=t/0.914;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -