10A 的GROUP和CUI使用

Group结构图

1、group的定义

定义group ID和定义Screen ID一样

在XXX.res 中定义

<SCREEN id="GRP_ID_MYAPP_5"/>//group id

<SCREEN id="GRP_ID_MYAPP_6"/>//group id

<SCREEN id="SCR_ID_MYAPP_5"/>//screen id

<SCREEN id="SCR_ID_MYAPP_6"/>//screen id

通过编译资源,系统会自动生成mmi_rp_app_XXX_def.h文件

在mmi_rp_app_XXX_def.h中

我们可以看到如下的定义,这就是我们的group id了,可以看出去group id和screen id 其实是一个东西,只是用法不同而已。

typedef enum

{

GRP_ID_MYAPP_HEAD = 60382 + 1,

GRP_ID_MYAPP_5,

GRP_ID_MYAPP_6,

SCR_ID_MYAPP_HEAD,

SCR_ID_MYAPP_5,

SCR_ID_MYAPP_6,

MMI_RP_APP_MYAPP_SCR_MAX

}mmi_rp_app_myapp_scr_enum;

2、group使用

void entry_myapp_screen(void)

{

         MMI_ID parent_id;//定义上级group id

         parent_id=mmi_frm_group_get_active_id();//得到当前激活group id

//将新建的group GRP_ID_MYAPP_HEAD插入到parent_id

         mmi_frm_group_create(parent_id,

                          GRP_ID_MYAPP_HEAD,

                          mmi_myapp_proc, // mmi_myapp_proc 相当于groupcallback函数,

                          NULL);

// mmi_frm_group_enter为进入group函数,具体做了什么以后分析

         mmi_frm_group_enter(GRP_ID_MYAPP_HEAD, MMI_FRM_NODE_SMART_CLOSE_FLAG);

// entry_myapp_show_screen()group_entry_myapp_show_screen()用于显示菜单的函数

#if 0

         entry_myapp_show_screen();

#else

group_entry_myapp_show_screen();

#endif

}

//所有与group GRP_ID_MYAPP_HEAD相关的操作都会调用mmi_myapp_proc函数,其中

//EVT_ID_CUI_MENU_ITEM_SELECT情况是为CUI提供菜单相应函数

static mmi_ret mmi_myapp_proc(mmi_event_struct *evt)

{

    switch (evt->evt_id)

    {

        case EVT_ID_GROUP_FIRST_ENTRY:myapp_black();break;//第一次进入group时调用

        case EVT_ID_GROUP_INACTIVE:myapp_black(); break;//已经激活时调用

        case EVT_ID_GROUP_ACTIVE:myapp_black();break;//激活时调用

        case EVT_ID_GROUP_GOBACK:myapp_black();break;//gobackhistory时调用

        case EVT_ID_GROUP_DELETE_REQ:myapp_black(); break;   

        case EVT_ID_GROUP_DEINIT:myapp_black();break;//注销时调用

        case EVT_ID_GROUP_FOCUSED:myapp_black();break;

                      case EVT_ID_CUI_MENU_ITEM_SELECT://CUI提供菜单高亮相应函数

                            if (menu_evt->highlighted_menu_id == MENU_ID_MYAPP_1)

            {

               myapp_menu1_hight_hdr();

            }

            else if (menu_evt->highlighted_menu_id == MENU_ID_MYAPP_2)

            {

               myapp_menu2_hight_hdr();

            }

else if (menu_evt->highlighted_menu_id == MENU_ID_MYAPP_3)

                              {

                                     myapp_menu3_hight_hdr();

                            }

                                      break;

        default: break;

    }

    return MMI_RET_OK;

}

//使用group就是为了显示窗体的,下面就是显示部分

void group_entry_myapp_show_screen(void)

{

#if 1

                  U8 *guiBuffer;

    U16 nStrItemList[10];

    U16 nNumofItem = 0;

 

   

   

   

// mmi_frm_scrn_enter是进入group操作和EntryNewScreen功能差不多

    if (!mmi_frm_scrn_enter(

            GRP_ID_MYAPP_HEAD,//group id

            SCR_ID_MYAPP_HEAD,//screnn id

            NULL,

            group_entry_myapp_show_screen,//入口函数

            MMI_FRM_FULL_SCRN))//全屏显示

    {

        return;

    }

         guiBuffer = mmi_frm_scrn_get_active_gui_buf();//得到屏幕buf

//下面的不是10A的特性就不多说了

         RegisterHighlightHandler(ExecuteCurrHiliteHandler);

         nNumofItem = GetNumOfChild_Ext(MENU_ID_MYAPP_HEAD);

         GetSequenceStringIds_Ext(MENU_ID_MYAPP_HEAD, nStrItemList);

         SetParentHandler(MENU_ID_MYAPP_HEAD);

         ShowCategory15Screen(

        STR_GLOBAL_OPTIONS,

        NULL,

        STR_GLOBAL_OK,

        IMG_GLOBAL_OK,

        STR_GLOBAL_BACK,

        IMG_GLOBAL_BACK,

        nNumofItem,

        nStrItemList,

        (U16*)gIndexIconsImageList,

        LIST_MENU,

        0,

        guiBuffer);

        ClearKeyEvents();

    SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);

    SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);

#endif

}

3cui的使用

Cui的用途就是为了方便用户显示菜单,实例如下:

Void entry_myapp_show_screen (void)

{

        mmi_id menu_id;//定义id

    menu_id = cui_menu_create(//创建cui

                GRP_ID_MYAPP_HEAD,//group id

                CUI_MENU_SRC_TYPE_RESOURCE,

                CUI_MENU_TYPE_FROM_RESOURCE,

                MENU_ID_MYAPP_HEAD,// 父菜单ID

                MMI_FALSE,

                (void*) (U32) MENU_ID_MYAPP_HEAD);

    cui_menu_set_default_title(//设置标题及图片

        menu_id,

        (UI_string_type) GetString(STR_GLOBAL_ABORT),

        (UI_image_type) GetImage(IMG_GLOBAL_ACTIVATED));

    cui_menu_run(menu_id);//执行cui

}

entry_myapp_show_screen的整个效果和group_entry_myapp_show_screen一样,我们可以看出entry_myapp_show_screen确实比group_entry_myapp_show_screen简洁了不少这个也是CUI的意义所在,但是同时CUI所显示菜单的高亮相应事件无法通过在.res文件中注册(例如:<MENUITEM

id="MENU_ID_MYAPP_3" str="STR_ID_MYAPP_MENU_3"

highlight="mmi_myapp_menu_3_hdr"/>),CUI所显示的菜单的高亮相应事件要定义在mmi_myapp_proc这种Group创建中所注册

10A 的GROUP和CUI使用相关推荐

  1. 【AI 顶会】NIPS2019接收论文完整列表

    NeurIPS2019 NeurIPS 2019的论文结果已经出炉, 包括了36篇oral和164篇spotlights共1428篇论文.可以看到论文的主题还是以深度学习.神经网络.图.优化.通用性. ...

  2. ICDE‘22推荐系统论文之Research篇

    2022推荐系统论文梳理系列 推荐系统相关顶会整理 AAAI'22推荐系统论文梳理 IJCAI'22 推荐系统论文梳理 ICML/ICLR'22 推荐系统论文梳理 WWW'22 推荐系统论文之序列推荐 ...

  3. MTK 10A 消息机制

    1 MTK 10A 帮助文档 一. 10A MMI 主要新特征 1. 新Event 机制 API: #define MMI_FRM_SEND_EVENT(_evt, _proc, _user_data ...

  4. AttributeError: ‘tuple‘ object has no attribute ‘group‘

    我的报错内容如下: 打印的地方 具体代码呢,我写了一个demo 如下 import recontent = "abcabcabc" rex = re.search("c& ...

  5. AttributeError: ‘NoneType‘ object has no attribute ‘group‘

    这个错误是python 使用match 匹配的时候没有匹配到内容, 仍然使用了 group 这个时候报错了 所以处理方法就是检查下想要匹配的内容是否有写错的地方, 例如下面的代码运行就会报错 str_ ...

  6. group by 分组后 返回的是一个同属性的集合

    group by 分组后 返回的是一个同属性的集合  我们可以遍历该集合 转载于:https://www.cnblogs.com/classmethond/p/10164326.html

  7. 【转】每天一个linux命令(31): /etc/group文件详解

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/05/2802419.html Linux /etc/group文件与/etc/passwd和/et ...

  8. oracle, group by, having, where

    选择列表中如果包含有列.表达式时,这个列.表达式必须包含在Group By子句中.另外,如果采用了表达式的话,则数据库管理员即使在选择列表中采用了别名,但是在Group By子句中仍然必须采用表达式的 ...

  9. java正则 group_Java正则表达式,分组 group()、groupCount()

    示例: import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...

最新文章

  1. 基于Opencv的图像单应性转换实战
  2. 【学习笔记】树的计数,prufer(Prüfer)编码,Cayley公式及相应例题
  3. Java传统的io和nio区别_Java中IO和NIO的本质和区别
  4. OSPF 形成邻居 关系的条件
  5. javaweb认识在web应用中重要的轮询机制(ajax)
  6. checkInterruptWhileWaiting
  7. MFC实现打开、保存文件对话框和浏览文件夹对话框,把代码直接拷贝到要响应的按钮函数下面就行了
  8. python语法与java语法的区别_Python语言与java语法的异同之处
  9. 课程设计方案模板MySQL_MYSQL数据库课程设计.doc
  10. FreeCAD源码分析:Assembly3模块
  11. CAN总线与CANOPEN协议
  12. 将word文档锁定其他用户不可编辑
  13. 企业工商信息数据接口说明
  14. Linux系统优化篇
  15. 南卫理公会大学 计算机排名,南卫理公会大学全球排名及其优秀校友
  16. linux系统编程3—文件存储函数
  17. android app 唤醒屏幕
  18. App渠道推广统计:安卓渠道分析和渠道效果统计方法
  19. Stack的概念和算法应用
  20. C语言程序设计-简易文本编辑器

热门文章

  1. 什么是线程池?(带你初步入门理解线程池)
  2. Spring Boot开发八字箴言(以我过去这段时间的经验总结得到)
  3. BZOJ3240 NOI2013矩阵游戏(数论)
  4. 实验一缓冲区溢出漏洞实验
  5. 【有意思的BUG】需要停止的进程
  6. Ubuntu 16.04 下安装运行 Suricata
  7. ubuntu 设置tab键自动补全
  8. bat for 循环中定义变量(变量值不显示,通过使用「延期变量扩展」方式解决)
  9. Linux 命令缩写
  10. 关于Timestamp的valueOf()方法