📄 osd3.c
字号:
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
{
// item is enabled, set the text color as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
else
{
// item is disabled, set the text color as disable color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
}
break;
}
// Brian1.02a,for Dialog like "Parental", "Change Password"
else if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
{
// item is enabled, set the text color as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
else
{
// item is disabled, set the text color as disable color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
}
}
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
break;
// Brian1.08a
//case KEY_DOWN:
case OSDMENU_GOTO_NEXT_ITEM:
if (__bMENUSelect[__bMENUCurrentLevel] != bItemNum-1)
{
#ifdef SKIP_DISABLED_ITEM
// Brian1.05, don't move cursor onto disabled item.
bOrgItem = __bMENUSelect[__bMENUCurrentLevel]; // keep the current select
while(__bMENUSelect[__bMENUCurrentLevel] != bItemNum-1)
{
__bMENUSelect[__bMENUCurrentLevel]++;
_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||
GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8))) // if enabled
{
break; // find a enabled item
}
else
{
if (__bMENUSelect[__bMENUCurrentLevel] == bItemNum-1)
{
// no enabled item is found, so the cursor remain still
__bMENUSelect[__bMENUCurrentLevel] = bOrgItem;
return;
}
}
} // if IS_ITEM
else
{
break; // for value, no such consideration, just move the cursor as usual
}
} // while
#else
__bMENUSelect[__bMENUCurrentLevel]++;
#endif
if (__bMENUCurrentLevel < MENU_LEVEL-1)
__bMENUSelect[__bMENUCurrentLevel+1] = 0; // set select to 0, the first item.
__wMENUPrevItemId = __wMENUCurrentItemId;
if (__bMENUCurrentLevel == 0 && _bMenuType == MENU_TYPE_SETUP)
{
OSDSETUP_ShowDescriptionText();
// Brian1.08a, display menu settings when menu cursor in on Icon menu
#ifdef SUPPORT_MENU_SETTINGS_DISPLAY
_ClearCurrentSettings();
_DisplayCurrentSettings();
#endif
}
if(GET_ITEM_ATTRIBUTE(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]) == IS_LINE)
{
// I assume nobody will put a seperate line as the last item,
// so I don't check if it is out of the range
__bMENUSelect[__bMENUCurrentLevel]++;
bItemNum = 1; // just use it to keep if this is a seperate line
}
else
bItemNum = 0; // just use it to keep if this is a seperate line
//OSDMENU_DisplaySetupMenu();
if (__bMENUSelect[__bMENUCurrentLevel] > __bMENUDisplayStart[__bMENUCurrentLevel]+GET_MENU_ROW(_pTempMenu)-1)
{
#ifdef SKIP_DISABLED_ITEM
__bMENUDisplayStart[__bMENUCurrentLevel] = __bMENUSelect[__bMENUCurrentLevel] - GET_MENU_ROW(_pTempMenu) +(1+bItemNum);
#else
__bMENUDisplayStart[__bMENUCurrentLevel] += (1+bItemNum);
#endif
OSDMENU_DisplayMenu(__bCurrentMenuId, 0xFF, __bMENUCurrentLevel);
}
else
{
#ifdef SKIP_DISABLED_ITEM
// Brian1.05, don't move cursor onto disabled item.
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], (BYTE)(bOrgItem-bItemNum), (BYTE)OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
#else
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], (BYTE)(__bMENUSelect[__bMENUCurrentLevel]-1-bItemNum), (BYTE)OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
#endif
}
__wMENUCurrentItemId = GET_ITEM_ID(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
// clear the previous menu
#ifdef SKIP_DISABLED_ITEM
_pTempMenu = GET_SUB_MENU(_pTempMenu, bOrgItem-bItemNum);
#else
_pTempMenu = GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]-1-bItemNum);
#endif
if (_pTempMenu)
{
OSDMENU_ClearMenu();
__bMENUStatus[__bMENUCurrentLevel+1] &= 0xFE; // clear scroll-up bit
__bMENUStatus[__bMENUCurrentLevel+1] &= 0xFD; // clear scroll-down bit
}
_pTempMenu = _pMenuIndex[__bCurrentMenuId];
_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM)
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
{
// item is enabled, set the text color as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
else
{
// item is disabled, set the text color as disable color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
}
break;
}
// Brian1.02a,for Dialog like "Parental", "Change Password"
else if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
{
// item is enabled, set the text color as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
}
else
{
// item is disabled, set the text color as disable color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
}
}
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
break;
// Brian1.08a
//case KEY_RIGHT:
case OSDMENU_GOTO_SUB_MENU:
_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
if (GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]) &&
*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)) ) // && __bMENUCurrentLevel < (MENU_LEVEL-1))
{
// Brian1.08a, from icon menu to its sub-menu, so clear the clear the display of settings
#ifdef SUPPORT_MENU_SETTINGS_DISPLAY
if (__bMENUCurrentLevel == 0 && _bMenuType == MENU_TYPE_SETUP)
{
_ClearCurrentSettings();
}
#endif
__wMENUPrevItemId = __wMENUCurrentItemId;
// change the highlight to select
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_SELECT);
__bMENUParent[__bMENUCurrentLevel+1] = __bCurrentMenuId;
_pTempMenu = GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
//if (_pTempMenu) // has sub menu
{
__bCurrentMenuId = GET_MENU_ID(_pTempMenu);
__bMENUCurrentLevel++;
__wMENUCurrentItemId = GET_ITEM_ID(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
#ifdef SKIP_DISABLED_ITEM
// Brian1.05, don't move cursor onto disabled item.
bOrgItem = __bMENUSelect[__bMENUCurrentLevel]; // keep the current select
while(__bMENUSelect[__bMENUCurrentLevel] != bItemNum-1)
{
_bMENUTemp = __bMENUSelect[__bMENUCurrentLevel];
if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM||
GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG)
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8))) // if enabled
{
__wMENUCurrentItemId = GET_ITEM_ID(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
break; // find a enabled item
}
else
{
if (__bMENUSelect[__bMENUCurrentLevel] == bItemNum-1)
{
// no enabled item is found, so the cursor remain still
__bMENUSelect[__bMENUCurrentLevel] = bOrgItem;
return;
}
}
__bMENUSelect[__bMENUCurrentLevel]++;
} // if IS_ITEM
else
{
break; // for value, no such consideration, just move the cursor as usual
}
} // while
#endif
if(GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_ITEM ||
GET_ITEM_ATTRIBUTE(_pTempMenu, _bMENUTemp) == IS_DIALOG) // Brian1.05
{
if (*(GET_MENU_ENABLE(_pTempMenu)+_bMENUTemp/8) & (1 << (_bMENUTemp%8)))
{
// item is enabled, set the text color as normal color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_NORMAL);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
else
{
// item is disabled, set the text color as disable color
GDI_SetTextColor(TEXT_FG_COLOR, OSDMENU_ENTRY_TEXT_COLOR_DISABLE);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
}
break;
}
//OSDMENU_DisplaySetupMenu();
//OSDMENU_DisplayMenu(__bCurrentMenuId, 0xFF, __bMENUCurrentLevel);
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_HIGHLIGHT);
OSDMENU_DisplaySubMenu(__bMENUSelect[__bMENUCurrentLevel], __bMENUCurrentLevel);
}
}
break;
// Brian1.08a
//case KEY_LEFT:
case OSDMENU_GOTO_PARENT_MENU:
// Brian1.08a, support Horizontal icon menu
#ifdef SUPPORT_SETUP_HORIZONTAL_ICON_MENU
// for Horizontal icon case, KEY_LEFT won't go to icon menu
if (__bMENUCurrentLevel == 1 && bKey == KEY_LEFT)
{
break;
}
else
#endif
if (__bMENUCurrentLevel > 0)
{
__wMENUPrevItemId = __wMENUCurrentItemId;
// change the highlight to normal
OSDMENU_DrawItem(__bMENUDisplayStart[__bMENUCurrentLevel], __bMENUSelect[__bMENUCurrentLevel], OSDMENU_ENTRY_ITEM_COLOR_NORMAL);
// Clear the sub menu
_pTempMenu = GET_SUB_MENU(_pTempMenu, __bMENUSelect[__bMENUCurrentLevel]);
if (_pTempMenu)
{
OSDMENU_ClearMenu();
__bMENUStatus[__bMENUCurrentLevel+1] &= 0xFE; // clear scroll-up bit
__bMENUStatus[__bMENUCurrentLevel+1] &= 0xFD; // clear scroll-down bit
}
_pTempMenu = _pMenuIndex[__bMENUParent[__bMENUCurrentLevel]];
if (_pTempMenu)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -