?? dict_start.c
字號:
#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;//漢字結(jié)構(gòu)信息
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;//單詞個數(shù)
int explain_line_num;//解釋的行數(shù)
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;//判斷上下鍵控制的是列表還是解釋區(qū)域,0為列表,1為解釋區(qū)域
int dict_sc_cur_win;//當前窗口 0英漢 1漢英 2成語 3漢字 4人名 5地名
int dict_key_down_line;//觸筆點擊列表框時,位置所在的行數(shù)
int dict_list_cur_line;//當前應(yīng)該顯示選中的行
int dict_bottom_key_flag;//判斷輸入框是否有內(nèi)容,為了顯示右下是返回或者刪除
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);
////初始化菜單的函數(shù)
void Palm_learn_machine_init(void)
{
////此菜單被選擇時出現(xiàn)亮色
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)
{
////設(shè)置左右鍵的文字和圖標
ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
////設(shè)置按鍵(左右快鍵)的執(zhí)行函數(shù)
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);
////設(shè)置按鍵(左右快鍵)的執(zhí)行函數(shù)
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);
////設(shè)置按鍵(左右快鍵)的執(zhí)行函數(shù)
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);
////設(shè)置按鍵(左右快鍵)的執(zhí)行函數(shù)
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,"數(shù)據(jù)文件丟失",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();////禁止顯示狀態(tài)條
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 + -