📄 tidtv_usermenuapi.c
字号:
}
else
{
TiDTV_OsdRect(&TiDTV_OsdScreenMain, xPos, yPos, SUB_MENU_CHECKBOX_CONTROLAREAHSTEP * SUB_MENU_CHECKBOX_STEP_LENGTH, SUB_MENU_CHECKBOXITEM_HEIGHT,
TI_DTV_G_BORDER | TI_DTV_G_OPAQUE, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_LIGHTGRAY, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
}
/*******************************************************************************
* @RoutineName:: TiDTV_RestoreCheckBoxNode
*
* @Description:: display root node ralated info
*
* @Input :: TI_DTV_MENU_NODE * pMenuNode
*
* @Output :: none
*
* @Return int :: none
*******************************************************************************/
void TiDTV_RestoreMenuCheckBoxItemType(USHORT SelectedFlag, USHORT SelCursorIndex, USHORT UnSelCursorIndex, short * UserPreferOffset, USHORT * LeafArray )
{
TiDTV_DisplayMenuCheckBoxItemType(SelectedFlag, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
}
/*******************************************************************************
* @RoutineName:: TiDTV_DisplayCheckBoxNode
*
* @Description:: display root node ralated info
*
* @Input :: TI_DTV_MENU_NODE * pMenuNode
*
* @Output :: none
*
* @Return int :: none
*******************************************************************************/
void TiDTV_DisplayMenuCheckBoxItemType(USHORT SelectedFlag, USHORT SelCursorIndex, USHORT UnSelCursorIndex, short * UserPreferOffset, USHORT * LeafArray )
{
USHORT xPos_CheckBox, yPos_CheckBox, xPos, yPos,Height_Checkbox;
USHORT CheckBoxItemTotalNumber;
short CurrentStringLength;
// UCHAR CharacterFrontColor, CharacterBackColor;
// total mask is 12
USHORT mask[12] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 0x100, 0x200, 0x400, 0x800};
CheckBoxItemTotalNumber = 0;
while(LeafArray[CheckBoxItemTotalNumber] != NULL)
{
CheckBoxItemTotalNumber++;
}
Height_Checkbox = CheckBoxItemTotalNumber * SUB_MENU_CHECKBOXITEM_HEIGHT + 2 * SUB_MENU_CHECKBOX_YMARGIN;
xPos_CheckBox = SUB_MENU_CHECKBOX_XPOSITION;
yPos_CheckBox = SUB_MENU_CENTER_YPOSITION - Height_Checkbox/2 - 32;
xPos = xPos_CheckBox + SUB_MENU_CHECKBOX_XMARGIN;
yPos = yPos_CheckBox + SUB_MENU_CHECKBOX_YMARGIN + CurrentCheckBoxItem * SUB_MENU_CHECKBOXITEM_HEIGHT;
TiDTV_DrawMenuCheckBoxItem(xPos, yPos, SelectedFlag);
TiDTV_OsdSetCharColor(&TiDTV_OsdScreenMain, SUB_MENU_CHARACTER_UNSEL_FRONTCOLOR, 0);
CurrentStringLength = (short)TiDTV_OsdGetStringLength(&TiDTV_OsdScreenMain,pCurDtvMsgBase[LeafArray[CurrentCheckBoxItem]]);
xPos = xPos + (SUB_MENU_CHECKBOX_TITLEAREAHSTEP * SUB_MENU_CHECKBOX_STEP_LENGTH)/2 - CurrentStringLength/2;
TiDTV_OsdMove(&TiDTV_OsdScreenMain, xPos, yPos + 8);
TiDTV_OsdDrawString(&TiDTV_OsdScreenMain, pCurDtvMsgBase[LeafArray[CurrentCheckBoxItem]]);
xPos = xPos_CheckBox + SUB_MENU_CHECKBOX_XMARGIN
+ (SUB_MENU_CHECKBOX_TITLEAREAHSTEP - 1) * SUB_MENU_CHECKBOX_STEP_LENGTH
+ SUB_MENU_CHECKBOX_MIDDLEMARGIN;
if(((*UserPreferOffset)& (USHORT)mask[CurrentCheckBoxItem]) == (USHORT)mask[CurrentCheckBoxItem])
{
TiDTV_OsdMove(&TiDTV_OsdScreenMain, xPos + 4, yPos + 2);
if(SelectedFlag == 1)
TiDTV_OsdDrawBitMap(&TiDTV_OsdScreenMain, SelCursorIndex);
else
TiDTV_OsdDrawBitMap(&TiDTV_OsdScreenMain, UnSelCursorIndex);
}
}
/*******************************************************************************
* @RoutineName:: TiDTV_DisplayCheckBoxNode
*
* @Description:: display root node ralated info
*
* @Input :: TI_DTV_MENU_NODE * pMenuNode
*
* @Output :: none
*
* @Return int :: none
*******************************************************************************/
void TiDTV_DisplayMenuCheckBoxType(USHORT SelCursorIndex, USHORT UnSelCursorIndex, short * UserPreferOffset, USHORT * LeafArray )
{
USHORT xPos_CheckBox, yPos_CheckBox, xPos, yPos, Width_CheckBox, Height_Checkbox;
USHORT i, undefine, CheckBoxItemTotalNumber,SelectedFlag;
short CurrentStringLength;
// UCHAR CharacterFrontColor;
// total mask is 12
USHORT mask[12] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 0x100, 0x200, 0x400, 0x800};
///////////////////////////////////////////////////////////////////
// high light itself first
///////////////////////////////////////////////////////////////////
undefine = 0;
SelectedFlag = 0;
TiDTV_UpdateSubFrameMiddleBlock(undefine,undefine,undefine,undefine);
CheckBoxItemTotalNumber = 0;
while(LeafArray[CheckBoxItemTotalNumber] != NULL)
{
CheckBoxItemTotalNumber++;
}
// CheckBoxItemTotalNumber--;
Height_Checkbox = CheckBoxItemTotalNumber * SUB_MENU_CHECKBOXITEM_HEIGHT + 2 * SUB_MENU_CHECKBOX_YMARGIN;
Width_CheckBox = SUB_MENU_CHECKBOX_LENGTH;
xPos_CheckBox = SUB_MENU_CHECKBOX_XPOSITION;
yPos_CheckBox = SUB_MENU_CENTER_YPOSITION - Height_Checkbox/2 - 32;
TiDTV_OsdRect(&TiDTV_OsdScreenMain, xPos_CheckBox, yPos_CheckBox, Width_CheckBox, Height_Checkbox,
TI_DTV_G_BORDER | TI_DTV_G_OPAQUE, SUB_MENU_CHARACTER_HIGHTLIGHTCOLOR, SUB_MENU_CHARACTER_DARKGRAY, SUB_MENU_CHARACTER_HIGHTLIGHTCOLOR);
for(i = 0; i< CheckBoxItemTotalNumber; i++)
{
xPos = xPos_CheckBox + SUB_MENU_CHECKBOX_XMARGIN;
yPos = yPos_CheckBox + SUB_MENU_CHECKBOX_YMARGIN + i * SUB_MENU_CHECKBOXITEM_HEIGHT;
TiDTV_DrawMenuCheckBoxItem(xPos, yPos, SelectedFlag);
// should set char's style by attribute
// draw title
TiDTV_OsdSetCharColor(&TiDTV_OsdScreenMain, SUB_MENU_CHARACTER_UNSEL_FRONTCOLOR, 0);
CurrentStringLength = (short)TiDTV_OsdGetStringLength(&TiDTV_OsdScreenMain, pCurDtvMsgBase[LeafArray[i]]);
xPos = xPos + (SUB_MENU_CHECKBOX_TITLEAREAHSTEP * SUB_MENU_CHECKBOX_STEP_LENGTH)/2 - CurrentStringLength/2;
TiDTV_OsdMove(&TiDTV_OsdScreenMain, xPos, yPos + 8);
TiDTV_OsdDrawString(&TiDTV_OsdScreenMain, pCurDtvMsgBase[LeafArray[i]]);
xPos = xPos_CheckBox + SUB_MENU_CHECKBOX_XMARGIN
+ (SUB_MENU_CHECKBOX_TITLEAREAHSTEP - 1) * SUB_MENU_CHECKBOX_STEP_LENGTH
+ SUB_MENU_CHECKBOX_MIDDLEMARGIN;
if(((*UserPreferOffset)& (USHORT)mask[i]) == (USHORT)mask[i])
{
TiDTV_OsdMove(&TiDTV_OsdScreenMain, xPos + 4, yPos + 2);
TiDTV_OsdDrawBitMap(&TiDTV_OsdScreenMain, UnSelCursorIndex);
}
}
}
int TiDTV_MenuCheckBoxActFuct(TI_DTV_MENU * PreviousMenu, USHORT SelCursorIndex, USHORT UnSelCursorIndex, short * UserPreferOffset, USHORT * LeafArray )
{
TI_DTV_MENU_ITEM *pNextItem;
short CheckBoxItemTotalNumber;
int ConfirmData = 0;
USHORT mask[12] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80, 0x100, 0x200, 0x400, 0x800};
if(InCheckBox == 0)
{
CurrentCheckBoxItem = 0;
}
switch (TiDTV_KeyBuf.CurKeyCodeMenu) {
case TI_DTV_IR_KEY_UP:
if(InCheckBox == 0)
{
pNextItem = pCurDtvMenu->pCurItem->pUpItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
// Display the Cursor (current position)
pCurDtvMenu->pCurItem = pNextItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
else
{
TiDTV_RestoreMenuCheckBoxItemType(0, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
CheckBoxItemTotalNumber = 0;
while(LeafArray[CheckBoxItemTotalNumber] != NULL)
{
CheckBoxItemTotalNumber++;
}
CheckBoxItemTotalNumber--;
if(CurrentCheckBoxItem == 0)
{
CurrentCheckBoxItem = CheckBoxItemTotalNumber;
}
else
{
CurrentCheckBoxItem --;
}
TiDTV_DisplayMenuCheckBoxItemType(1, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
}
break;
case TI_DTV_IR_KEY_DOWN:
if(InCheckBox == 0)
{
pNextItem = pCurDtvMenu->pCurItem->pDownItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
// Display the Cursor (current position)
pCurDtvMenu->pCurItem = pNextItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
else
{
TiDTV_RestoreMenuCheckBoxItemType(0, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
CheckBoxItemTotalNumber = 0;
while(LeafArray[CheckBoxItemTotalNumber] != NULL)
{
CheckBoxItemTotalNumber++;
}
CheckBoxItemTotalNumber--;
if(CurrentCheckBoxItem == CheckBoxItemTotalNumber)
{
CurrentCheckBoxItem = 0;
}
else
{
CurrentCheckBoxItem ++;
}
TiDTV_DisplayMenuCheckBoxItemType(1, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
}
break;
case TI_DTV_IR_KEY_LEFT:
case TI_DTV_IR_KEY_EXIT:
if(InCheckBox != 0)
{
InCheckBox = 0;
pCurDtvMenu->pNextMenu = pCurDtvMenu;
DtvDispSubMenu();
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
else
{
InCheckBox = 0;
pCurDtvMenu->pNextMenu = (TI_DTV_MENU *) PreviousMenu;
DtvDispSubMenu();
pCurDtvMenu = pCurDtvMenu->pNextMenu;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
break;
case TI_DTV_IR_KEY_RIGHT:
case TI_DTV_IR_KEY_SELECT:
if(InCheckBox == 0)
{
InCheckBox = 1;
TiDTV_DisplayMenuCheckBoxType(SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray);
TiDTV_DisplayMenuCheckBoxItemType(1, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
}
else
{
ConfirmData = 1;
// InCheckBox = 0;
(*UserPreferOffset) = (*UserPreferOffset) ^ mask[CurrentCheckBoxItem];
TiDTV_DisplayMenuCheckBoxItemType(1, SelCursorIndex, UnSelCursorIndex, UserPreferOffset, LeafArray );
}
break;
default:
break;
}
return ConfirmData;
}
void TiDTV_MenuPageEndInitFuct(TI_DTV_MENU_ITEM *pMenuItem)
{
short xPos, yPos;
// draw Page icon
xPos = SUB_MENU_PAGE_ICON_XPOSITION;
yPos = pMenuItem->MsgY;
TiDTV_OsdMove(&TiDTV_OsdScreenMain, xPos, yPos);
TiDTV_OsdDrawBitMap(&TiDTV_OsdScreenMain, BMP_NEXTPAGE);
}
void TiDTV_MenuPageActFuct(TI_DTV_MENU * PreviousMenu, TI_DTV_MENU * BackMenu)
{
TI_DTV_MENU_ITEM *pNextItem;
switch (TiDTV_KeyBuf.CurKeyCodeMenu) {
case TI_DTV_IR_KEY_UP:
pNextItem = pCurDtvMenu->pCurItem->pUpItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
// Display the Cursor (current position)
pCurDtvMenu->pCurItem = pNextItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
break;
case TI_DTV_IR_KEY_DOWN:
pNextItem = pCurDtvMenu->pCurItem->pDownItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
// Display the Cursor (current position)
pCurDtvMenu->pCurItem = pNextItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
break;
case TI_DTV_IR_KEY_LEFT:
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
pCurDtvMenu->pNextMenu = (TI_DTV_MENU *) PreviousMenu;
if((TI_DTV_MENU *)PreviousMenu == (TI_DTV_MENU *)&DtvMainMenu &&
pCurDtvMenu->pNextMenu == (TI_DTV_MENU *)&DtvMainMenu)
{
pCurDtvMenu->pCurItem = &pCurDtvMenu->pItemList[0];
pCurDtvMenu = pCurDtvMenu->pNextMenu;
}
else
{
DtvDispSubMenu();
pCurDtvMenu = pCurDtvMenu->pNextMenu;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
break;
case TI_DTV_IR_KEY_RIGHT:
case TI_DTV_IR_KEY_SELECT:
pCurDtvMenu->pNextMenu = (TI_DTV_MENU *) BackMenu;
DtvDispSubMenu(); // Display the Sub Menu as Notes
pCurDtvMenu = pCurDtvMenu->pNextMenu;
pCurDtvMenu->pCurItem = &pCurDtvMenu->pItemList[0];
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
break;
default:
break;
}
}
void TiDTV_MenuPageEndActFuct(TI_DTV_MENU * PreviousMenu, void (*FuncPtr)(void))
{
TI_DTV_MENU_ITEM *pNextItem;
switch (TiDTV_KeyBuf.CurKeyCodeMenu) {
case TI_DTV_IR_KEY_UP:
pNextItem = pCurDtvMenu->pCurItem->pUpItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
// Display the Cursor (current position)
pCurDtvMenu->pCurItem = pNextItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
break;
case TI_DTV_IR_KEY_DOWN:
pNextItem = pCurDtvMenu->pCurItem->pDownItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
// Display the Cursor (current position)
pCurDtvMenu->pCurItem = pNextItem;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
break;
case TI_DTV_IR_KEY_LEFT:
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_BACKCOLOR, SUB_MENU_CHARACTER_BACKCOLOR);
pCurDtvMenu->pNextMenu = (TI_DTV_MENU *) PreviousMenu;
if((TI_DTV_MENU *)PreviousMenu == (TI_DTV_MENU *)&DtvMainMenu &&
pCurDtvMenu->pNextMenu == (TI_DTV_MENU *)&DtvMainMenu)
{
pCurDtvMenu->pCurItem = &pCurDtvMenu->pItemList[0];
pCurDtvMenu = pCurDtvMenu->pNextMenu;
}
else
{
DtvDispSubMenu();
pCurDtvMenu = pCurDtvMenu->pNextMenu;
DtvDispSubMenuItem(pCurDtvMenu->pCurItem, SUB_MENU_CHARACTER_SEL_FRONTCOLOR, SUB_MENU_CHARACTER_SEL_FRONTCOLOR);
}
break;
case TI_DTV_IR_KEY_RIGHT:
case TI_DTV_IR_KEY_SELECT:
if(FuncPtr != NULL)
{
FuncPtr();
}
else
{
// launch ...
}
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -