/** @file\r
Utility functions for User Interface functions.\r
\r
-Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
UI_MENU_SELECTION *Selection;\r
FORM_BROWSER_STATEMENT *Question;\r
EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
- EFI_HII_VALUE *HiiValue;\r
EFI_BROWSER_ACTION_REQUEST ActionRequest;\r
+ CHAR16 *PadString;\r
\r
if (gMenuRefreshHead != NULL) {\r
\r
for (Index = 0; OptionString[Index] == L' '; Index++)\r
;\r
\r
+ PadString = AllocatePool (gOptionBlockWidth * sizeof (CHAR16));\r
+ SetMem16 (PadString, (gOptionBlockWidth - 1) * sizeof (CHAR16), CHAR_SPACE);\r
+ PadString[gOptionBlockWidth - 1] = 0;\r
+ PrintStringAt (MenuRefreshEntry->CurrentColumn, MenuRefreshEntry->CurrentRow, PadString);\r
+ FreePool (PadString);\r
PrintStringAt (MenuRefreshEntry->CurrentColumn, MenuRefreshEntry->CurrentRow, &OptionString[Index]);\r
FreePool (OptionString);\r
}\r
ConfigAccess = Selection->FormSet->ConfigAccess;\r
if (((Question->QuestionFlags & EFI_IFR_FLAG_CALLBACK) != 0) && (ConfigAccess != NULL)) {\r
ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;\r
-\r
- HiiValue = &Question->HiiValue;\r
- if (HiiValue->Type == EFI_IFR_TYPE_STRING) {\r
- //\r
- // Create String in HII database for Configuration Driver to retrieve\r
- //\r
- HiiValue->Value.string = NewString ((CHAR16 *) Question->BufferValue, Selection->FormSet->HiiHandle);\r
- }\r
-\r
Status = ConfigAccess->Callback (\r
ConfigAccess,\r
EFI_BROWSER_ACTION_CHANGING,\r
Question->QuestionId,\r
- HiiValue->Type,\r
- &HiiValue->Value,\r
+ Question->HiiValue.Type,\r
+ &Question->HiiValue.Value,\r
&ActionRequest\r
);\r
-\r
- if (HiiValue->Type == EFI_IFR_TYPE_STRING) {\r
- //\r
- // Clean the String in HII Database\r
- //\r
- DeleteString (HiiValue->Value.string, Selection->FormSet->HiiHandle);\r
- }\r
-\r
if (!EFI_ERROR (Status)) {\r
switch (ActionRequest) {\r
case EFI_BROWSER_ACTION_REQUEST_RESET:\r
);\r
mInputError = TRUE;\r
} else {\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT_HIGHLIGHT);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextHighlightColor));\r
for (Index = 0; Index < (GetStringWidth (InputErrorMessage) - 2) / 2; Index++) {\r
PrintAt (gScreenDimensions.LeftColumn + gPromptBlockWidth + Index, gScreenDimensions.BottomRow - 1, L" ");\r
}\r
\r
gNvUpdateRequired = TRUE;\r
} else {\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT_HIGHLIGHT);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextHighlightColor));\r
for (Index = 0; Index < (GetStringWidth (NvUpdateMessage) - 2) / 2; Index++) {\r
PrintAt (\r
(gScreenDimensions.LeftColumn + gPromptBlockWidth + gOptionBlockWidth + Index),\r
Width -= SUBTITLE_INDENT;\r
}\r
\r
- return Width - LEFT_SKIPPED_COLUMNS;\r
+ return (UINT16) (Width - LEFT_SKIPPED_COLUMNS);\r
}\r
\r
/**\r
LocalScreen.RightColumn,\r
TopRow - SCROLL_ARROW_HEIGHT,\r
BottomRow + SCROLL_ARROW_HEIGHT,\r
- FIELD_TEXT | FIELD_BACKGROUND\r
+ PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND\r
);\r
\r
UiFreeRefreshList ();\r
gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT_GRAYED | FIELD_BACKGROUND);\r
} else {\r
if (Statement->Operand == EFI_IFR_SUBTITLE_OP) {\r
- gST->ConOut->SetAttribute (gST->ConOut, SUBTITLE_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserSubtitleTextColor) | FIELD_BACKGROUND);\r
}\r
}\r
\r
Width = GetWidth (Statement, MenuOption->Handle);\r
OriginalRow = Row;\r
\r
+ if (Statement->Operand == EFI_IFR_REF_OP && \r
+ MenuOption->Col >= 2) {\r
+ //\r
+ // Print Arrow for Goto button.\r
+ //\r
+ PrintAt (\r
+ MenuOption->Col - 2,\r
+ Row,\r
+ L"%c",\r
+ GEOMETRICSHAPE_RIGHT_TRIANGLE\r
+ );\r
+ }\r
+\r
for (Index = 0; GetLineByWidth (MenuOption->Description, Width, &Index, &OutputString) != 0x0000;) {\r
if ((Temp == 0) && (Row <= BottomRow)) {\r
PrintStringAt (MenuOption->Col, Row, OutputString);\r
MenuRefreshEntry->Selection = Selection;\r
MenuRefreshEntry->CurrentColumn = MenuOption->OptCol;\r
MenuRefreshEntry->CurrentRow = MenuOption->Row;\r
- MenuRefreshEntry->CurrentAttribute = FIELD_TEXT | FIELD_BACKGROUND;\r
+ if (MenuOption->GrayOut) {\r
+ MenuRefreshEntry->CurrentAttribute = FIELD_TEXT_GRAYED | FIELD_BACKGROUND;\r
+ } else { \r
+ MenuRefreshEntry->CurrentAttribute = PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND;\r
+ }\r
gMenuRefreshHead = MenuRefreshEntry;\r
} else {\r
//\r
MenuRefreshEntry->Selection = Selection;\r
MenuRefreshEntry->CurrentColumn = MenuOption->OptCol;\r
MenuRefreshEntry->CurrentRow = MenuOption->Row;\r
- MenuRefreshEntry->CurrentAttribute = FIELD_TEXT | FIELD_BACKGROUND;\r
+ if (MenuOption->GrayOut) {\r
+ MenuRefreshEntry->CurrentAttribute = FIELD_TEXT_GRAYED | FIELD_BACKGROUND;\r
+ } else { \r
+ MenuRefreshEntry->CurrentAttribute = PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND;\r
+ }\r
}\r
}\r
\r
Row = OriginalRow;\r
FreePool (StringPtr);\r
}\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND);\r
\r
//\r
// Need to handle the bottom of the display\r
L"%c",\r
ARROW_UP\r
);\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND);\r
}\r
\r
if (DownArrow) {\r
L"%c",\r
ARROW_DOWN\r
);\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND);\r
}\r
\r
MenuOption = NULL;\r
//\r
gST->ConOut->SetCursorPosition (gST->ConOut, MenuOption->Col, MenuOption->Row);\r
ProcessOptions (Selection, MenuOption, FALSE, &OptionString);\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND);\r
if (OptionString != NULL) {\r
if ((MenuOption->ThisTag->Operand == EFI_IFR_DATE_OP) ||\r
(MenuOption->ThisTag->Operand == EFI_IFR_TIME_OP)\r
if (MenuOption->GrayOut) {\r
gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT_GRAYED | FIELD_BACKGROUND);\r
} else if (MenuOption->ThisTag->Operand == EFI_IFR_SUBTITLE_OP) {\r
- gST->ConOut->SetAttribute (gST->ConOut, SUBTITLE_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserSubtitleTextColor) | FIELD_BACKGROUND);\r
}\r
\r
OriginalRow = MenuOption->Row;\r
}\r
\r
MenuOption->Row = OriginalRow;\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND);\r
}\r
}\r
}\r
//\r
// Set reverse attribute\r
//\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT_HIGHLIGHT | FIELD_BACKGROUND_HIGHLIGHT);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextHighlightColor) | PcdGet8 (PcdBrowserFieldBackgroundHighlightColor));\r
gST->ConOut->SetCursorPosition (gST->ConOut, MenuOption->Col, MenuOption->Row);\r
\r
//\r
//\r
if (gMenuRefreshHead != NULL) {\r
for (MenuRefreshEntry = gMenuRefreshHead; MenuRefreshEntry != NULL; MenuRefreshEntry = MenuRefreshEntry->Next) {\r
- MenuRefreshEntry->CurrentAttribute = FIELD_TEXT | FIELD_BACKGROUND;\r
+ if (MenuRefreshEntry->MenuOption->GrayOut) {\r
+ MenuRefreshEntry->CurrentAttribute = FIELD_TEXT_GRAYED | FIELD_BACKGROUND;\r
+ } else { \r
+ MenuRefreshEntry->CurrentAttribute = PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND;\r
+ }\r
if (MenuRefreshEntry->MenuOption == MenuOption) {\r
- MenuRefreshEntry->CurrentAttribute = FIELD_TEXT_HIGHLIGHT | FIELD_BACKGROUND_HIGHLIGHT;\r
+ MenuRefreshEntry->CurrentAttribute = PcdGet8 (PcdBrowserFieldTextHighlightColor) | PcdGet8 (PcdBrowserFieldBackgroundHighlightColor);\r
}\r
}\r
}\r
//\r
// Clear reverse attribute\r
//\r
- gST->ConOut->SetAttribute (gST->ConOut, FIELD_TEXT | FIELD_BACKGROUND);\r
+ gST->ConOut->SetAttribute (gST->ConOut, PcdGet8 (PcdBrowserFieldTextColor) | FIELD_BACKGROUND);\r
}\r
//\r
// Repaint flag will be used when process CfUpdateHelpString, so restore its value\r
//\r
Repaint = TRUE;\r
NewLine = TRUE;\r
+ } else {\r
+ Selection->Action = UI_ACTION_REFRESH_FORM;\r
}\r
if (OptionString != NULL) {\r
FreePool (OptionString);\r
\r
ASSERT(MenuOption != NULL);\r
Statement = MenuOption->ThisTag;\r
- if ((Statement->Operand == EFI_IFR_TEXT_OP) ||\r
- (Statement->Operand == EFI_IFR_DATE_OP) ||\r
- (Statement->Operand == EFI_IFR_TIME_OP) ||\r
- (Statement->Operand == EFI_IFR_NUMERIC_OP && Statement->Step != 0)) {\r
+ if (Statement->Operand == EFI_IFR_TEXT_OP) {\r
break;\r
}\r
\r
// checking can be done.\r
//\r
DistanceValue += AdjustDateAndTimePosition (TRUE, &NewPos);\r
-\r
+ \r
+ ASSERT (MenuOption != NULL);\r
if (Difference < 0) {\r
//\r
// We want to goto previous MenuOption, but finally we go down.\r
// Show NV update flag on status bar\r
//\r
gNvUpdateRequired = TRUE;\r
+ gResetRequired = TRUE;\r
}\r
break;\r
\r