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

📄 psl_process_key.cpp

📁 这是DVD中伺服部分的核心代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                /* redraw the password setting button */
                if (PslScreenLayoutDrawButton(pPSL->pSetupMenu->pActiveButton) != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuSelect: Failed to draw button!\n"));
                    return (PSL_FAILURE);
                }
            }
        
            /* copy draw buffer to display buffer to show changes */
            DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
        }
        else if ( (pPSL->pSetupMenu->pActiveTab->pSubButton[0].ulInfo == PSL_PWD_CREATE) ||
                  (pPSL->pSetupMenu->pActiveTab->pSubButton[0].ulInfo == PSL_PWD_RESET) )
        {
            if ( (pPSL->pSetupMenu->pActiveButton->ulInfo & 0x000000ff) != 0x00000000)
            {
                /* keep track of password for confirmation */
                m_ulTempPassword = pPSL->pSetupMenu->pActiveButton->ulInfo;

                /* clear any numbers that were entered */
                pPSL->pSetupMenu->pActiveButton->ulInfo = 0;

                /* reset password string */
                if (PslScreenLayoutSetButtonText(pPSL->pSetupMenu->pActiveButton, " _  _  _  _ ") != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuSelect: Failed to set button text\n"));
                    return (PSL_FAILURE);
                }

                /* change the password mode to allow user to confirm the password */
                pPSL->pSetupMenu->pActiveTab->pSubButton[0].ulInfo = PSL_PWD_CONFIRM;

                /* redraw password label */
                if (PslScreenLayoutSetButtonText(&pPSL->pSetupMenu->pActiveTab->pSubButton[0], "Confirm Password") != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuSelect: Failed to set button text\n"));
                    return (PSL_FAILURE);
                }

                /* redraw the password label button */
                if (PslScreenLayoutDrawButton(&pPSL->pSetupMenu->pActiveTab->pSubButton[0]) != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuSelect: Failed to draw button!\n"));
                    return (PSL_FAILURE);
                }

                /* redraw the password button */
                if (PslScreenLayoutDrawButton(pPSL->pSetupMenu->pActiveButton) != PSL_SUCCESS)
                {
                    DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuSelect: Failed to draw button!\n"));
                    return (PSL_FAILURE);
                }

                /* copy draw buffer to display buffer to show changes */
                DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
            } 
        }
    }
    else if (pPSL->pSetupMenu->pActiveButton->pSelectButton != NULL)
    {
        USHORT i;

        /* select the button that will be activated */
        pPSL->pSetupMenu->pActiveButton->pSelectButton->fSelected = TRUE;

        /* draw the option buttons */
        for (i = 0; i < pPSL->pSetupMenu->pActiveButton->usNumSubButtons; i++)
        {
            if (PslScreenLayoutDrawButton(&pPSL->pSetupMenu->pActiveButton->pSubButton[i]) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuSelect: Failed to draw button!\n"));
                return (PSL_FAILURE);
            }
        }

        /* change the active button */
        pPSL->pSetupMenu->pActiveButton = pPSL->pSetupMenu->pActiveButton->pSelectButton;

        /* copy draw buffer to display buffer to show changes */
        DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessKeySetupMenuDigit -- Process a digit command for setup menu
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *      ubDigit - digit entered
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslProcessKeySetupMenuDigit(PSL_HANDLE *pPSL, UBYTE ubDigit)
{
    /* Check for a valid psl handle and setup menu data */
    if ( (pPSL == NULL) || (pPSL->pSetupMenu == NULL) )
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: NULL pointer!\n"));
        return (PSL_FAILURE);
    }
    
    if (pPSL->pSetupMenu->pActiveButton->tButtonType == PSL_BUTTON_PWD)
    {
        if ( (pPSL->pSetupMenu->pActiveButton->ulInfo & 0xffffffff) == 0)
        {
            pPSL->pSetupMenu->pActiveButton->ulInfo |= ( (ubDigit + '0') << 24);

            /* change password string */
            if (PslScreenLayoutSetButtonText(pPSL->pSetupMenu->pActiveButton, " *  _  _  _ ") != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to set button text\n"));
                return (PSL_FAILURE);
            }

            /* redraw the button */
            if (PslScreenLayoutDrawButton(pPSL->pSetupMenu->pActiveButton) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to draw button!\n"));
                return (PSL_FAILURE);
            }

            /* copy draw buffer to display buffer to show changes */
            DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
        } 
        else if ( (pPSL->pSetupMenu->pActiveButton->ulInfo & 0x00ffffff) == 0)
        {
            pPSL->pSetupMenu->pActiveButton->ulInfo |= ( (ubDigit + '0') << 16);

            /* change password string */
            if (PslScreenLayoutSetButtonText(pPSL->pSetupMenu->pActiveButton, " *  *  _  _ ") != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to set button text\n"));
                return (PSL_FAILURE);
            }

            /* redraw the button */
            if (PslScreenLayoutDrawButton(pPSL->pSetupMenu->pActiveButton) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to draw button!\n"));
                return (PSL_FAILURE);
            }

            /* copy draw buffer to display buffer to show changes */
            DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
        } 
        else if ( (pPSL->pSetupMenu->pActiveButton->ulInfo & 0x0000ffff) == 0)
        {
            pPSL->pSetupMenu->pActiveButton->ulInfo |= ( (ubDigit + '0') << 8);

            /* change password string */
            if (PslScreenLayoutSetButtonText(pPSL->pSetupMenu->pActiveButton, " *  *  *  _ ") != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to set button text\n"));
                return (PSL_FAILURE);
            }

            /* redraw the button */
            if (PslScreenLayoutDrawButton(pPSL->pSetupMenu->pActiveButton) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to draw button!\n"));
                return (PSL_FAILURE);
            }

            /* copy draw buffer to display buffer to show changes */
            DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
        } 
        else if ( (pPSL->pSetupMenu->pActiveButton->ulInfo & 0x000000ff) == 0)
        {
            pPSL->pSetupMenu->pActiveButton->ulInfo |= (ubDigit + '0');

            /* change password string */
            if (PslScreenLayoutSetButtonText(pPSL->pSetupMenu->pActiveButton, " *  *  *  * ") != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to set button text\n"));
                return (PSL_FAILURE);
            }

            /* redraw the button */
            if (PslScreenLayoutDrawButton(pPSL->pSetupMenu->pActiveButton) != PSL_SUCCESS)
            {
                DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeySetupMenuDigit: Failed to draw button!\n"));
                return (PSL_FAILURE);
            }

            /* copy draw buffer to display buffer to show changes */
            DealCMBufferCopy(pPSL->pSetupMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
        } 
    }

    return (PSL_SUCCESS);
}

/**
 * PslProcessKeyStatusMenuUp -- Process the up command for status menu
 *
 * @param
 *      pPSL    - handle to internal PSL data
 *
 * @retval
 *    PSL_SUCCESS if successful
 *    PSL_FAILURE if not successful
 */
PSL_STATUS  PslProcessKeyStatusMenuUp(PSL_HANDLE *pPSL)
{
    char cTmp[5];

    /* Check for a valid psl handle */
    if (pPSL == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeyStatusMenuUp: NULL pointer!\n"));
        return (PSL_NULL_POINTER);
    }
    
    /* check for valid status menu data */
    if (pPSL->pStatusMenu == NULL)
    {
        DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeyStatusMenuUp: status menu not created!\n"));
        return (PSL_FAILURE);
    }
    
    /* Process the up command for any search modes */
    if (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_TITLE)
    {
        /* Increment the title number */
        if (pPSL->pStatusMenu->StatusInfo.usTitle >= 99)
        {
            pPSL->pStatusMenu->StatusInfo.usTitle = 0;
        }
        else
        {
            pPSL->pStatusMenu->StatusInfo.usTitle++;
        }

        /* convert title number to string */
        cTmp[0] = '0' + (pPSL->pStatusMenu->StatusInfo.usTitle / 10);
        cTmp[1] = '0' + (pPSL->pStatusMenu->StatusInfo.usTitle % 10);
        cTmp[2] = '\0';
        
        /* set title setting text */
        if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[4][1], cTmp) != PSL_SUCCESS)
        {
            DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeyStatusMenuUp: failure setting button text!\n"));
            return (PSL_FAILURE);
        }

        /* redraw the button with the title number */
        if (PslScreenLayoutDrawButton(&pPSL->pStatusMenu->pButton[4][1]) != PSL_SUCCESS)
        {
            DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeyStatusMenuUp: failure drawing button!\n"));
            return (PSL_FAILURE);
        }

        /* copy draw buffer to display buffer */
        DealCMBufferCopy(pPSL->pStatusMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
    }
    else if (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_CHAPTER)
    {
        /* Increment the chapter number */
        if (pPSL->pStatusMenu->StatusInfo.usChapter >= 99)
        {
            pPSL->pStatusMenu->StatusInfo.usChapter = 0;
        }
        else
        {
            pPSL->pStatusMenu->StatusInfo.usChapter++;
        }

        /* convert chapter number to string */
        cTmp[0] = '0' + (pPSL->pStatusMenu->StatusInfo.usChapter / 10);
        cTmp[1] = '0' + (pPSL->pStatusMenu->StatusInfo.usChapter % 10);
        cTmp[2] = '\0';
        
        /* set chapter setting text */
        if (PslScreenLayoutSetButtonText(&pPSL->pStatusMenu->pButton[5][1], cTmp) != PSL_SUCCESS)
        {
            DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeyStatusMenuUp: failure setting button text!\n"));
            return (PSL_FAILURE);
        }

        /* redraw the button with the chapter number */
        if (PslScreenLayoutDrawButton(&pPSL->pStatusMenu->pButton[5][1]) != PSL_SUCCESS)
        {
            DBGPRINT(DBG_ON(DBG_ERROR), ("PslProcessKeyStatusMenuUp: failure drawing button!\n"));
            return (PSL_FAILURE);
        }

        /* copy draw buffer to display buffer */
        DealCMBufferCopy(pPSL->pStatusMenu->hDeal, DEAL_BUFFER_DRAW, DEAL_BUFFER_DISPLAY);
    }
    else if (pPSL->pStatusMenu->tCurrentMode == PSL_STATUS_MODE_SEARCH_TIME_HOUR)
    {
        /* Increment the hour time number */
        if (pPSL->pStatusMenu->StatusInfo.usTimeHour >= 99)
        {
            pPSL->pStatusMenu->StatusInfo.usTimeHour = 0;
        }
        else
        {
            pPSL->pStatusMenu->StatusInfo.usTimeHour++;
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -