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

📄 menu_new_ntsc.c

📁 lcd tv : MST9E19A原代码
💻 C
📖 第 1 页 / 共 4 页
字号:
                DrawOsdItemSelect(&CURRENT_MENU, g_ucMenuItemIndex);
            }
        }
        msOsdShow();
    }
    msWriteByte( BK0_00, ucBank );
}

///////////////////////////////////////////////////////////////////////////////
void SetOsdMainMenuSpace(void)
{
    WORD wXs, wYs;
    BYTE ucWidth, ucHeight;

    ucWidth = ((FONT_SIZE&0xF0)>>4)+12;
    ucHeight = ((FONT_SIZE&0x0F)+9)*2;

    // X position
    wXs = (WORD)g_ucOsdWindowWidth * OSD_DOUBLE_SIZE * ucWidth;
    if (PANEL_WIDTH > wXs) // check OSD width
        wXs = (PANEL_WIDTH - wXs) / 8;
    else
        wXs = 0;
    // Y position
    wYs = (WORD)g_ucOsdWindowHeight * OSD_DOUBLE_SIZE * ucHeight;

    if (PANEL_HEIGHT > wYs) // check OSD height
        wYs = (PANEL_HEIGHT - wYs) / 8;
    else
        wYs = 0;
    msOsdSetWindowSpace(g_ucOsdWindowWidth/2,g_ucOsdWindowHeight/2,wXs,wYs);
}
//============================================================================

BYTE CurrentMenuGetPrevItem()
{
    signed char sc;

    if(g_ucMenuItemIndex)
    {
        for(sc=g_ucMenuItemIndex-1; sc>=0; sc--)
            if( IsItemSelectable(CURRENT_MENU_ITEMS[sc].Flags) )
                return sc;
    }
    for(sc=CURRENT_MENU_ITEM_COUNT-1; sc>=0; sc--)
        if( IsItemSelectable(CURRENT_MENU_ITEMS[sc].Flags) )
            return sc;
    return g_ucMenuItemIndex;
}

BYTE CurrentMenuGetNextItem()
{
    BYTE uc;

    if(g_ucMenuItemIndex < CURRENT_MENU_ITEM_COUNT - 1) // current item is not last item.
    {
        for(uc=g_ucMenuItemIndex+1; uc<CURRENT_MENU_ITEM_COUNT; uc++)
            if( IsItemSelectable(CURRENT_MENU_ITEMS[uc].Flags) )
                return uc;
    }
    for(uc=0; uc<g_ucMenuItemIndex; uc++)
        if( IsItemSelectable(CURRENT_MENU_ITEMS[uc].Flags) )
            return uc;
    return g_ucMenuItemIndex;
}

//============================================================================

BYTE GetMenuItemIndex( BYTE ucTargetParentMenuIdx, BYTE ucSonMenuIdx )
{
    BYTE ucFatherMenuIdx;

    do
    {
        ucFatherMenuIdx = tblMenus[ucSonMenuIdx].PrevMenuPage;
        if( ucTargetParentMenuIdx != ucFatherMenuIdx )
        {
            ucSonMenuIdx = ucFatherMenuIdx;
        }
        else
        {
            MenuItemType* pMenuItem;
            BYTE ucMenuItemNum, ucItemIdx;

            pMenuItem = tblMenus[ucTargetParentMenuIdx].MenuItems; // intialize menu pointer
            ucMenuItemNum = tblMenus[ucTargetParentMenuIdx].MenuItemCount; // intialize menu items number
            for( ucItemIdx = 0; ucItemIdx < ucMenuItemNum; ++ ucItemIdx )
            {
                if( pMenuItem->NextMenuPage == ucSonMenuIdx )
                {
                    return ucItemIdx;
                }
                ++ pMenuItem;
            }
            return 0;
        }

    } while( MENU_ROOT != ucFatherMenuIdx );

    return 0;
}
//============================================================================
// <Function>   ConvertInputSourceIndexToMenuItemIndex
//
// <Description>  convert Input source Enum to proper Menu item index
//============================================================================
BYTE ConvertInputSourceIndexToMenuItemIndex(void)
{
    return GetInputSrcType();
}
//============================================================================
// <Function>   ConvertMenuItemIndexToInputSouceIndex
//
// <Description>  convert source menu selected item index to input source enum
//============================================================================
BYTE ConvertMenuItemIndexToInputSouceIndex(BYTE ucItemIndex)
{
    return ucItemIndex;
}

//============================================================================
BOOL ExecuteKeyEvent(MenuItemActionType menuAction)
{
    BOOL bProcessEvent = TRUE;

    g_ucMenuAction = menuAction;

    if((g_ucFactoryFlag&0x80))
    {
        g_ucOsdTimeCounter=0;
    }
    else
    {
        g_ucOsdTimeCounter = g_SysSetting.OSDTime;  // Reset OSD timeout timer.
    }
    
    if (menuAction < MIA_KEY0 || menuAction > MIA_KEY100)
    {
        g_ucInputNum = 0;
        g_ucInputNumCounter = 0;
        g_bInputNumType = 0;
    }
    
    if (menuAction < MIA_FAC0 || menuAction > MIA_FAC9)
    {
        g_uwFacPassWord = 0;        
    }

#if AUTO_SLEEP
    if (g_ucAutoSleepCounter != 0)
    {
        g_ucAutoSleepCounter = AUTO_TURN_OFF_COUNTER;
    }
#endif

#if ENABLE_POWER_SAVING
    if (g_ucPowerDownCounter != 0)
    {
        g_ucPowerDownCounter = POWER_SAVING_COUNTER;
    }
#endif

    while(bProcessEvent)
    {
        bProcessEvent = FALSE;

        //printf("\r\nPageT=%x",g_ucMenuPageIndex);
        //printf("\r\nItemT=%x",g_ucMenuItemIndex);
        //printf("\r\nAction=%x", menuAction);

        switch(menuAction)
        {
            case MIA_KEY0:
            case MIA_KEY1:
            case MIA_KEY2:
            case MIA_KEY3:
            case MIA_KEY4:
            case MIA_KEY5:
            case MIA_KEY6:
            case MIA_KEY7:
            case MIA_KEY8:
            case MIA_KEY9:
                if( !IsTVInUse() )
                {
                    break;
                }

                if (g_ucMenuPageIndex != MENU_INPUT_MESSAGE)
                {
                    g_ucInputNum = 0;
                    g_bInputNumType = 0;
                    g_ucInputNumCounter = 0;
                }

                if (!g_bInputNumType)
                {
                    g_ucInputNum += (menuAction - MIA_KEY0);
                    g_bInputNumType = 1;
                    g_ucInputNumCounter = 3;

                    g_ucMenuPageIndex = MENU_INPUT_MESSAGE;
                    g_ucMenuItemIndex = 0;
                    menuAction=MIA_REDRAWMENU;
                    bProcessEvent=TRUE;
                }
                else
                {
                    BYTE temp;

                    temp = g_ucInputNum - g_ucInputNum%100;
                    g_ucInputNum %= 100;
                    g_ucInputNum = (temp+g_ucInputNum*10+(menuAction-MIA_KEY0));
                    g_bInputNumType = 0;
                    g_ucInputNumCounter = 0;
                    g_ucInputNum %= 200;

                    TV_SelectChannel(g_ucInputNum);
                    g_ucInputNum = 0;
                }
                break;

            case MIA_KEY100:
                if( !IsTVInUse() )
                {
                    break;
                }

                g_ucInputNum = 100;
                g_bInputNumType = 0;
                g_ucInputNumCounter = 3;

                g_ucMenuPageIndex = MENU_INPUT_MESSAGE;
                g_ucMenuItemIndex = 0;
                menuAction=MIA_REDRAWMENU;
                bProcessEvent=TRUE;
                break;

            case MIA_FAC0:
            case MIA_FAC1:
            case MIA_FAC2:
            case MIA_FAC3:
            case MIA_FAC4:
            case MIA_FAC5:
            case MIA_FAC6:
            case MIA_FAC7:
            case MIA_FAC8:
            case MIA_FAC9:
                if( g_ucVChipPWStatus & VCHIP_PASSWORD_FORCE ) // When input password menu
                {
                    if (irCalPassword(menuAction - MIA_FAC0))
                    {
                        menuAction=MIA_REDRAWMENU;
                        bProcessEvent=TRUE;
                    }
                }
                else
                {
                    if ((menuAction - MIA_FAC0) != (g_uwFacPassWord&0x0f))
                    {
                        g_uwFacPassWord  = ((g_uwFacPassWord  << 4) +(menuAction - MIA_FAC0));
                    }

                    if (g_uwFacPassWord  == 0x9527)
                    {
                        menuAction=MIA_ENTERFACTORY;
                        bProcessEvent=TRUE;
                    }
                }
                break;

            case MIA_INCVALUE:
            case MIA_DECVALUE:
                if(CURRENT_MENU_ITEM_FUNC.AdjustFunction)
                {
                    if(CURRENT_MENU_ITEM_FUNC.AdjustFunction(menuAction))
                    {
                        DrawOsdSubMenuGroup(g_ucMenuPageIndex, g_ucMenuItemIndex);
                    }
                }
                if ((g_ucMenuPageIndex == MENU_OSD) &&  (g_ucMenuItemIndex == 1))
                {
                    msOsdHide();
                    msClearFbBlock(FONT_ASCII_SPACE, WRITECODEBASE+MAIN_MENU_H_SIZE*SUB_TITLE_Y+SUB_TITLE_TX, 20, 2); // Clear code
                    msClearFbBlock(CT_SUB_MENU_TITLE_TXT, WRITEATTRBASE+MAIN_MENU_H_SIZE*SUB_TITLE_Y+SUB_TITLE_TX, 20, 2); // Clear attribute
                    msClearFbBlock(CP_BLACKCOLOR, WRITECODEBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear code
                    msClearFbBlock(CP_BLEND, WRITEATTRBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear attribute

                    msDynamicLoadLanguage();
                    g_ucMenuPageIndex = MENU_MAIN;
                    g_ucMenuItemIndex = 5;
                    DrawOsdMenuItem(g_ucMenuPageIndex, g_ucMenuItemIndex);
                    g_ucMenuPageIndex = MENU_OSD;
                    g_ucMenuItemIndex = 1;
                    DrawOsdMenuPage(g_ucMenuPageIndex);
                    msOsdShow();
                }
                if (
                    (g_ucMenuPageIndex == MENU_PICTURE && g_ucMenuItemIndex == 7)
                    || (g_ucMenuPageIndex == MENU_SOUND && g_ucMenuItemIndex == 4)
                    || (g_ucMenuPageIndex == MENU_PC_COLORMODE && g_ucMenuItemIndex == 0)
                    )
                {
                    DrawOsdMenuPage(g_ucMenuPageIndex);
                }
                break;

            case MIA_NEXTITEM:
            case MIA_PREVITEM:		
                g_ucPrevMenuItemIndex = g_ucMenuItemIndex;
                if(menuAction == MIA_NEXTITEM)
                {
                    g_ucMenuItemIndex = CurrentMenuGetNextItem();
                }
                else
                {
                    g_ucMenuItemIndex = CurrentMenuGetPrevItem();
                }

                if(g_ucMenuPageIndex == MENU_MAIN)
                {
                    msOsdDisableSubWinAll();
                    msClearFbBlock(CP_BLACKCOLOR, WRITECODEBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear code
                    msClearFbBlock(CP_BLEND, WRITEATTRBASE+MAIN_MENU_H_SIZE*SUB_AREA_Y+SUB_AREA_X, SUB_AREA_WIDTH, SUB_AREA_HEIGHT); // Clear attribute

                    msDynamicLoadLanguage();
                    DrawOsdMenuItemText(g_ucMenuPageIndex, g_ucPrevMenuItemIndex);
                    DrawOsdMenuItem(g_ucMenuPageIndex, g_ucMenuItemIndex);
                    DrawOsdMenuPage(MENU_MAIN + g_ucMenuItemIndex+1);
                }
                else
                {
                    DrawOsdItemSelect(&CURRENT_MENU, g_ucMenuItemIndex);
                }
                break;

            case MIA_GOTONEXT:
            case MIA_GOTOPREV:		
                if( MIA_GOTONEXT == menuAction )
                {
                    // Before change menu, execute function
                    if( CURRENT_MENU_ITEM_FUNC.ExecFunction )
                    {
                        if( FALSE == CURRENT_MENU_ITEM_FUNC.ExecFunction() )
                        {
                            break;
                        }
                    }

                    msOsdDisableSubWinAll();
                    g_ucPrevMenuPageIndex = g_ucMenuPageIndex;
                    g_ucMenuPageIndex = CURRENT_MENU_ITEM.NextMenuPage;
                    g_ucMenuItemIndex = 0;
                    {  // Find the first selectable item:
                        BYTE i;
                        for( i = 0; i < CURRENT_MENU_ITEM_COUNT; ++ i )
                        {
                            if( IsItemSelectable( CURRENT_MENU_ITEMS[i].Flags ) )
                            {
                                g_ucMenuItemIndex = i;
                                break;
                            }
                        }
                    }
                }
                else // MIA_GOTOPREV
                {
                    usrSaveMenu(USER_SAVE_OSD_CURRENT);
                    msOsdDisableSubWinAll();
                    g_ucPrevMenuPageIndex = g_ucMenuPageIndex;
                    g_ucMenuPageIndex = CURRENT_MENU.PrevMenuPage;
                #if( ENABLE_CC_VCHIP )
                    if (g_ucPrevMenuPageIndex == MENU_PARENT_CTL)
                    {
                        g_ucPrevMenuPageIndex = MENU_PARENTCTLPASSWORD;
                        g_ucOsdWindowWidth = 0;     //Redraw menupage
                        g_ucOsdWindowHeight = 0;
                    }
                #endif
                    g_ucMenuItemIndex = GetMenuItemIndex( g_ucMenuPageIndex, g_ucPrevMenuPageIndex );
                }

            case MIA_REDRAWMENU:
                DrawOsdMenu();
                if(CURRENT_MENU.ExecFunction)
                {
                    CURRENT_MENU.ExecFunction();
                }

                if(!(CURRENT_MENU.Flags & MP_STAY))
                {
                    bProcessEvent = TRUE;
                    menuAction = MIA_GOTOPREV;
                }
                break;

            case MIA_EXECUTE:
                if(CURRENT_MENU_ITEM_FUNC.ExecFunction)
                {
                    CURRENT_MENU_ITEM_FUNC.ExecFunction();
                    DrawOsdSubMenuGroup(g_ucMenuPageIndex, g_ucMenuItemIndex);
                }
                break;

            case MIA_ENTERFACTORY:

⌨️ 快捷键说明

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