📄 dict_start.c
字号:
int i;
int flag;
if (UCS2_Text_len((unsigned short *)MMI_singleline_inputbox.text)>0)
{DICT_IS_INPUT_NULL=0;}
else DICT_IS_INPUT_NULL = 1;
zt_dict_list_roll_content_current_line = 1;
word_list_num = 0;
dict_cur_focus = 0;
dict_list_cur_line = 0;
dict_list_begin = 0;
memset(word_list,0,1024);
if (DICT_IS_INPUT_NULL)
{
memset(gb_buffer,0,128);
switch (dict_sc_cur_menu)
{
case 0:
case 4:
case 5:
memcpy(gb_buffer,"a",2);
DICT_IS_SHOW_CUR_ITEM = 0;
break;
case 1:
case 2:
memcpy(gb_buffer,"阿",2);
DICT_IS_SHOW_CUR_ITEM = 0;
break;
case 3:
memcpy(gb_buffer,"阿",2);
}
dict_show_lsk_fun(0);
dict_show_rsk_fun(0);
}
else
{
DICT_IS_SHOW_CUR_ITEM = 1;
dict_show_lsk_fun(0);
dict_show_rsk_fun(0);
memset(input_buffer, 0, 128);
memset(gb_buffer, 0, 128);
if(dict_sc_cur_menu == 3)
{
memcpy(input_buffer, MMI_singleline_inputbox.text, 2);
}
else
memcpy(input_buffer, MMI_singleline_inputbox.text, MMI_singleline_inputbox.text_length);
LM_UNICODE_TO_GB(gb_buffer, (unsigned char *)input_buffer, 128);
if(gb_buffer[0]==0) return;
}
switch(dict_sc_cur_menu)//联想单词
{
case 0:
word_list_num = Get_English_Word_List(gb_buffer,word_list,0);
break;
case 1:
word_list_num = Get_Chinese_Word_List(gb_buffer,word_list,0);
break;
case 2:
flag = get_idiom_list((char*)gb_buffer,(char*)word_list,dict_idiom_list_id);
p_word = word_list;
for (i=0;i<=20&&*p_word!=0;i++)
{
word_list_num++;
p_word = p_word + strlen((char*)p_word) + 1;
}
break;
case 3:
zt_dict_exp_roll_content_current_line = 1;
dict_get_explain();
return;
break;
case 4:
word_list_num = Get_class_word(gb_buffer,word_list,14,0);
break;
case 5:
word_list_num = Get_class_word(gb_buffer,word_list,13,0);
}//end switch在有输入的情况下联想单词
if (word_list_num == 0)
{
if (dict_cur_focus==0)
{
zx_draw_pic_not_anim((char *) "dict\\list_bg.gif", 0,DICT_LIST_BG_OFFSET_Y, 1);
zx_draw_pic_not_anim((char*)"dict\\explain_bg.gif",DICT_EXPLAIN_BG_OFFSET_X,DICT_LIST_BG_OFFSET_Y, 1);
}
else
{
zx_draw_pic_not_anim((char*)"dict\\dict_list_bg_unsel.gif",0,DICT_LIST_BG_OFFSET_Y,1);
zx_draw_pic_not_anim((char*)"dict\\dict_explain_bg_sel.gif",DICT_EXPLAIN_BG_OFFSET_X,DICT_LIST_BG_OFFSET_Y,1);
}
}
else
{
p_word = word_list;
for(i=0;i<word_list_num&&i<20;i++)
{
strcpy((char*)dict_word_list_array[i],(char *)p_word);
p_word = p_word + strlen((char*)p_word) + 1;
}
}
if (word_list_num==0)
{
memset(word_list,0,1024);
memset(dict_word_list_array,0,1600);
}
ZXWX_init_Vscroll_bar((unsigned char *)&zt_dict_list_vertical_scroll_bar,////buff
DICT_LEFT_SCROLL_OFFSET_X,////x
DICT_LIST_BG_OFFSET_Y,////y
13,////宽(默认值 SCROLL_BAR_DEFAULT_WIDTH)
DICT_SCROLL_HIGHT,////高
13,////两端按钮的高度(默认值(正方形): scroll_bar_width)
(unsigned short)(word_list_num+WORD_NUM_PER_PAGE-1),////共显示多少行
(unsigned short)WORD_NUM_PER_PAGE////一屏显示下多少行
// win_id
);
ZXWX_Vscroll_bar_set_handle(
(unsigned char *)(&zt_dict_list_vertical_scroll_bar),////buff
ZT_Dict_List_Rollbar_CallbackMain
);
ZXWX_show_Vscroll_bar((unsigned char *)(&zt_dict_list_vertical_scroll_bar));
dict_output_word_list(1);
}
void dict_output_word_list(int flag)
{
int i;
unsigned char text_buff[128];
if (word_list_num == 0)
{
if (dict_cur_focus == 0)
{
zx_draw_pic_not_anim((char*)"dict\\list_bg.gif",0,DICT_LIST_BG_OFFSET_Y,1);
}
else
{
zx_draw_pic_not_anim((char*)"dict\\dict_list_bg_unsel.gif",0,DICT_LIST_BG_OFFSET_Y,1);
}
dict_get_explain();
return;
}
dict_list_cur_line = dict_list_cur_line + zt_dict_list_flag;
zt_dict_list_flag = 0;
if (dict_list_cur_line<0)
{
dict_list_cur_line = 0;
}
else if(dict_list_cur_line>=WORD_NUM_PER_PAGE)
dict_list_cur_line = WORD_NUM_PER_PAGE - 1;
dict_list_begin = zt_dict_list_roll_content_current_line - dict_list_cur_line - 1;
gui_lock_double_buffer();
if (dict_cur_focus == 0)
{
// dict_draw_picture_by_name((char*)"dict\\list_bg.gif",0,DICT_LIST_BG_OFFSET_Y);
zx_draw_pic_not_anim((char*)"dict\\list_bg.gif",0,DICT_LIST_BG_OFFSET_Y,1);
}
else
{
// dict_draw_picture_by_name((char*)"dict\\dict_list_bg_unsel.gif",0,DICT_LIST_BG_OFFSET_Y);
zx_draw_pic_not_anim((char*)"dict\\dict_list_bg_unsel.gif",0,DICT_LIST_BG_OFFSET_Y,1);
}
if (DICT_IS_SHOW_CUR_ITEM)
{
zx_draw_pic_not_anim((char*)"dict\\list_item_sel.gif",DICT_LIST_ITEM_OFFSET_X,DICT_LIST_ITEM_OFFSET_Y+dict_list_cur_line*DICT_LIST_ITEM_HEIGHT,1);
// dict_draw_picture_by_name((char*)"dict\\list_item_sel.gif",DICT_LIST_ITEM_OFFSET_X,DICT_LIST_ITEM_OFFSET_Y+dict_list_cur_line*DICT_LIST_ITEM_HEIGHT);
}
for (i=0;i<WORD_NUM_PER_PAGE&&i<word_list_num;i++)
{
MY_GB_TO_UNICODE(text_buff,(unsigned char*)dict_word_list_array[dict_list_begin+i],64);
Show_Text_Best(DICT_LIST_ITEM_OFFSET_X,(unsigned short)(DICT_LIST_ITEM_OFFSET_Y+DICT_LIST_TEXT_HEIGHT*i),DICT_EXPLAIN_BG_OFFSET_X-15,25,text_buff,0,0,0);
}
gui_unlock_double_buffer();
gui_BLT_double_buffer(0,DICT_LIST_BG_OFFSET_Y,DICT_EXPLAIN_BG_OFFSET_X-15,DICT_SCROLL_HIGHT+DICT_LIST_BG_OFFSET_Y);
if (flag)
{
zt_dict_exp_roll_content_current_line = 1;
dict_get_explain();
}
}
void dict_get_explain(void)
{
unsigned char cur_word[128];
unsigned char cur_word_explain[512];
unsigned char idiom_sound[128];
unsigned short id = 0;
unsigned char all_explain_buffer[1024];
int i;
unsigned char chn_sound1_buf[128];
unsigned char chn_sound2_buf[128];
// if (DICT_IS_INPUT_NULL&&dict_sc_cur_menu!=3)
if (DICT_IS_SHOW_CUR_ITEM==0&&dict_sc_cur_menu!=3)
{
dict_output_word_explain();
return;
}
explain_line_num = 0;
memset(cur_word,0,128);
memset(cur_word_explain,0,512);
memset(cur_sound,0,128);
memset(idiom_sound,0,128);
memset(dict_explain_array,0,1024);
memset(all_explain_buffer,0,1024);
memset(cur_sound,0,128);
if (dict_sc_cur_menu!=3)
{
strcpy((char*)cur_word,(char*)dict_word_list_array[dict_list_cur_line+dict_list_begin]);
}
switch(dict_sc_cur_menu)
{
case 0:
if (word_list_num==0)
{break;}
get_english_word_explain(cur_word,cur_sound,cur_word_explain);
i = strlen((char*)cur_sound);
if(i == 0)
{
dict_sound_begin_line = 100;
}
else
{
dict_sound_begin_line = dict_divide_text_to_arraylist(UI_DEVICE_WIDTH-13-DICT_EXPLAIN_BG_OFFSET_X,(char*)cur_word,(char*)dict_explain_array,20);
}
Change_Explain_Text((char *)cur_word_explain);////转换一下解释的格式
strcat((char*)all_explain_buffer,(char*)cur_word);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_sound);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_word_explain);
break;
case 1:
if (word_list_num==0)
{break;}
get_Chinese_word_explain(cur_word, cur_word_explain);
strcat((char*)all_explain_buffer,(char*)cur_word);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_word_explain);
break;
case 2:
if (word_list_num==0)
{break;}
id = dict_idiom_list_id[zt_dict_list_roll_content_current_line-1];
get_idiom_explain(id, (char*)idiom_sound,(char*)cur_word_explain);
strcat((char*)all_explain_buffer,(char*)cur_word);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)idiom_sound);
strcat((char*)all_explain_buffer,(char*)cur_word_explain);
break;
case 3:
i = get_chn_info((char*)gb_buffer,mmi_ps_chn_info);
if (i==0)
{
sprintf((char*)cur_word_explain,"很抱歉,没有找到该汉字的解释");
}
else
{
i=get_chn_explain(&mmi_s_chn_info,(char*)chn_sound1_buf,(char*)chn_sound2_buf,(char*)cur_word_explain);
if (i==0)
{
sprintf((char*)cur_word_explain,"很抱歉,没有找到该汉字的解释");
break;
}
}
strcat((char*)all_explain_buffer,(char*)gb_buffer);
strcat((char*)all_explain_buffer,(char*)":");
strcat((char*)all_explain_buffer,(char*)"\n");
strcat((char*)all_explain_buffer,(char*)cur_word_explain);
break;
case 4:
get_english_word_explain(cur_word, cur_sound, cur_word_explain);
i = strlen((char*)cur_sound);
if(i == 0)
{
dict_sound_begin_line = 100;
}
else
{
dict_sound_begin_line = dict_divide_text_to_arraylist(UI_DEVICE_WIDTH-13-DICT_EXPLAIN_BG_OFFSET_X,(char*)cur_word,(char*)dict_explain_array,20);
}
Change_Explain_Text((char *)cur_word_explain);////转换一下解释的格式
strcat((char*)all_explain_buffer,(char*)cur_word);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_sound);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_word_explain);
break;
case 5:
get_english_word_explain(cur_word, cur_sound, cur_word_explain);
i = strlen((char*)cur_sound);
if(i == 0)
{
dict_sound_begin_line = 100;
}
else
{
dict_sound_begin_line = dict_divide_text_to_arraylist(UI_DEVICE_WIDTH-13-DICT_EXPLAIN_BG_OFFSET_X,(char*)cur_word,(char*)dict_explain_array,20);
}
Change_Explain_Text((char *)cur_word_explain);////转换一下解释的格式
strcat((char*)all_explain_buffer,(char*)cur_word);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_sound);
strcat((char*)all_explain_buffer,"\n");
strcat((char*)all_explain_buffer,(char*)cur_word_explain);
break;
}
memset(dict_explain_array,0,1024);
if (dict_sc_cur_menu!=3)
{
explain_line_num = dict_divide_text_to_arraylist(UI_DEVICE_WIDTH-17-DICT_EXPLAIN_BG_OFFSET_X,(char*)all_explain_buffer,(char*)dict_explain_array,20);
}
else
explain_line_num = dict_divide_text_to_arraylist(UI_DEVICE_WIDTH-17,(char*)all_explain_buffer,(char*)dict_explain_array,40);
ZXWX_init_Vscroll_bar((unsigned char *)&zt_dict_exp_vertical_scroll_bar,////buff
DICT_RIGHT_SCROLL_OFFSET_X,////x
DICT_LIST_BG_OFFSET_Y,////y
13,////宽(默认值 SCROLL_BAR_DEFAULT_WIDTH)
DICT_SCROLL_HIGHT,////高
13,////两端按钮的高度(默认值(正方形): scroll_bar_width)
(unsigned short)explain_line_num,////共显示多少行
(unsigned short)EXP_NUM_PER_PAGE////一屏显示下多少行
//win_id
);
ZXWX_Vscroll_bar_set_handle(
(unsigned char *)(&zt_dict_exp_vertical_scroll_bar),////buff
ZT_Dict_Exp_Rollbar_CallbackMain
);
ZXWX_show_Vscroll_bar((unsigned char *)(&zt_dict_exp_vertical_scroll_bar));
dict_output_word_explain();
}
void dict_output_word_explain()
{
int i;
int second_sound_len;
unsigned char un_buff[80];
unsigned char temp_buffer[30];
stFontAttribute *LM_Font_PT;
if (DICT_IS_SHOW_CUR_ITEM==0&&dict_sc_cur_menu!=3)
{
gui_lock_double_buffer();
dict_draw_picture_by_name("dict\\dict_no_word_bg.gif",DICT_EXPLAIN_BG_OFFSET_X,DICT_LIST_BG_OFFSET_Y);
gui_unlock_double_buffer();
gui_BLT_double_buffer(DICT_EXPLAIN_BG_OFFSET_X,DICT_LIST_BG_OFFSET_Y,227,288);
return;
}
gui_lock_double_buffer();
if (dict_sc_cur_menu != 3)
{
if(dict_cur_focus==0)
dict_draw_picture_by_name("dict\\explain_bg.gif",DICT_EXPLAIN_BG_OFFSET_X,DICT_LIST_BG_OFFSET_Y);
else
dict_draw_picture_by_name("dict\\dict_explain_bg_sel.gif",DICT_EXPLAIN_BG_OFFSET_X,DICT_LIST_BG_OFFSET_Y);
Text_Clip_Begin();
if (dict_sound_begin_line!=100 && strlen((char*)cur_sound)!=0 && (dict_sc_cur_menu == 0||dict_sc_cur_menu == 4||dict_sc_cur_menu == 5))
{
first_sound_len = strlen((char*)(((dict_sound_begin_line*20)+dict_explain_array)));
}
for (i=0;i<EXP_NUM_PER_PAGE&&(zt_dict_exp_roll_content_current_line+i)<=explain_line_num;i++)
{
memset(un_buff,0,80);
if(dict_sc_cur_menu == 0||dict_sc_cur_menu == 4||dict_sc_cur_menu == 5)
{
if((i+zt_dict_exp_roll_content_current_line-1)==dict_sound_begin_line&&strlen((char*)cur_sound)!=0)
{
memset(temp_buffer,0,30);
memcpy(temp_buffer,((i+zt_dict_exp_roll_content_current_line-1)*20)+dict_explain_array,20);
MY_GB_TO_UNICODE(un_buff,(unsigned char*)(temp_buffer),64);
gui_set_font(&MMI_sublcd_font);
gui_move_text_cursor(DICT_EXPLAIN_BEGIN_OFFSET_X,(unsigned int)(DICT_EXPLAIN_BEGIN_OFFSET_Y+i*DICT_EXPLAIN_TEXT_HEIGHT));
gui_print_text((unsigned short*)(un_buff));
LM_Font_PT=(UI_font_type)(current_MMI_theme->title_text_font);
gui_set_font(LM_Font_PT);
continue;
}
else if(((i+zt_dict_exp_roll_content_current_line-1) ==(dict_sound_begin_line+1))&&strlen((char*)cur_sound)!=0)
{
if(first_sound_len<strlen((char*)cur_sound))
{
second_sound_len = strlen((char*)cur_sound) - first_sound_len;
memset(temp_buffer,0,30);
memcpy(temp_buffer,((i+zt_dict_exp_roll_content_current_line-1)*20)+dict_explain_array,20);
MY_GB_TO_UNICODE(un_buff,temp_buffer,64);
gui_set_font(LM_Font_PT);
gui_move_text_cursor(DICT_EXPLAIN_BEGIN_OFFSET_X,(unsigned int)(DICT_EXPLAIN_BEGIN_OFFSET_Y+i*DICT_EXPLAIN_TEXT_HEIGHT));
gui_print_text((unsigned short*)(un_buff));
LM_Font_PT=(UI_font_type)(current_MMI_theme->title_text_font);
gui_set_font(LM_Font_PT);
continue;
}
else
MY_GB_TO_UNICODE(un_buff,(unsigned char*)(((i+zt_dict_exp_roll_content_current_line-1)*20)+dict_explain_array),64);
}
else
{
MY_GB_TO_UNICODE(un_buff,(unsigned char*)(((i+zt_dict_exp_roll_content_current_line-1)*20)+dict_explain_array),64);
}
}
else
{
MY_GB_TO_UNICODE(un_buff,(unsigned char*)(((i+zt_dict_exp_roll_content_current_line-1)*20)+dict_explain_array),64);
}
Show_Text_Best(DICT_EXPLAIN_BEGIN_OFFSET_X,(unsigned short)(DICT_EXPLAIN_BEGIN_OFFSET_Y+i*DICT_EXPLAIN_TEXT_HEIGHT),200,25,un_buff,0,0,0);
}
Text_Clip_End();
}
else if(dict_sc_cur_menu == 3)
{
dict_draw_picture_by_name("dict\\dict_chn_explain_bg.gif",0,88);
Text_Clip_Begin();
for (i=0;i<EXP_NUM_PER_PAGE&&(zt_dict_exp_roll_content_current_line+i)<=explain_line_num;i++)
{
MY_GB_TO_UNICODE(un_buff,(unsigned char*)(((i+zt_dict_exp_roll_content_current_line-1)*40)+dict_explain_array),80);
Show_Text_Best(2,(unsigned short)(89+i*20),240,25,un_buff,0,0,0);
}
Text_Clip_End();
}
gui_unlock_double_buffer();
gui_BLT_double_buffer(111,87,227,288);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -