彩信UI的修改
彩信UI的修改是整个信息需求中改动最大的部分,这里不描叙彩信UI是如何修改(UI的修改说白就是自定义控制而已,没啥说的),而是着重描叙“在哪里修改”。这里依旧以添加图片为例,ComposeMessageActivity.addImage会调用WorkingMessage.setAttachment来添加附件,添加后会有个回调:mStatusListener.onAttachmentChanged(),在ComposeMessageActivity.onAttachmentChanged会重绘底部UI--drawBottomPanel,而彩信的UI就在是这BottomPanel的一部分,在drawBottomPanel可以看到mAttachmentEditor.update,而AttachmentEditor.update就是专门用来更新彩信UI的。相关流程可参考如下图3.2,而彩信UI的具体实现请参考AttachmentEditor. update(SlideshowModel slideshow),彩信内容是以SlideshowModel 形式组织,而相关UI更加SlideshowModel 的内容来描绘。
信息搜索
这里的搜索,是指GMOS需求的新功能,不是MTK默认的搜索功能。GMOS需求是要求将MTK默认的搜索功能分解,将联系人的搜索与信息内容的搜索。为此在搜索,需要同时启动两次查搜索询:
mQueryHandler.startQuery(0, null, uri, null, null, null, null);
mQueryHandler2.startQuery(0, null, uri, null, "1", null, null);
带参数1的是搜索联系人(信息发送者或接收者),这是应用处的处理。而在数据库端,则是对原查询代码进行了拆分,将联系人部分与信息内容部分分别独立出来。参考MmsSmsProvider.query中的URI_SEARCH部分代码:
联系人查询部分独立出来,获得结果后直接break返回,而不是继续往下走作为搜索的部分条件:
而信息内容查询部分则出掉原联系人相关条件:
请注意注释掉的searchContacts。
应用那边两次查询获得两个Cursor,UI就根据两个Cursor的内容来绘制。搜索的具体实现请参考com.gome.mms.ui.SearchActivity的代码。