mt2503 电话号码间显示连字符号“-”
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
需要在输入电话号码后,根据NorthAmericanhyphenationrule在电话号码间显示连字符号"-",比如在输入12345后,手机会显示成1-234-5;
[SOLUTION]
此方法适用于:09A版本
请参考下面的代码修改实现:
1)要先实现加确“-“的算法;
/*********************************************
*函数名:MMI_phb_add_character_for_hyphenation
*功能:改变电话号码格式,使其包含'-'
*输入:
*input:打算改变的字串
*output:改变之后的字串
*inchar:刚刚输入的字符
*输出;
*output:改变后的字串
*author:mlc
*data:2010/02/09
*************************************************/
voidmmi_phb_add_character_for_hyphenation(char*input,char*output,char*inchar)
{
inti;
intj;
intnDashNum=0;
intnStrlen=0;
intindex=0;
intnNum=0;
assert(input!=NULL);
assert(output!=NULL);
nDashNum=getDashInstring(input);
nStrlen=strlen(input);
if(input[0]<'0'||input[0]>'9')
return;
if(NULL==inchar)//phbook用来显示用的
{
if('0'==input[0])
{
meMCPy(output,input,nStrlen);
output[nStrlen]='\0';
return;
}
elseif(nStrlen<=4)
{
memcpy(output,input,nStrlen);
output[nStrlen]='\0';
return;
}
elseif(nDashNum>=3)
{
memcpy(output,input,strlen(input));
return;
}
elseif(2==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
if(input[0]!='1')
{
return;
}
else
{
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(2==index)
break;
}
i++;
if(strlen(&input)<=4)///////////////////////
{
return;
}
else
{
output[strlen(input)-2]='-';
output[strlen(input)-1]=input[strlen(input)-2];
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=input[strlen(input)];
output[strlen(input)+1+1]='\0';
return;
}
}
}
elseif(1==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(1==index)
break;
}
i++;
if(strlen(&input)<=4)////////////////////
{
return;
}
else
{
output[strlen(input)-2]='-';
output[strlen(input)-1]=input[strlen(input)-2];
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=input[strlen(input)];
output[strlen(input)+1+1]='\0';
return;
}
}
else
{
if('1'==input[0])
{
output[0]=input[0];
output[1]='-';
i=1;
j=2;
for(i;nNum<3;i++)
{
output[j++]=input;
nNum++;
}
output[j++]='-';
nNum=0;
for(i;input!='\0';i++)
{
output[j++]=input;
nNum++;
if(getDashInstring(output)<3)
{
if((3==nNum)&&(strlen(&input[i+1])>=2))////////////////////////
{
output[j++]='-';
nNum=0;
}
}
}
}
else
{
i=0;
j=0;
for(i;input!='\0';i++)
{
output[j]=input;
j++;
nNum++;
if(getDashInstring(output)<2)
{
if((3==nNum)&&(strlen(&input[i+1])>=2))////////////////////////
{
output[j]='-';
j++;
nNum=0;
}
}
}
}
output[j]='\0';
return;
}
}
else//用来拨号输入的
{
if(nDashNum>=3)
{
memcpy(output,input,strlen(input));
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
elseif(2==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
if(input[0]!='1')
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
else
{
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(2==index)
break;
}
i++;
if(strlen(&input)<=3)///////////////////////
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
else
{
output[strlen(input)-1]='-';
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=*inchar;
output[strlen(input)+1+1]='\0';
return;
}
}
}
elseif(1==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(1==index)
break;
}
i++;
if(strlen(&input)<=3)////////////////////
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
else
{
output[strlen(input)-1]='-';
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=*inchar;
output[strlen(input)+1+1]='\0';
return;
}
}
else//nDashNum==0
{
memcpy(output,input,strlen(input));
if(strlen(input)<4)
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
elseif('1'!=input[0])
{
memcpy(output,input,3);
output[3]='-';
memcpy(output+4,input+3,1);
output[5]=*inchar;
output[6]='\0';
return;
}
elseif('1'==input[0])
{
output[0]=input[0];
output[1]='-';
memcpy(output+2,input+1,3);
output[5]='-';
output[6]=*inchar;
output[7]='\0';
return;
}
}
}
}
voidchange_text_for_phonebook_number(single_line_input_box*b)
{
//addby7081102.27
U8OutAscBuffer[42*2];
U8number_bufferout[45*2];
U8i=0;
char*pTemp;
//addby7081102.27
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
//addby7081102.27forphohebook
mEMSet(OutAscBuffer,0,sizeof(OutAscBuffer));
memset(number_bufferout,0,sizeof(number_bufferout));
mmi_phb_op_check_invalid_number((S8*)b->text);
//addby7081103.03
//memset(b->text,0,(b->text_length)*2);
mmi_ucs2_n_to_asc((S8*)OutAscBuffer,(S8*)b->text,(b->text_length)*2);
mmi_phb_add_character_for_hyphenation((char*)OutAscBuffer,(char*)number_bufferout,NULL);
i=strlen(number_bufferout);
if(i)
{
mmi_asc_to_ucs2((S8*)(b->text),(S8*)number_bufferout);//change03.03
if((i+1)*2-b->text_length<0)
b->current_text_p=b->current_text_p-(b->text_length-(i+1)*2);
else
b->current_text_p=b->current_text_p+((i+1)*2-b->text_length);
if(b->current_text_p<b->text)
b->current_text_p=b->text;
pTemp=(char*)((char*)b->current_text_p-2);
if('-'==*pTemp)
{
b->current_text_p+=2;
}
b->text_length=strlen(number_bufferout)*2+2;
//b->last_position_p=&b->text[b->text_length+1];
}
else
return;
//addby7081102.27forphohebook
}
2)在showEditor的buffer前把调用算法加上“-”;
voidgui_show_single_line_input_box(single_line_input_box*b)
{
if(add_newcontact_flat|edit_contact_flag)
{
change_text_for_phonebook_number(&MMI_inline_singleline_inputbox);
//gui_single_line_input_box_goto_last_character(&MMI_inline_singleline_inputbox);//addby7081103.01
}
gui_show_single_line_input_box_ext(b,-1,-1);
}
需要在输入电话号码后,根据NorthAmericanhyphenationrule在电话号码间显示连字符号"-",比如在输入12345后,手机会显示成1-234-5;
[SOLUTION]
此方法适用于:09A版本
请参考下面的代码修改实现:
1)要先实现加确“-“的算法;
/*********************************************
*函数名:MMI_phb_add_character_for_hyphenation
*功能:改变电话号码格式,使其包含'-'
*输入:
*input:打算改变的字串
*output:改变之后的字串
*inchar:刚刚输入的字符
*输出;
*output:改变后的字串
*author:mlc
*data:2010/02/09
*************************************************/
voidmmi_phb_add_character_for_hyphenation(char*input,char*output,char*inchar)
{
inti;
intj;
intnDashNum=0;
intnStrlen=0;
intindex=0;
intnNum=0;
assert(input!=NULL);
assert(output!=NULL);
nDashNum=getDashInstring(input);
nStrlen=strlen(input);
if(input[0]<'0'||input[0]>'9')
return;
if(NULL==inchar)//phbook用来显示用的
{
if('0'==input[0])
{
meMCPy(output,input,nStrlen);
output[nStrlen]='\0';
return;
}
elseif(nStrlen<=4)
{
memcpy(output,input,nStrlen);
output[nStrlen]='\0';
return;
}
elseif(nDashNum>=3)
{
memcpy(output,input,strlen(input));
return;
}
elseif(2==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
if(input[0]!='1')
{
return;
}
else
{
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(2==index)
break;
}
i++;
if(strlen(&input)<=4)///////////////////////
{
return;
}
else
{
output[strlen(input)-2]='-';
output[strlen(input)-1]=input[strlen(input)-2];
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=input[strlen(input)];
output[strlen(input)+1+1]='\0';
return;
}
}
}
elseif(1==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(1==index)
break;
}
i++;
if(strlen(&input)<=4)////////////////////
{
return;
}
else
{
output[strlen(input)-2]='-';
output[strlen(input)-1]=input[strlen(input)-2];
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=input[strlen(input)];
output[strlen(input)+1+1]='\0';
return;
}
}
else
{
if('1'==input[0])
{
output[0]=input[0];
output[1]='-';
i=1;
j=2;
for(i;nNum<3;i++)
{
output[j++]=input;
nNum++;
}
output[j++]='-';
nNum=0;
for(i;input!='\0';i++)
{
output[j++]=input;
nNum++;
if(getDashInstring(output)<3)
{
if((3==nNum)&&(strlen(&input[i+1])>=2))////////////////////////
{
output[j++]='-';
nNum=0;
}
}
}
}
else
{
i=0;
j=0;
for(i;input!='\0';i++)
{
output[j]=input;
j++;
nNum++;
if(getDashInstring(output)<2)
{
if((3==nNum)&&(strlen(&input[i+1])>=2))////////////////////////
{
output[j]='-';
j++;
nNum=0;
}
}
}
}
output[j]='\0';
return;
}
}
else//用来拨号输入的
{
if(nDashNum>=3)
{
memcpy(output,input,strlen(input));
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
elseif(2==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
if(input[0]!='1')
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
else
{
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(2==index)
break;
}
i++;
if(strlen(&input)<=3)///////////////////////
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
else
{
output[strlen(input)-1]='-';
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=*inchar;
output[strlen(input)+1+1]='\0';
return;
}
}
}
elseif(1==nDashNum)
{
index=0;
memcpy(output,input,strlen(input));
for(i=0;input!='\0';i++)
{
if('-'==input)
index++;
if(1==index)
break;
}
i++;
if(strlen(&input)<=3)////////////////////
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
else
{
output[strlen(input)-1]='-';
output[strlen(input)]=input[strlen(input)-1];
output[strlen(input)+1]=*inchar;
output[strlen(input)+1+1]='\0';
return;
}
}
else//nDashNum==0
{
memcpy(output,input,strlen(input));
if(strlen(input)<4)
{
output[strlen(input)]=*inchar;
output[strlen(input)+1]='\0';
return;
}
elseif('1'!=input[0])
{
memcpy(output,input,3);
output[3]='-';
memcpy(output+4,input+3,1);
output[5]=*inchar;
output[6]='\0';
return;
}
elseif('1'==input[0])
{
output[0]=input[0];
output[1]='-';
memcpy(output+2,input+1,3);
output[5]='-';
output[6]=*inchar;
output[7]='\0';
return;
}
}
}
}
voidchange_text_for_phonebook_number(single_line_input_box*b)
{
//addby7081102.27
U8OutAscBuffer[42*2];
U8number_bufferout[45*2];
U8i=0;
char*pTemp;
//addby7081102.27
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
//addby7081102.27forphohebook
mEMSet(OutAscBuffer,0,sizeof(OutAscBuffer));
memset(number_bufferout,0,sizeof(number_bufferout));
mmi_phb_op_check_invalid_number((S8*)b->text);
//addby7081103.03
//memset(b->text,0,(b->text_length)*2);
mmi_ucs2_n_to_asc((S8*)OutAscBuffer,(S8*)b->text,(b->text_length)*2);
mmi_phb_add_character_for_hyphenation((char*)OutAscBuffer,(char*)number_bufferout,NULL);
i=strlen(number_bufferout);
if(i)
{
mmi_asc_to_ucs2((S8*)(b->text),(S8*)number_bufferout);//change03.03
if((i+1)*2-b->text_length<0)
b->current_text_p=b->current_text_p-(b->text_length-(i+1)*2);
else
b->current_text_p=b->current_text_p+((i+1)*2-b->text_length);
if(b->current_text_p<b->text)
b->current_text_p=b->text;
pTemp=(char*)((char*)b->current_text_p-2);
if('-'==*pTemp)
{
b->current_text_p+=2;
}
b->text_length=strlen(number_bufferout)*2+2;
//b->last_position_p=&b->text[b->text_length+1];
}
else
return;
//addby7081102.27forphohebook
}
2)在showEditor的buffer前把调用算法加上“-”;
voidgui_show_single_line_input_box(single_line_input_box*b)
{
if(add_newcontact_flat|edit_contact_flag)
{
change_text_for_phonebook_number(&MMI_inline_singleline_inputbox);
//gui_single_line_input_box_goto_last_character(&MMI_inline_singleline_inputbox);//addby7081103.01
}
gui_show_single_line_input_box_ext(b,-1,-1);
}