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

📄 dict_start.c

📁 在MTK下开发的一个词典项目
💻 C
📖 第 1 页 / 共 4 页
字号:
#include "kal_release.h"
#include "kal_trace.h"
#include "stack_common.h"
#include "stack_msgs.h"
#include "app_ltlcom.h" /* Task message communiction */
#include "syscomp_config.h"
#include "task_config.h"        /* Task creation */
#include "app_buff_alloc.h"     /* Declaration of buffer management API */
#include "stacklib.h"   /* Basic type for dll, evshed, stacktimer */
#include "event_shed.h" /* Event scheduler */
#include "stack_timer.h"        /* Stack timer */

/* global includes */
#include "l1audio.h"
#include "device.h"
#include "custom_equipment.h"
#include "resource_audio.h"
#include "nvram_enums.h"
#include "nvram_struct.h"
#include "nvram_user_defs.h"
#include "nvram_data_items.h"
#include "custom_nvram_editor_data_item.h"
#include "fat_fs.h"     /* for FAT FS */
#include "drm_gprot.h"  /* DRM_REPLACE */
#include "FSAL.h"
#include "MP4_Parser.h"


#include "med_global.h"
#include "aud_defs.h"
#include "med_struct.h"
#include "med_api.h"
#include "med_context.h"
#include "aud_main.h"
#include "med_main.h"
#include "med_utility.h"
#include "dict.h"

unsigned short dict_down_place[10];
chn_info mmi_s_chn_info;//汉字结构信息
pchn_info mmi_ps_chn_info=&mmi_s_chn_info;
//存储输入的GB
unsigned char  gb_buffer[128];
int DICT_IS_INPUT_NULL;
int dict_is_show_charge_win;
unsigned short dict_idiom_list_id[20];
unsigned char dicts_single_inputbox_buf[128];
unsigned char *word_list=NULL;
int dict_sc_cur_menu;
unsigned char dict_word_list_array[20][80];//储存列表中的单词信息
unsigned char *dict_explain_array=NULL;//以行的形式储存解释信息
int word_list_num;//单词个数
int explain_line_num;//解释的行数
int zt_dict_list_roll_content_current_line;//
int zt_dict_list_flag;//判断滚动条上下移动的标志。正常不移动为0
int zt_dict_exp_roll_content_current_line;//
int dict_cur_focus;//判断上下键控制的是列表还是解释区域,0为列表,1为解释区域
int dict_sc_cur_win;//当前窗口 0英汉 1汉英 2成语 3汉字 4人名 5地名
int dict_key_down_line;//触笔点击列表框时,位置所在的行数
int dict_list_cur_line;//当前应该显示选中的行
int dict_bottom_key_flag;//判断输入框是否有内容,为了显示右下是返回或者删除
int dict_list_begin;//显示列表时开始行
int DICT_IS_SHOW_CUR_ITEM;
int DICT_IS_CHARGED;//判断是否缴费了的变量

unsigned short dict_sound_begin_line;
unsigned char cur_sound[128];

extern void dict_draw_picture_by_name(char* gb_name,int off_x,int off_y);

struct WORD_AREA *Word_Area_List;
struct WORD_INFOMATION *Word_Info_List;
extern void LM_pinyin_shurufa(void);
unsigned long *Long_ID_index;

unsigned char tempsave[64]={0};
unsigned char gnoteString1[64]={0};
struct	VERT_SCROLL_ABR_STRUCT	zt_dict_list_vertical_scroll_bar;
struct	VERT_SCROLL_ABR_STRUCT	zt_dict_exp_vertical_scroll_bar;//滚动条
void dict_show_lsk_fun(int);
void dict_show_rsk_fun(int);
void dict_exit_fun(void);
unsigned short LM_dict_chinese_input_flag;
void Hilite_dict_main(void);
void Hilite_dict_entry(void);
void Hilite_dict_help(void);
void Hilite_dict_charge(void);


void dict_down_place_fun(void);
////初始化菜单的函数
void	Palm_learn_machine_init(void)
{
	////此菜单被选择时出现亮色
	SetHiliteHandler(MENU_ID_PALM_LEARN_MACHINE, Hilite_dict_main);
	SetHiliteHandler(MENU_ID_PALM_ENTRY_DICT, Hilite_dict_entry);
	SetHiliteHandler(MENU_ID_PALM_ENTRY_CHARGE, Hilite_dict_charge);
	SetHiliteHandler(MENU_ID_PALM_ENTRY_HELP, Hilite_dict_help);
}


void	Hilite_dict_main(void)
{

	////设置左右键的文字和图标
	ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
	
	////设置按键(左右快键)的执行函数
	SetLeftSoftkeyFunction(dict_start_menu_win, KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);

}
void Hilite_dict_entry(void)
{
	ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
	
	////设置按键(左右快键)的执行函数
	SetLeftSoftkeyFunction(LM_dictions_mod, KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}

void Hilite_dict_help(void)
{
	ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
	
	////设置按键(左右快键)的执行函数
	SetLeftSoftkeyFunction(dict_help_win_fun, KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
	
}
void Hilite_dict_charge(void)
{
	ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
	ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
	
	////设置按键(左右快键)的执行函数
	SetLeftSoftkeyFunction(dict_help_charge_win_fun, KEY_EVENT_UP);
	SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}
void dict_start_menu_win(void)
{
 	U16 nStrItemList[10];
	U8 *guiBuffer;
	U16 nNumofItem;
	int fp;
	fp = MY_OPENFILE(DISK_TYPE, "dict\\dict_start_menu.gif", FS_READ_ONLY);
	if(fp<0)
	{ 	
	EntryNewScreen(SCR_ID_DICT_SETTING_WIN, NULL, dict_start_menu_win, NULL);
	guiBuffer = GetCurrGuiBuffer(SCR_ID_DICT_SETTING_WIN);
	RegisterHighlightHandler(ExecuteCurrHiliteHandler);
	nNumofItem = GetNumOfChild(MENU_ID_PALM_LEARN_MACHINE);
	GetSequenceStringIds(MENU_ID_PALM_LEARN_MACHINE, nStrItemList);
	SetParentHandler(MENU_ID_PALM_LEARN_MACHINE);
   	 ShowCategory15Screen(
		STR_PALM_LEARN_MACHINE,
		0,
		STR_GLOBAL_OK,
		IMG_GLOBAL_OK,
		STR_GLOBAL_BACK,
		IMG_GLOBAL_BACK,
		nNumofItem,
		nStrItemList,
		(U16*) gIndexIconsImageList,
		1,
		0,
		guiBuffer);
	    SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
	}
	else	
		dict_setting_win_fun();
}
void LM_dictions_mod(void)
{
	char text_gb[20];
	char text_un[40];
#ifndef	WIN32
	if(mmi_usb_is_in_mass_storage_mode()==MMI_TRUE)
	{
		memset(text_gb,0,20);
		memset(text_un,0,40);
		memcpy(text_gb,"USB使用中",12);
		MY_GB_TO_UNICODE((unsigned char *) text_un, (unsigned char *) text_gb, 40);
		DisplayPopup((U8*)text_un,IMG_GLOBAL_ERROR,0,1000,0);
		return;
	}
#endif
	if(IS_T_card_Exist()!=0)
	{
		memset(text_gb,0,20);
		memset(text_un,0,40);
		memcpy(text_gb,"记忆卡不存在",12);
		MY_GB_TO_UNICODE((unsigned char *) text_un, (unsigned char *) text_gb, 40);
		DisplayPopup((U8*)text_un,IMG_GLOBAL_ERROR,0,1000,0);
		return;
	}
	if(dict_init_datafile()==0)
	{
		memset(text_gb,0,20);
		memset(text_un,0,40);
		memcpy(text_gb,"数据文件丢失",12);
		MY_GB_TO_UNICODE((unsigned char *) text_un, (unsigned char *) text_gb, 40);
		DisplayPopup((U8*)text_un,IMG_GLOBAL_ERROR,0,1000,0);
		return;
	}
	if(dict_is_need_charge()==1)
	{
			if((mmi_bootup_is_nw_registration_ok()!=MMI_TRUE 
		|| mmi_bootup_is_sim_valid()!=MMI_TRUE
		|| mmi_bootup_is_sim_removed()==MMI_TRUE)
#ifdef	__MMI_DUAL_SIM_MASTER__
		&& (mmi_bootup_is_sim2_nw_registration_ok()!=MMI_TRUE
		|| mmi_bootup_is_sim2_valid()!=MMI_TRUE
		|| mmi_bootup_is_sim2_removed()==MMI_TRUE)
#endif
	)
		{
		memset(text_gb,0,20);
		memset(text_un,0,40);
		memcpy(text_gb,"SIM卡不可用",12);
		MY_GB_TO_UNICODE((unsigned char *) text_un, (unsigned char *) text_gb, 40);
		DisplayPopup((U8*)text_un,IMG_GLOBAL_ERROR,0,1000,0);
		return;
		}
	if(mmi_bootup_get_active_flight_mode())
		{
		memset(text_gb,0,20);
		memset(text_un,0,40);
		memcpy(text_gb,"飞行模式下无法使用",18);
		MY_GB_TO_UNICODE((unsigned char *) text_un, (unsigned char *) text_gb, 40);
		DisplayPopup((U8*)text_un,IMG_GLOBAL_ERROR,0,1000,0);
		return;
		}	
	}
	dict_sc_cur_menu = 0;
	LM_dict_chinese_input_flag = 0;
	create_singleline_inputbox((unsigned short *)dicts_single_inputbox_buf, 60);
#ifdef __MMI_TOUCH_SCREEN__
	move_singleline_inputbox(1, 23);
	resize_singleline_inputbox(119, 21);
#endif
	dict_init_data();
	DICT_IS_CHARGED = 0;



	dict_main();
}
void dict_main(void)
{
	Set_GOBACK_NORMAL();
	LM_disable_softkey_flag=1;////禁止画 softkey 的图片
	EntryNewScreen(SCR_LEARN_MACHINE_DICT_MENU, dict_exit_fun, dict_main, NULL);
	if(word_list==NULL)
	{
		word_list = (unsigned char *)med_alloc_ext_mem(1024);
		if(word_list==NULL)
			return;
	}
	if(dict_explain_array==NULL)
	{
		dict_explain_array = (unsigned char *)med_alloc_ext_mem(1024);
		if(dict_explain_array==NULL)
			return;
	}
	if(Word_Info_List==NULL)
	{
		Word_Info_List = (struct WORD_INFOMATION  *)med_alloc_ext_mem((sizeof(struct WORD_INFOMATION))*GET_WORD_MAX_NUM);
		if(Word_Info_List==NULL)
			return;
	}	
	if(Word_Area_List==NULL)
	{
		Word_Area_List = (struct WORD_AREA  *)med_alloc_ext_mem((sizeof(struct WORD_AREA))*100);
		if(Word_Area_List==NULL)
			return;
	}
	if(Long_ID_index==NULL)
	{
		Long_ID_index = (unsigned long  *)med_alloc_ext_mem((sizeof(unsigned long))*100);
		if(Long_ID_index==NULL)
			return;
	}
	entry_full_screen();
	close_title_status_icon();////禁止显示状态条
	if(dict_init_datafile()==0)
	{
		LM_dicts_menu_DisIdleScr();
		return;
	}
	if(LM_dict_chinese_input_flag==1)
	{
		LM_Dicts_chinese_input_refresh();
		LM_dict_chinese_input_flag = 0;
	}
	dict_draw_win();
	Set_GOBACK_NORMAL();
}
void dict_exit_fun(void)
{
	StopTimer(LEARN_MACHINE_KEYS_TIMER_ID);
	if(word_list)
	{
		med_free_ext_mem((void **)&word_list);
		word_list = NULL;
	}
	if(dict_explain_array)
	{
		med_free_ext_mem((void **)&dict_explain_array);
		dict_explain_array = NULL;
	}
	if(Word_Info_List)
	{
		med_free_ext_mem((void **)&Word_Info_List);
		Word_Info_List = NULL;
	}
	if(Word_Area_List)
	{
		med_free_ext_mem((void **)&Word_Area_List);
		Word_Area_List = NULL;
	}
	if(Long_ID_index)
	{
		med_free_ext_mem((void **)&Long_ID_index);
		Long_ID_index = NULL;
	}
	StopTimer(LEARN_MACHINE_GET_WORDLIST);
	MY_exitcatfun();
}
void dict_draw_win(void)
{
	MY_graph_begin();
#ifdef __MMI_TOUCH_SCREEN__
	dict_draw_picture_by_name((char*)"dict\\dict_beijing_tp.gif",0,0);
#else
	dict_draw_picture_by_name((char*)"dict\\dict_beijing.gif",0,0);
#endif	
	show_singleline_inputbox();
	dict_draw_cur_menu_active();
	dict_get_word_list();
	MY_graph_end();
	if((dict_is_need_charge()==1)&&dict_is_show_charge_win)
		dict_charge_win_fun();
	else
		dict_main_setkey_fun();
}
void dict_main_setkey_fun(void)
{
	ClearAllKeyHandler();
	////输入法
	if(DICT_IS_CHARGED)
		{
		register_singleline_inputbox_keys();
		dict_set_input_box_mode((unsigned short)dict_sc_cur_menu);
		register_singleline_inputbox_input_callback(dict_editbox_update_callback);
		}
	////end 键
	SetKeyHandler(LM_dicts_menu_DisIdleScr, KEY_END, KEY_EVENT_UP);
	SetKeyHandler(MY_donothing, KEY_END, KEY_EVENT_DOWN);
	////左右键
	SetKeyHandler(dict_main_right_key_fun,KEY_RSK,KEY_EVENT_UP);//右软键
	SetKeyHandler(dict_main_right_key_long_fun,KEY_RSK,KEY_EVENT_LONG_PRESS);
	SetKeyHandler(dict_main_right_key_down_fun,KEY_RSK,KEY_EVENT_DOWN);

	SetKeyHandler(dict_main_left_key_fun,KEY_LSK,KEY_EVENT_UP);//左软键
	SetKeyHandler(dict_main_left_key_down_fun,KEY_LSK,KEY_EVENT_DOWN);

	////四个方向键
	SetKeyHandler(dict_main_keyup_up, KEY_UP_ARROW, KEY_EVENT_UP);//上
	SetKeyHandler(dict_main_keyup_down, KEY_UP_ARROW, KEY_EVENT_DOWN);
	SetKeyHandler(dict_main_keyup_long, KEY_UP_ARROW, KEY_LONG_PRESS);
	
	SetKeyHandler(dict_main_keydown_up, KEY_DOWN_ARROW, KEY_EVENT_UP);//下
	SetKeyHandler(dict_main_keydown_down, KEY_DOWN_ARROW, KEY_EVENT_DOWN);
	SetKeyHandler(dict_main_keydown_long, KEY_UP_ARROW, KEY_LONG_PRESS);
	
	SetKeyHandler(dict_main_keyleft_up, KEY_LEFT_ARROW, KEY_EVENT_UP);//左
	SetKeyHandler(MY_donothing, KEY_LEFT_ARROW, KEY_EVENT_DOWN);

	SetKeyHandler(dict_main_keyright_up, KEY_RIGHT_ARROW, KEY_EVENT_UP);//右
	SetKeyHandler(MY_donothing, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
#ifdef __MMI_TOUCH_SCREEN__

	mmi_pen_register_down_handler(dict_pen_down_fun);
	mmi_pen_register_up_handler(dict_pen_up_fun);
	mmi_pen_register_move_handler(dict_pen_move_fun);
#endif
}
void dict_draw_cur_menu_active()
{
	char str_tittle[20];
	char un_buff[40];
	switch(dict_sc_cur_menu)
	{
	case 0:	
		memset(un_buff,0,40);
		memset(str_tittle,0,20);
		memcpy(str_tittle,"英汉大词典",10);
		MY_GB_TO_UNICODE((unsigned char *) un_buff, (unsigned char *) str_tittle, 20);
		Text_Clip_Begin();
		Show_Text_Best(45, 3, 220, 25, (unsigned char *) un_buff, 0, 0, 0);
		Text_Clip_End();
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\input_chn_gray.gif",178,26,0);
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\en_ch_button_active.gif",1,59,0);
//		dict_draw_picture_by_name((char*)"dict\\input_chn_gray.gif",122,23);
		dict_draw_picture_by_name((char*)"dict\\en_ch_button_active.gif",1,46);
		break;
	case 1:
		memset(un_buff,0,40);
		memset(str_tittle,0,20);
		memcpy(str_tittle,"汉英大词典",10);
		MY_GB_TO_UNICODE((unsigned char *) un_buff, (unsigned char *) str_tittle, 20);
		Text_Clip_Begin();
		Show_Text_Best(45, 3, 420, 25, (unsigned char *) un_buff, 0, 0, 0);
		Text_Clip_End();
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\ch_en_button_active.gif",41,59,0);
		dict_draw_picture_by_name((char*)"dict\\ch_en_button_active.gif",30,46);
		break;
	case 2:
		memset(un_buff,0,40);
		memset(str_tittle,0,20);
		memcpy(str_tittle,"中华成语词典",12);
		MY_GB_TO_UNICODE((unsigned char *) un_buff, (unsigned char *) str_tittle, 20);
		Text_Clip_Begin();
		Show_Text_Best(40,3,  420, 25, (unsigned char *) un_buff, 0, 0, 0);
		Text_Clip_End();
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\idiom_button_active.gif",81,59,0);
		dict_draw_picture_by_name((char*)"dict\\idiom_button_active.gif",59,46);
		break;
	case 3:
		memset(un_buff,0,40);
		memset(str_tittle,0,20);
		memcpy(str_tittle,"中华汉语字典",12);
		MY_GB_TO_UNICODE((unsigned char *) un_buff, (unsigned char *) str_tittle, 20);
		Text_Clip_Begin();
		Show_Text_Best(40,3,  420, 25, (unsigned char *) un_buff, 0, 0, 0);
		Text_Clip_End();
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\ch_word_button_active.gif",121,59,0);
		dict_draw_picture_by_name((char*)"dict\\ch_word_button_active.gif",88,46);
		break;
	case 4:
		memset(un_buff,0,40);
		memset(str_tittle,0,20);
		memcpy(str_tittle,"英文人名词典",12);
		MY_GB_TO_UNICODE((unsigned char *) un_buff, (unsigned char *) str_tittle, 20);
		Text_Clip_Begin();
		Show_Text_Best(40,3,  420, 25, (unsigned char *) un_buff, 0, 0, 0);
		Text_Clip_End();
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\input_chn_gray.gif",178,26,0);
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\man_name_button_active.gif",161,59,0);
//		dict_draw_picture_by_name((char*)"dict\\input_chn_gray.gif",122,23);
		dict_draw_picture_by_name((char*)"dict\\man_name_button_active.gif",117,46);
		break;
	case 5:
		memset(un_buff,0,40);
		memset(str_tittle,0,20);
		memcpy(str_tittle,"英文地名词典",12);
		MY_GB_TO_UNICODE((unsigned char *) un_buff, (unsigned char *) str_tittle, 20);
		Text_Clip_Begin();
		Show_Text_Best(40,3,  420, 25, (unsigned char *) un_buff, 0, 0, 0);
		Text_Clip_End();
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\input_chn_gray.gif",178,26,0);
//		Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\place_button_active.gif",201,59,0);
//		dict_draw_picture_by_name((char*)"dict\\input_chn_gray.gif",122,23);
		dict_draw_picture_by_name((char*)"dict\\place_button_active.gif",146,46);
		break;
	}
}
void dict_exit(void)
{
	if (LM_disable_softkey_flag)
	{
		LM_disable_softkey_flag = 0;
	}
	return;
}

void dict_show_rsk_fun(int i)
{
	unsigned char str_delete[]= "删除";
	unsigned char str_e[]="返回";
	unsigned char str_exit[]="退出";
	unsigned char un_buff[16];
//	Draw_Picture_by_name(DISK_TYPE,(char*)"dict\\dict_bottom_right.gif",195,291,0);
	dict_draw_picture_by_name((char*)"dict\\dict_bottom_right.gif",142,198);
	Text_Clip_Begin();
	if(DICT_IS_SHOW_CUR_ITEM==0)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -