MTK: LSK,RSK的标签与响应

来源:互联网 发布:女超人知乎 编辑:程序博客网 时间:2024/05/22 01:34

2009-05-04 | MTK: LSK,RSK的标签与响应

  以左软件LSK为例,当有标签时,按下LSK可以执行响应功能;当没有标签(NULL)时,按下LSK就无反应。

例如:开启电话簿数据保密时,进入电话簿要求输入4位密码,当输入不足4位时,左软件标签为空,达到4为时,左软件标签为OK。

刚进入输入密码界面函数EntryRstCheckPhoneLock()时,注册RegisterInputBoxValidationFunction(RstrSettingPasswdScrSoftKeyFunc); 用来控制左软件的标签显示问题。

1. 当输入不满4位时,

ChangeLeftSoftkey(0, 0);

        change_left_softkey(0, 0);

               MMI_softkeys[key].text = NULL,

        redraw_softkey(MMI_LEFT_SOFTKEY);

                     show_softkey(MMI_LEFT_SOFTKEY);

                          if ((MMI_softkeys[key].text == NULL) && (MMI_softkeys[key].normal_up_icon == NULL))

                              clear_softkey_handler(MMI_LEFT_SOFTKEY);

                                     ClearKeyHandler(KEY_LSK, KEY_EVENT_DOWN);   

                                           设置currKeyFuncPtrs[KEY_LSK][ KEY_EVENT_DOWN] = NULL;

                                     ClearKeyHandler(KEY_LSK, KEY_EVENT_UP);           

                                           设置currKeyFuncPtrs[KEY_LSK][ KEY_EVENT_UP] = NULL;

按下LSK时,进入:

ExecuteCurrKeyHandler()

     获取按键响应:currFuncPtr = currKeyFuncPtrs[keyCode][keyType];   不论是DOWN还是UP,都为NULL,因此没有响应!!!

2.      当输入满4位时,

EnableLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);

              MMI_softkeys[key].text = OK

              redraw_left_softkey()

                     redraw_softkey()

                            show_softkey()因为MMI_softkeys[key].text不为NULL,因此不会执行clear_softkey_handler()

              register_left_softkey_handler()

                     register_softkey_handler(MMI_LEFT_SOFTKEY)

                            SetKeyHandler(left_softkey_down, KEY_LSK, KEY_EVENT_DOWN);     

                                 设置currKeyFuncPtrs[KEY_LSK][ KEY_EVENT_DOWN] = left_softkey_down;

                            SetKeyHandler(left_softkey_up, KEY_LSK, KEY_EVENT_UP);                 

                                 设置currKeyFuncPtrs[KEY_LSK][ KEY_EVENT_DOWN] = left_softkey_up;

按下LSK时,进入:

ExecuteCurrKeyHandler()

              获取按键响应:currFuncPtr = currKeyFuncPtrs[keyCode][keyType];

                     分别进入响应:left_softkey_down()

                                      execute_softkey_function(KEY_EVENT_DOWN, MMI_LEFT_SOFTKEY);

                                               softkey_functions[key][k] ()

                                                 执行注册的DOWN响应函数

                                   left_softkey_up()

                                       execute_softkey_function(KEY_EVENT_UP, MMI_LEFT_SOFTKEY);

                                                softkey_functions[key][k] ();                                  

                                                         执行注册的UP响应函数

 

小结:

当LSK, RSK没有标签时,设置currKeyFuncPtrs [][]对应响应为NULL;

当LSK, RSK有标签时,设置currKeyFuncPtrs [][]对应响应为:left_softkey_down(), left_softkey_up(), right_softkey_down(),right_softkey_up();

当按下/抬起LSK, RSK时,先判断currKeyFuncPtrs [][]中是否有响应,有则执行。因此,如果没有标签,则不执行。

原创粉丝点击