📄 o_playmode.c
字号:
MSO_VLIST __NEAR* pList = (MSO_VLIST __NEAR*)MS_GetObjectListPtr(pThis);
MS_ASSERT(NULL != pList);
if(pList->moParam.mwTotalItems > pList->moParam.mcNumVisibleItems)
{
// Remove all items.
MS_SendOperation((MSO_OBJECT __NEAR*)pList, MS_OP_EMPTY, 0);
_AddItemsToPlayModeKit(pList, TRUE);
MS_DisplayAddObject(pThis);
// Set focus to the appropriate list item.
if(MS_IsFocused(pList))
{
MSO_OBJECT __NEAR* pObject = MS_GetObjectListPtr(pList);
if(!MS_IS_FOCUS_ON_LASTITEM(pList))
MS_ScreenSetFocusObject(pObject);
else
{
// Make sure we do not set focus on the Value VScroll list.
while(NULL != pObject->mpNext)
pObject = pObject->mpNext;
MS_ScreenSetFocusObject(pObject);
}
}
}
}
return MS_OP_NONE;
default:
break;
}
return MsOp;
}
#endif//D_CUSTOM__PlaymodeKitOperation
/***************************************************************************************
* Function : _PlaymodekitVlistOperation
*
* In :
*
* Out :
*
* Desc : The Playmode kit VLIST operation function.
****************************************************************************************/
#ifndef D_CUSTOM__PlaymodekitVlistOperation
#pragma argsused
STATIC MS_OP _PlaymodekitVlistOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
switch(MsOp)
{
case MS_OP_OPEN:
_AddItemsToPlayModeKit((MSO_VLIST __NEAR*)pThis, FALSE);
break;
default:
break;
}
return VListOperation(pThis, MsOp, lParam);
}
#endif//D_CUSTOM__PlaymodekitVlistOperation
/***************************************************************************************
* Function : _ProgramVListOperation
*
* In :
*
* Out :
*
* Desc : The Program list (MSO_VLIST) operation function.
****************************************************************************************/
#ifndef D_CUSTOM__ProgramVListOperation
#pragma argsused
STATIC MS_OP _ProgramVListOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
switch(MsOp)
{
case MS_OP_INIT:
return MS_OP_NONE;
case MS_OP_OPEN:
//_AddEntriesToProgramList((MSO_VLIST __NEAR*)pThis);
break;
default:
break;
}
return VListOperation(pThis, MsOp, lParam);
}
#endif//D_CUSTOM__ProgramVListOperation
/***************************************************************************************
* Function : _ProgramKitOperation
*
* In :
*
* Out :
*
* Desc : The Program VSCROLL List operation function.
****************************************************************************************/
#ifndef D_CUSTOM__ProgramKitOperation
#pragma argsused
STATIC MS_OP _ProgramKitOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
//Pre-processing
switch(MsOp)
{
case MS_OP_TICK:
{
MSO_PLAYMODE __NEAR* pPlayMode = (MSO_PLAYMODE __NEAR*)MS_GetParentPtr(pThis);
if(PLAYMODE_PROGRAM == pPlayMode->moParam.mwPlaymode)
{
if(!MS_IsFocusable(pThis))
{
MS_SetFocusable(pThis);
MS_DisplayAddObject(pThis);
}
}
else
{
if(MS_IsFocusable(pThis))
{
MS_ClearFocusable(pThis);
MS_DisplayAddObject(pThis);
}
}
}
break;
default:
break;
}
MsOp = VScrollListOperation(pThis, MsOp, lParam);
// Post-processing
switch(MsOp)
{
case MS_OP_REFRESH:
{
MSO_VLIST __NEAR* pList = (MSO_VLIST __NEAR*)MS_GetObjectListPtr(pThis);
MS_ASSERT(NULL != pList);
// Remove all items.
MS_SendOperation((MSO_OBJECT __NEAR*)pList, MS_OP_EMPTY, 0);
_AddEntriesToProgramList(pList);
MS_DisplayAddObject(pThis);
// Set focus to the appropriate list item.
if(MS_IsFocused(pList))
{
MSO_OBJECT __NEAR* pObject = MS_GetObjectListPtr(pList);
if(!MS_IS_FOCUS_ON_LASTITEM(pList))
{
// Set focus to the Title entry.
if(_IsSupportedDVDMediaType())
pObject = MS_GetObjectListPtr(pObject);
MS_ScreenSetFocusObject(pObject);
}
else
{
while(NULL != pObject->mpNext)
pObject = pObject->mpNext;
// Set focus to the Title entry.
if(_IsSupportedDVDMediaType())
pObject = MS_GetObjectListPtr(pObject);
MS_ScreenSetFocusObject(pObject);
}
}
}
return MS_OP_NONE;
default:
break;
}
return MsOp;
}
#endif //D_CUSTOM__ProgramKitOperation
/***************************************************************************************
* Function : _ProgramEntryOperation
*
* In :
*
* Out :
*
* Desc : The Program item operation function.
****************************************************************************************/
#ifndef D_CUSTOM__ProgramEntryOperation
STATIC MS_OP _ProgramEntryOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
MsOp = OTEXT_Operation(pThis, MsOp, lParam);
// Post-processing
switch(MsOp)
{
case MS_OP_ON_DEFROST:
case MS_OP_INIT:
{
MSO_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_PROGRAM_ENTRY __NEAR*)pThis;
if(MS_OP_INIT == MsOp)
pProgramEntry->moParam.mwIndex = (UINT16)lParam;
pProgramEntry->moParam.mwValue = _GetEntryFromUIProgramList(pProgramEntry->moParam.mwIndex);
if(!_IsTrackEntryValid(pProgramEntry))
{
pProgramEntry->moParam.mwValue = INVALID_TRACK;
_RemoveEntryFromUIProgramList(pProgramEntry->moParam.mwIndex);
}
else
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwValue);
}
return MS_OP_NONE;
case MS_OP_UP:
case MS_OP_DOWN:
case MS_OP_LEFT: // Fall Through !!!
case MS_OP_RIGHT: // Fall Through !!!
case MS_OP_ENTER:
{
MSO_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_PROGRAM_ENTRY __NEAR*)pThis;
MS_ClearEntryNumberAppended(pThis);
if(_IsTrackEntryValid(pProgramEntry))
_ModifyUIProgramListEntry(pProgramEntry->moParam.mwIndex, pProgramEntry->moParam.mwValue);
else
_RemoveEntryFromUIProgramList(pProgramEntry->moParam.mwIndex);
if(MS_OP_ENTER == MsOp)
return MS_OP_NONE;
}
break;
case MS_OP_0: // Fall Through
case MS_OP_1: // Fall Through
case MS_OP_2: // Fall Through
case MS_OP_3: // Fall Through
case MS_OP_4: // Fall Through
case MS_OP_5: // Fall Through
case MS_OP_6: // Fall Through
case MS_OP_7: // Fall Through
case MS_OP_8: // Fall Through
case MS_OP_9:
{
MSO_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_PROGRAM_ENTRY __NEAR*)pThis;
UINT8 cValue = MsOp - MS_OP_0;
if(!MS_IsEntryNumberAppended(pThis)
||(INVALID_TRACK == pProgramEntry->moParam.mwValue))
{
pProgramEntry->moParam.mwValue = cValue;
MS_SendOperation((MSO_OBJECT __NEAR*)pProgramEntry, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwValue);
MS_DisplayAddObject(pThis);
MS_SetEntryNumberAppended(pThis);
}
else
{
pProgramEntry->moParam.mwValue = (pProgramEntry->moParam.mwValue * 10) + cValue;
pProgramEntry->moParam.mwValue = (pProgramEntry->moParam.mwValue) % 1000;
MS_SendOperation((MSO_OBJECT __NEAR*)pProgramEntry, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwValue);
MS_DisplayAddObject(pThis);
}
}
return MS_OP_NONE;
case MS_OP_CLEAR:
{
MSO_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_PROGRAM_ENTRY __NEAR*)pThis;
if(INVALID_TRACK != pProgramEntry->moParam.mwValue)
{
// Remove this item from the Program list.
pProgramEntry->moParam.mwValue = INVALID_TRACK;
_RemoveEntryFromUIProgramList(pProgramEntry->moParam.mwIndex);
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwValue);
MS_DisplayAddObject(pThis);
}
}
return MS_OP_NONE;
default:
break;
}
return MsOp;
}
#endif//D_CUSTOM__ProgramEntryOperation
/***************************************************************************************
* Function : _DVDProgramTitleEntryOperation
*
* In :
*
* Out :
*
* Desc : The DVD Program Title Entry operation function.
****************************************************************************************/
#ifndef D_CUSTOM__DVDProgramTitleEntryOperation
STATIC MS_OP _DVDProgramTitleEntryOperation(MSO_OBJECT __NEAR* pThis, MS_OP MsOp, UINT32 lParam)
{
MsOp = OTEXT_Operation(pThis, MsOp, lParam);
// Post-processing
switch(MsOp)
{
case MS_OP_INIT:
case MS_OP_ON_DEFROST:
{
MSO_DVD_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_DVD_PROGRAM_ENTRY __NEAR*)MS_GetParentPtr(pThis);
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwTitle);
}
return MS_OP_NONE;
case MS_OP_0: // Fall Through
case MS_OP_1: // Fall Through
case MS_OP_2: // Fall Through
case MS_OP_3: // Fall Through
case MS_OP_4: // Fall Through
case MS_OP_5: // Fall Through
case MS_OP_6: // Fall Through
case MS_OP_7: // Fall Through
case MS_OP_8: // Fall Through
case MS_OP_9:
{
MSO_DVD_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_DVD_PROGRAM_ENTRY __NEAR*)MS_GetParentPtr(pThis);
UINT8 cValue = MsOp - MS_OP_0;
if(!MS_IsEntryNumberAppended(pThis)
||(INVALID_TRACK == pProgramEntry->moParam.mwTitle ))
{
pProgramEntry->moParam.mwTitle = cValue;
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwTitle);
MS_DisplayAddObject(pThis);
MS_SetEntryNumberAppended(pThis);
}
else
{
pProgramEntry->moParam.mwTitle = (pProgramEntry->moParam.mwTitle * 10) + cValue;
pProgramEntry->moParam.mwTitle = (pProgramEntry->moParam.mwTitle) % 1000;
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwTitle);
MS_DisplayAddObject(pThis);
}
}
return MS_OP_NONE;
case MS_OP_CLEAR:
{
MSO_DVD_PROGRAM_ENTRY __NEAR* pProgramEntry = (MSO_DVD_PROGRAM_ENTRY __NEAR*)MS_GetParentPtr(pThis);
if(INVALID_TRACK != pProgramEntry->moParam.mwTitle)
{
// Remove this item from the Program list.
pProgramEntry->moParam.mwTitle = INVALID_TRACK;
MS_SendOperation(pThis, MS_OP_BUILD_TEXT_STRING, (UINT32)pProgramEntry->moParam.mwTitle);
MS_DisplayAddObject(pThis);
}
}
return MS_OP_NONE;
case MS_OP_UP:
case MS_OP_DOWN:
case MS_OP_LEFT:
case MS_OP_RIGHT:
case MS_OP_ENTER:
MS_ClearEntryNumberAppended(pThis);
break;
default:
break;
}
return MsOp;
}
#endif//D_CUSTOM__DVDProgramTitleEntryOperation
/***************************************************************************************
* Function : _DVDProgramChapterEntryOperation
*
* In :
*
* Out :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -