📄 mmiunitconversion.c
字号:
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 + -