2.以保存在PHONE为例(30个ASCII码, or 14个汉字) Show57Screen()

mmi_phb_entry_op_add_entry ( )开始装载57Screen。

姓名菜单:

(1)SetInlineItemActivation(&wgui_inline_items[0], KEY_LSK, KEY_EVENT_UP);---相应

(2)mmi_phb_op_fill_inline_item(MMI_PHB_FIELD_NAME,item_index++,MAX_PB_ENTRIES,TitleStrings, DetailPbNameImageList);         ---装载详细信息

(2-1)调用SetInlineItemFullScreenEdit()设置全屏输入时的参数:接受地址pbName,长度31,输入类型

(2-1-1) SetInlineItemFullScreenEdit_ext()

令:wgui_inline_items[0] .item = &wgui_inline_text_edit_items[0](0表示第一个全屏编辑菜单,wgui_inline_text_edit_items是个数组,如果有多个全屏编辑菜单,那么就用变量n_inline_text_edit_items来计数)

然后设置wgui_inline_text_edit_items[0]的buffer(pbName), buffer_size(31),title, max_lines,以及一些处理函数。

item->handler = handle_inline_full_screen_edit;

注意:wgui_inline_items[0].texg_p也指向:wgui_inline_text_edit_items[0].buffer。

(3)高亮姓名菜单,按下做软件

(3-1) wgui_inline_item_key_handler()

wgui_inline_items[wgui_inline_item_highlighted_index].handler(), 即上面的handle_inline_full_screen_edit.

current_wgui_inline_text_edit_item = i;                         指向item

current_wgui_inline_text_edit_text_p = text_p;                指向pbName

wgui_setup_inputbox()

wgui_setup_inputbox_ext()

create_multiline_inputbox_set_buffer() 创建编辑框

move_multiline_inputbox()         设置输入框实际位置(去掉信息栏位置wgui_inputbox_information_bar_height)

wgui_setup_input_information()           设置输入法信息栏

wgui_inputbox_information_bar_x = 0;

wgui_inputbox_information_bar_y = 54;

wgui_inputbox_information_bar_width = 240;

wgui_inputbox_information_bar_height = 22;

注册输入法函数,按键相应函数

设置右软件:

set_right_softkey_function(wgui_handle_inputbox_right_softkey_down, KEY_EVENT_DOWN);

set_right_softkey_function(wgui_handle_inputbox_right_softkey_long_press, KEY_LONG_PRESS);

wgui_redraw_remaining_characters_display()即wgui_redraw_remaining_characters_display_internal。

wgui_redraw_remaining_characters_display_internal()

n = (MMI_multiline_inputbox.text_length >> 1) - 1;                             已经输入字符数

max_n = (MMI_multiline_inputbox.available_length >> 1) - 1;     最大字符数

wgui_input_information_background(x1, y1, x2, y2);                            画背景

gui_sprintf(str, "%d/%d", n, max_n);

gui_move_text_cursor(x2 - 2 - w, y1 + 2);                                  设置字符数提示信息的位置

gui_print_text(str);                                                                 显示

SetKeyHandler(wgui_handle_inputbox_change_input_mode, KEY_POUND, KEY_EVENT_DOWN);

1. 在全屏编辑界面,按下数字键5,进入:

MMI_key_5_down()

MMI_key_input_handler()

multitap_input_key_down()

change_multitap_state()   multitap input

multiline_inputbox_input_callback(), 即:wgui_inline_edit_handle_multiline_inputbox_input()

gui_multi_line_input_box_insert_multitap_character(&MMI_multiline_inputbox, c);      加入字符

if (text_length > b->available_length)

{

UI_editor_play_tone_cannot_insert();

return;

}

UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE2()

此函数没有改变MMI_multiline_inputbox.available_length

gui_show_multi_line_input_box()

wgui_inline_edit_handle_multiline_inputbox_input()

wgui_handle_inputbox_input()    改变有软件标签为清除,并设置响应函数

wgui_redraw_remaining_characters_display();   重绘字符数提示信息

wgui_redraw_remaining_characters_display_internal()

n = (MMI_multiline_inputbox.text_length >> 1) - 1;

max_n = (MMI_multiline_inputbox.available_length >> 1) - 1;

此时MMI_multiline_inputbox.available_length=62,因此:max_n=31

2.输入第一个字符后,按下6输入第二个字符   只列出关键函数

gui_multi_line_input_box_insert_multitap_character()

wgui_redraw_remaining_characters_display_internal()

3.在没有输入字符时,按下#,设置输入法为中文

INCInputKeyPoundPressHandler()

INCInputSetLeftSoftKey() ;

INCInputRegisterProcess(pInput->iType,pInput->iInputMode)       注册按键相应函数

wgui_handle_inputbox_change_input_mode()

wgui_redraw_input_information_bar()

然后按下2:

INCInputKey2PressHandler()

INCInputEditKeyHandler()

INCInputDraw() ;                         绘画多选择输入

INCInputResetRightSoftKey() ;

INCInputSetLeftSoftKey()         设置左软件:INCInputKeyEnterHandler()

按下左软件,选择一个汉字、

INCInputKeyEnterHandler()

INCInputSetLeftSoftKey()

INCInputSelectTheHZ()

multiline_inputbox_direct_input()

gui_multi_line_input_box_insert_character(&MMI_multiline_inputbox, c);

gui_multi_line_input_box_insert_character_internal()

UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE2( )

此函数改变了MMI_multiline_inputbox.available_length

wgui_inline_edit_handle_multiline_inputbox_input()

multiline_inputbox_input_callback()即:

wgui_inline_edit_handle_multiline_inputbox_input()

wgui_handle_inputbox_input()   调整右软件标签和响应

wgui_redraw_remaining_characters_display()

wgui_redraw_remaining_characters_display_internal()

n = (MMI_multiline_inputbox.text_length >> 1) - 1;

max_n = (MMI_multiline_inputbox.available_length >> 1) - 1;

此时MMI_multiline_inputbox.available_length=30,因此:max_n=14

二、删除字符

1. 当已经输入2个汉字时,提示信息:2/14。此时按右软件删除1个汉字,提示信息变成:1/14

INCInputRightSoftkeyPressHandler()

bEmpty = gui_multi_line_input_box_get_text_length(&MMI_multiline_inputbox)==0 ;判断此时是否为空

if(bEmpty)

else         进入这里,不为空

INCInputKeyClearHandler()

multiline_inputbox_delete_character()

gui_multi_line_input_box_delete_character(&MMI_multiline_inputbox); 删除一个汉字

UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH( )。 重新设置最大字符数。此时第二个参数:b->UCS2_count为2(2个汉字),MMI_multiline_inputbox.available_length不会改变。

multiline_inputbox_input_callback()即:wgui_inline_edit_handle_multiline_inputbox_input()

wgui_handle_inputbox_input()设置右软件标签和响应

wgui_redraw_remaining_characters_display()重绘提示字符信息

2.再次按下右软件,删除全部汉字,还进入else分支:再次进入UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH()时,

第二个参数:b->UCS2_count为1(1个汉字),MMI_multiline_inputbox.available_length被改变,因此改变重绘提示字符信息。

3.输入为空时,再按下右软件,进入上面的if分支。返回history screen。

4.如果已经输入的不是汉字,而是ASCII码如:ab,按下右软件时:

wgui_handle_inputbox_right_softkey_down()

multiline_inputbox_delete_character()

gui_multi_line_input_box_delete_character(&MMI_multiline_inputbox);

同样调用UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH(),第二个参数:b->UCS2_count为0(0个汉字),MMI_multiline_inputbox.available_length不改变

multiline_inputbox_input_callback()即:wgui_inline_edit_handle_multiline_inputbox_input()

wgui_handle_inputbox_input()

wgui_redraw_remaining_characters_display() 重绘提示符信息

总结:

1.无论在哪种输入法下,当输入字符时,都进入:gui_multi_line_input_box_insert_character_internal()。在此函数中调用:

UI_TEST_UCS2_INCREMENT_COUNT_SET_LENGTH_TYPE2()设置可输入的最大字符数,关键是根据第一个参数的编码来判断。

2.当删除字符时,都进入:multiline_inputbox_delete_character(),调用gui_multi_line_input_box_delete_character(),然后调用:、UI_TEST_UCS2_DECREMENT_COUNT_SET_LENGTH()设置设置可输入的最大字符数。

Summery about show input info bar of MTK相关推荐

  1. Summery about show input info bar of MTK 分享

    2.以保存在PHONE为例(30个ASCII码, or 14个汉字) Show57Screen() mmi_phb_entry_op_add_entry ( )开始装载57Screen. 姓名菜单: ...

  2. 表单浮动(input+label)效果

    系列文章目录 第一章 利用HTML+CSS选择器实现定位及浮动 目录 前言 一.浮动(float)是什么? 二.CSS Position(定位) 三.页面实现步骤 1.HTML代码 2.CSS代码 总 ...

  3. [翻译]帮助文档-jQuery 选择器

    jQuery的选择器是CSS 1-3,XPath的结合物.jQuery提取这二种查询语言最好的部分,融合后创造出了最终的jQuery表达式查询语言.如果你了解CSS(绝大部分WEB开发者都用到的),那 ...

  4. Jeremy Keith在 Fronteers 2010 上的主题演讲

    今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HTML5,但我并不打算这样做,因为如果你想了解HTML5的话,你可以Google,可以看书,甚 ...

  5. edge css兼容,CSS输入错误样式在Edge浏览器中无法正确显示

    将字段留空(用于测试)并单击"保存"按钮时,输入字段应使用红色加下划线,并在下方带有"必填"文本. 我已经在IE11,Edge,Chrome和Firefox中进 ...

  6. [译] 我多希望在我学习 React.js 之前就已经知晓这些小窍门

    原文地址:What I wish I knew when I started to work with React.js 原文作者:David Yu 译文出自:掘金翻译计划 本文永久链接:github ...

  7. golang解决TCP粘包问题

    6行代码解决golang TCP粘包 转自:https://studygolang.com/articles/12483 什么是TCP粘包问题以及为什么会产生TCP粘包,本文不加讨论.本文使用gola ...

  8. testng 取消并行_TestNG并行执行

    testng 取消并行 We can run TestNG tests in parallel. This feature is only available when we are using Te ...

  9. HTML5的学习资料(开发设计原则)

    "Be conservative in what you send; be liberal in what you accept.   –The Robustness principle&q ...

  10. VSTO Ribbons的完整介绍

    Ribbons are the modern way to help users find, understand, and use commands efficiently and directly ...

最新文章

  1. Linux之切换目录命令
  2. 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列
  3. golang break label 与goto label
  4. 1.2 torch_数据预处理
  5. 列表-列表统计及删除方法扩展
  6. 惠普在笔记本新品的2007新的命名规则
  7. JAVA JDBC连接mysql编程
  8. 【转】vscode下编译告警“undefined reference”?三步教你如何解决
  9. Java笔记-使用logback按天生成日志并按等级进行分类
  10. hashmap为什么线程不安全_为什么HashMap线程不安全?
  11. 模块调用时对参数值的更改
  12. javascript 使用drop元素实现拖动(ondragstart、ondrag、 ondragend、ondragenter,ondragover、ondragleave、ondrop )
  13. CSS 3之美化表格样式
  14. 【利用Arduino 、GPS模块、OLED制作GPS车速仪】
  15. 电脑蓝屏显示(你的电脑遇到问题,需要重新启动,你可以重新启动)
  16. 计算机处理器天梯,cpu天梯图2020_笔记本cpu天梯排名图2020
  17. Android之butterknife(懒人库)
  18. 模拟HTTP请求, POST方法(附源码)
  19. C# 开发备忘录(自定义日历)
  20. npm包管理工具的安装及配置使用

热门文章

  1. Python学习手册之函数和模块
  2. 域名网址被微信屏蔽的解决方案微信域名网址被屏蔽了红了如何继续使用
  3. html动画人物走路,CSS3动画中的steps(),制作人物行走动画
  4. CAN总线技术基本概念简述
  5. 12306 流程解析
  6. CodeForces 1305C-Kuroni and Impossible Calculation(抽屉原理)
  7. oracle 查询时间段内的天,ORACLE任意时间段内所有天数日期查询
  8. mysql查询连续天数数据
  9. BERT如何解决一词多义问题
  10. Frequent values ——RMQ