|
一、 InputSource界面的显示:
1、switch(MApp_TV())
MApp_TV_ProcessUserInput();
switch(u8KeyCode)
case KEY_INPUT_SOURCE:
enTVState = STATE_TV_INIT;
enTVRetVal = EXIT_GOTO_INPUTSOURCE;
u8KeyCode = KEY_NULL;
break;
case EXIT_GOTO_INPUTSOURCE:
enTopState = STATE_TOP_INPUTSOURCE;
break;
2、switch ( enTopState )
case STATE_TOP_INPUTSOURCE:
switch(MApp_InputSource_Main())
EN_RET MApp_InputSource_Main(void)
switch(enInputSourceState)
case STATE_INPUTSOURCE_INIT:
MApp_ZUI_ACT_StartupOSD(E_OSD_INPUT_SOURCE);
enInputSourceState = STATE_INPUTSOURCE_WAIT;
break;
当我们按“上”、“下”键时,执行:
MApp_ZUI_ACT_ExecuteWndProc(GETWNDPROCID(focus), pMsg);
再执行:
MApp_ZUI_API_DefaultWindowProc
再执行:
MApp_ZUI_ACT_ExecuteWndAction
以按下键为例:
执行:
case EN_EXE_NOTIFY_PARENT_KEY_DOWN:
MApp_ZUI_API_PostMessage(
MApp_ZUI_API_GetParent(MApp_ZUI_API_GetFocus()),
MSG_NOTIFY_KEYDOWN,
VK_DOWN);
return TRUE;
再执行:
case EN_ZUI_DYNAMICLIST_WINPROC:
return DYNAMICLIST_WINPROC(msg->hwnd, msg);
再执行:
if((windata->pVarData->hwndFirstShown<=next
&&next<= windata->pVarData->hwndLastShown)
&&MApp_ZUI_API_IsWindowVisible(next)
&&MApp_ZUI_API_IsWindowEnabled(next))
{
//shown region: trivial case: focus it
MApp_ZUI_API_SetFocus(next);
printf("[]focus=%u\n", next);
break;
}
return DEFAULTWINPROC(hWnd, pMsg);
选中Input Source的USB项,再按OK键,执行:
case EN_EXE_EXECUTE_APP_USB:
{
MApp_ZUI_ACT_InputSourceSwitch( _MApp_ZUI_ACT_GetSourceType() );
MApp_ZUI_ACT_TransitionEffectBegin(EN_EFFMODE_CLOSE, _ZUI_STATE_TERMINATE);
enInputSourceState= STATE_INPUTSOURCE_GOTO_DMP;
}
return TRUE;
再执行到:
MApp_InputSource_Main
switch(enInputSourceState)
case STATE_INPUTSOURCE_GOTO_DMP:
MApp_ZUI_ACT_ShutdownOSD();
enInputSourceState = STATE_INPUTSOURCE_INIT;
enRetVal = EXIT_GOTO_DMP;
break;
再:
switch(MApp_InputSource_Main())
case EXIT_GOTO_DMP:
enTopState = STATE_TOP_DMP;
break;
执行:
MApp_DMP_Main
switch(m_enDmpVar.enDmpState)
case DMP_STATE_INIT:
srand(msAPI_Timer_GetTime0());
MApp_ZUI_ACT_StartupOSD(E_OSD_DMP);
_MApp_DMP_Switch2Dmp();
u32time = msAPI_Timer_GetTime0();
m_enDmpVar.enDmpState = DMP_STATE_CONNECTING;
u8GWinId = MApp_ZUI_API_QueryGWinID();
break;
case DMP_STATE_CONNECTING:
if(msAPI_Timer_DiffTimeFromNow(u32time) > DMP_WAITCONNECT_MS
|| m_enDmpVar.enDmpFlag & DMP_FLAG_DRIVE_CONNECT_OK)
{
m_enDmpVar.enDmpState = DMP_STATE_UI;
}
break;
case DMP_STATE_UI:
MApp_DMP_NotifyUiState(m_enDmpVar.enDmpUiState);
m_enDmpVar.enDmpState = DMP_STATE_WAIT;
break;
我们再一直按右,执行:
switch(pMsg->wParam)
{
case VK_RIGHT:
MApp_ZUI_API_SetFocusByNav(focus, NAV_RIGHT);
break;
}
在影视选项上按OK,执行:
case EN_EXE_DMP_MEDIA_PAGE_SEL:
if(HWND_DMP_MEDIA_TYPE_MOVIE == MApp_ZUI_API_GetFocus())
{
// stop bgm
if(MApp_DMP_GetDmpFlag() & DMP_FLAG_BGM_MODE)
{
MApp_MPlayer_StopMusic();
MApp_DMP_ClearDmpFlag(DMP_FLAG_BGM_MODE);
}
MApp_MPlayer_SetCurrentMediaType(E_MPLAYER_TYPE_MOVIE, TRUE);
MApp_DMP_UiStateTransition(DMP_UI_STATE_DRIVE_SELECT);
}
再执行:
case DMP_UI_STATE_DRIVE_SELECT:
{
#if (DMP_PHOTO_THUMBNAIL || DMP_MOVIE_THUMBNAIL)
_MApp_DMP_ThumbCopyRegion_Destroy();
MApp_MPlayer_LeaveThumbnailMode();
MApp_DMP_ClearDmpFlag(DMP_FLAG_THUMBNAIL_MODE);
#endif
U8 i;
for(i=0; i<NUM_OF_MAX_DRIVE; i++)
{
if(MApp_MPlayer_QueryCurrentDriveIndex()== MApp_DMP_GetDriveFromMappingTable(i))
{
MApp_DMP_SetCurDrvIdxAndCalPageIdx(i);
}
}
_MApp_ACTdmp_ShowDrivePage();
U8 u8Idx = (MApp_DMP_GetCurDrvIdx()+1) % DMP_DRIVE_NUM_PER_PAGE;
MApp_ZUI_API_SetFocus(_hwndListDriveItem[u8Idx]);
}
break;
好,现在进入了Drive选择界面。在该界面按右键,通过,Skin Tool里面定义的Navigation,跳转到了,第一个可供选择的Drive。
再在该界面按OK键,执行:
MApp_DMP_UiStateTransition(DMP_UI_STATE_FILE_SELECT);
再调用:MApp_DMP_NotifyUiState
就可以显示出文件列表页面了。
视频的播放流程,待续。
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc.