\r
This library class defines a set of interfaces to customize Display module\r
\r
-Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials are licensed and made available under \r
the terms and conditions of the BSD License that accompanies this distribution. \r
The full text of the license may be found at\r
{\r
UINTN SecCol;\r
UINTN ThdCol;\r
- UINTN LeftColumnOfHelp;\r
UINTN RightColumnOfHelp;\r
UINTN TopRowOfHelp;\r
UINTN BottomRowOfHelp;\r
EFI_IFR_DATE *DateOp;\r
EFI_IFR_TIME *TimeOp;\r
BOOLEAN HexDisplay;\r
+ UINTN ColumnWidth1;\r
+ UINTN ColumnWidth2;\r
+ UINTN ColumnWidth3;\r
+ CHAR16 *ColumnStr1;\r
+ CHAR16 *ColumnStr2;\r
+ CHAR16 *ColumnStr3;\r
\r
ASSERT (FormData != NULL);\r
if (FormData == NULL) {\r
SecCol = gScreenDimensions.LeftColumn + (gScreenDimensions.RightColumn - gScreenDimensions.LeftColumn) / 3;\r
ThdCol = gScreenDimensions.LeftColumn + (gScreenDimensions.RightColumn - gScreenDimensions.LeftColumn) / 3 * 2;\r
\r
+ //\r
+ // + 2 means leave 1 space before the first hotkey info.\r
+ //\r
StartColumnOfHelp = gScreenDimensions.LeftColumn + 2;\r
- LeftColumnOfHelp = gScreenDimensions.LeftColumn + 1;\r
- RightColumnOfHelp = gScreenDimensions.RightColumn - 2;\r
+ RightColumnOfHelp = gScreenDimensions.RightColumn - 1;\r
TopRowOfHelp = gScreenDimensions.BottomRow - STATUS_BAR_HEIGHT - gFooterHeight + 1;\r
BottomRowOfHelp = gScreenDimensions.BottomRow - STATUS_BAR_HEIGHT - 2;\r
\r
- ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);\r
+ ColumnWidth1 = SecCol - StartColumnOfHelp;\r
+ ColumnWidth2 = ThdCol - SecCol;\r
+ ColumnWidth3 = RightColumnOfHelp - ThdCol;\r
+ ColumnStr1 = gLibEmptyString;\r
+ ColumnStr2 = gLibEmptyString;\r
+ ColumnStr3 = gLibEmptyString;\r
+\r
+ //\r
+ // Clean the space at gScreenDimensions.LeftColumn + 1.\r
+ //\r
+ PrintStringAtWithWidth (StartColumnOfHelp - 1, BottomRowOfHelp, gLibEmptyString, 1);\r
+ PrintStringAtWithWidth (StartColumnOfHelp - 1, TopRowOfHelp, gLibEmptyString, 1);\r
+\r
if (Statement == NULL) {\r
//\r
// Print Key for Form without showable statement.\r
//\r
- PrintHotKeyHelpString (FormData);\r
- PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);\r
+ PrintHotKeyHelpString (FormData, TRUE);\r
+ PrintStringAtWithWidth (StartColumnOfHelp, BottomRowOfHelp, gLibEmptyString, ColumnWidth1);\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, gLibEmptyString, ColumnWidth2);\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, gLibEmptyString, ColumnWidth1);\r
+ if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
+ ColumnStr3 = gEscapeString;\r
+ }\r
+ PrintStringAtWithWidth (ThdCol, BottomRowOfHelp, ColumnStr3, ColumnWidth3);\r
+\r
return;\r
}\r
\r
case EFI_IFR_TIME_OP:\r
case EFI_IFR_DATE_OP:\r
if (!Selected) {\r
- PrintHotKeyHelpString (FormData);\r
+ PrintHotKeyHelpString (FormData, TRUE);\r
\r
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
- PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);\r
+ ColumnStr3 = gEscapeString;\r
}\r
+ PrintStringAtWithWidth (ThdCol, BottomRowOfHelp, ColumnStr3, ColumnWidth3);\r
\r
if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP) ||\r
(Statement->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
PrintAt (\r
- 0, \r
+ ColumnWidth1, \r
StartColumnOfHelp,\r
BottomRowOfHelp,\r
L"%c%c%c%c%s",\r
ARROW_LEFT,\r
gMoveHighlight\r
);\r
- PrintStringAt (SecCol, BottomRowOfHelp, gEnterString);\r
- PrintStringAt (StartColumnOfHelp, TopRowOfHelp, gAdjustNumber);\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, gEnterString, ColumnWidth2);\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, gAdjustNumber, ColumnWidth1);\r
} else {\r
- PrintAt (0, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
+ PrintAt (ColumnWidth1, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
if (Statement->OpCode->OpCode == EFI_IFR_NUMERIC_OP && NumericOp != NULL && LibGetFieldFromNum(Statement->OpCode) != 0) {\r
- PrintStringAt (StartColumnOfHelp, TopRowOfHelp, gAdjustNumber);\r
- } \r
- PrintStringAt (SecCol, BottomRowOfHelp, gEnterString);\r
+ ColumnStr1 = gAdjustNumber;\r
+ }\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, ColumnStr1, ColumnWidth1);\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, gEnterString, ColumnWidth2);\r
}\r
} else {\r
- PrintStringAt (SecCol, BottomRowOfHelp, gEnterCommitString);\r
+ PrintHotKeyHelpString (FormData, FALSE);\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, gEnterCommitString, ColumnWidth2);\r
\r
//\r
// If it is a selected numeric with manual input, display different message\r
if ((Statement->OpCode->OpCode == EFI_IFR_NUMERIC_OP) || \r
(Statement->OpCode->OpCode == EFI_IFR_DATE_OP) ||\r
(Statement->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
- PrintStringAt (\r
- SecCol,\r
- TopRowOfHelp,\r
- HexDisplay ? gHexNumericInput : gDecNumericInput\r
- );\r
- } else if (Statement->OpCode->OpCode != EFI_IFR_ORDERED_LIST_OP) {\r
- PrintAt (0, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
+ ColumnStr2 = HexDisplay ? gHexNumericInput : gDecNumericInput;\r
+ PrintStringAtWithWidth (StartColumnOfHelp, BottomRowOfHelp, gLibEmptyString, ColumnWidth1);\r
+ } else {\r
+ PrintAt (ColumnWidth1, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
}\r
\r
if (Statement->OpCode->OpCode == EFI_IFR_ORDERED_LIST_OP) {\r
- PrintStringAt (StartColumnOfHelp, TopRowOfHelp, gPlusString);\r
- PrintStringAt (ThdCol, TopRowOfHelp, gMinusString);\r
+ ColumnStr1 = gPlusString;\r
+ ColumnStr3 = gMinusString;\r
}\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, ColumnStr1, ColumnWidth1);\r
+ PrintStringAtWithWidth (ThdCol, TopRowOfHelp, ColumnStr3, ColumnWidth3);\r
+ PrintStringAtWithWidth (SecCol, TopRowOfHelp, ColumnStr2, ColumnWidth2);\r
\r
- PrintStringAt (ThdCol, BottomRowOfHelp, gEnterEscapeString);\r
+ PrintStringAtWithWidth (ThdCol, BottomRowOfHelp, gEnterEscapeString, ColumnWidth3);\r
}\r
break;\r
\r
case EFI_IFR_CHECKBOX_OP:\r
- PrintHotKeyHelpString (FormData);\r
+ PrintHotKeyHelpString (FormData, TRUE);\r
\r
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
- PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);\r
+ ColumnStr3 = gEscapeString;\r
}\r
+ PrintStringAtWithWidth (ThdCol, BottomRowOfHelp, ColumnStr3, ColumnWidth3);\r
\r
- PrintAt (0, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
- PrintStringAt (SecCol, BottomRowOfHelp, gToggleCheckBox);\r
+ PrintAt (ColumnWidth1, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, gToggleCheckBox, ColumnWidth2);\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, gLibEmptyString, ColumnWidth1);\r
break;\r
\r
case EFI_IFR_REF_OP:\r
case EFI_IFR_RESET_BUTTON_OP:\r
case EFI_IFR_SUBTITLE_OP:\r
if (!Selected) {\r
- PrintHotKeyHelpString (FormData);\r
+ PrintHotKeyHelpString (FormData, TRUE);\r
\r
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
- PrintStringAt (ThdCol, BottomRowOfHelp, gEscapeString);\r
+ ColumnStr3 = gEscapeString;\r
}\r
+ PrintStringAtWithWidth (ThdCol, BottomRowOfHelp, ColumnStr3, ColumnWidth3);\r
\r
- PrintAt (0, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
+ PrintAt (ColumnWidth1, StartColumnOfHelp, BottomRowOfHelp, L"%c%c%s", ARROW_UP, ARROW_DOWN, gMoveHighlight);\r
if (Statement->OpCode->OpCode != EFI_IFR_TEXT_OP && Statement->OpCode->OpCode != EFI_IFR_SUBTITLE_OP) {\r
- PrintStringAt (SecCol, BottomRowOfHelp, gEnterString);\r
+ ColumnStr2 = gEnterString;\r
}\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, ColumnStr2, ColumnWidth2);\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, ColumnStr1, ColumnWidth1);\r
} else {\r
- if (Statement->OpCode->OpCode != EFI_IFR_REF_OP) {\r
- PrintStringAt (\r
- (gScreenDimensions.RightColumn - LibGetStringWidth (gEnterCommitString) / 2) / 2,\r
- BottomRowOfHelp,\r
- gEnterCommitString\r
- );\r
- PrintStringAt (ThdCol, BottomRowOfHelp, gEnterEscapeString);\r
+ PrintHotKeyHelpString (FormData, FALSE);\r
+ if (Statement->OpCode->OpCode != EFI_IFR_REF_OP) {\r
+ ColumnStr2 = gEnterCommitString;\r
+ ColumnStr3 = gEnterEscapeString;\r
}\r
+ PrintStringAtWithWidth (StartColumnOfHelp, TopRowOfHelp, ColumnStr1, ColumnWidth1);\r
+ PrintStringAtWithWidth (StartColumnOfHelp, BottomRowOfHelp, ColumnStr1, ColumnWidth1);\r
+ PrintStringAtWithWidth (SecCol, BottomRowOfHelp, ColumnStr2, ColumnWidth2);\r
+ PrintStringAtWithWidth (ThdCol, BottomRowOfHelp, ColumnStr3, ColumnWidth3);\r
}\r
break;\r
\r
UINTN DimensionsWidth;\r
UINTN DimensionsHeight;\r
UINTN CurrentAttribute;\r
+ BOOLEAN CursorVisible;\r
\r
//\r
// If screen dimension info is not ready, get it from console.\r
LargestString = DimensionsWidth - 2;\r
}\r
\r
- CurrentAttribute = gST->ConOut->Mode->Attribute; \r
+ CurrentAttribute = gST->ConOut->Mode->Attribute;\r
+ CursorVisible = gST->ConOut->Mode->CursorVisible;\r
gST->ConOut->EnableCursor (gST->ConOut, FALSE);\r
gST->ConOut->SetAttribute (gST->ConOut, GetPopupColor ());\r
\r
}\r
\r
gST->ConOut->SetAttribute (gST->ConOut, CurrentAttribute);\r
- gST->ConOut->EnableCursor (gST->ConOut, TRUE);\r
+ gST->ConOut->EnableCursor (gST->ConOut, CursorVisible);\r
}\r
\r
/**\r