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

📄 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;
int first_sound_len;
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 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(dict_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(3, 30);
	resize_singleline_inputbox(169, 25);

#else
	move_singleline_inputbox(3, 30);
	resize_singleline_inputbox(234, 26);
#endif
	dict_init_data();
	DICT_IS_CHARGED = 0;
	dict_main();
}
void dict_main(void)
{
	Set_GOBACK_NORMAL();
	LM_disable_softkey_flag=1;////禁止画 softkey 的图片
	EntryNewScreen(ZX_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(1524);
		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)
{
	gui_lock_double_buffer();
#ifdef __MMI_TOUCH_SCREEN__
	//dict_draw_picture_by_name((char*)"dict\\dict_beijing_tp.gif",0,0);
	zx_draw_pic_not_anim((char*)"dict\\dict_beijing_tp.gif",0,0,0);
#else
	//dict_draw_picture_by_name((char*)"dict\\dict_beijing.gif",0,0);
	zx_draw_pic_not_anim((char*)"dict\\dict_beijing.gif",0,0,0);
#endif	
	show_singleline_inputbox();
	dict_draw_cur_menu_active();
	dict_get_word_list();
	gui_unlock_double_buffer();
	gui_BLT_double_buffer(0,0,UI_device_width - 1,UI_device_height - 1);
	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()//modified
{
	char str_tittle[20];
	char un_buff[40];
	unsigned short offset_x;
	unsigned short offset_y;
	int  character_length=0, character_height=0;
	switch(dict_sc_cur_menu)
	{
	case 0:	
		zx_show_text_mid(DICT_TITTLE_OFFSET_Y,(char*)"英汉大词典",0,0,0);
		zx_draw_pic_not_anim((char *) "dict\\en_ch_button_active.gif", DICT_ITEM_BEGIN_X,DICT_ITEM_BEGIN_Y,1);
		break;
	case 1:
		zx_show_text_mid(DICT_TITTLE_OFFSET_Y,(char*)"汉英大词典",0,0,0);
		zx_draw_pic_not_anim((char *) "dict\\ch_en_button_active.gif", DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*1,DICT_ITEM_BEGIN_Y,1);
		break;
	case 2:
		zx_show_text_mid(DICT_TITTLE_OFFSET_Y,(char*)"中华成语词典",0,0,0);
		zx_draw_pic_not_anim((char *) "dict\\idiom_button_active.gif", DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*2,DICT_ITEM_BEGIN_Y,1);
		break;
	case 3:
		zx_show_text_mid(DICT_TITTLE_OFFSET_Y,(char*)"中华汉语字典",0,0,0);
		zx_draw_pic_not_anim((char *) "dict\\ch_word_button_active.gif", DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*3,DICT_ITEM_BEGIN_Y,1);
		break;
	case 4:
		zx_show_text_mid(DICT_TITTLE_OFFSET_Y,(char*)"英文人名词典",0,0,0);
		zx_draw_pic_not_anim((char *) "dict\\man_name_button_active.gif", DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*4,DICT_ITEM_BEGIN_Y,1);
		break;
	case 5:
		zx_show_text_mid(DICT_TITTLE_OFFSET_Y,(char*)"英文地名词典",0,0,0);
		zx_draw_pic_not_anim((char *) "dict\\place_button_active.gif", DICT_ITEM_BEGIN_X+DICT_ITEM_WIDTH*5,DICT_ITEM_BEGIN_Y,1);
		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];
	zx_draw_pic_not_anim((char*)"dict\\dict_bottom_right.gif",DICT_BOTTOM_RIGHT_OFFSET_X,DICT_BOTTOM_RIGHT_OFFSET_Y,1);
	if(DICT_IS_SHOW_CUR_ITEM==0)
	{
		if(i)
		{
			zx_show_text(DICT_BOTTOM_TEXT_RIGHT_OFFSET_X,DICT_BOTTOM_TEXT_OFFSET_Y,( char * )"退出", 255,255,255);
		}
		else
			zx_show_text(DICT_BOTTOM_TEXT_RIGHT_OFFSET_X,DICT_BOTTOM_TEXT_OFFSET_Y,( char * )"退出", 0,0,0);
	}
	else
	{
		if(DICT_IS_INPUT_NULL)
		{
			if(i)
			{
				zx_show_text(DICT_BOTTOM_TEXT_RIGHT_OFFSET_X,DICT_BOTTOM_TEXT_OFFSET_Y,(char*)"返回",255,255,255);
			}
			else
				zx_show_text(DICT_BOTTOM_TEXT_RIGHT_OFFSET_X,DICT_BOTTOM_TEXT_OFFSET_Y,(char*)"返回",0,0,0);
		}
		else
		{
			if(i)
			{
				zx_show_text(DICT_BOTTOM_TEXT_RIGHT_OFFSET_X,DICT_BOTTOM_TEXT_OFFSET_Y,(char*)"删除",255,255,255);
			}
			else
				zx_show_text(DICT_BOTTOM_TEXT_RIGHT_OFFSET_X,DICT_BOTTOM_TEXT_OFFSET_Y,(char*)"删除",0,0,0);
		}
	}
}
void dict_show_lsk_fun(int i)
{
	if(i)
		zx_show_text(4,DICT_BOTTOM_TEXT_OFFSET_Y,(char*)"输入",255,255,255);
	else
		zx_show_text(4,DICT_BOTTOM_TEXT_OFFSET_Y,(char*)"输入",0,0,0);
}
void dict_editbox_update_callback()
{
	StartTimer(learn_machine_get_wordlist, 700, dict_get_word_list);
}
void dict_get_word_list(void)
{
	unsigned short input_buffer[64];
	unsigned char  *p_word=NULL;

⌨️ 快捷键说明

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