天天看點

MTK6225--fixed list快捷輸入

一、快捷方式:接收數字
       在show一個fixed list的時候,例如:ShowCategory53Screen(),其調用順序是:
ShowCategory53Screen()
 
 
ShowCategory353Screen()
 
 
ShowListCategoryScreen()在這個函數中,會執行:register_fixed_list_shortcut_handler()即是用來注冊快捷方式的。
 
比如:進入【通話設定】中的【呼叫等待】清單:
1開啟
2關閉
3查詢
 
進入某一個選項的方式有2種:
1.傳統方式:通過方向鍵高亮一個選項,然後按下左軟體;
2.快捷方式:直接在鍵盤上按下1,或者2,或者3。
 
       快捷方式中,例如按下數字鍵2,進入:menu_shortcut_handler_keyinput(),把輸入的數字儲存在MMI_menu_shortcut_box中。使用者可輸入最發數字是99,即在輸入第一個數字之後,在一個定時器溢出之前輸入第二個數字即可。
       定時器溢出後,進入:menu_shortcut_handler_timeout()。其中有幾個注意之處:
       (1)gdi_layer_lock_frame_buffer()---鎖定
       (2)menu_shortcut_goto_item(menu_shortcut_item_highlighted)---高亮選項,相當于利用              方向鍵高亮該選項。
       (3)gdi_layer_unlock_frame_buffer()--解鎖
       (4)menu_shortcut_item_selected(menu_shortcut_item_highlighted)—進入該選項,相當                于按下左軟體。
 
二、快捷方式—接收字母
       按數字鍵2一次,等同于輸入a;
     按數字鍵2兩次,等同于輸入b;     
       按數字鍵2三次,等同于輸入c;
    一下以此類推。
       要實作這樣的快捷方式,在ShowCategoryXXXScreen()之後,要設定:
       set_numberless_multitap();
    register_multitap_no_draw_key_handlers();
      set_multitap_functions(mmi_SNF_list_alpha_index,                                                                                               mmi_SNF_list_alpha_index_input_callback);
       change_multitap_mode(0);
 
       藍色的兩個函數為注冊的CBACK函數。例如:
void mmi_SNF_list_alpha_index(U16 input)
{     //擷取輸入的字母(MTK6225接收的是大小字母)
    if (input >= 'A' && input <= 'Z')
    {
        highlight = g_SNF_alpha_index_list[input - 'A'];
        highlight --;
    }    
    fixed_list_goto_item((S32) highlight a);
}
 
void mmi_SNF_list_alpha_index_input_callback(void)
{     \\高亮
    fixed_list_goto_item((S32) highlight);
}      

繼續閱讀