?? 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;//漢字結構信息
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 + -