解决方法:
1. Sound 里添加volume项
2. Sound所有项可以上下切换
3. Sound里的volume项后显示数字
4. Sound可以快捷跳转到audio volume
5. audio volume menu要有进度条
6. 由Audio volume menu,按menu键,返回到main menu sound,
设计思路:
第一步:Audio volume要有进度条
1. 使用skin tool打开308程序/tv-ap/dvb/ui2/osd_resource/skintool/res1366x768x565/ZUI.xml
2. 设置
4. 在HWND_MAINFRAME上放置需要的元件(利用button按钮添加)
5. 设置VOLUME_NEW_CONFIG_BAR的属性
6. 设置VOLUME_NEW_CONFIG_TEXT的属性
注意:VOLUME_NEW_CONFIG_TEXT的长宽度,可能影响是否显示
7. 设置Build Table Option
8. 使用Compile Table自动生成出INL档
9. 在tables.h和table.c將INL檔#include
注意:ZUI_tables_h.inl里的编译路径,在程序中都是调用ZUI_tables_h.inl
7. 在ZUI_AUDIO_VOLUME_NEW_tables_c.inl设置HWND_VOLUME_NEW_CONFIG_BAR的属性为
EN_ZUI_BALLPROGRESSBAR_WINPROC
8. 在ZUI_AUDIO_VOLUME_NEW_tables_c.inl设置
HWND_VOLUME_NEW_CONFIG_TEXT的属性为
EN_ZUI_DYNAMICCOLORTEXT_WINPROC
8. 在ZUI_AUDIO_VOLUME_NEW_tables_c.inl设置 HWND_VOLUME_NEW_CONFIG_PANE的属性为
EN_ZUI_AUTOCLOSE_WINPROC
(void*)AUDIO_VOLUME_TIME_OUT_MS
9. 在ZUI_AUDIO_VOLUME_NEW_tables_c.inl设置 HWND_VOLUME_NEW_CONFIG_PANE的属性为
EN_ZUI_BGTANSPARENT_WINPROC
第二步:SOUND所有项可以上下切换
1. 使用skin tool打开308程序/tv-ap/dvb/ui2/osd_resource/skintool/res1366x768x565/ZUI.xml
2. 打开MAIN MENU菜单
3. 在HWND_MAINFRAME/ MENU_SOUND_PAGE/ MENU_SOUND_PAGE_LIST/上放置需要的元件(利用button按钮添加)
MENU_SOUND_VOLUME_TEXT
MENU_SOUND_VOLUME_OPTION
5. 设置MENU_SOUND_VOLUME_OPTION的属性
6. 在ZUI_MAIN_MENU_tables_c.inl中设置HWND_MENU_SOUND_PAGE_LIST的属性为 HWND_MENU_SOUND_VOLUME
static GUI_DATA_DYNAMIC_LIST _ZUI_TBLSEG _MENU_SOUND_PAGE_DATA =
{
HWND_MENU_SOUND_SNDMODE,
HWND_MENU_SOUND_VOLUME,
&_MENU_PAGE_LIST_VARDATA
};
1. 在ZUI_MAIN_MENU_tables_c.inl中设置HWND_MENU_SOUND_VOLUME_OPTION的属性为EN_ZUI_DYNAMICTEXT_WINPROC
// 97 = HWND_MENU_SOUND_VOLUME_OPTION
{
EN_ZUI_DYNAMICTEXT_WINPROC, NULL, WS_VISIBLE|WS_FOCUSABLE,
NULL,
NULL,
},
第三步:SOUND里的VOLUME项可以快捷跳出VOLUME菜单
菜单操作分为:
(1) API:掌握UI framework的基本操作,包含message的传送和状态的处理
(2) CTL:管理各种不同的controls,有各种UI style和behavior
(3) ACT: 不應該在API区域写某些按键的特別处理,或某些HWND的特別显示 (只有HWND_MAINFRAME是特例处理)
ZUI state的五种状态转化:
(1) E_ZUI_STATE_UNKNOW---系统启动
(2) E_ZUI_STATE_STANDBY---初始化后,等待OSD PAGE的请求
(3) E_ZUI_STATE_RUNNING—osd age请求,为osd page提供数据,process/dispatch
(4) E_ZUI_STATE_TRANSEFF_DOING
(5) E_ZUI_STATE_TRANSEFF_END
(6) E_ZUI_STATE_TERMINATE
OSD pages provide these handlers:
(4) Show
(5) Terminate
(6) Global Keys
(7) Actions
(8) Dynamic Text / Dynamic Values /
Menu State MApp_ZUI_ACTmenu
StartupOSD ---------à Show
ShutdownOSD ---------à Terminate
ProcessKey ---------à Global Key Handler
Execute Action ---------à Execute Action
1. 在ZUI_MAIN_MENU_tables_c.inl中设置
HWND_MENU_SOUND_VOLUME的属性为
_MENU_SOUND_VOLUME_KEY,
// 95 = HWND_MENU_SOUND_VOLUME
{
EN_ZUI_DEFAULTWINPROC, NULL, WS_VISIBLE|WS_FOCUSABLE|WS_SRCALPHAREPLACEDSTALPHA,
_MENU_SOUND_VOLUME_Navigation,
},
static KEYEVENT _ZUI_TBLSEG _MENU_SOUND_VOLUME_KEY[] =
{
{ VK_SELECT, EN_EXE_GOTO_SOUND_VOLUME_PAGE },
{ VK_UP, EN_EXE_NOTIFY_PARENT_KEY_UP },
{ VK_DOWN, EN_EXE_NOTIFY_PARENT_KEY_DOWN },
{ VK_UP, EN_EXE_EFFECT_SLIDEITEM },
{ VK_DOWN, EN_EXE_EFFECT_SLIDEITEM },
{ VK_LEFT , EN_EXE_EFFECT_FLIPPAGE_LEFT },
{ VK_RIGHT , EN_EXE_EFFECT_FLIPPAGE_RIGHT },
{ VK_NULL, 0 },
};
2. 在函数中BOOLEAN MApp_ZUI_ACT_ExecuteMainMenuAction(U16 act)中添加EN_EXE_GOTO_SOUND_VOLUME_PAGE
第一种方法: STATE_MENU_GOTO_OSDPAGE
第二种方法:
(1) 在STATE_MENU_GOTO_VOLUME
(2) 在MApp_Menu_Main.c的EN_RET MApp_Menu_Main(void)中