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

📄 dict_start.c

📁 在mtk平台上开发的电子词典源码
💻 C
📖 第 1 页 / 共 4 页
字号:
	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 + -