📄 psl_process_user_input.cpp
字号:
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputRepeatAB: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRepeatAB: Invalid psl handle\n"));
return (PSL_NULL_POINTER);
}
/* If standby is on, do not process the user input */
if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
{
/* If parental control is active, do not process command */
if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
{
/* If setup menu is active, do not process the command */
if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
{
/* Send command to the nav to be processed */
if (PslExternalSendNavCommand(PSL_USER_CMD_REPEAT_AB, ulInfo) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputRepeatAB: Failure sending command to nav\n"));
return (PSL_FAILURE);
}
}
}
}
return (PSL_SUCCESS);
}
/**
* PslProcessUserInputSearch -- Process the search command
*
* @param
* pPSL - handle to internal PSL data
* ulInfo - info param with the command
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessUserInputSearch(PSL_HANDLE *pPSL, ULONG ulInfo)
{
ULONG ulNavState;
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputSearch: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: Invalid psl handle\n"));
return (PSL_NULL_POINTER);
}
/* check that status menu data is valid */
if (pPSL->pStatusMenu == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: status menu not created!\n"));
return (PSL_FAILURE);
}
/* Get navigator state */
ulNavState = PslExternalGetNavStatus();
/* If standby is on, do not process the user input */
if ( (ulNavState != (ULONG)PSL_STATUS_STANDBY) &&
(ulNavState != (ULONG)PSL_STATUS_OPEN) )
{
/* If parental control is active, do not process command */
if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
{
/*
* Change the search mode. If search is not currently active, then
* initialize the search mode.
*/
if (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE)
{
if (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_TITLE)
{
/* Change search mode to chapter search */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_SEARCH_CHAPTER;
/* Set initial chapter number */
pPSL->pStatusMenu->StatusInfo.usChapter = 0;
/* set the initial title setting string */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[5][1], "00") != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure setting button text!\n"));
return (PSL_FAILURE);
}
}
else if (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_CHAPTER)
{
/* Change search mode to time search */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_SEARCH_TIME_HOUR;
/* Set initial time numbers */
pPSL->pStatusMenu->StatusInfo.usTimeHour = 0;
pPSL->pStatusMenu->StatusInfo.usTimeMin = 0;
pPSL->pStatusMenu->StatusInfo.usTimeSec = 0;
/* Initialialy the time hour will be selected */
pPSL->pStatusMenu->pButton[6][1].fSelected = TRUE;
pPSL->pStatusMenu->pButton[6][3].fSelected = FALSE;
pPSL->pStatusMenu->pButton[6][5].fSelected = FALSE;
/* set the initial time hour string */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[6][1], "00") != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* set the initial time minute string */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[6][3], "00") != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* set the initial time second string */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[6][5], "00") != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure setting button text!\n"));
return (PSL_FAILURE);
}
}
else if ( (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_TIME_HOUR) ||
(pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_TIME_MIN) ||
(pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_TIME_SEC) )
{
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_NONE;
}
else
{
/* stop the status menu timer */
if (OS_TimerStop(pPSL->pStatusMenu->Timer) != OS_OK)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch -- Timer set FAILED\n"));
return (PSL_FAILURE);
}
/* Initialize search mode to title search */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_SEARCH_TITLE;
/* Set initial title number */
pPSL->pStatusMenu->StatusInfo.usTitle = 0;
/* set the initial title setting string */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[4][1], "00") != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure setting button text!\n"));
return (PSL_FAILURE);
}
}
}
else
{
/* Initialize status menu mode to search title */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_SEARCH_TITLE;
/* Set initial title number */
pPSL->pStatusMenu->StatusInfo.usTitle = 0;
/* set the initial title setting string */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[4][1], "00") != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure setting button text!\n"));
return (PSL_FAILURE);
}
}
if (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_NONE)
{
/* Clear the search menu */
if (PslScreenLayoutClearStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure clearing status menu!\n"));
return (PSL_FAILURE);
}
}
else
{
/* If setup menu is active, clear it before drawing the search menu */
if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
{
/* clear setup menu */
if (PslScreenLayoutClearSetupMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: Failure clearing setup menu!\n"));
return (PSL_FAILURE);
}
}
/* Draw the search menu */
if (PslScreenLayoutDrawStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSearch: failure drawing status menu!\n"));
return (PSL_FAILURE);
}
}
}
}
switch ( pPSL->pStatusMenu->tCurrentMode )
{
case PSL_STATUS_MODE_NONE: DBGPRINT(TRUE, ("PSL_STATUS_MODE_NONE\n")); break;
case PSL_STATUS_MODE_SUBTITLE: DBGPRINT(TRUE, ("PSL_STATUS_MODE_SUBTITLE\n")); break;
case PSL_STATUS_MODE_AUDIO: DBGPRINT(TRUE, ("PSL_STATUS_MODE_AUDIO\n")); break;
case PSL_STATUS_MODE_ANGLE: DBGPRINT(TRUE, ("PSL_STATUS_MODE_ANGLE\n")); break;
case PSL_STATUS_MODE_REPEAT: DBGPRINT(TRUE, ("PSL_STATUS_MODE_REPEAT\n")); break;
case PSL_STATUS_MODE_SEARCH_TITLE: DBGPRINT(TRUE, ("PSL_STATUS_MODE_SEARCH_TITLE\n")); break;
case PSL_STATUS_MODE_SEARCH_CHAPTER: DBGPRINT(TRUE, ("PSL_STATUS_MODE_SEARCH_CHAPTER\n")); break;
case PSL_STATUS_MODE_SEARCH_TIME_HOUR: DBGPRINT(TRUE, ("PSL_STATUS_MODE_SEARCH_TIME_HOUR\n")); break;
case PSL_STATUS_MODE_SEARCH_TIME_MIN: DBGPRINT(TRUE, ("PSL_STATUS_MODE_SEARCH_TIME_MIN\n")); break;
case PSL_STATUS_MODE_SEARCH_TIME_SEC: DBGPRINT(TRUE, ("PSL_STATUS_MODE_SEARCH_TIME_SEC\n")); break;
case PSL_STATUS_MODE_CHAPTER_SKIP: DBGPRINT(TRUE, ("PSL_STATUS_MODE_CHAPTER_SKIP\n")); break;
}
return (PSL_SUCCESS);
}
/**
* PslProcessUserInputAngle -- Process the angle command
*
* @param
* pPSL - handle to internal PSL data
* ulInfo - info param with the command
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessUserInputAngle(PSL_HANDLE *pPSL, ULONG ulInfo)
{
char cTmp[10];
ULONG ulTimeout = 3000;
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputAngle: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputAngle: Invalid psl handle\n"));
return (PSL_NULL_POINTER);
}
/* If standby is on, do not process the user input */
if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
{
/* If parental control is active, do not process command */
if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
{
/* Get the number of available angles */
pPSL->pStatusMenu->StatusInfo.usAvailableAngles = (USHORT)(PslExternalGetNumberOfAngles());
/* If angle menu is active, change to the next angle. */
if ( (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE) &&
(pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_ANGLE) )
{
/* Increment angle number */
if (pPSL->pStatusMenu->StatusInfo.usAngleNumber >= pPSL->pStatusMenu->StatusInfo.usAvailableAngles)
{
pPSL->pStatusMenu->StatusInfo.usAngleNumber = 1;
}
else
{
pPSL->pStatusMenu->StatusInfo.usAngleNumber++;
}
}
else
{
/* Get the current angle number */
pPSL->pStatusMenu->StatusInfo.usAngleNumber = (USHORT)(PslExternalGetCurrentAngle());
/* Set status menu mode to angle */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_ANGLE;
}
/* Set angle number string */
cTmp[0] = ( (pPSL->pStatusMenu->StatusInfo.usAngleNumber) / 10) + '0';
cTmp[1] = ( (pPSL->pStatusMenu->StatusInfo.usAngleNumber) % 10) + '0';
cTmp[2] = '/';
cTmp[3] = (pPSL->pStatusMenu->StatusInfo.usAvailableAngles / 10) + '0';
cTmp[4] = (pPSL->pStatusMenu->StatusInfo.usAvailableAngles % 10) + '0';
cTmp[5] = '\0';
/* set the angle text */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[3][1], cTmp) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputAngle: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* If setup menu is active, clear it before drawing the angle menu */
if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
{
/* clear setup menu */
if (PslScreenLayoutClearSetupMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputAngle: Failure clearing setup menu!\n"));
return (PSL_FAILURE);
}
}
/* Set the status menu timer */
if (OS_TimerSetMsec(pPSL->pStatusMenu->Timer, ulTimeout) != OS_OK)
{
DbgPrint(("PslProcessUserInputAngle: Timer set FAILED\n"));
return (PSL_FAILURE);
}
/* Draw the angle menu */
if (PslScreenLayoutDrawStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputAngle: failure drawing status menu!\n"));
return (PSL_FAILURE);
}
}
}
return (PSL_SUCCESS);
}
/**
* PslProcessUserInputSetup -- Process the setup command
*
* @param
* pPSL - handle to internal PSL data
* ulInfo - info param with the command
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessUserInputSetup(PSL_HANDLE *pPSL, ULONG ulInfo)
{
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessUserInputSetup: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessUserInputSetup: Invalid psl handle\n"));
return (PSL_NULL_POINTER);
}
/* If standby is on, do not process the user input */
if (PslExternalGetNavStatus() != (ULONG)PSL_STATUS_STANDBY)
{
/* If parental control is active, do not process command */
if (PslScreenLayoutIsParentalControlActive(pPSL) == FALSE)
{
/* check if setup menu is active */
if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
{
/* If timedisplay is active, clear it before displaying setup menu */
if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -