kyle的专栏

专注 ARM 技术

原创 MTK6226 添加菜单实例收藏

新一篇: ARM 处理器模式 | 旧一篇: MTK手机软件系统工程和配置简介

 一.编译事项
在MTK_6226工程目录下有build.bat批处理文件,这是build程序的入口。
设置path环境变量: set path=%path%:F:\MTK_6226\tools(假设工程在F盘).安装prel,以及ADS1.2版本并打上补丁。
运行build命令,紧跟参数一个数字参数1~5
1 - New          (clean, scan, codegen, compile, link)
2 - Update       (scan, compile, link)
3 - Remake       (compile, link)
4 - Clean        (clean)
5 - OpenSimuPrj  (open PC simulator project)

选择1会创建一个全新的工程,编译,链接,并生成Image.
选择5是生成PC版的模拟器。

二.菜单的修改或增加:
以一个例子的方式介绍如何添加一个菜单,例子如下:
在主菜单的“设置”菜单下增加一个“我的设定”子菜单,“我的设定”下有两个子菜单:“我
的设定1”和“我的设定2”,打开这两个菜单,分别显示一幅动画。
步骤如下:

1.在..\plutommi\mmi\Setting\SettingInc目录下的SettingDefs.h文件中增加如下内容:
a. enum STR_SETTING_LIST的最后增加三个字符串ID的声明:
STR_MY_SETTING,
STR_MY_SETTING1,
STR_MY_SETTING2,
b. enum SCR_SETTING_LIST的最后增加三个Screen ID的声明:
SCR_MY_SETTING,
SCR_MY_SETTING1,
SCR_MY_SETTING2,
c. enum IMG_SETTING_LIST的最后增加一个Image ID的声明:
IMG_MY_SETTING,
d. 在..\plutommi\mmi\Inc目录下GlobalMenuItems.h文件中enum  GLOBALMENUITEMSID
的最后增加三个菜单ID的声明:(有的是在本AP或模块的*Defs.h中声明)
MENU_MY_SETTING,
MENU_MY_SETTING1,
MENU_MY_SETTING2,

2.在..\plutommi\Customer\CustResource\PLUTO_MMI目录下的Ref_list.txt中添加三个字符串:
STR_MY_SETTING Undefined 10 My Setting My Setting 我的设定 我的设定
STR_MY_SETTING1 Undefined 10 My Setting1 My Setting1 我的设定1 我的设定1
STR_MY_SETTING2 Undefined 10 My Setting2 My Setting2 我的设定2 我的设定2
(用excel打开文件,编辑完后不要保存,直接复制增加或修改部分,粘贴到Ref_list.txt里)
       
3. 在.. \plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下的Res_Setting.c增加如下资源:
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING,MAIN_MENU_SETTINGS_MENUID,
                          2,MENU_MY_SETTING1,
                          MENU_MY_SETTING2,
                          SHOW, MOVEABLEWITHINPARENT, 
                          DISP_LIST,STR_MY_SETTING,0));
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING1,MENU_MY_SETTING,0,SHOW,
                         MOVEABLEWITHINPARENT, DISP_LIST,STR_MY_SETTING1,0));
ADD_APPLICATION_MENUITEM((MENU_MY_SETTING2,MENU_MY_SETTING,0,SHOW,
                         MOVEABLEWITHINPARENT, DISP_LIST,STR_MY_SETTING2,0));
ADD_APPLICATION_IMAGE2(IMG_MY_SETTING,CUST_IMG_PATH"\\\\MainLCD\\\\SubMenu\
                        \\\Settings\\\\MY_SETTING.GIF","My Setting.");
ADD_APPLICATION_STRING2(STR_MY_SETTING,"My Setting","MySetting");
ADD_APPLICATION_STRING2(STR_MY_SETTING1,"My Setting1","My Setting1");
ADD_APPLICATION_STRING2(STR_MY_SETTING2,"My Setting2","My Setting2");
  
4. 在.. \plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下的Res_MainMenu.c中修改如下:
ADD_APPLICATION_MENUITEM((MAIN_MENU_SETTINGS_MENUID,IDLE_SCREEN_
                         MENU_ID, 5,
                         MENU9102_INITIAL_SETUP,
     . 
     .
     .
改为:
ADD_APPLICATION_MENUITEM((MAIN_MENU_SETTINGS_MENUID,IDLE_SCREEN_
                         MENU_ID,6,
                         MENU_MY_SETTING,
                         MENU9102_INITIAL_SETUP,
     .
     .
     .
5.在..\plutommi\mmi\Setting\SettingInc\目录下的SettingProt.h中增加如下的函数声明:
void HighlightMySetting(void);
void HighlightMySetting1(void);
void HighlightMySetting2(void);
void EntryMySetting(void);
void EntryMySetting1(void);
void EntryMySetting2(void);

6.在..\plutommi\mmi\Setting\SettingSrc\目录下的SettingSrc.c中增加如下的函数定义:
void HighlightMySetting(void)
{
    SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
    SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
    SetKeyHandler(EntryMySetting, KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
    SetLeftSoftkeyFunction(EntryMySetting,KEY_EVENT_UP);
}
 
void HighlightMySetting1(void)
{
    SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
    SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
    SetKeyHandler(EntryMySetting1, KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
    SetLeftSoftkeyFunction(EntryMySetting1,KEY_EVENT_UP);
}
 
void HighlightMySetting2(void)
{
    SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
    SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
    SetKeyHandler(EntryMySetting2, KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
    SetLeftSoftkeyFunction(EntryMySetting2,KEY_EVENT_UP);
}

void EntryMySetting(void)
{
    U16 nStrItemList[MAX_SUB_MENUS]; /* Stores the strings id of submenus returned */
    U16 nNumofItem; /* Stores no of children in the submenu*/
    U8* guiBuffer; /* Buffer holding history data */
    U16 ImageList[MAX_SUB_MENUS];
 
    EntryNewScreen(SCR_MY_SETTING, NULL, EntryMySetting, NULL);
 
    /* 2 Get current screen to guibuffer for history purposes*/ 
    guiBuffer= GetCurrGuiBuffer(SCR_MY_SETTING);
    /* 3. Retrieve no of child of menu item to be displayed */
    nNumofItem= GetNumOfChild(MENU_MY_SETTING);
    /* 4. Retrieve string ids in sequence of given menu item to be displayed */
    GetSequenceStringIds(MENU_MY_SETTING,nStrItemList);
    GetSequenceImageIds(MENU_MY_SETTING, ImageList);
    /* 5 Set current parent id*/
    SetParentHandler(MENU_MY_SETTING);
    /* 6 Register highlight handler to be called in menu screen */
    RegisterHighlightHandler(ExecuteCurrHiliteHandler);
    /* 7 Display Category1 Screen */
    ShowCategory15Screen(STR_MY_SETTING, IMG_SCR_SETTING_CAPTION, STR_GLOBAL_OK,
                      IMG_GLOBAL_OK,STR_GLOBAL_BACK, IMG_GLOBAL_BACK, nNumofItem,
                      nStrItemList, ImageList,
                      LIST_MENU, 0, guiBuffer);
    /* 8.Register function with right softkey*/
    SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}
 
void EntryMySetting1(void)
{
    S8 * string = GetString(STR_MY_SETTING1);
    U16 imageId= IMG_MY_SETTING;
   
    EntryNewScreen(SCR_MY_SETTING1, NULL, EntryMySetting1,NULL);
    ShowCategory65Screen((U8*)string,imageId,NULL);
    SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}
 
void EntryMySetting2(void)
{
    S8 * string = GetString(STR_MY_SETTING2);
    U16 imageId= IMG_MY_SETTING;
   
    EntryNewScreen(SCR_MY_SETTING2, NULL, EntryMySetting2, NULL);
    ShowCategory65Screen((U8*)string,imageId,NULL);
    SetRightSoftkeyFunction(GoBackHistory,KEY_EVENT_UP);
}

7.在..\plutommi\mmi\Setting\SettingSrc\目录下的SettingSrc.c中void InitSettingApp(void)函数

下增加如下代码:
SetHiliteHandler(MENU_MY_SETTING,HighlightMySetting);
SetHiliteHandler(MENU_MY_SETTING1,HighlightMySetting1);
SetHiliteHandler(MENU_MY_SETTING2,HighlightMySetting2); 

总结:
a.在Ref_list.txt和Res_*.c中增加资源;
b.在*Defs.h中声明所有资源的ID,包括字符串ID、图片ID、菜单ID、窗口ID。
c.在具体的实现代码文件中增加处理代码。
自己动手试试吧!

 

发表于 @ 2008年02月27日 17:11:00|评论(loading...)|编辑

新一篇: ARM 处理器模式 | 旧一篇: MTK手机软件系统工程和配置简介

评论

#rayson0405 发表于2008-04-07 16:43:49  IP: 222.240.188.*
前辈.. 能问你. .什么叫 在 dos 下 build new 一次吗 ?.
#MTK_kyle 发表于2008-04-08 15:58:15  IP: 219.232.41.*
Re:rayson0405
MTK工程使用ADS工具链编译和链接,用GNU的make工具组织工程,可以在windows(在命令行下)平台进行build, new是指完整的编译链接一次,生成全新的bin文件。
#lovebean110 发表于2008-04-11 21:41:40  IP: 121.34.154.*
您好!
请教您一个问题,我用VC编译PixtelMMI工程的时候提示缺少:ps_trace.h;smsal_l4c_enum.h;fssim_core.c;fssim_data.c 这个问题怎么解决?
望您不吝赐教,不胜感激!
#lovebean110 发表于2008-04-11 21:42:48  IP: 121.34.154.*
我的邮箱:cmj110@gmail.com 谢谢!
#MTK_kyle 发表于2008-04-14 17:02:47  IP: 219.232.41.*
Re:lovebean110
我猜:ps_trace.h;smsal_l4c_enum.h找不到,首先看看tst\include目录下是否有这两个文件,其次检查以下\make\tst下的tst.inc文件中是否有以这项内容tst\include它是编译时的头文件查找路径。

同样检查以下modis\filesystem\FileSystemSrc是否存在fssim_core.c和fssim_data.c
在进行PixtelMMI build是他是用的PixtelMMI.dsp这个工程文件来组织的工程,如果对应的.c找不到,你要到它指定的目录下查看文件是否存在。
#youngzy 发表于2008-05-06 11:51:42  IP: 121.32.2.*
前辈,想问一下:
3. 在.. \plutommi\Customer\CustResource\PLUTO_MMI\Res_MMI目录下的Res_Setting.c增加如下资源:

这段代码, 应该加到哪个函数下?

谢谢
#MTK_kyle 发表于2008-05-06 12:22:34  IP: 219.232.41.*
Re:youngzy
由于我们要在设定菜单下添加自己的子菜单,所以代码要加在void populateSettingMenu(void)函数里。
#youngzy 发表于2008-05-06 13:13:45  IP: 121.32.2.*
我按照上面过程 走一遍 .需要 make 或 build吗?
#youngzy 发表于2008-05-06 14:10:01  IP: 121.32.2.*
我的过程是这样的 ,我安装了 ADS,Per,然后就直接按照"二.菜单的修改或增加:" 这段来增加.最后rebuild之后 ,MySetting菜单还是没有出现在Setting 里面,请指教 ,谢谢
#MTK_kyle 发表于2008-05-06 18:14:10  IP: 219.232.41.*
Re:youngzy
这个添加菜单是在菜单是list风格下实现的,如果是其他风格可能不成功,你可以查看MMI_features_GUIPLUTO.h文件看是否是开启的List风格。
另外,最好clean后build一次。
#brewdon 发表于2008-09-05 15:36:33  IP: 219.137.239.*
你好,有些MTK问题想请你指导,你有没有联系方式啊。我的QQ是:252207598
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © kyle