⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 o_playmode.c

📁 Zoran V966 DVD 解码 Soc芯片的源程序
💻 C
📖 第 1 页 / 共 4 页
字号:
			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 + -