在这篇文档中,我想从实际编程的角度通过提供UI和关键代码分析来总结一下UIQ涉及到各种View,Dialog和control。
这样做至少有三个好处:
-
提供一个公共的测试代码的平台。主要用于日常开发,当需要实现某个特别的UI的时候,可以先在这个环境中做test直到代码稳定。
-
提供一个测试UIQ的平台,当有新版本的UIQ发行时,可以测试前一个版本的元素中有哪些改变和它们的兼容度如何。哪些可以继续使用,哪些需要修改。
-
能通过熟悉mmi来快速上手UIQ
现在大体罗列一下涵盖的内容。这些范围还会继续更新。
-
view:主要有两个方向,一是把所有control包括view风格都在rss文件中定义;另一是所有control都在程序中由代码实现,不依赖rss文件。
-
dialog:把UIQ中所有类型的dialog都给出一个demo
-
bar:把UIQ中的title bar, status bar, softkey bar和viewcontext涉及的控制实现了
-
系统信息:包括读出Imei,ip地址,mac地址,内存信息,列出运行的软件等方面
-
property page:在UIQ中称为multipage,包括中view和dialog中实现
-
menu:包括在menu中加入control,实现多级menu
-
layout:在这里我希望能将定义的layou可视化
-
浮动view:实现一个可以在desktop上自由拖动的view。(大体的原型已经有了)
-
list:实现各种list,之所以把它单独列出来,我认为list显示信息是做好的,尤其是在phoe上,smart phone都有scrollor,控制也简单方便。
-
其他control:也是两个方向,在rss文件中定义;在程序中直接实现。
这是一个来自UIQ3 SDK 的一个典型VIEW。view 由三部分组成:
-
part4 ---- title bar
-
part3-----softkey & buttoan bar
-
view 显示区,就是写有红字的区域
其中在part4中的part1是一个特殊的区域,叫做contextbar。一般用来放置进度条或者显示一些提示信息(text)
part2不属于view,在这里标示出来是因为当一个view被switch出来后,这个view可以控制status bar是否出现。
一、相关的类(接口):
CQikViewBase
MQikViewContext
MQikViewContextObserver
MQikViewContextTextFormatter
二、说明
MQikViewContext是context bar的接口。从定义我们可以看到,有三种control可以放在context bar上:progress info, text和icon。具体可以执行哪些操作在SDK中有详细的说明。请查询SDK。
三、我的目标
我的目标是在Context bar上放入如下的control
1. edit
2. button
3. choice list
四、常规编程
目前只有在CQikViewBase类中提供了一个函数来获得context bar操作接口。这也说明只有从CQikViewBase派生的view或者dialog才可能拥?/span>context bar。
-
通过ViewContext()函数获得MQikViewContext类型的指针。 MQikViewContext* viewContext = ViewContext();
-
如果要处理context bar的事件,需要实现MQikViewContextObserver接口。然后在获得viewContext指针后,调用 viewContext->SetObserver(object); 此处的object就是实现了MQikViewContextObserver接口的对象。
-
调用MQikViewContext接口提供的函数在context bar上添加control
注意:在接口中也定义了怎么删除control的方法。 -
在HandleViewContextEventL函数中处理context bar上control发出的事件
五、目标编程
已经实现了目标1,2。对于目标3来说,难度比较大,实现的可能很小。