📄 psl_process_status.cpp
字号:
if (PslScreenLayoutClearStatusDisplay(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: Failure clearing status display!\n"));
return (PSL_FAILURE);
}
}
/* If status menu is active, clear it */
if (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE)
{
/* clear status menu */
if (PslScreenLayoutClearStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: Failure clearing status menu!\n"));
return (PSL_FAILURE);
}
}
/* Set parental control mode */
pPSL->pParentalControl->usMode = 1;
/* Draw the parental control interface */
if (PslScreenLayoutDrawParentalControl(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: Failure drawing parental control!\n"));
return (PSL_FAILURE);
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusParentalProhibit -- Process the parental prohibit status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusParentalProhibit(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusParentalProhibit: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusParentalProhibit: NULL pointer!\n"));
return (PSL_NULL_POINTER);
}
if (pPSL->pParentalControl == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusSetTmpParental: parental control data not created!\n"));
return (PSL_FAILURE);
}
/* If generic osd is active, clear it */
if (PslScreenLayoutIsGenericActive(pPSL) == TRUE)
{
if (PslScreenLayoutClearGeneric(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusParentalProhibit: failed to clear generic osd!\n"));
return (PSL_FAILURE);
}
}
/* If setup menu is active, clear it */
if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
{
/* clear setup menu */
if (PslScreenLayoutClearSetupMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusParentalProhibit: Failure clearing setup menu!\n"));
return (PSL_FAILURE);
}
}
/* If status display is active, clear it */
if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
{
/* clear status display */
if (PslScreenLayoutClearStatusDisplay(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusParentalProhibit: Failure clearing status display!\n"));
return (PSL_FAILURE);
}
}
/* If status menu is active, clear it */
if (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE)
{
/* clear status menu */
if (PslScreenLayoutClearStatusMenu(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusParentalProhibit: Failure clearing status menu!\n"));
return (PSL_FAILURE);
}
}
/* Set parental control mode */
pPSL->pParentalControl->usMode = 2;
/* Draw the parental control interface */
if (PslScreenLayoutDrawParentalControl(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusParentalProhibit: Failure drawing parental control!\n"));
return (PSL_FAILURE);
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusTimer -- Process the status display timer status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusTimer(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
ULONG ulSetting;
char cSetting[25];
char cTmp[5];
BOOLEAN fUpdate = FALSE;
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusTimer: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: NULL handle!\n"));
return (PSL_NULL_POINTER);
}
if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
{
ULONG ulNavState = PslExternalGetNavStatus();
/* If we are in a bad play state to show time display, clear it */
if ( (ulNavState == PSL_STATUS_FULLSTOP) || (ulNavState == PSL_STATUS_OPEN) ||
(ulNavState == PSL_STATUS_NO_DISC) || (ulNavState == PSL_STATUS_UNKNOWN) )
{
/* clear status display */
if (PslScreenLayoutClearStatusDisplay(pPSL) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: Failure clearing status display!\n"));
return (PSL_FAILURE);
}
}
else
{
/* Get the title number */
ulSetting = PslExternalGetCurrentTitle();
/* If title is different, update the status display */
if (ulSetting != pPSL->pStatusDisplay->StatusInfo.usTitle)
{
pPSL->pStatusDisplay->StatusInfo.usTitle = (USHORT)(ulSetting);
/* Conver title number to a string */
if (ulSetting < 10)
{
cTmp[0] = (char)(ulSetting + '0');
cTmp[1] = '\0';
}
else
{
cTmp[0] = (char)((ulSetting / 10) + '0');
cTmp[1] = (char)((ulSetting % 10) + '0');
cTmp[2] = '\0';
}
/* set title setting text */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusDisplay->pButton[0][1], cTmp) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* redraw the button with the title */
if (PslScreenLayoutDrawButton(&pPSL->pStatusDisplay->pButton[0][1]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure drawing button!\n"));
return (PSL_FAILURE);
}
fUpdate = TRUE;
}
/* Get the chapter number */
ulSetting = PslExternalGetCurrentChapter();
/* If chapter is different, update the status display */
if (ulSetting != pPSL->pStatusDisplay->StatusInfo.usChapter)
{
pPSL->pStatusDisplay->StatusInfo.usChapter = (USHORT)(ulSetting);
/* Conver chapter number to a string */
if (ulSetting < 10)
{
cTmp[0] = (char)(ulSetting + '0');
cTmp[1] = '\0';
}
else
{
cTmp[0] = (char)((ulSetting / 10) + '0');
cTmp[1] = (char)((ulSetting % 10) + '0');
cTmp[2] = '\0';
}
/* set chapter setting text */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusDisplay->pButton[0][3], cTmp) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* redraw the button with the chapter */
if (PslScreenLayoutDrawButton(&pPSL->pStatusDisplay->pButton[0][3]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure drawing button!\n"));
return (PSL_FAILURE);
}
fUpdate = TRUE;
}
/* Get the play time */
ulSetting = PslExternalGetTime(pPSL->pStatusDisplay->StatusInfo.tTimeMode);
if (ulSetting != pPSL->pStatusDisplay->StatusInfo.ulTime)
{
pPSL->pStatusDisplay->StatusInfo.ulTime = ulSetting;
/* convert hour string */
cTmp[0] = (char)(( (ulSetting / 3600) / 10) + '0');
cTmp[1] = (char)(( (ulSetting / 3600) % 10) + '0');
cTmp[2] = '\0';
/* add hour to time setting string */
strcpy(cSetting, cTmp);
strcat(cSetting, " : ");
/* convert minute string */
ulSetting = ulSetting % 3600;
cTmp[0] = (char)(( (ulSetting / 60) / 10) + '0');
cTmp[1] = (char)(( (ulSetting / 60) % 10) + '0');
cTmp[2] = '\0';
/* add minute to time setting string */
strcat(cSetting, cTmp);
strcat(cSetting, " : ");
/* convert second string */
ulSetting = ulSetting % 60;
cTmp[0] = (char)((ulSetting / 10) + '0');
cTmp[1] = (char)((ulSetting % 10) + '0');
cTmp[2] = '\0';
/* add second to time setting string */
strcat(cSetting, cTmp);
/* set time setting text */
if (PslScreenLayoutSetButtonText(&pPSL->pStatusDisplay->pButton[0][5], cSetting) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* redraw the button with the time */
if (PslScreenLayoutDrawButton(&pPSL->pStatusDisplay->pButton[0][5]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure drawing button!\n"));
return (PSL_FAILURE);
}
fUpdate = TRUE;
}
if (fUpdate == TRUE)
{
/* copy draw buffer to display buffer */
DealCMBufferCopy(pPSL->pStatusDisplay->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
}
}
}
else if (PslScreenLayoutIsCDDAActive(pPSL) == TRUE)
{
/* Get the track number */
ulSetting = PslExternalGetCurrentChapter();
/* If track is different, update the cdda display */
if (ulSetting != pPSL->pCddaGui->StatusInfo.usChapter)
{
pPSL->pCddaGui->StatusInfo.usChapter = (USHORT)(ulSetting);
/* Conver chapter number to a string */
if (ulSetting < 10)
{
cTmp[0] = (char)(ulSetting + '0');
cTmp[1] = '\0';
}
else
{
cTmp[0] = (char)((ulSetting / 10) + '0');
cTmp[1] = (char)((ulSetting % 10) + '0');
cTmp[2] = '\0';
}
/* set track setting text */
if (PslScreenLayoutSetButtonText(&pPSL->pCddaGui->pButton[0][1], cTmp) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure setting button text!\n"));
return (PSL_FAILURE);
}
/* redraw the button with the track number */
if (PslScreenLayoutDrawButton(&pPSL->pCddaGui->pButton[0][1]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusTimer: failure drawing button!\n"));
return (PSL_FAILURE);
}
/* copy draw buffer to display buffer */
DealCMBufferCopy(pPSL->pCddaGui->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
}
}
return (PSL_SUCCESS);
}
/**
* PslProcessStatusIconTimeout -- Process the icon timeout status event
*
* @param
* pPSL - handle to internal PSL data
* ulData1 - data parameter associated with status event
* ulData2 - data parameter associated with status event
* pvBuffer - buffer containing data associated with status event
* ulBufferSize - size of buffer pointed to by pvBuffer
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslProcessStatusIconTimeout(PSL_HANDLE *pPSL, ULONG ulData1, ULONG ulData2, PVOID pvBuffer, ULONG ulBufferSize)
{
DBGPRINT(DBG_ON(DBG_TRACE), ("PslProcessStatusIconTimeout: ENTER\n"));
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessStatusIconTimeout: NULL handle!\n"));
return (PSL_NULL_POINTER);
}
/* If time display is active, icon should not be cleared */
if (PslScreenLayoutIsStatusDisplayActive(pPSL) == TRUE)
{
/* If icon was the prohibited icon, redraw the status icon */
if (pPSL->pIconData->pActiveIcon == PslBitmapGetProhibitedIcon() )
{
ULONG ulNavState = PslExternalGetNavStatus();
/* get appropriate icon based on navigator state */
switch (ulNavState)
{
case PSL_STATUS_PAUSE:
pPSL->pIconData->pActiveIcon = PslBitmapGetPauseIcon();
break;
case PSL_STATUS_STOP:
pPSL->pIconData->pActiveIcon = PslBitmapGetStopIcon();
break;
case PSL_STATUS_PLAY:
pPSL->pIconData->pActiveIcon = PslBitmapGetPlay
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -