📄 psl_screen_layout.cpp
字号:
{
strcpy(pButtonDrawInfo->cText, "Password");
}
/* Unselect all buttons */
for (i = 0; i < pPSL->pSetupMenu->usNumberOfTabs; i++)
{
pPSL->pSetupMenu->pTab[i].fSelected = FALSE;
for (j = 0; j < pPSL->pSetupMenu->pTab[i].usNumSubButtons; j++)
{
pPSL->pSetupMenu->pTab[i].pSubButton[j].fSelected = FALSE;
for (k = 0; k < pPSL->pSetupMenu->pTab[i].pSubButton[j].usNumSubButtons; k++)
{
pPSL->pSetupMenu->pTab[i].pSubButton[j].pSubButton[k].fSelected = FALSE;
}
}
}
/* Set the new active tab and select it */
pPSL->pSetupMenu->pActiveTab = &pPSL->pSetupMenu->pTab[0];
pPSL->pSetupMenu->pActiveTab->fSelected = TRUE;
/* Set the new active button and select it */
pPSL->pSetupMenu->pActiveButton = &pPSL->pSetupMenu->pTab[0].pSubButton[1];
pPSL->pSetupMenu->pActiveButton->fSelected = TRUE;
}
/* set rectangle dimensions for menu border */
rect.usStartX = 0;
rect.usStartY = 0;
rect.usWidth = 540;
rect.usHeight = 255;
rect.tBuffer = DEAL_BUFFER_DRAW;
rect.usThickness = 2;
rect.ulColor = 4;
/* draw the border */
if (DealDMDrawUnFilledRectangle(pPSL->pSetupMenu->hDeal, &rect) != DEAL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawSetupMenu() -- failure drawing border\n"));
return (PSL_FAILURE);
}
/* draw menu tabs */
for (i = 0; i < pPSL->pSetupMenu->usNumberOfTabs; i++)
{
if (PslScreenLayoutDrawButton(&pPSL->pSetupMenu->pTab[i]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawSetupMenu() -- failure drawing button\n"));
return (PSL_FAILURE);
}
}
/* draw main menu buttons in active menu tab */
for (i = 0; i < pPSL->pSetupMenu->pActiveTab->usNumSubButtons; i++)
{
if (PslScreenLayoutDrawButton(&pPSL->pSetupMenu->pActiveTab->pSubButton[i]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawSetupMenu() -- failure drawing button\n"));
return (PSL_FAILURE);
}
}
/* copy draw buffer to display buffer */
DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
if (PslScreenLayoutIsSetupMenuActive(pPSL) == FALSE)
{
/* show the menu surface */
DealCMShow(pPSL->pSetupMenu->hDeal);
/* set the setup menu active bit */
pPSL->ulActiveInterface |= PSL_INTERFACE_SETUP;
}
return (PSL_SUCCESS);
}
/**
* PslScreenLayoutClearSetupMenu -- Clear the setup menu.
*
* @param
* pPSL - handle to internal PSL data
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslScreenLayoutClearSetupMenu(PSL_HANDLE *pPSL)
{
if ( (pPSL == NULL) || (pPSL->pSetupMenu == NULL) )
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutClearSetupMenu() -- NULL pointer!\n"));
return (PSL_FAILURE);
}
if (PslScreenLayoutIsSetupMenuActive(pPSL) == TRUE)
{
/* hide the menu surface */
DealCMHide(pPSL->pSetupMenu->hDeal);
/* clear the menu surface */
if (DealCMBufferClean(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_BOTH) != DEAL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutClearSetupMenu -- Failure clearing buffer\n"));
return (PSL_FAILURE);
}
/* clear the setup menu active bit */
pPSL->ulActiveInterface &= ~PSL_INTERFACE_SETUP;
}
return (PSL_SUCCESS);
}
/**
* PslScreenLayoutDrawStatusMenu -- Draw the status menu
*
* @param
* pPSL - handle to internal PSL data
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslScreenLayoutDrawStatusMenu(PSL_HANDLE *pPSL)
{
USHORT i;
USHORT usButtonIndex;
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawStatusMenu -- NULL handle!\n"));
return (PSL_NULL_POINTER);
}
/* check for valid status menu data */
if (pPSL->pStatusMenu == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawStatusMenu -- status menu not created\n"));
return (PSL_FAILURE);
}
/* determine which buttons need drawn, according to the current status menu mode */
switch (pPSL->pStatusMenu->tCurrentMode)
{
case PSL_STATUS_MODE_SUBTITLE:
usButtonIndex = 0;
break;
case PSL_STATUS_MODE_REPEAT:
usButtonIndex = 1;
break;
case PSL_STATUS_MODE_AUDIO:
usButtonIndex = 2;
break;
case PSL_STATUS_MODE_ANGLE:
usButtonIndex = 3;
break;
case PSL_STATUS_MODE_SEARCH_TITLE:
usButtonIndex = 4;
break;
case PSL_STATUS_MODE_SEARCH_CHAPTER:
case PSL_STATUS_MODE_CHAPTER_SKIP:
usButtonIndex = 5;
break;
case PSL_STATUS_MODE_SEARCH_TIME_HOUR:
case PSL_STATUS_MODE_SEARCH_TIME_MIN:
case PSL_STATUS_MODE_SEARCH_TIME_SEC:
usButtonIndex = 6;
break;
default:
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawStatusMenu() -- unknown status mode\n"));
return (PSL_FAILURE);
break;
}
/* clear the status menu surface */
if (DealCMBufferClean(pPSL->pStatusMenu->hDeal, DEAL_BUFFER_DRAW) != DEAL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawStatusMenu -- Failure clearing buffer\n"));
return (PSL_FAILURE);
}
/* draw menu buttons */
for (i = 0; i < pPSL->pStatusMenu->pusNumButtons[usButtonIndex]; i++)
{
if (PslScreenLayoutDrawButton(&pPSL->pStatusMenu->pButton[usButtonIndex][i]) != PSL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawStatusMenu() -- failure drawing button\n"));
return (PSL_FAILURE);
}
}
/* copy draw buffer to display buffer */
DealCMBufferCopy(pPSL->pStatusMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
if (PslScreenLayoutIsStatusMenuActive(pPSL) == FALSE)
{
/* show the menu surface */
DealCMShow(pPSL->pStatusMenu->hDeal);
/* set the status menu active bit */
pPSL->ulActiveInterface |= PSL_INTERFACE_STATUS;
}
return (PSL_SUCCESS);
}
/**
* PslScreenLayoutClearStatusMenu -- Clear the status menu
*
* @param
* pPSL - handle to internal PSL data
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslScreenLayoutClearStatusMenu(PSL_HANDLE *pPSL)
{
if (pPSL == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutClearStatusMenu -- NULL handle!\n"));
return (PSL_NULL_POINTER);
}
/* check for valid status menu data */
if (pPSL->pStatusMenu == NULL)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutClearStatusMenu -- status menu not created\n"));
return (PSL_FAILURE);
}
if (PslScreenLayoutIsStatusMenuActive(pPSL) == TRUE)
{
/* hide the menu surface */
DealCMHide(pPSL->pStatusMenu->hDeal);
/* clear the menu surface */
if (DealCMBufferClean(pPSL->pStatusMenu->hDeal, DEAL_BUFFER_BOTH) != DEAL_SUCCESS)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutClearStatusMenu -- Failure clearing buffer\n"));
return (PSL_FAILURE);
}
/* Stop timer */
if (OS_TimerStop(pPSL->pStatusMenu->Timer) != OS_OK)
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutClearStatusMenu -- Timer stop FAILED\n"));
return (PSL_FAILURE);
}
/* clear status menu mode */
pPSL->pStatusMenu->tCurrentMode = PSL_STATUS_MODE_NONE;
/* clear the status menu active bit */
pPSL->ulActiveInterface &= ~PSL_INTERFACE_STATUS;
}
return (PSL_SUCCESS);
}
/**
* PslScreenLayoutDrawStatusDisplay -- Draw the status display
*
* @param
* pPSL - handle to internal PSL data
*
* @retval
* PSL_SUCCESS if successful
* PSL_FAILURE if not successful
*/
PSL_STATUS PslScreenLayoutDrawStatusDisplay(PSL_HANDLE *pPSL)
{
PSL_BUTTON_DRAW_INFO *pButtonDrawInfo = NULL;
ULONG ulSetting;
char cTmp[5];
USHORT i;
if ( (pPSL == NULL) || (pPSL->pStatusDisplay == NULL) )
{
DBGPRINT(DBG_ON(DBG_ERROR), ("PslScreenLayoutDrawStatusDisplay() -- NULL pointer!\n"));
return (PSL_FAILURE);
}
/* Set initial display */
pPSL->pStatusDisplay->usCurrentDisplay = 0;
/* Get the title setting button draw info */
pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pStatusDisplay->pButton[0][1].pvButtonDrawInfo;
/* Get title number */
pPSL->pStatusDisplay->StatusInfo.usTitle = (USHORT)(PslExternalGetCurrentTitle());
/* Conver title number to a string */
if (pPSL->pStatusDisplay->StatusInfo.usTitle < 10)
{
pButtonDrawInfo->cText[0] = pPSL->pStatusDisplay->StatusInfo.usTitle + '0';
pButtonDrawInfo->cText[1] = '\0';
}
else
{
pButtonDrawInfo->cText[0] = (pPSL->pStatusDisplay->StatusInfo.usTitle / 10) + '0';
pButtonDrawInfo->cText[1] = (pPSL->pStatusDisplay->StatusInfo.usTitle % 10) + '0';
pButtonDrawInfo->cText[2] = '\0';
}
/* Get the chapter setting button draw info */
pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pStatusDisplay->pButton[0][3].pvButtonDrawInfo;
/* Get chapter number */
pPSL->pStatusDisplay->StatusInfo.usChapter = (USHORT)(PslExternalGetCurrentChapter());
/* Conver chapter number to a string */
if (pPSL->pStatusDisplay->StatusInfo.usChapter < 10)
{
pButtonDrawInfo->cText[0] = pPSL->pStatusDisplay->StatusInfo.usChapter + '0';
pButtonDrawInfo->cText[1] = '\0';
}
else
{
pButtonDrawInfo->cText[0] = (pPSL->pStatusDisplay->StatusInfo.usChapter / 10) + '0';
pButtonDrawInfo->cText[1] = (pPSL->pStatusDisplay->StatusInfo.usChapter % 10) + '0';
pButtonDrawInfo->cText[2] = '\0';
}
/* Get the time setting button draw info */
pButtonDrawInfo = (PSL_BUTTON_DRAW_INFO *)pPSL->pStatusDisplay->pButton[0][5].pvButtonDrawInfo;
/* Get the play time */
ulSetting = PslExternalGetTime(pPSL->pStatusDisplay->StatusInfo.tTimeMode);
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(pButtonDrawInfo->cText, cTmp);
strcat(pButtonDrawInfo->cText, " : ");
/* 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(pButtonDrawInfo->cText, cTmp);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -