📄 gui_ems.c
字号:
ems_cursor_pos_flag =0 ;
saved_last_skip_pos = 0;
middle_ems_position = &(b->data->textBuffer[b->data->CurrentPosition.OffsetToText]);
first_cons_ems_position = &(b->data->textBuffer[b->data->CurrentPosition.OffsetToText-2]);
#endif //__MMI_HINDI_ALG__
text_format=b->text_format;
/*MTK Terry for EMS_NO_MEMORY or other error cause*/
if(pixtel_UI_EMS_input_box_add_string(b,s,&text_format) != EMS_OK/*==EMS_NO_SPACE*/)
{ UI_editor_play_tone_cannot_insert();
b->overflow_callback();
}
else
{
#ifdef __MMI_HINDI_ALG__
if(!TestLastPosition(b->data,&(b->data->CurrentPosition)))
object_type_check1 = pixtel_UI_EMS_input_box_get_next_object(data_chk_type1,&p1,¤t_character1,&o1);
if ( (UI_CHK_CONSONANT(*first_cons_ems_position))&& (UI_CHK_CONSONANT(*second_cons_ems_position))
&& (*middle_ems_position==0x4d)
&& (*(first_cons_ems_position+1)== 0x09) && (*(second_cons_ems_position+1)== 0x09))
{
U8 skip_positions=0;
PU8 src_ems_pos=second_cons_ems_position;
PU8 dest_ems_pos;
//dest_ems_pos = hf_get_next_cluster_p(b->data->textBuffer,src_ems_pos);
dest_ems_pos = hf_get_next_cluster_p(src_ems_pos,src_ems_pos);
skip_positions = dest_ems_pos - src_ems_pos;//Number of moves
skip_positions = skip_positions >> 1;
saved_last_skip_pos = skip_positions;
PRINT_INFORMATION_2((MMI_TRACE_INFO, "pixtel_UI_EMS_input_box_insert_multitap_character[skip_positions]:%d ",skip_positions));
while(skip_positions--)
{
ForwardCurrentPosition(b->data,1);
}
ems_cursor_pos_flag =1 ;
if (object_type_check1 == 2)
{
//START TARUN 20050106 :
if (saved_last_skip_pos == 1)
{
// To shift the images on cluster completion
bb = b->data->listTail;
do
{
if (bb->OffsetToText == b->data->CurrentPosition.Object->OffsetToText)
bb->OffsetToText+=(saved_last_skip_pos)*2;
bb = bb->prev;
}while(bb != NULL);
ForwardCurrentPosition(b->data,saved_last_skip_pos);
BackwardCurrentPositionSkipCR(b->data);
}
else if (saved_last_skip_pos > 1)
{
bb = b->data->listHead;
do
{
if (bb->OffsetToText == b->data->CurrentPosition.Object->OffsetToText)
bb->OffsetToText+=(saved_last_skip_pos)*2;
bb = bb->next;
}while(bb != NULL);
ForwardCurrentPosition(b->data,saved_last_skip_pos);
if (b->data->listHead == b->data->listTail)
{
BackwardCurrentPositionSkipCR(b->data);
}
else
{
BackwardCurrentPositionSkipCR(b->data);
BackwardCurrentPositionSkipCR(b->data);
}
}
}
}
//PMT VIKAS GUPTA START 20051129
if(check_for_halant)
{
ForwardCurrentPosition(b->data,total_no_of_objects);
check_for_halant=0;
}
//PMT VIKAS GUPTA END 20051129
#endif //__MMI_HINDI_ALG__
b->change_callback();
}
}
else
{
#ifdef __MMI_HINDI_ALG__
ems_cursor_pos_flag =0 ;
saved_last_skip_pos = 0;
second_cons_ems_position = &(b->data->textBuffer[b->data->CurrentPosition.OffsetToText-2]);
object_type_check2 = pixtel_UI_EMS_input_box_get_previous_object(data_chk_type2,&p2,¤t_character2,&o2);
//PMT VIKAS GUPTA START 20051129
if((*second_cons_ems_position==0x4d)&&(object_type_check2==2))
{
check_for_halant=1;
}
//PMT VIKAS GUPTA END 20051129
//START TARUN PMT 20050128
if ((object_type_check2 == 2) && (*second_cons_ems_position == 0x4d) && UI_CHK_CONSONANT(s[0]) && s[1] ==0x09 )
//END TARUN PMT 20050128
{
{
U8 skip_positions=0;
PU8 src_ems_pos=second_cons_ems_position;
PU8 dest_ems_pos;
dest_ems_pos = hf_get_next_cluster_p(src_ems_pos,src_ems_pos);
skip_positions = dest_ems_pos - src_ems_pos;
skip_positions = skip_positions >> 1;
// To shift the images on cluster completion
bb = b->data->listHead;
do
{
if (bb->OffsetToText == b->data->CurrentPosition.Object->OffsetToText)
bb->OffsetToText+=(skip_positions)*2;
bb = bb->next;
}while(bb != NULL);
//START TARUN PMT 20050128
//ForwardCurrentPosition(b->data,1);
//END TARUN PMT 20050128
}
}
#endif //__MMI_HINDI_ALG__
if(b->flags & UI_EMS_INPUT_BOX_OVERWRITE_MODE)
{ if(pixtel_UI_EMS_input_box_forward_cursor(b)==1)
{ pixtel_UI_EMS_cancel_current_position(b);
text_format=b->text_format;
/*MTK Terry for EMS_NO_MEMORY or other error cause*/
if(pixtel_UI_EMS_input_box_add_string(b,s,&text_format) != EMS_OK/*==EMS_NO_SPACE*/)
{
UI_editor_play_tone_cannot_insert();
b->overflow_callback();
}
else
{
b->change_callback();
}
}
//to prevent to enable the multitap flag while reaching the max length(cannot add any char)
b->flags|=UI_EMS_INPUT_BOX_STATE_MULTITAP;
}
else
{
/*MTK Terry for EMS_NO_MEMORY or other error cause*/
if(pixtel_UI_EMS_input_box_add_string(b,s,&b->text_format) != EMS_OK/*==EMS_NO_SPACE*/)
b->overflow_callback();
else
{
b->change_callback();
//MTK Elvis
b->flags|=UI_EMS_INPUT_BOX_STATE_MULTITAP;
//MTK end
}
}
//MTK Elvis
//b->flags|=UI_EMS_INPUT_BOX_STATE_MULTITAP;
//MTK end
}
#ifdef __MMI_HINDI_ALG__
if(TestLastPosition(b->data,&(b->data->CurrentPosition)))
{
b->data->textBuffer[b->data->CurrentPosition.OffsetToText]=0;
b->data->textBuffer[b->data->CurrentPosition.OffsetToText+1]=0;
}
#endif
pixtel_UI_EMS_input_box_locate_cursor(b);
b->saved_cursor_ax=-1;
}
void pixtel_UI_EMS_input_box_confirm_multitap_character(UI_EMS_input_box *b)
{ b->flags&=~UI_EMS_INPUT_BOX_STATE_MULTITAP;
}
extern EMSTextFormat wgui_EMS_text_format;
void pixtel_UI_EMS_input_box_delete_all(UI_EMS_input_box *b)
{
#ifdef __MMI_MESSAGES_EMS__
EMS_cancel_object_focus();
#endif
ResetCurrentPosition(b->data);
//MTK Elvis 20040611 donot plan tone while the EMS data is empty.
#if 0
/* under construction !*/
#endif
//MTK end
/* Probably a better way of doing this is to have a EMS library API */
GoToEndPosition(b->data);
//START TARUN 20041230
memset(b->data->textBuffer,0,b->data->CurrentPosition.OffsetToText);
//END TARUN 20041230
#if defined(__MMI_MESSAGES_CONCAT_SMS__)
CancelCurrentPosition(b->data,(U16)(b->data->Reminder.maxUsableLenPerSeg*mmi_msg_get_seg_num()));
#else
CancelCurrentPosition(b->data,(U16)(EMS_DEFAULT_DCS_ALLOCATED_LENGTH));
#endif
pixtel_UI_EMS_input_box_set_text_format_cursor_position(b);
pixtel_UI_EMS_input_box_locate_cursor(b);
b->UCS2_count=0;
b->object_count=0;
//MTK Joy added for clear all, 1228
b->GSM_ext_count=0;
//MTK end
pixtel_UI_EMS_change_DCS(b);
b->saved_cursor_ax=-1;
ResetTextFormat(&wgui_EMS_text_format);
}
#if(EMS_USE_CRLF_COMBINATION||EMS_USE_ESC_COMBINATION)
void pixtel_UI_EMS_input_box_delete(UI_EMS_input_box *b)
{
#ifdef __MMI_MESSAGES_EMS__
EMS_cancel_object_focus();
#endif
if(UI_TEST_CR_CHARACTER(b->data->textBuffer[b->data->CurrentPosition.OffsetToText]))
{ if(ForwardCurrentPosition(b->data,1)==1)
{ if(!UI_TEST_LF_CHARACTER(b->data->textBuffer[b->data->CurrentPosition.OffsetToText]))
BackwardCurrentPosition(b->data,1);
}
}
if(pixtel_UI_EMS_input_box_forward_cursor(b)==1)
{ pixtel_UI_EMS_cancel_current_position(b);
pixtel_UI_EMS_input_box_set_text_format_cursor_position(b);
pixtel_UI_EMS_input_box_locate_cursor(b);
}
else UI_editor_play_tone_cannot_change();
b->saved_cursor_ax=-1;
}
void pixtel_UI_EMS_input_box_previous(UI_EMS_input_box *b)
{
#if defined(__MMI_LANG_VIETNAMESE__)
EMSPosition mapped_cursor_position;
UI_character_type current_character,dummy_c = 0;
EMSData* data=b->data;
EMSObject* current_object;
byte object_type;
viet_tone_mark tone_mark = VIET_TONE_NONE;
viet_vowel_letter viet_vowel = VIET_VOWEL_NONE;
#endif
/* MTK Add Steven 20050505 */
#if defined(__MMI_LANG_THAI__)
EMSPosition mapped_cursor_position_thai;
UI_character_type current_character_thai,dummy_c_thai = 0;
EMSData* data_thai = b->data;
EMSObject* current_object_thai;
byte object_type_thai;
UI_character_type pre_one_char = 0;
UI_character_type pre_two_char = 0;
UI_character_type pre_three_char = 0;
#endif
/* MTK End */
#ifdef __MMI_MESSAGES_EMS__
EMS_cancel_object_focus();
#endif
#if defined(__MMI_LANG_VIETNAMESE__)
EMS_map_position(data,&data->CurrentPosition,&mapped_cursor_position);
object_type=pixtel_UI_EMS_input_box_get_previous_object(data,&mapped_cursor_position,¤t_character,¤t_object);
if (1==object_type)
{
if ((current_character >= 0x0300) && (current_character <= 0x0323))
{
object_type=pixtel_UI_EMS_input_box_get_previous_object(data,&mapped_cursor_position,&dummy_c,¤t_object);//get next character
if (1==object_type)
{
viet_vowel = mmi_viet_vowel_letter(dummy_c);
if (VIET_VOWEL_NONE != viet_vowel)
{
tone_mark = mmi_viet_tone_mark(current_character);
if (VIET_TONE_NONE != tone_mark)
{
current_character = mmi_viet_combine_vowel_tone(viet_vowel,tone_mark);
BackwardCurrentPositionSkipCR(b->data);
}
else
{
object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,¤t_object);
}
}
else
{
object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,¤t_object);
}
}
else if (0!=object_type)
{
object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,¤t_object);
}
}
}
#endif
/* MTK Steven 20050505 */
#if defined(__MMI_LANG_THAI__)
EMS_map_position(data_thai, &data_thai->CurrentPosition, &mapped_cursor_position_thai);
object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, ¤t_character_thai, ¤t_object_thai);
if (object_type_thai == 1 && isThaiChar(current_character_thai))// object type == 1 --> character
{
object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &pre_one_char, ¤t_object_thai);
if(object_type_thai == 1 && isThaiChar(pre_one_char))
{
if(!RequireToMoveCursor(pre_one_char,current_character_thai))
{
BackwardCurrentPositionSkipCR(b->data);
object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &pre_two_char, ¤t_object_thai);
if(object_type_thai == 1 && isThaiChar(pre_two_char))
{
if(!RequireToMoveCursor(pre_two_char, pre_one_char))
{
BackwardCurrentPositionSkipCR(b->data);
object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &pre_three_char, ¤t_object_thai);
if(object_type_thai == 1 && isThaiChar(pre_three_char))
{
if(!RequireToMoveCursor(pre_three_char, pre_two_char)) BackwardCurrentPositionSkipCR(b->data);
else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,¤t_object_thai);
}
else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,¤t_object_thai);
}
else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,¤t_object_thai);
}
else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,¤t_object_thai);
}
else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,¤t_object_thai);
}
else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,¤t_object_thai);
}
#endif
/* MTK End */
if(BackwardCurrentPositionSkipCR(b->data)!=1)
{
UI_editor_play_tone_cannot_navigate();
}
else
{
pixtel_UI_EMS_input_box_set_text_format_cursor_position(b);
pixtel_UI_EMS_input_box_locate_cursor(b);
b->saved_cursor_ax=-1;
}
}
byte pixtel_UI_EMS_input_box_forward_cursor(UI_EMS_input_box *b)
{ if(b->data->CurrentPosition.OffsetToText<=(b->data->textLength))
{ //START TARUN 20041212
if(ForwardCurrentPositionSkipCR(b->data)==1)
//if(ForwardCurrentPositionSkipCR(b->data)>=1)
//END TARUN 20041212
return(1);
}
return(0);
}
void pixtel_UI_EMS_input_box_next(UI_EMS_input_box *b)
{
#if defined(__MMI_LANG_VIETNAMESE__)
EMSPosition mapped_cursor_position;
UI_character_type current_character,dummy_c = 0;
EMSData* data=b->data;
EMSObject* current_object;
byte object_type;
viet_tone_mark tone_mark = VIET_TONE_NONE;
viet_vowel_letter viet_vowel = VIET_VOWEL_NONE;
#endif
/* MTK Add Steven 20050505 */
#if defined(__MMI_LANG_THAI__)
EMSPosition mapped_cursor_position_thai;
UI_character_type current_character_thai,dummy_c_thai = 0;
EMSData* data_thai = b->data;
EMSObject* current_object_thai;
byte object_type_thai;
UI_character_type next_one_char = 0;
UI_character_type next_two_char = 0;
UI_character_type next_three_char = 0;
#endif
/* MTK End */
#ifdef __MMI_MESSAGES_EMS__
EMS_cancel_object_focus();
#endif
#if defined(__MMI_LANG_VIETNAMESE__)
EMS_map_position(data,&data->CurrentPosition,&mapped_cursor_position);
object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,¤t_character,¤t_object);
if (1==object_type)
{
if ((current_character > 0x0040) && (current_character < 0x01B1))
{
object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,¤t_object);//get next character
if (1==object_type)
{
tone_mark = mmi_viet_tone_mark(dummy_c);
if (VIET_TONE_NONE != tone_mark)
{
viet_vowel = mmi_viet_vowel_letter(current_character);
if (VIET_VOWEL_NONE != viet_vowel)
{
current_character = mmi_viet_combine_vowel_tone(viet_vowel,tone_mark);
pixtel_UI_EMS_input_box_forward_cursor(b);
}
else
{
object_type=pixtel_UI_EMS_input_box_get_previous_object(data,&mapped_cursor_position,&dummy_c,&cur
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -