\r
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<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
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
//\r
// Search table for UiDisplayMenu()\r
//\r
-SCAN_CODE_TO_SCREEN_OPERATION gScanCodeToOperation[] = {\r
+SCAN_CODE_TO_SCREEN_OPERATION gScanCodeToOperation[] = {\r
{\r
SCAN_UP,\r
UiUp,\r
}\r
};\r
\r
-UINTN mScanCodeNumber = ARRAY_SIZE (gScanCodeToOperation);\r
+UINTN mScanCodeNumber = ARRAY_SIZE (gScanCodeToOperation);\r
\r
SCREEN_OPERATION_T0_CONTROL_FLAG gScreenOperationToControlFlag[] = {\r
{\r
};\r
\r
EFI_GUID gDisplayEngineGuid = {\r
- 0xE38C1029, 0xE38F, 0x45b9, {0x8F, 0x0D, 0xE2, 0xE6, 0x0B, 0xC9, 0xB2, 0x62}\r
+ 0xE38C1029, 0xE38F, 0x45b9, { 0x8F, 0x0D, 0xE2, 0xE6, 0x0B, 0xC9, 0xB2, 0x62 }\r
};\r
\r
-BOOLEAN gMisMatch;\r
-EFI_SCREEN_DESCRIPTOR gStatementDimensions;\r
-BOOLEAN mStatementLayoutIsChanged = TRUE;\r
-USER_INPUT *gUserInput;\r
-FORM_DISPLAY_ENGINE_FORM *gFormData;\r
-EFI_HII_HANDLE gHiiHandle;\r
-UINT16 gDirection;\r
-LIST_ENTRY gMenuOption;\r
-DISPLAY_HIGHLIGHT_MENU_INFO gHighligthMenuInfo = {0};\r
-BOOLEAN mIsFirstForm = TRUE;\r
-FORM_ENTRY_INFO gOldFormEntry = {0};\r
+BOOLEAN gMisMatch;\r
+EFI_SCREEN_DESCRIPTOR gStatementDimensions;\r
+BOOLEAN mStatementLayoutIsChanged = TRUE;\r
+USER_INPUT *gUserInput;\r
+FORM_DISPLAY_ENGINE_FORM *gFormData;\r
+EFI_HII_HANDLE gHiiHandle;\r
+UINT16 gDirection;\r
+LIST_ENTRY gMenuOption;\r
+DISPLAY_HIGHLIGHT_MENU_INFO gHighligthMenuInfo = { 0 };\r
+BOOLEAN mIsFirstForm = TRUE;\r
+FORM_ENTRY_INFO gOldFormEntry = { 0 };\r
\r
//\r
// Browser Global Strings\r
//\r
-CHAR16 *gReconnectConfirmChanges;\r
-CHAR16 *gReconnectFail;\r
-CHAR16 *gReconnectRequired;\r
-CHAR16 *gChangesOpt;\r
-CHAR16 *gFormNotFound;\r
-CHAR16 *gNoSubmitIf;\r
-CHAR16 *gBrowserError;\r
-CHAR16 *gSaveFailed;\r
-CHAR16 *gNoSubmitIfFailed;\r
-CHAR16 *gSaveProcess;\r
-CHAR16 *gSaveNoSubmitProcess;\r
-CHAR16 *gDiscardChange;\r
-CHAR16 *gJumpToFormSet;\r
-CHAR16 *gCheckError;\r
-CHAR16 *gPromptForData;\r
-CHAR16 *gPromptForPassword;\r
-CHAR16 *gPromptForNewPassword;\r
-CHAR16 *gConfirmPassword;\r
-CHAR16 *gConfirmError;\r
-CHAR16 *gPassowordInvalid;\r
-CHAR16 *gPressEnter;\r
-CHAR16 *gEmptyString;\r
-CHAR16 *gMiniString;\r
-CHAR16 *gOptionMismatch;\r
-CHAR16 *gFormSuppress;\r
-CHAR16 *gProtocolNotFound;\r
-CHAR16 *gConfirmDefaultMsg;\r
-CHAR16 *gConfirmSubmitMsg;\r
-CHAR16 *gConfirmDiscardMsg;\r
-CHAR16 *gConfirmResetMsg;\r
-CHAR16 *gConfirmExitMsg;\r
-CHAR16 *gConfirmSubmitMsg2nd;\r
-CHAR16 *gConfirmDefaultMsg2nd;\r
-CHAR16 *gConfirmResetMsg2nd;\r
-CHAR16 *gConfirmExitMsg2nd;\r
-CHAR16 *gConfirmOpt;\r
-CHAR16 *gConfirmOptYes;\r
-CHAR16 *gConfirmOptNo;\r
-CHAR16 *gConfirmOptOk;\r
-CHAR16 *gConfirmOptCancel;\r
-CHAR16 *gYesOption;\r
-CHAR16 *gNoOption;\r
-CHAR16 *gOkOption;\r
-CHAR16 *gCancelOption;\r
-CHAR16 *gErrorPopup;\r
-CHAR16 *gWarningPopup;\r
-CHAR16 *gInfoPopup;\r
-CHAR16 *gConfirmMsgConnect;\r
-CHAR16 *gConfirmMsgEnd;\r
-CHAR16 *gPasswordUnsupported;\r
-CHAR16 gModalSkipColumn;\r
-CHAR16 gPromptBlockWidth;\r
-CHAR16 gOptionBlockWidth;\r
-CHAR16 gHelpBlockWidth;\r
-CHAR16 *mUnknownString;\r
+CHAR16 *gReconnectConfirmChanges;\r
+CHAR16 *gReconnectFail;\r
+CHAR16 *gReconnectRequired;\r
+CHAR16 *gChangesOpt;\r
+CHAR16 *gFormNotFound;\r
+CHAR16 *gNoSubmitIf;\r
+CHAR16 *gBrowserError;\r
+CHAR16 *gSaveFailed;\r
+CHAR16 *gNoSubmitIfFailed;\r
+CHAR16 *gSaveProcess;\r
+CHAR16 *gSaveNoSubmitProcess;\r
+CHAR16 *gDiscardChange;\r
+CHAR16 *gJumpToFormSet;\r
+CHAR16 *gCheckError;\r
+CHAR16 *gPromptForData;\r
+CHAR16 *gPromptForPassword;\r
+CHAR16 *gPromptForNewPassword;\r
+CHAR16 *gConfirmPassword;\r
+CHAR16 *gConfirmError;\r
+CHAR16 *gPassowordInvalid;\r
+CHAR16 *gPressEnter;\r
+CHAR16 *gEmptyString;\r
+CHAR16 *gMiniString;\r
+CHAR16 *gOptionMismatch;\r
+CHAR16 *gFormSuppress;\r
+CHAR16 *gProtocolNotFound;\r
+CHAR16 *gConfirmDefaultMsg;\r
+CHAR16 *gConfirmSubmitMsg;\r
+CHAR16 *gConfirmDiscardMsg;\r
+CHAR16 *gConfirmResetMsg;\r
+CHAR16 *gConfirmExitMsg;\r
+CHAR16 *gConfirmSubmitMsg2nd;\r
+CHAR16 *gConfirmDefaultMsg2nd;\r
+CHAR16 *gConfirmResetMsg2nd;\r
+CHAR16 *gConfirmExitMsg2nd;\r
+CHAR16 *gConfirmOpt;\r
+CHAR16 *gConfirmOptYes;\r
+CHAR16 *gConfirmOptNo;\r
+CHAR16 *gConfirmOptOk;\r
+CHAR16 *gConfirmOptCancel;\r
+CHAR16 *gYesOption;\r
+CHAR16 *gNoOption;\r
+CHAR16 *gOkOption;\r
+CHAR16 *gCancelOption;\r
+CHAR16 *gErrorPopup;\r
+CHAR16 *gWarningPopup;\r
+CHAR16 *gInfoPopup;\r
+CHAR16 *gConfirmMsgConnect;\r
+CHAR16 *gConfirmMsgEnd;\r
+CHAR16 *gPasswordUnsupported;\r
+CHAR16 gModalSkipColumn;\r
+CHAR16 gPromptBlockWidth;\r
+CHAR16 gOptionBlockWidth;\r
+CHAR16 gHelpBlockWidth;\r
+CHAR16 *mUnknownString;\r
\r
FORM_DISPLAY_DRIVER_PRIVATE_DATA mPrivateData = {\r
FORM_DISPLAY_DRIVER_SIGNATURE,\r
}\r
};\r
\r
-\r
/**\r
Get the string based on the StringId and HII Package List Handle.\r
\r
**/\r
CHAR16 *\r
GetToken (\r
- IN EFI_STRING_ID Token,\r
- IN EFI_HII_HANDLE HiiHandle\r
+ IN EFI_STRING_ID Token,\r
+ IN EFI_HII_HANDLE HiiHandle\r
)\r
{\r
EFI_STRING String;\r
ASSERT (String != NULL);\r
}\r
\r
- return (CHAR16 *) String;\r
+ return (CHAR16 *)String;\r
}\r
\r
-\r
/**\r
Initialize the HII String Token to the correct values.\r
\r
)\r
{\r
gReconnectConfirmChanges = GetToken (STRING_TOKEN (RECONNECT_CONFIRM_CHANGES), gHiiHandle);\r
- mUnknownString = GetToken (STRING_TOKEN (UNKNOWN_STRING), gHiiHandle);\r
- gSaveFailed = GetToken (STRING_TOKEN (SAVE_FAILED), gHiiHandle);\r
- gNoSubmitIfFailed = GetToken (STRING_TOKEN (NO_SUBMIT_IF_CHECK_FAILED), gHiiHandle);\r
- gReconnectFail = GetToken (STRING_TOKEN (RECONNECT_FAILED), gHiiHandle);\r
- gReconnectRequired = GetToken (STRING_TOKEN (RECONNECT_REQUIRED), gHiiHandle);\r
- gChangesOpt = GetToken (STRING_TOKEN (RECONNECT_CHANGES_OPTIONS), gHiiHandle);\r
- gSaveProcess = GetToken (STRING_TOKEN (DISCARD_OR_JUMP), gHiiHandle);\r
- gSaveNoSubmitProcess = GetToken (STRING_TOKEN (DISCARD_OR_CHECK), gHiiHandle);\r
- gDiscardChange = GetToken (STRING_TOKEN (DISCARD_OR_JUMP_DISCARD), gHiiHandle);\r
- gJumpToFormSet = GetToken (STRING_TOKEN (DISCARD_OR_JUMP_JUMP), gHiiHandle);\r
- gCheckError = GetToken (STRING_TOKEN (DISCARD_OR_CHECK_CHECK), gHiiHandle);\r
- gPromptForData = GetToken (STRING_TOKEN (PROMPT_FOR_DATA), gHiiHandle);\r
- gPromptForPassword = GetToken (STRING_TOKEN (PROMPT_FOR_PASSWORD), gHiiHandle);\r
- gPromptForNewPassword = GetToken (STRING_TOKEN (PROMPT_FOR_NEW_PASSWORD), gHiiHandle);\r
- gConfirmPassword = GetToken (STRING_TOKEN (CONFIRM_PASSWORD), gHiiHandle);\r
- gConfirmError = GetToken (STRING_TOKEN (CONFIRM_ERROR), gHiiHandle);\r
- gPassowordInvalid = GetToken (STRING_TOKEN (PASSWORD_INVALID), gHiiHandle);\r
- gPressEnter = GetToken (STRING_TOKEN (PRESS_ENTER), gHiiHandle);\r
- gEmptyString = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);\r
- gMiniString = GetToken (STRING_TOKEN (MINI_STRING), gHiiHandle);\r
- gOptionMismatch = GetToken (STRING_TOKEN (OPTION_MISMATCH), gHiiHandle);\r
- gFormSuppress = GetToken (STRING_TOKEN (FORM_SUPPRESSED), gHiiHandle);\r
- gProtocolNotFound = GetToken (STRING_TOKEN (PROTOCOL_NOT_FOUND), gHiiHandle);\r
- gFormNotFound = GetToken (STRING_TOKEN (STATUS_BROWSER_FORM_NOT_FOUND), gHiiHandle);\r
- gNoSubmitIf = GetToken (STRING_TOKEN (STATUS_BROWSER_NO_SUBMIT_IF), gHiiHandle);\r
- gBrowserError = GetToken (STRING_TOKEN (STATUS_BROWSER_ERROR), gHiiHandle);\r
- gConfirmDefaultMsg = GetToken (STRING_TOKEN (CONFIRM_DEFAULT_MESSAGE), gHiiHandle);\r
- gConfirmDiscardMsg = GetToken (STRING_TOKEN (CONFIRM_DISCARD_MESSAGE), gHiiHandle);\r
- gConfirmSubmitMsg = GetToken (STRING_TOKEN (CONFIRM_SUBMIT_MESSAGE), gHiiHandle);\r
- gConfirmResetMsg = GetToken (STRING_TOKEN (CONFIRM_RESET_MESSAGE), gHiiHandle);\r
- gConfirmExitMsg = GetToken (STRING_TOKEN (CONFIRM_EXIT_MESSAGE), gHiiHandle);\r
- gConfirmDefaultMsg2nd = GetToken (STRING_TOKEN (CONFIRM_DEFAULT_MESSAGE_2ND), gHiiHandle);\r
- gConfirmSubmitMsg2nd = GetToken (STRING_TOKEN (CONFIRM_SUBMIT_MESSAGE_2ND), gHiiHandle);\r
- gConfirmResetMsg2nd = GetToken (STRING_TOKEN (CONFIRM_RESET_MESSAGE_2ND), gHiiHandle);\r
- gConfirmExitMsg2nd = GetToken (STRING_TOKEN (CONFIRM_EXIT_MESSAGE_2ND), gHiiHandle);\r
- gConfirmOpt = GetToken (STRING_TOKEN (CONFIRM_OPTION), gHiiHandle);\r
- gConfirmOptYes = GetToken (STRING_TOKEN (CONFIRM_OPTION_YES), gHiiHandle);\r
- gConfirmOptNo = GetToken (STRING_TOKEN (CONFIRM_OPTION_NO), gHiiHandle);\r
- gConfirmOptOk = GetToken (STRING_TOKEN (CONFIRM_OPTION_OK), gHiiHandle);\r
- gConfirmOptCancel = GetToken (STRING_TOKEN (CONFIRM_OPTION_CANCEL), gHiiHandle);\r
- gYesOption = GetToken (STRING_TOKEN (YES_SELECTABLE_OPTION), gHiiHandle);\r
- gNoOption = GetToken (STRING_TOKEN (NO_SELECTABLE_OPTION), gHiiHandle);\r
- gOkOption = GetToken (STRING_TOKEN (OK_SELECTABLE_OPTION), gHiiHandle);\r
- gCancelOption = GetToken (STRING_TOKEN (CANCEL_SELECTABLE_OPTION), gHiiHandle);\r
- gErrorPopup = GetToken (STRING_TOKEN (ERROR_POPUP_STRING), gHiiHandle);\r
- gWarningPopup = GetToken (STRING_TOKEN (WARNING_POPUP_STRING), gHiiHandle);\r
- gInfoPopup = GetToken (STRING_TOKEN (INFO_POPUP_STRING), gHiiHandle);\r
- gConfirmMsgConnect = GetToken (STRING_TOKEN (CONFIRM_OPTION_CONNECT), gHiiHandle);\r
- gConfirmMsgEnd = GetToken (STRING_TOKEN (CONFIRM_OPTION_END), gHiiHandle);\r
- gPasswordUnsupported = GetToken (STRING_TOKEN (PASSWORD_NOT_SUPPORTED ), gHiiHandle);\r
+ mUnknownString = GetToken (STRING_TOKEN (UNKNOWN_STRING), gHiiHandle);\r
+ gSaveFailed = GetToken (STRING_TOKEN (SAVE_FAILED), gHiiHandle);\r
+ gNoSubmitIfFailed = GetToken (STRING_TOKEN (NO_SUBMIT_IF_CHECK_FAILED), gHiiHandle);\r
+ gReconnectFail = GetToken (STRING_TOKEN (RECONNECT_FAILED), gHiiHandle);\r
+ gReconnectRequired = GetToken (STRING_TOKEN (RECONNECT_REQUIRED), gHiiHandle);\r
+ gChangesOpt = GetToken (STRING_TOKEN (RECONNECT_CHANGES_OPTIONS), gHiiHandle);\r
+ gSaveProcess = GetToken (STRING_TOKEN (DISCARD_OR_JUMP), gHiiHandle);\r
+ gSaveNoSubmitProcess = GetToken (STRING_TOKEN (DISCARD_OR_CHECK), gHiiHandle);\r
+ gDiscardChange = GetToken (STRING_TOKEN (DISCARD_OR_JUMP_DISCARD), gHiiHandle);\r
+ gJumpToFormSet = GetToken (STRING_TOKEN (DISCARD_OR_JUMP_JUMP), gHiiHandle);\r
+ gCheckError = GetToken (STRING_TOKEN (DISCARD_OR_CHECK_CHECK), gHiiHandle);\r
+ gPromptForData = GetToken (STRING_TOKEN (PROMPT_FOR_DATA), gHiiHandle);\r
+ gPromptForPassword = GetToken (STRING_TOKEN (PROMPT_FOR_PASSWORD), gHiiHandle);\r
+ gPromptForNewPassword = GetToken (STRING_TOKEN (PROMPT_FOR_NEW_PASSWORD), gHiiHandle);\r
+ gConfirmPassword = GetToken (STRING_TOKEN (CONFIRM_PASSWORD), gHiiHandle);\r
+ gConfirmError = GetToken (STRING_TOKEN (CONFIRM_ERROR), gHiiHandle);\r
+ gPassowordInvalid = GetToken (STRING_TOKEN (PASSWORD_INVALID), gHiiHandle);\r
+ gPressEnter = GetToken (STRING_TOKEN (PRESS_ENTER), gHiiHandle);\r
+ gEmptyString = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);\r
+ gMiniString = GetToken (STRING_TOKEN (MINI_STRING), gHiiHandle);\r
+ gOptionMismatch = GetToken (STRING_TOKEN (OPTION_MISMATCH), gHiiHandle);\r
+ gFormSuppress = GetToken (STRING_TOKEN (FORM_SUPPRESSED), gHiiHandle);\r
+ gProtocolNotFound = GetToken (STRING_TOKEN (PROTOCOL_NOT_FOUND), gHiiHandle);\r
+ gFormNotFound = GetToken (STRING_TOKEN (STATUS_BROWSER_FORM_NOT_FOUND), gHiiHandle);\r
+ gNoSubmitIf = GetToken (STRING_TOKEN (STATUS_BROWSER_NO_SUBMIT_IF), gHiiHandle);\r
+ gBrowserError = GetToken (STRING_TOKEN (STATUS_BROWSER_ERROR), gHiiHandle);\r
+ gConfirmDefaultMsg = GetToken (STRING_TOKEN (CONFIRM_DEFAULT_MESSAGE), gHiiHandle);\r
+ gConfirmDiscardMsg = GetToken (STRING_TOKEN (CONFIRM_DISCARD_MESSAGE), gHiiHandle);\r
+ gConfirmSubmitMsg = GetToken (STRING_TOKEN (CONFIRM_SUBMIT_MESSAGE), gHiiHandle);\r
+ gConfirmResetMsg = GetToken (STRING_TOKEN (CONFIRM_RESET_MESSAGE), gHiiHandle);\r
+ gConfirmExitMsg = GetToken (STRING_TOKEN (CONFIRM_EXIT_MESSAGE), gHiiHandle);\r
+ gConfirmDefaultMsg2nd = GetToken (STRING_TOKEN (CONFIRM_DEFAULT_MESSAGE_2ND), gHiiHandle);\r
+ gConfirmSubmitMsg2nd = GetToken (STRING_TOKEN (CONFIRM_SUBMIT_MESSAGE_2ND), gHiiHandle);\r
+ gConfirmResetMsg2nd = GetToken (STRING_TOKEN (CONFIRM_RESET_MESSAGE_2ND), gHiiHandle);\r
+ gConfirmExitMsg2nd = GetToken (STRING_TOKEN (CONFIRM_EXIT_MESSAGE_2ND), gHiiHandle);\r
+ gConfirmOpt = GetToken (STRING_TOKEN (CONFIRM_OPTION), gHiiHandle);\r
+ gConfirmOptYes = GetToken (STRING_TOKEN (CONFIRM_OPTION_YES), gHiiHandle);\r
+ gConfirmOptNo = GetToken (STRING_TOKEN (CONFIRM_OPTION_NO), gHiiHandle);\r
+ gConfirmOptOk = GetToken (STRING_TOKEN (CONFIRM_OPTION_OK), gHiiHandle);\r
+ gConfirmOptCancel = GetToken (STRING_TOKEN (CONFIRM_OPTION_CANCEL), gHiiHandle);\r
+ gYesOption = GetToken (STRING_TOKEN (YES_SELECTABLE_OPTION), gHiiHandle);\r
+ gNoOption = GetToken (STRING_TOKEN (NO_SELECTABLE_OPTION), gHiiHandle);\r
+ gOkOption = GetToken (STRING_TOKEN (OK_SELECTABLE_OPTION), gHiiHandle);\r
+ gCancelOption = GetToken (STRING_TOKEN (CANCEL_SELECTABLE_OPTION), gHiiHandle);\r
+ gErrorPopup = GetToken (STRING_TOKEN (ERROR_POPUP_STRING), gHiiHandle);\r
+ gWarningPopup = GetToken (STRING_TOKEN (WARNING_POPUP_STRING), gHiiHandle);\r
+ gInfoPopup = GetToken (STRING_TOKEN (INFO_POPUP_STRING), gHiiHandle);\r
+ gConfirmMsgConnect = GetToken (STRING_TOKEN (CONFIRM_OPTION_CONNECT), gHiiHandle);\r
+ gConfirmMsgEnd = GetToken (STRING_TOKEN (CONFIRM_OPTION_END), gHiiHandle);\r
+ gPasswordUnsupported = GetToken (STRING_TOKEN (PASSWORD_NOT_SUPPORTED), gHiiHandle);\r
}\r
\r
/**\r
**/\r
EFI_STRING_ID\r
GetPrompt (\r
- IN EFI_IFR_OP_HEADER *OpCode\r
+ IN EFI_IFR_OP_HEADER *OpCode\r
)\r
{\r
EFI_IFR_STATEMENT_HEADER *Header;\r
return 0;\r
}\r
\r
- Header = (EFI_IFR_STATEMENT_HEADER *) (OpCode + 1);\r
+ Header = (EFI_IFR_STATEMENT_HEADER *)(OpCode + 1);\r
\r
return Header->Prompt;\r
}\r
**/\r
UINT16\r
GetWidth (\r
- IN UI_MENU_OPTION *MenuOption,\r
- OUT UINT16 *AdjustWidth\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ OUT UINT16 *AdjustWidth\r
)\r
{\r
- CHAR16 *String;\r
- UINTN Size;\r
- EFI_IFR_TEXT *TestOp;\r
- UINT16 ReturnWidth;\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ CHAR16 *String;\r
+ UINTN Size;\r
+ EFI_IFR_TEXT *TextOp;\r
+ UINT16 ReturnWidth;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
\r
Statement = MenuOption->ThisTag;\r
\r
if (AdjustWidth != NULL) {\r
*AdjustWidth = LEFT_SKIPPED_COLUMNS;\r
}\r
+\r
return (UINT16)(gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * (gModalSkipColumn + LEFT_SKIPPED_COLUMNS));\r
}\r
\r
// See if the second text parameter is really NULL\r
//\r
if (Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) {\r
- TestOp = (EFI_IFR_TEXT *) Statement->OpCode;\r
- if (TestOp->TextTwo != 0) {\r
- String = GetToken (TestOp->TextTwo, gFormData->HiiHandle);\r
+ TextOp = (EFI_IFR_TEXT *)Statement->OpCode;\r
+ if (TextOp->TextTwo != 0) {\r
+ String = GetToken (TextOp->TextTwo, gFormData->HiiHandle);\r
Size = StrLen (String);\r
FreePool (String);\r
}\r
// Allow a wide display if text op-code and no secondary text op-code\r
//\r
((Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) && (Size == 0))\r
- ) {\r
-\r
+ )\r
+ {\r
//\r
// Return the space width.\r
//\r
if (AdjustWidth != NULL) {\r
*AdjustWidth = 2;\r
}\r
+\r
//\r
// Keep consistent with current behavior.\r
//\r
- ReturnWidth = (UINT16) (gPromptBlockWidth + gOptionBlockWidth - 2);\r
+ ReturnWidth = (UINT16)(gPromptBlockWidth + gOptionBlockWidth - 2);\r
} else {\r
if (AdjustWidth != NULL) {\r
*AdjustWidth = 1;\r
}\r
\r
- ReturnWidth = (UINT16) (gPromptBlockWidth - 1);\r
+ ReturnWidth = (UINT16)(gPromptBlockWidth - 1);\r
}\r
\r
//\r
**/\r
UINT16\r
GetLineByWidth (\r
- IN CHAR16 *InputString,\r
- IN UINT16 LineWidth,\r
- IN OUT UINT16 *GlyphWidth,\r
- IN OUT UINTN *Index,\r
- OUT CHAR16 **OutputString\r
+ IN CHAR16 *InputString,\r
+ IN UINT16 LineWidth,\r
+ IN OUT UINT16 *GlyphWidth,\r
+ IN OUT UINTN *Index,\r
+ OUT CHAR16 **OutputString\r
)\r
{\r
- UINT16 StrOffset;\r
- UINT16 GlyphOffset;\r
- UINT16 OriginalGlyphWidth;\r
- BOOLEAN ReturnFlag;\r
- UINT16 LastSpaceOffset;\r
- UINT16 LastGlyphWidth;\r
-\r
- if (InputString == NULL || Index == NULL || OutputString == NULL) {\r
+ UINT16 StrOffset;\r
+ UINT16 GlyphOffset;\r
+ UINT16 OriginalGlyphWidth;\r
+ BOOLEAN ReturnFlag;\r
+ UINT16 LastSpaceOffset;\r
+ UINT16 LastGlyphWidth;\r
+\r
+ if ((InputString == NULL) || (Index == NULL) || (OutputString == NULL)) {\r
return 0;\r
}\r
\r
- if (LineWidth == 0 || *GlyphWidth == 0) {\r
+ if ((LineWidth == 0) || (*GlyphWidth == 0)) {\r
return 0;\r
}\r
\r
LastSpaceOffset = StrOffset;\r
LastGlyphWidth = *GlyphWidth;\r
}\r
+\r
break;\r
}\r
\r
//\r
// The CHAR_NULL has process last time, this time just return 0 to stand for the end.\r
//\r
- if (StrOffset == 0 && (InputString[*Index + StrOffset] == CHAR_NULL)) {\r
+ if ((StrOffset == 0) && (InputString[*Index + StrOffset] == CHAR_NULL)) {\r
return 0;\r
}\r
\r
//\r
// Need extra glyph info and '\0' info, so +2.\r
//\r
- *OutputString = AllocateZeroPool ((StrOffset + 2) * sizeof(CHAR16));\r
+ *OutputString = AllocateZeroPool ((StrOffset + 2) * sizeof (CHAR16));\r
if (*OutputString == NULL) {\r
return 0;\r
}\r
//\r
if (OriginalGlyphWidth == 1) {\r
*(*OutputString) = NARROW_CHAR;\r
- } else {\r
+ } else {\r
*(*OutputString) = WIDE_CHAR;\r
}\r
\r
- CopyMem ((*OutputString) + 1, &InputString[*Index], StrOffset * sizeof(CHAR16));\r
+ CopyMem ((*OutputString) + 1, &InputString[*Index], StrOffset * sizeof (CHAR16));\r
\r
if (InputString[*Index + StrOffset] == CHAR_SPACE) {\r
//\r
// Skip the space info at the begin of next line.\r
//\r
- *Index = (UINT16) (*Index + StrOffset + 1);\r
+ *Index = (UINT16)(*Index + StrOffset + 1);\r
} else if (InputString[*Index + StrOffset] == CHAR_LINEFEED) {\r
//\r
// Skip the /n or /n/r info.\r
//\r
if (InputString[*Index + StrOffset + 1] == CHAR_CARRIAGE_RETURN) {\r
- *Index = (UINT16) (*Index + StrOffset + 2);\r
+ *Index = (UINT16)(*Index + StrOffset + 2);\r
} else {\r
- *Index = (UINT16) (*Index + StrOffset + 1);\r
+ *Index = (UINT16)(*Index + StrOffset + 1);\r
}\r
} else if (InputString[*Index + StrOffset] == CHAR_CARRIAGE_RETURN) {\r
//\r
// Skip the /r or /r/n info.\r
//\r
if (InputString[*Index + StrOffset + 1] == CHAR_LINEFEED) {\r
- *Index = (UINT16) (*Index + StrOffset + 2);\r
+ *Index = (UINT16)(*Index + StrOffset + 2);\r
} else {\r
- *Index = (UINT16) (*Index + StrOffset + 1);\r
+ *Index = (UINT16)(*Index + StrOffset + 1);\r
}\r
} else {\r
- *Index = (UINT16) (*Index + StrOffset);\r
+ *Index = (UINT16)(*Index + StrOffset);\r
}\r
\r
//\r
**/\r
VOID\r
UiAddMenuOption (\r
- IN FORM_DISPLAY_ENGINE_STATEMENT *Statement,\r
- IN UINT16 *MenuItemCount,\r
- IN BOOLEAN NestIn\r
+ IN FORM_DISPLAY_ENGINE_STATEMENT *Statement,\r
+ IN UINT16 *MenuItemCount,\r
+ IN BOOLEAN NestIn\r
)\r
{\r
- UI_MENU_OPTION *MenuOption;\r
- UINTN Index;\r
- UINTN Count;\r
- UINT16 NumberOfLines;\r
- UINT16 GlyphWidth;\r
- UINT16 Width;\r
- UINTN ArrayEntry;\r
- CHAR16 *OutputString;\r
- EFI_STRING_ID PromptId;\r
+ UI_MENU_OPTION *MenuOption;\r
+ UINTN Index;\r
+ UINTN Count;\r
+ UINT16 NumberOfLines;\r
+ UINT16 GlyphWidth;\r
+ UINT16 Width;\r
+ UINTN ArrayEntry;\r
+ CHAR16 *OutputString;\r
+ EFI_STRING_ID PromptId;\r
\r
NumberOfLines = 1;\r
ArrayEntry = 0;\r
PromptId = GetPrompt (Statement->OpCode);\r
ASSERT (PromptId != 0);\r
\r
- if (Statement->OpCode->OpCode == EFI_IFR_DATE_OP || Statement->OpCode->OpCode == EFI_IFR_TIME_OP) {\r
+ if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP) || (Statement->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
Count = 3;\r
}\r
\r
MenuOption = AllocateZeroPool (sizeof (UI_MENU_OPTION));\r
ASSERT (MenuOption);\r
\r
- MenuOption->Signature = UI_MENU_OPTION_SIGNATURE;\r
- MenuOption->Description = GetToken (PromptId, gFormData->HiiHandle);\r
- MenuOption->Handle = gFormData->HiiHandle;\r
- MenuOption->ThisTag = Statement;\r
+ MenuOption->Signature = UI_MENU_OPTION_SIGNATURE;\r
+ MenuOption->Description = GetToken (PromptId, gFormData->HiiHandle);\r
+ MenuOption->Handle = gFormData->HiiHandle;\r
+ MenuOption->ThisTag = Statement;\r
MenuOption->NestInStatement = NestIn;\r
- MenuOption->EntryNumber = *MenuItemCount;\r
+ MenuOption->EntryNumber = *MenuItemCount;\r
\r
MenuOption->Sequence = Index;\r
\r
MenuOption->GrayOut = FALSE;\r
}\r
\r
- if ((Statement->Attribute & HII_DISPLAY_LOCK) != 0 || (gFormData->Attribute & HII_DISPLAY_LOCK) != 0) {\r
+ if (((Statement->Attribute & HII_DISPLAY_LOCK) != 0) || ((gFormData->Attribute & HII_DISPLAY_LOCK) != 0)) {\r
MenuOption->GrayOut = TRUE;\r
}\r
\r
//\r
// If the form or the question has the lock attribute, deal same as grayout.\r
//\r
- if ((gFormData->Attribute & HII_DISPLAY_LOCK) != 0 || (Statement->Attribute & HII_DISPLAY_LOCK) != 0) {\r
+ if (((gFormData->Attribute & HII_DISPLAY_LOCK) != 0) || ((Statement->Attribute & HII_DISPLAY_LOCK) != 0)) {\r
MenuOption->GrayOut = TRUE;\r
}\r
\r
switch (Statement->OpCode->OpCode) {\r
- case EFI_IFR_ORDERED_LIST_OP:\r
- case EFI_IFR_ONE_OF_OP:\r
- case EFI_IFR_NUMERIC_OP:\r
- case EFI_IFR_TIME_OP:\r
- case EFI_IFR_DATE_OP:\r
- case EFI_IFR_CHECKBOX_OP:\r
- case EFI_IFR_PASSWORD_OP:\r
- case EFI_IFR_STRING_OP:\r
- //\r
- // User could change the value of these items\r
- //\r
- MenuOption->IsQuestion = TRUE;\r
- break;\r
- case EFI_IFR_TEXT_OP:\r
- if (FeaturePcdGet (PcdBrowserGrayOutTextStatement)) {\r
+ case EFI_IFR_ORDERED_LIST_OP:\r
+ case EFI_IFR_ONE_OF_OP:\r
+ case EFI_IFR_NUMERIC_OP:\r
+ case EFI_IFR_TIME_OP:\r
+ case EFI_IFR_DATE_OP:\r
+ case EFI_IFR_CHECKBOX_OP:\r
+ case EFI_IFR_PASSWORD_OP:\r
+ case EFI_IFR_STRING_OP:\r
//\r
- // Initializing GrayOut option as TRUE for Text setup options\r
- // so that those options will be Gray in colour and un selectable.\r
+ // User could change the value of these items\r
//\r
- MenuOption->GrayOut = TRUE;\r
- }\r
- break;\r
- default:\r
- MenuOption->IsQuestion = FALSE;\r
- break;\r
+ MenuOption->IsQuestion = TRUE;\r
+ break;\r
+ case EFI_IFR_TEXT_OP:\r
+ if (FeaturePcdGet (PcdBrowserGrayOutTextStatement)) {\r
+ //\r
+ // Initializing GrayOut option as TRUE for Text setup options\r
+ // so that those options will be Gray in colour and un selectable.\r
+ //\r
+ MenuOption->GrayOut = TRUE;\r
+ }\r
+\r
+ break;\r
+ default:\r
+ MenuOption->IsQuestion = FALSE;\r
+ break;\r
}\r
\r
if ((Statement->Attribute & HII_DISPLAY_READONLY) != 0) {\r
}\r
}\r
\r
- if (Index == 0 &&\r
- (Statement->OpCode->OpCode != EFI_IFR_DATE_OP) &&\r
- (Statement->OpCode->OpCode != EFI_IFR_TIME_OP)) {\r
- Width = GetWidth (MenuOption, NULL);\r
- for (; GetLineByWidth (MenuOption->Description, Width, &GlyphWidth,&ArrayEntry, &OutputString) != 0x0000;) {\r
+ if ((Index == 0) &&\r
+ (Statement->OpCode->OpCode != EFI_IFR_DATE_OP) &&\r
+ (Statement->OpCode->OpCode != EFI_IFR_TIME_OP))\r
+ {\r
+ Width = GetWidth (MenuOption, NULL);\r
+ for ( ; GetLineByWidth (MenuOption->Description, Width, &GlyphWidth, &ArrayEntry, &OutputString) != 0x0000;) {\r
//\r
// If there is more string to process print on the next row and increment the Skip value\r
//\r
if (StrLen (&MenuOption->Description[ArrayEntry]) != 0) {\r
NumberOfLines++;\r
}\r
+\r
FreePool (OutputString);\r
}\r
} else {\r
VOID\r
)\r
{\r
- UINT16 MenuItemCount;\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *NestLink;\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
- FORM_DISPLAY_ENGINE_STATEMENT *NestStatement;\r
+ UINT16 MenuItemCount;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *NestLink;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *NestStatement;\r
\r
MenuItemCount = 0;\r
InitializeListHead (&gMenuOption);\r
Link = GetFirstNode (&gFormData->StatementListHead);\r
while (!IsNull (&gFormData->StatementListHead, Link)) {\r
Statement = FORM_DISPLAY_ENGINE_STATEMENT_FROM_LINK (Link);\r
- Link = GetNextNode (&gFormData->StatementListHead, Link);\r
+ Link = GetNextNode (&gFormData->StatementListHead, Link);\r
\r
//\r
// Skip the opcode not recognized by Display core.\r
NestLink = GetFirstNode (&Statement->NestStatementList);\r
while (!IsNull (&Statement->NestStatementList, NestLink)) {\r
NestStatement = FORM_DISPLAY_ENGINE_STATEMENT_FROM_LINK (NestLink);\r
- NestLink = GetNextNode (&Statement->NestStatementList, NestLink);\r
+ NestLink = GetNextNode (&Statement->NestStatementList, NestLink);\r
\r
//\r
// Skip the opcode not recognized by Display core.\r
**/\r
UINTN\r
GetStringWidth (\r
- IN CHAR16 *String\r
+ IN CHAR16 *String\r
)\r
{\r
- UINTN Index;\r
- UINTN Count;\r
- UINTN IncrementValue;\r
+ UINTN Index;\r
+ UINTN Count;\r
+ UINTN IncrementValue;\r
\r
ASSERT (String != NULL);\r
if (String == NULL) {\r
return 0;\r
}\r
\r
- Index = 0;\r
- Count = 0;\r
- IncrementValue = 1;\r
+ Index = 0;\r
+ Count = 0;\r
+ IncrementValue = 1;\r
\r
do {\r
//\r
// Advance to the null-terminator or to the first width directive\r
//\r
- for (;\r
- (String[Index] != NARROW_CHAR) && (String[Index] != WIDE_CHAR) && (String[Index] != 0);\r
- Index++, Count = Count + IncrementValue\r
- )\r
- ;\r
+ for ( ;\r
+ (String[Index] != NARROW_CHAR) && (String[Index] != WIDE_CHAR) && (String[Index] != 0);\r
+ Index++, Count = Count + IncrementValue\r
+ )\r
+ {\r
+ }\r
\r
//\r
// We hit the null-terminator, we now have a count\r
if (String[Index] == 0) {\r
break;\r
}\r
+\r
//\r
// We encountered a narrow directive - strip it from the size calculation since it doesn't get printed\r
// and also set the flag that determines what we increment by.(if narrow, increment by 1, if wide increment by 2)\r
**/\r
VOID\r
UpdateSkipInfoForMenu (\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN CHAR16 *OptionString\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN CHAR16 *OptionString\r
)\r
{\r
UINTN Index;\r
CHAR16 *OutputString;\r
UINT16 GlyphWidth;\r
\r
- Width = (UINT16) gOptionBlockWidth - 1;\r
- GlyphWidth = 1;\r
- Row = 1;\r
+ Width = (UINT16)gOptionBlockWidth - 1;\r
+ GlyphWidth = 1;\r
+ Row = 1;\r
\r
for (Index = 0; GetLineByWidth (OptionString, Width, &GlyphWidth, &Index, &OutputString) != 0x0000;) {\r
if (StrLen (&OptionString[Index]) != 0) {\r
\r
if ((Row > MenuOption->Skip) &&\r
(MenuOption->ThisTag->OpCode->OpCode != EFI_IFR_DATE_OP) &&\r
- (MenuOption->ThisTag->OpCode->OpCode != EFI_IFR_TIME_OP)) {\r
+ (MenuOption->ThisTag->OpCode->OpCode != EFI_IFR_TIME_OP))\r
+ {\r
MenuOption->Skip = Row;\r
}\r
}\r
**/\r
VOID\r
UpdateOptionSkipLines (\r
- IN UI_MENU_OPTION *MenuOption\r
+ IN UI_MENU_OPTION *MenuOption\r
)\r
{\r
CHAR16 *OptionString;\r
\r
- OptionString = NULL;\r
+ OptionString = NULL;\r
\r
ProcessOptions (MenuOption, FALSE, &OptionString, TRUE);\r
if (OptionString != NULL) {\r
FreePool (OptionString);\r
}\r
\r
- if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TEXT_OP) && (((EFI_IFR_TEXT*)MenuOption->ThisTag->OpCode)->TextTwo != 0)) {\r
- OptionString = GetToken (((EFI_IFR_TEXT*)MenuOption->ThisTag->OpCode)->TextTwo, gFormData->HiiHandle);\r
+ if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TEXT_OP) && (((EFI_IFR_TEXT *)MenuOption->ThisTag->OpCode)->TextTwo != 0)) {\r
+ OptionString = GetToken (((EFI_IFR_TEXT *)MenuOption->ThisTag->OpCode)->TextTwo, gFormData->HiiHandle);\r
\r
if (OptionString != NULL) {\r
UpdateSkipInfoForMenu (MenuOption, OptionString);\r
**/\r
BOOLEAN\r
PrintableMenu (\r
- UI_MENU_OPTION *MenuOption\r
+ UI_MENU_OPTION *MenuOption\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STRING OptionString;\r
+ EFI_STATUS Status;\r
+ EFI_STRING OptionString;\r
\r
OptionString = NULL;\r
\r
if (EFI_ERROR (Status)) {\r
return FALSE;\r
}\r
- if (OptionString != NULL && OptionString[0] != '\0') {\r
+\r
+ if ((OptionString != NULL) && (OptionString[0] != '\0')) {\r
FreePool (OptionString);\r
return TRUE;\r
}\r
\r
- if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TEXT_OP) && (((EFI_IFR_TEXT*)MenuOption->ThisTag->OpCode)->TextTwo != 0)) {\r
- OptionString = GetToken (((EFI_IFR_TEXT*)MenuOption->ThisTag->OpCode)->TextTwo, gFormData->HiiHandle);\r
+ if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TEXT_OP) && (((EFI_IFR_TEXT *)MenuOption->ThisTag->OpCode)->TextTwo != 0)) {\r
+ OptionString = GetToken (((EFI_IFR_TEXT *)MenuOption->ThisTag->OpCode)->TextTwo, gFormData->HiiHandle);\r
ASSERT (OptionString != NULL);\r
- if (OptionString[0] != '\0'){\r
+ if (OptionString[0] != '\0') {\r
FreePool (OptionString);\r
return TRUE;\r
}\r
**/\r
BOOLEAN\r
IsSelectable (\r
- UI_MENU_OPTION *MenuOption\r
+ UI_MENU_OPTION *MenuOption\r
)\r
{\r
if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_SUBTITLE_OP) ||\r
- MenuOption->GrayOut || MenuOption->ReadOnly || !PrintableMenu (MenuOption)) {\r
+ MenuOption->GrayOut || MenuOption->ReadOnly || !PrintableMenu (MenuOption))\r
+ {\r
return FALSE;\r
} else {\r
return TRUE;\r
**/\r
INTN\r
MoveToNextStatement (\r
- IN BOOLEAN GoUp,\r
- IN OUT LIST_ENTRY **CurrentPosition,\r
- IN UINTN GapToTop,\r
- IN BOOLEAN FindInForm\r
+ IN BOOLEAN GoUp,\r
+ IN OUT LIST_ENTRY **CurrentPosition,\r
+ IN UINTN GapToTop,\r
+ IN BOOLEAN FindInForm\r
)\r
{\r
- INTN Distance;\r
- LIST_ENTRY *Pos;\r
- UI_MENU_OPTION *NextMenuOption;\r
- UI_MENU_OPTION *PreMenuOption;\r
+ INTN Distance;\r
+ LIST_ENTRY *Pos;\r
+ UI_MENU_OPTION *NextMenuOption;\r
+ UI_MENU_OPTION *PreMenuOption;\r
\r
- Distance = 0;\r
- Pos = *CurrentPosition;\r
+ Distance = 0;\r
+ Pos = *CurrentPosition;\r
\r
if (Pos == &gMenuOption) {\r
return -1;\r
// Check whether the menu is beyond current showing form,\r
// return the first one beyond the showing form.\r
//\r
- if ((UINTN) Distance + NextMenuOption->Skip > GapToTop) {\r
+ if ((UINTN)Distance + NextMenuOption->Skip > GapToTop) {\r
if (FindInForm) {\r
NextMenuOption = PreMenuOption;\r
}\r
+\r
break;\r
}\r
\r
break;\r
}\r
\r
- Pos = (GoUp ? Pos->BackLink : Pos->ForwardLink);\r
+ Pos = (GoUp ? Pos->BackLink : Pos->ForwardLink);\r
PreMenuOption = NextMenuOption;\r
}\r
\r
return Distance;\r
}\r
\r
-\r
/**\r
Process option string for date/time opcode.\r
\r
**/\r
VOID\r
ProcessStringForDateTime (\r
- UI_MENU_OPTION *MenuOption,\r
- CHAR16 *OptionString,\r
- BOOLEAN AddOptCol\r
+ UI_MENU_OPTION *MenuOption,\r
+ CHAR16 *OptionString,\r
+ BOOLEAN AddOptCol\r
)\r
{\r
- UINTN Index;\r
- UINTN Count;\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
- EFI_IFR_DATE *Date;\r
- EFI_IFR_TIME *Time;\r
+ UINTN Index;\r
+ UINTN Count;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ EFI_IFR_DATE *Date;\r
+ EFI_IFR_TIME *Time;\r
\r
ASSERT (MenuOption != NULL && OptionString != NULL);\r
\r
Date = NULL;\r
Time = NULL;\r
if (Statement->OpCode->OpCode == EFI_IFR_DATE_OP) {\r
- Date = (EFI_IFR_DATE *) Statement->OpCode;\r
+ Date = (EFI_IFR_DATE *)Statement->OpCode;\r
} else if (Statement->OpCode->OpCode == EFI_IFR_TIME_OP) {\r
- Time = (EFI_IFR_TIME *) Statement->OpCode;\r
+ Time = (EFI_IFR_TIME *)Statement->OpCode;\r
}\r
\r
//\r
OptionString[Count] = OptionString[Index];\r
Count++;\r
}\r
+\r
OptionString[Count] = CHAR_NULL;\r
\r
//\r
}\r
}\r
\r
-\r
/**\r
Adjust Data and Time position accordingly.\r
Data format : [01/02/2004] [11:22:33]\r
**/\r
UINTN\r
AdjustDateAndTimePosition (\r
- IN BOOLEAN DirectionUp,\r
- IN OUT LIST_ENTRY **CurrentPosition\r
+ IN BOOLEAN DirectionUp,\r
+ IN OUT LIST_ENTRY **CurrentPosition\r
)\r
{\r
UINTN Count;\r
MenuOption = MENU_OPTION_FROM_LINK (NewPosition);\r
\r
if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_DATE_OP) ||\r
- (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
+ (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TIME_OP))\r
+ {\r
//\r
// Calculate the distance from current position to the last Date/Time MenuOption\r
//\r
**/\r
UINT64\r
GetFieldFromNum (\r
- IN EFI_IFR_OP_HEADER *OpCode\r
+ IN EFI_IFR_OP_HEADER *OpCode\r
)\r
{\r
- EFI_IFR_NUMERIC *NumericOp;\r
- UINT64 Step;\r
+ EFI_IFR_NUMERIC *NumericOp;\r
+ UINT64 Step;\r
\r
- NumericOp = (EFI_IFR_NUMERIC *) OpCode;\r
+ NumericOp = (EFI_IFR_NUMERIC *)OpCode;\r
\r
switch (NumericOp->Flags & EFI_IFR_NUMERIC_SIZE) {\r
- case EFI_IFR_NUMERIC_SIZE_1:\r
- Step = NumericOp->data.u8.Step;\r
- break;\r
+ case EFI_IFR_NUMERIC_SIZE_1:\r
+ Step = NumericOp->data.u8.Step;\r
+ break;\r
\r
- case EFI_IFR_NUMERIC_SIZE_2:\r
- Step = NumericOp->data.u16.Step;\r
- break;\r
+ case EFI_IFR_NUMERIC_SIZE_2:\r
+ Step = NumericOp->data.u16.Step;\r
+ break;\r
\r
- case EFI_IFR_NUMERIC_SIZE_4:\r
- Step = NumericOp->data.u32.Step;\r
- break;\r
+ case EFI_IFR_NUMERIC_SIZE_4:\r
+ Step = NumericOp->data.u32.Step;\r
+ break;\r
\r
- case EFI_IFR_NUMERIC_SIZE_8:\r
- Step = NumericOp->data.u64.Step;\r
- break;\r
+ case EFI_IFR_NUMERIC_SIZE_8:\r
+ Step = NumericOp->data.u64.Step;\r
+ break;\r
\r
- default:\r
- Step = 0;\r
- break;\r
+ default:\r
+ Step = 0;\r
+ break;\r
}\r
\r
return Step;\r
**/\r
BROWSER_HOT_KEY *\r
GetHotKeyFromRegisterList (\r
- IN EFI_INPUT_KEY *KeyData\r
+ IN EFI_INPUT_KEY *KeyData\r
)\r
{\r
LIST_ENTRY *Link;\r
return NULL;\r
}\r
\r
-\r
/**\r
Determine if the menu is the last menu that can be selected.\r
\r
**/\r
BOOLEAN\r
ValueIsScroll (\r
- IN BOOLEAN Direction,\r
- IN LIST_ENTRY *CurrentPos\r
+ IN BOOLEAN Direction,\r
+ IN LIST_ENTRY *CurrentPos\r
)\r
{\r
- LIST_ENTRY *Temp;\r
+ LIST_ENTRY *Temp;\r
\r
Temp = Direction ? CurrentPos->BackLink : CurrentPos->ForwardLink;\r
\r
**/\r
UI_EVENT_TYPE\r
UiWaitForEvent (\r
- IN EFI_EVENT Event\r
+ IN EFI_EVENT Event\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- UINTN EventNum;\r
- UINT64 Timeout;\r
- EFI_EVENT TimerEvent;\r
- EFI_EVENT WaitList[3];\r
+ EFI_STATUS Status;\r
+ UINTN Index;\r
+ UINTN EventNum;\r
+ UINT64 Timeout;\r
+ EFI_EVENT TimerEvent;\r
+ EFI_EVENT WaitList[3];\r
UI_EVENT_TYPE EventType;\r
\r
TimerEvent = NULL;\r
- Timeout = FormExitTimeout(gFormData);\r
+ Timeout = FormExitTimeout (gFormData);\r
\r
if (Timeout != 0) {\r
Status = gBS->CreateEvent (EVT_TIMER, 0, NULL, NULL, &TimerEvent);\r
// Set the timer event\r
//\r
gBS->SetTimer (\r
- TimerEvent,\r
- TimerRelative,\r
- Timeout\r
- );\r
+ TimerEvent,\r
+ TimerRelative,\r
+ Timeout\r
+ );\r
}\r
\r
WaitList[0] = Event;\r
EventNum = 1;\r
if (gFormData->FormRefreshEvent != NULL) {\r
WaitList[EventNum] = gFormData->FormRefreshEvent;\r
- EventNum ++;\r
+ EventNum++;\r
}\r
\r
if (Timeout != 0) {\r
WaitList[EventNum] = TimerEvent;\r
- EventNum ++;\r
+ EventNum++;\r
}\r
\r
Status = gBS->WaitForEvent (EventNum, WaitList, &Index);\r
ASSERT_EFI_ERROR (Status);\r
\r
switch (Index) {\r
- case 0:\r
- EventType = UIEventKey;\r
- break;\r
+ case 0:\r
+ EventType = UIEventKey;\r
+ break;\r
\r
- case 1:\r
- if (gFormData->FormRefreshEvent != NULL) {\r
- EventType = UIEventDriver;\r
- } else {\r
- ASSERT (Timeout != 0 && EventNum == 2);\r
- EventType = UIEventTimeOut;\r
- }\r
- break;\r
+ case 1:\r
+ if (gFormData->FormRefreshEvent != NULL) {\r
+ EventType = UIEventDriver;\r
+ } else {\r
+ ASSERT (Timeout != 0 && EventNum == 2);\r
+ EventType = UIEventTimeOut;\r
+ }\r
+\r
+ break;\r
\r
- default:\r
- ASSERT (Index == 2 && EventNum == 3);\r
- EventType = UIEventTimeOut;\r
- break;\r
+ default:\r
+ ASSERT (Index == 2 && EventNum == 3);\r
+ EventType = UIEventTimeOut;\r
+ break;\r
}\r
\r
if (Timeout != 0) {\r
**/\r
EFI_QUESTION_ID\r
GetQuestionIdInfo (\r
- IN EFI_IFR_OP_HEADER *OpCode\r
+ IN EFI_IFR_OP_HEADER *OpCode\r
)\r
{\r
- EFI_IFR_QUESTION_HEADER *QuestionHeader;\r
+ EFI_IFR_QUESTION_HEADER *QuestionHeader;\r
\r
if (OpCode->Length < sizeof (EFI_IFR_OP_HEADER) + sizeof (EFI_IFR_QUESTION_HEADER)) {\r
return 0;\r
}\r
\r
- QuestionHeader = (EFI_IFR_QUESTION_HEADER *)((UINT8 *) OpCode + sizeof(EFI_IFR_OP_HEADER));\r
+ QuestionHeader = (EFI_IFR_QUESTION_HEADER *)((UINT8 *)OpCode + sizeof (EFI_IFR_OP_HEADER));\r
\r
return QuestionHeader->QuestionId;\r
}\r
\r
-\r
/**\r
Find the top of screen menu base on the current menu.\r
\r
**/\r
LIST_ENTRY *\r
FindTopOfScreenMenu (\r
- IN LIST_ENTRY *CurPos,\r
- IN UINTN Rows,\r
- OUT UINTN *SkipValue\r
+ IN LIST_ENTRY *CurPos,\r
+ IN UINTN Rows,\r
+ OUT UINTN *SkipValue\r
)\r
{\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *TopOfScreen;\r
- UI_MENU_OPTION *PreviousMenuOption;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *TopOfScreen;\r
+ UI_MENU_OPTION *PreviousMenuOption;\r
\r
- Link = CurPos;\r
+ Link = CurPos;\r
PreviousMenuOption = NULL;\r
\r
while (Link->BackLink != &gMenuOption) {\r
- Link = Link->BackLink;\r
+ Link = Link->BackLink;\r
PreviousMenuOption = MENU_OPTION_FROM_LINK (Link);\r
if (PreviousMenuOption->Row == 0) {\r
UpdateOptionSkipLines (PreviousMenuOption);\r
}\r
+\r
if (Rows <= PreviousMenuOption->Skip) {\r
break;\r
}\r
+\r
Rows = Rows - PreviousMenuOption->Skip;\r
}\r
\r
if (Link->BackLink == &gMenuOption) {\r
TopOfScreen = gMenuOption.ForwardLink;\r
- if (PreviousMenuOption != NULL && Rows < PreviousMenuOption->Skip) {\r
+ if ((PreviousMenuOption != NULL) && (Rows < PreviousMenuOption->Skip)) {\r
*SkipValue = PreviousMenuOption->Skip - Rows;\r
} else {\r
*SkipValue = 0;\r
}\r
} else {\r
TopOfScreen = Link;\r
- *SkipValue = PreviousMenuOption->Skip - Rows;\r
+ *SkipValue = PreviousMenuOption->Skip - Rows;\r
}\r
\r
return TopOfScreen;\r
IN EFI_IFR_OP_HEADER *OpCode\r
)\r
{\r
- LIST_ENTRY *NewPos;\r
- UI_MENU_OPTION *MenuOption;\r
- UINTN Index;\r
+ LIST_ENTRY *NewPos;\r
+ UI_MENU_OPTION *MenuOption;\r
+ UINTN Index;\r
\r
NewPos = gMenuOption.ForwardLink;\r
Index = 0;\r
\r
- for (NewPos = gMenuOption.ForwardLink; NewPos != &gMenuOption; NewPos = NewPos->ForwardLink){\r
+ for (NewPos = gMenuOption.ForwardLink; NewPos != &gMenuOption; NewPos = NewPos->ForwardLink) {\r
MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
\r
if (CompareMem (MenuOption->ThisTag->OpCode, OpCode, OpCode->Length) == 0) {\r
return Index;\r
}\r
\r
- Index ++;\r
+ Index++;\r
}\r
}\r
\r
)\r
{\r
if ((gFormData->HiiHandle == gHighligthMenuInfo.HiiHandle) &&\r
- (gFormData->FormId == gHighligthMenuInfo.FormId)) {\r
+ (gFormData->FormId == gHighligthMenuInfo.FormId))\r
+ {\r
if (gHighligthMenuInfo.HLTQuestionId != 0) {\r
- return (BOOLEAN) (gHighligthMenuInfo.HLTQuestionId == GetQuestionIdInfo (HighLightedStatement->OpCode));\r
+ return (BOOLEAN)(gHighligthMenuInfo.HLTQuestionId == GetQuestionIdInfo (HighLightedStatement->OpCode));\r
} else {\r
if (CompareMem (gHighligthMenuInfo.HLTOpCode, HighLightedStatement->OpCode, gHighligthMenuInfo.HLTOpCode->Length) == 0) {\r
- if (gHighligthMenuInfo.HLTIndex == 0 || gHighligthMenuInfo.HLTIndex == GetIndexInfoForOpcode(HighLightedStatement->OpCode)) {\r
+ if ((gHighligthMenuInfo.HLTIndex == 0) || (gHighligthMenuInfo.HLTIndex == GetIndexInfoForOpcode (HighLightedStatement->OpCode))) {\r
return TRUE;\r
} else {\r
return FALSE;\r
**/\r
BOOLEAN\r
IsHighLightMenuOption (\r
- IN UI_MENU_OPTION *MenuOption\r
+ IN UI_MENU_OPTION *MenuOption\r
)\r
{\r
if (gHighligthMenuInfo.HLTQuestionId != 0) {\r
- if (GetQuestionIdInfo(MenuOption->ThisTag->OpCode) == gHighligthMenuInfo.HLTQuestionId) {\r
- return (BOOLEAN) (MenuOption->Sequence == gHighligthMenuInfo.HLTSequence);\r
+ if (GetQuestionIdInfo (MenuOption->ThisTag->OpCode) == gHighligthMenuInfo.HLTQuestionId) {\r
+ return (BOOLEAN)(MenuOption->Sequence == gHighligthMenuInfo.HLTSequence);\r
}\r
} else {\r
- if(CompareMem (gHighligthMenuInfo.HLTOpCode, MenuOption->ThisTag->OpCode, gHighligthMenuInfo.HLTOpCode->Length) == 0) {\r
- if (gHighligthMenuInfo.HLTIndex == 0 || gHighligthMenuInfo.HLTIndex == GetIndexInfoForOpcode(MenuOption->ThisTag->OpCode)) {\r
- return (BOOLEAN) (MenuOption->Sequence == gHighligthMenuInfo.HLTSequence);\r
+ if (CompareMem (gHighligthMenuInfo.HLTOpCode, MenuOption->ThisTag->OpCode, gHighligthMenuInfo.HLTOpCode->Length) == 0) {\r
+ if ((gHighligthMenuInfo.HLTIndex == 0) || (gHighligthMenuInfo.HLTIndex == GetIndexInfoForOpcode (MenuOption->ThisTag->OpCode))) {\r
+ return (BOOLEAN)(MenuOption->Sequence == gHighligthMenuInfo.HLTSequence);\r
} else {\r
return FALSE;\r
}\r
**/\r
LIST_ENTRY *\r
FindHighLightMenuOption (\r
- IN FORM_DISPLAY_ENGINE_STATEMENT *HighLightedStatement\r
- )\r
+ IN FORM_DISPLAY_ENGINE_STATEMENT *HighLightedStatement\r
+ )\r
{\r
- LIST_ENTRY *NewPos;\r
- UI_MENU_OPTION *MenuOption;\r
+ LIST_ENTRY *NewPos;\r
+ UI_MENU_OPTION *MenuOption;\r
\r
- NewPos = gMenuOption.ForwardLink;\r
+ NewPos = gMenuOption.ForwardLink;\r
MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
\r
if (HighLightedStatement != NULL) {\r
while (MenuOption->ThisTag != HighLightedStatement) {\r
- NewPos = NewPos->ForwardLink;\r
+ NewPos = NewPos->ForwardLink;\r
if (NewPos == &gMenuOption) {\r
//\r
// Not Found it, break\r
//\r
break;\r
}\r
+\r
MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
}\r
\r
// Must find the highlight statement.\r
//\r
ASSERT (NewPos != &gMenuOption);\r
-\r
} else {\r
while (!IsHighLightMenuOption (MenuOption)) {\r
- NewPos = NewPos->ForwardLink;\r
+ NewPos = NewPos->ForwardLink;\r
if (NewPos == &gMenuOption) {\r
//\r
// Not Found it, break\r
//\r
break;\r
}\r
+\r
MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
}\r
\r
**/\r
BOOLEAN\r
IsTopOfScreeMenuOption (\r
- IN UI_MENU_OPTION *MenuOption\r
+ IN UI_MENU_OPTION *MenuOption\r
)\r
{\r
if (gHighligthMenuInfo.TOSQuestionId != 0) {\r
- return (BOOLEAN) (GetQuestionIdInfo(MenuOption->ThisTag->OpCode) == gHighligthMenuInfo.TOSQuestionId);\r
+ return (BOOLEAN)(GetQuestionIdInfo (MenuOption->ThisTag->OpCode) == gHighligthMenuInfo.TOSQuestionId);\r
}\r
\r
- if(CompareMem (gHighligthMenuInfo.TOSOpCode, MenuOption->ThisTag->OpCode, gHighligthMenuInfo.TOSOpCode->Length) == 0) {\r
- if (gHighligthMenuInfo.TOSIndex == 0 || gHighligthMenuInfo.TOSIndex == GetIndexInfoForOpcode(MenuOption->ThisTag->OpCode)) {\r
+ if (CompareMem (gHighligthMenuInfo.TOSOpCode, MenuOption->ThisTag->OpCode, gHighligthMenuInfo.TOSOpCode->Length) == 0) {\r
+ if ((gHighligthMenuInfo.TOSIndex == 0) || (gHighligthMenuInfo.TOSIndex == GetIndexInfoForOpcode (MenuOption->ThisTag->OpCode))) {\r
return TRUE;\r
} else {\r
return FALSE;\r
\r
**/\r
UINTN\r
-GetDistanceBetweenMenus(\r
+GetDistanceBetweenMenus (\r
IN LIST_ENTRY *StartMenu,\r
IN LIST_ENTRY *EndMenu\r
-)\r
+ )\r
{\r
- LIST_ENTRY *Link;\r
- UI_MENU_OPTION *MenuOption;\r
- UINTN Distance;\r
+ LIST_ENTRY *Link;\r
+ UI_MENU_OPTION *MenuOption;\r
+ UINTN Distance;\r
\r
Distance = 0;\r
\r
if (MenuOption->Row == 0) {\r
UpdateOptionSkipLines (MenuOption);\r
}\r
+\r
Distance += MenuOption->Skip;\r
- Link = Link->BackLink;\r
+ Link = Link->BackLink;\r
}\r
+\r
return Distance;\r
}\r
\r
**/\r
LIST_ENTRY *\r
FindTopOfScreenMenuOption (\r
- IN LIST_ENTRY *HighLightMenu\r
+ IN LIST_ENTRY *HighLightMenu\r
)\r
{\r
- LIST_ENTRY *NewPos;\r
- UI_MENU_OPTION *MenuOption;\r
- UINTN TopRow;\r
- UINTN BottomRow;\r
+ LIST_ENTRY *NewPos;\r
+ UI_MENU_OPTION *MenuOption;\r
+ UINTN TopRow;\r
+ UINTN BottomRow;\r
\r
TopRow = gStatementDimensions.TopRow + SCROLL_ARROW_HEIGHT;\r
BottomRow = gStatementDimensions.BottomRow - SCROLL_ARROW_HEIGHT;\r
\r
- NewPos = gMenuOption.ForwardLink;\r
+ NewPos = gMenuOption.ForwardLink;\r
MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
\r
- while (!IsTopOfScreeMenuOption(MenuOption)) {\r
- NewPos = NewPos->ForwardLink;\r
+ while (!IsTopOfScreeMenuOption (MenuOption)) {\r
+ NewPos = NewPos->ForwardLink;\r
if (NewPos == &gMenuOption) {\r
//\r
// Not Found it, break\r
//\r
break;\r
}\r
+\r
MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
}\r
\r
if (NewPos == &gMenuOption) {\r
return NULL;\r
}\r
+\r
//\r
// Check whether highlight menu and top of screen menu can be shown within one page,\r
// if can't, return NULL to re-calcaulate the top of scrren menu. Because some new menus\r
OUT UINTN *SkipValue\r
)\r
{\r
- UINTN TopRow;\r
- UINTN BottomRow;\r
- UI_MENU_OPTION *MenuOption;\r
- UINTN TmpValue;\r
+ UINTN TopRow;\r
+ UINTN BottomRow;\r
+ UI_MENU_OPTION *MenuOption;\r
+ UINTN TmpValue;\r
\r
TopRow = gStatementDimensions.TopRow + SCROLL_ARROW_HEIGHT;\r
BottomRow = gStatementDimensions.BottomRow - SCROLL_ARROW_HEIGHT;\r
// When option mismatch happens,there exist two cases,one is reenter the form, just like the if case below,\r
// and the other is exit current form and enter last form, it can be covered by the else case.\r
//\r
- if (gMisMatch && gFormData->HiiHandle == gHighligthMenuInfo.HiiHandle && gFormData->FormId == gHighligthMenuInfo.FormId) {\r
+ if (gMisMatch && (gFormData->HiiHandle == gHighligthMenuInfo.HiiHandle) && (gFormData->FormId == gHighligthMenuInfo.FormId)) {\r
//\r
// Reenter caused by option mismatch or auto exit caused by refresh form(refresh interval/guid),\r
// base on the record highlight info to find the highlight menu.\r
//\r
\r
- *HighlightMenu = FindHighLightMenuOption(NULL);\r
+ *HighlightMenu = FindHighLightMenuOption (NULL);\r
if (*HighlightMenu != NULL) {\r
//\r
// Update skip info for this highlight menu.\r
//\r
// Found the last time highlight menu.\r
//\r
- *TopOfScreen = FindTopOfScreenMenuOption(*HighlightMenu);\r
+ *TopOfScreen = FindTopOfScreenMenuOption (*HighlightMenu);\r
if (*TopOfScreen != NULL) {\r
//\r
// Found the last time selectable top of screen menu.\r
//\r
- AdjustDateAndTimePosition(TRUE, TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, TopOfScreen);\r
MenuOption = MENU_OPTION_FROM_LINK (*TopOfScreen);\r
UpdateOptionSkipLines (MenuOption);\r
\r
*TopOfScreen = *HighlightMenu;\r
TmpValue = 0;\r
} else {\r
- *TopOfScreen = FindTopOfScreenMenu(*HighlightMenu, BottomRow - TopRow - MenuOption->Skip, &TmpValue);\r
+ *TopOfScreen = FindTopOfScreenMenu (*HighlightMenu, BottomRow - TopRow - MenuOption->Skip, &TmpValue);\r
}\r
\r
- *SkipValue = TmpValue;\r
+ *SkipValue = TmpValue;\r
}\r
} else {\r
//\r
if (!IsListEmpty (&gMenuOption)) {\r
MoveToNextStatement (FALSE, HighlightMenu, BottomRow - TopRow, TRUE);\r
}\r
- *TopOfScreen = gMenuOption.ForwardLink;\r
- *SkipValue = 0;\r
- }\r
\r
+ *TopOfScreen = gMenuOption.ForwardLink;\r
+ *SkipValue = 0;\r
+ }\r
} else if (FormData->HighLightedStatement != NULL) {\r
if (IsSavedHighlightStatement (FormData->HighLightedStatement)) {\r
//\r
// Input highlight menu is same as last time highlight menu.\r
// Base on last time highlight menu to set the top of screen menu and highlight menu.\r
//\r
- *HighlightMenu = FindHighLightMenuOption(NULL);\r
+ *HighlightMenu = FindHighLightMenuOption (NULL);\r
ASSERT (*HighlightMenu != NULL);\r
\r
//\r
MenuOption = MENU_OPTION_FROM_LINK (*HighlightMenu);\r
UpdateOptionSkipLines (MenuOption);\r
\r
- *TopOfScreen = FindTopOfScreenMenuOption(*HighlightMenu);\r
+ *TopOfScreen = FindTopOfScreenMenuOption (*HighlightMenu);\r
if (*TopOfScreen == NULL) {\r
//\r
// Not found last time top of screen menu, so base on current highlight menu\r
*TopOfScreen = *HighlightMenu;\r
TmpValue = 0;\r
} else {\r
- *TopOfScreen = FindTopOfScreenMenu(*HighlightMenu, BottomRow - TopRow - MenuOption->Skip, &TmpValue);\r
+ *TopOfScreen = FindTopOfScreenMenu (*HighlightMenu, BottomRow - TopRow - MenuOption->Skip, &TmpValue);\r
}\r
\r
- *SkipValue = TmpValue;\r
+ *SkipValue = TmpValue;\r
} else {\r
- AdjustDateAndTimePosition(TRUE, TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, TopOfScreen);\r
MenuOption = MENU_OPTION_FROM_LINK (*TopOfScreen);\r
UpdateOptionSkipLines (MenuOption);\r
\r
*SkipValue = gHighligthMenuInfo.SkipValue;\r
}\r
- AdjustDateAndTimePosition(TRUE, TopOfScreen);\r
+\r
+ AdjustDateAndTimePosition (TRUE, TopOfScreen);\r
} else {\r
//\r
// Input highlight menu is not save as last time highlight menu.\r
//\r
- *HighlightMenu = FindHighLightMenuOption(FormData->HighLightedStatement);\r
- MenuOption = MENU_OPTION_FROM_LINK (*HighlightMenu);\r
+ *HighlightMenu = FindHighLightMenuOption (FormData->HighLightedStatement);\r
+ MenuOption = MENU_OPTION_FROM_LINK (*HighlightMenu);\r
UpdateOptionSkipLines (MenuOption);\r
\r
//\r
*TopOfScreen = *HighlightMenu;\r
TmpValue = 0;\r
} else {\r
- *TopOfScreen = FindTopOfScreenMenu(*HighlightMenu, BottomRow - TopRow - MenuOption->Skip, &TmpValue);\r
+ *TopOfScreen = FindTopOfScreenMenu (*HighlightMenu, BottomRow - TopRow - MenuOption->Skip, &TmpValue);\r
}\r
\r
- *SkipValue = TmpValue;\r
+ *SkipValue = TmpValue;\r
}\r
- AdjustDateAndTimePosition(TRUE, TopOfScreen);\r
+\r
+ AdjustDateAndTimePosition (TRUE, TopOfScreen);\r
} else {\r
//\r
// If not has input highlight statement, just return the first one in this form.\r
if (!IsListEmpty (&gMenuOption)) {\r
MoveToNextStatement (FALSE, HighlightMenu, BottomRow - TopRow, TRUE);\r
}\r
- *SkipValue = 0;\r
+\r
+ *SkipValue = 0;\r
}\r
\r
gMisMatch = FALSE;\r
**/\r
VOID\r
UpdateHighlightMenuInfo (\r
- IN LIST_ENTRY *Highlight,\r
- IN LIST_ENTRY *TopOfScreen,\r
- IN UINTN SkipValue\r
+ IN LIST_ENTRY *Highlight,\r
+ IN LIST_ENTRY *TopOfScreen,\r
+ IN UINTN SkipValue\r
)\r
{\r
- UI_MENU_OPTION *MenuOption;\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ UI_MENU_OPTION *MenuOption;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
\r
- gHighligthMenuInfo.HiiHandle = gFormData->HiiHandle;\r
- gHighligthMenuInfo.FormId = gFormData->FormId;\r
- gHighligthMenuInfo.SkipValue = (UINT16)SkipValue;\r
+ gHighligthMenuInfo.HiiHandle = gFormData->HiiHandle;\r
+ gHighligthMenuInfo.FormId = gFormData->FormId;\r
+ gHighligthMenuInfo.SkipValue = (UINT16)SkipValue;\r
\r
if (!IsListEmpty (&gMenuOption)) {\r
MenuOption = MENU_OPTION_FROM_LINK (Highlight);\r
gUserInput->SelectedStatement = Statement;\r
\r
gHighligthMenuInfo.HLTSequence = MenuOption->Sequence;\r
- gHighligthMenuInfo.HLTQuestionId = GetQuestionIdInfo(Statement->OpCode);\r
+ gHighligthMenuInfo.HLTQuestionId = GetQuestionIdInfo (Statement->OpCode);\r
if (gHighligthMenuInfo.HLTQuestionId == 0) {\r
//\r
// if question id == 0, save the opcode buffer..\r
if (gHighligthMenuInfo.HLTOpCode != NULL) {\r
FreePool (gHighligthMenuInfo.HLTOpCode);\r
}\r
+\r
gHighligthMenuInfo.HLTOpCode = AllocateCopyPool (Statement->OpCode->Length, Statement->OpCode);\r
ASSERT (gHighligthMenuInfo.HLTOpCode != NULL);\r
\r
- gHighligthMenuInfo.HLTIndex = GetIndexInfoForOpcode(Statement->OpCode);\r
+ gHighligthMenuInfo.HLTIndex = GetIndexInfoForOpcode (Statement->OpCode);\r
}\r
\r
MenuOption = MENU_OPTION_FROM_LINK (TopOfScreen);\r
Statement = MenuOption->ThisTag;\r
\r
- gHighligthMenuInfo.TOSQuestionId = GetQuestionIdInfo(Statement->OpCode);\r
+ gHighligthMenuInfo.TOSQuestionId = GetQuestionIdInfo (Statement->OpCode);\r
if (gHighligthMenuInfo.TOSQuestionId == 0) {\r
//\r
// if question id == 0, save the opcode buffer..\r
if (gHighligthMenuInfo.TOSOpCode != NULL) {\r
FreePool (gHighligthMenuInfo.TOSOpCode);\r
}\r
+\r
gHighligthMenuInfo.TOSOpCode = AllocateCopyPool (Statement->OpCode->Length, Statement->OpCode);\r
ASSERT (gHighligthMenuInfo.TOSOpCode != NULL);\r
\r
- gHighligthMenuInfo.TOSIndex = GetIndexInfoForOpcode(Statement->OpCode);\r
+ gHighligthMenuInfo.TOSIndex = GetIndexInfoForOpcode (Statement->OpCode);\r
}\r
} else {\r
- gUserInput->SelectedStatement = NULL;\r
+ gUserInput->SelectedStatement = NULL;\r
\r
gHighligthMenuInfo.HLTSequence = 0;\r
gHighligthMenuInfo.HLTQuestionId = 0;\r
if (gHighligthMenuInfo.HLTOpCode != NULL) {\r
FreePool (gHighligthMenuInfo.HLTOpCode);\r
}\r
- gHighligthMenuInfo.HLTOpCode = NULL;\r
- gHighligthMenuInfo.HLTIndex = 0;\r
+\r
+ gHighligthMenuInfo.HLTOpCode = NULL;\r
+ gHighligthMenuInfo.HLTIndex = 0;\r
\r
gHighligthMenuInfo.TOSQuestionId = 0;\r
if (gHighligthMenuInfo.TOSOpCode != NULL) {\r
FreePool (gHighligthMenuInfo.TOSOpCode);\r
}\r
- gHighligthMenuInfo.TOSOpCode = NULL;\r
- gHighligthMenuInfo.TOSIndex = 0;\r
+\r
+ gHighligthMenuInfo.TOSOpCode = NULL;\r
+ gHighligthMenuInfo.TOSIndex = 0;\r
}\r
}\r
\r
**/\r
VOID\r
SetDisplayAttribute (\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN BOOLEAN Highlight\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN BOOLEAN Highlight\r
)\r
{\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
\r
Statement = MenuOption->ThisTag;\r
\r
**/\r
VOID\r
DisplayMenuString (\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN UINTN Col,\r
- IN UINTN Row,\r
- IN CHAR16 *String,\r
- IN UINTN Width,\r
- IN BOOLEAN Highlight\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN UINTN Col,\r
+ IN UINTN Row,\r
+ IN CHAR16 *String,\r
+ IN UINTN Width,\r
+ IN BOOLEAN Highlight\r
)\r
{\r
- UINTN Length;\r
+ UINTN Length;\r
\r
//\r
// Print string with normal color.\r
// Print the highlight menu string.\r
// First print the highlight string.\r
//\r
- SetDisplayAttribute(MenuOption, TRUE);\r
+ SetDisplayAttribute (MenuOption, TRUE);\r
Length = PrintStringAt (Col, Row, String);\r
\r
//\r
// Second, clean the empty after the string.\r
//\r
- SetDisplayAttribute(MenuOption, FALSE);\r
+ SetDisplayAttribute (MenuOption, FALSE);\r
PrintStringAtWithWidth (Col + Length, Row, L"", Width - Length);\r
}\r
\r
**/\r
BOOLEAN\r
HasOptionString (\r
- IN UI_MENU_OPTION *MenuOption\r
+ IN UI_MENU_OPTION *MenuOption\r
)\r
{\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
- CHAR16 *String;\r
- UINTN Size;\r
- EFI_IFR_TEXT *TestOp;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ CHAR16 *String;\r
+ UINTN Size;\r
+ EFI_IFR_TEXT *TextOp;\r
\r
- Size = 0;\r
+ Size = 0;\r
Statement = MenuOption->ThisTag;\r
\r
//\r
// See if the second text parameter is really NULL\r
//\r
if (Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) {\r
- TestOp = (EFI_IFR_TEXT *) Statement->OpCode;\r
- if (TestOp->TextTwo != 0) {\r
- String = GetToken (TestOp->TextTwo, gFormData->HiiHandle);\r
+ TextOp = (EFI_IFR_TEXT *)Statement->OpCode;\r
+ if (TextOp->TextTwo != 0) {\r
+ String = GetToken (TextOp->TextTwo, gFormData->HiiHandle);\r
Size = StrLen (String);\r
FreePool (String);\r
}\r
}\r
\r
if ((Statement->OpCode->OpCode == EFI_IFR_SUBTITLE_OP) ||\r
- (Statement->OpCode->OpCode == EFI_IFR_REF_OP) ||\r
- (Statement->OpCode->OpCode == EFI_IFR_PASSWORD_OP) ||\r
- (Statement->OpCode->OpCode == EFI_IFR_ACTION_OP) ||\r
- (Statement->OpCode->OpCode == EFI_IFR_RESET_BUTTON_OP) ||\r
- //\r
- // Allow a wide display if text op-code and no secondary text op-code\r
- //\r
- ((Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) && (Size == 0))\r
- ) {\r
-\r
+ (Statement->OpCode->OpCode == EFI_IFR_REF_OP) ||\r
+ (Statement->OpCode->OpCode == EFI_IFR_PASSWORD_OP) ||\r
+ (Statement->OpCode->OpCode == EFI_IFR_ACTION_OP) ||\r
+ (Statement->OpCode->OpCode == EFI_IFR_RESET_BUTTON_OP) ||\r
+ //\r
+ // Allow a wide display if text op-code and no secondary text op-code\r
+ //\r
+ ((Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) && (Size == 0))\r
+ )\r
+ {\r
return FALSE;\r
}\r
\r
**/\r
BOOLEAN\r
FxConfirmPopup (\r
- IN UINT32 Action\r
+ IN UINT32 Action\r
)\r
{\r
- EFI_INPUT_KEY Key;\r
- CHAR16 *CfmStr;\r
- UINTN CfmStrLen;\r
- UINT32 CheckFlags;\r
- BOOLEAN RetVal;\r
- UINTN CatLen;\r
- UINTN MaxLen;\r
+ EFI_INPUT_KEY Key;\r
+ CHAR16 *CfmStr;\r
+ UINTN CfmStrLen;\r
+ UINT32 CheckFlags;\r
+ BOOLEAN RetVal;\r
+ UINTN CatLen;\r
+ UINTN MaxLen;\r
\r
CfmStrLen = 0;\r
CatLen = StrLen (gConfirmMsgConnect);\r
**/\r
EFI_STATUS\r
DisplayOneMenu (\r
- IN UI_MENU_OPTION *MenuOption,\r
- IN UINTN SkipWidth,\r
- IN UINTN BeginCol,\r
- IN UINTN SkipLine,\r
- IN UINTN BottomRow,\r
- IN BOOLEAN Highlight,\r
- IN BOOLEAN UpdateCol\r
+ IN UI_MENU_OPTION *MenuOption,\r
+ IN UINTN SkipWidth,\r
+ IN UINTN BeginCol,\r
+ IN UINTN SkipLine,\r
+ IN UINTN BottomRow,\r
+ IN BOOLEAN Highlight,\r
+ IN BOOLEAN UpdateCol\r
)\r
{\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
- UINTN Index;\r
- UINT16 Width;\r
- UINT16 PromptWidth;\r
- CHAR16 *StringPtr;\r
- CHAR16 *OptionString;\r
- CHAR16 *OutputString;\r
- UINT16 GlyphWidth;\r
- UINTN Temp;\r
- UINTN Temp2;\r
- UINTN Temp3;\r
- EFI_STATUS Status;\r
- UINTN Row;\r
- BOOLEAN IsProcessingFirstRow;\r
- UINTN Col;\r
- UINTN PromptLineNum;\r
- UINTN OptionLineNum;\r
- CHAR16 AdjustValue;\r
- UINTN MaxRow;\r
-\r
- Statement = MenuOption->ThisTag;\r
- Temp = SkipLine;\r
- Temp2 = SkipLine;\r
- Temp3 = SkipLine;\r
- AdjustValue = 0;\r
- PromptLineNum = 0;\r
- OptionLineNum = 0;\r
- MaxRow = 0;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ UINTN Index;\r
+ UINT16 Width;\r
+ UINT16 PromptWidth;\r
+ CHAR16 *StringPtr;\r
+ CHAR16 *OptionString;\r
+ CHAR16 *OutputString;\r
+ UINT16 GlyphWidth;\r
+ UINTN Temp;\r
+ UINTN Temp2;\r
+ UINTN Temp3;\r
+ EFI_STATUS Status;\r
+ UINTN Row;\r
+ BOOLEAN IsProcessingFirstRow;\r
+ UINTN Col;\r
+ UINTN PromptLineNum;\r
+ UINTN OptionLineNum;\r
+ CHAR16 AdjustValue;\r
+ UINTN MaxRow;\r
+\r
+ Statement = MenuOption->ThisTag;\r
+ Temp = SkipLine;\r
+ Temp2 = SkipLine;\r
+ Temp3 = SkipLine;\r
+ AdjustValue = 0;\r
+ PromptLineNum = 0;\r
+ OptionLineNum = 0;\r
+ MaxRow = 0;\r
IsProcessingFirstRow = TRUE;\r
\r
//\r
}\r
\r
if (OptionString != NULL) {\r
- if (Statement->OpCode->OpCode == EFI_IFR_DATE_OP || Statement->OpCode->OpCode == EFI_IFR_TIME_OP) {\r
+ if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP) || (Statement->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
//\r
// Adjust option string for date/time opcode.\r
//\r
- ProcessStringForDateTime(MenuOption, OptionString, UpdateCol);\r
+ ProcessStringForDateTime (MenuOption, OptionString, UpdateCol);\r
}\r
\r
- Width = (UINT16) gOptionBlockWidth - 1;\r
- Row = MenuOption->Row;\r
- GlyphWidth = 1;\r
+ Width = (UINT16)gOptionBlockWidth - 1;\r
+ Row = MenuOption->Row;\r
+ GlyphWidth = 1;\r
OptionLineNum = 0;\r
\r
for (Index = 0; GetLineByWidth (OptionString, Width, &GlyphWidth, &Index, &OutputString) != 0x0000;) {\r
if (((Temp2 == 0)) && (Row <= BottomRow)) {\r
- if (Statement->OpCode->OpCode == EFI_IFR_DATE_OP || Statement->OpCode->OpCode == EFI_IFR_TIME_OP) {\r
+ if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP) || (Statement->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
//\r
// For date/time question, it has three menu options for this qustion.\r
// The first/second menu options with the skip value is 0. the last one\r
// For date/ time, print the last past (year for date and second for time)\r
// - 7 means skip [##/##/ for date and [##:##: for time.\r
//\r
- DisplayMenuString (MenuOption,MenuOption->OptCol, Row, OutputString, Width + 1 - 7, Highlight);\r
+ DisplayMenuString (MenuOption, MenuOption->OptCol, Row, OutputString, Width + 1 - 7, Highlight);\r
} else {\r
//\r
// For date/ time, print the first and second past (year for date and second for time)\r
} else {\r
DisplayMenuString (MenuOption, MenuOption->OptCol, Row, OutputString, Width + 1, Highlight);\r
}\r
+\r
OptionLineNum++;\r
}\r
\r
GlyphWidth = 1;\r
PromptLineNum = 0;\r
\r
- if (MenuOption->Description == NULL || MenuOption->Description[0] == '\0') {\r
+ if ((MenuOption->Description == NULL) || (MenuOption->Description[0] == '\0')) {\r
PrintStringAtWithWidth (BeginCol, Row, L"", PromptWidth + AdjustValue + SkipWidth);\r
PromptLineNum++;\r
} else {\r
//\r
PrintStringAtWithWidth (BeginCol, Row, L"", SkipWidth);\r
\r
- if (Statement->OpCode->OpCode == EFI_IFR_REF_OP && MenuOption->Col >= 2 && IsProcessingFirstRow) {\r
+ if ((Statement->OpCode->OpCode == EFI_IFR_REF_OP) && (MenuOption->Col >= 2) && IsProcessingFirstRow) {\r
//\r
// Print Arrow for Goto button.\r
//\r
);\r
IsProcessingFirstRow = FALSE;\r
}\r
+\r
DisplayMenuString (MenuOption, MenuOption->Col, Row, OutputString, PromptWidth + AdjustValue, Highlight);\r
- PromptLineNum ++;\r
+ PromptLineNum++;\r
}\r
+\r
//\r
// If there is more string to process print on the next row and increment the Skip value\r
//\r
Highlight = FALSE;\r
}\r
\r
-\r
//\r
// 3. If this is a text op with secondary text information\r
//\r
- if ((Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) && (((EFI_IFR_TEXT*)Statement->OpCode)->TextTwo != 0)) {\r
- StringPtr = GetToken (((EFI_IFR_TEXT*)Statement->OpCode)->TextTwo, gFormData->HiiHandle);\r
+ if ((Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) && (((EFI_IFR_TEXT *)Statement->OpCode)->TextTwo != 0)) {\r
+ StringPtr = GetToken (((EFI_IFR_TEXT *)Statement->OpCode)->TextTwo, gFormData->HiiHandle);\r
\r
- Width = (UINT16) gOptionBlockWidth - 1;\r
- Row = MenuOption->Row;\r
- GlyphWidth = 1;\r
+ Width = (UINT16)gOptionBlockWidth - 1;\r
+ Row = MenuOption->Row;\r
+ GlyphWidth = 1;\r
OptionLineNum = 0;\r
\r
for (Index = 0; GetLineByWidth (StringPtr, Width, &GlyphWidth, &Index, &OutputString) != 0x0000;) {\r
DisplayMenuString (MenuOption, MenuOption->OptCol, Row, OutputString, Width + 1, Highlight);\r
OptionLineNum++;\r
}\r
+\r
//\r
// If there is more string to process print on the next row and increment the Skip value\r
//\r
// 4.Line number for Option string and prompt string are not equal.\r
// Clean the column whose line number is less.\r
//\r
- if (HasOptionString(MenuOption) && (OptionLineNum != PromptLineNum)) {\r
+ if (HasOptionString (MenuOption) && (OptionLineNum != PromptLineNum)) {\r
Col = OptionLineNum < PromptLineNum ? MenuOption->OptCol : BeginCol;\r
Row = (OptionLineNum < PromptLineNum ? OptionLineNum : PromptLineNum) + MenuOption->Row;\r
- Width = (UINT16) (OptionLineNum < PromptLineNum ? gOptionBlockWidth : PromptWidth + AdjustValue + SkipWidth);\r
+ Width = (UINT16)(OptionLineNum < PromptLineNum ? gOptionBlockWidth : PromptWidth + AdjustValue + SkipWidth);\r
MaxRow = (OptionLineNum < PromptLineNum ? PromptLineNum : OptionLineNum) + MenuOption->Row - 1;\r
\r
while (Row <= MaxRow) {\r
IN FORM_DISPLAY_ENGINE_FORM *FormData\r
)\r
{\r
- UINTN SkipValue;\r
- INTN Difference;\r
- UINTN DistanceValue;\r
- UINTN Row;\r
- UINTN Col;\r
- UINTN Temp;\r
- UINTN Temp2;\r
- UINTN TopRow;\r
- UINTN BottomRow;\r
- UINTN Index;\r
- CHAR16 *StringPtr;\r
- CHAR16 *StringRightPtr;\r
- CHAR16 *StringErrorPtr;\r
- CHAR16 *OptionString;\r
- CHAR16 *HelpString;\r
- CHAR16 *HelpHeaderString;\r
- CHAR16 *HelpBottomString;\r
- BOOLEAN NewLine;\r
- BOOLEAN Repaint;\r
- BOOLEAN UpArrow;\r
- BOOLEAN DownArrow;\r
- EFI_STATUS Status;\r
- EFI_INPUT_KEY Key;\r
- LIST_ENTRY *Link;\r
- LIST_ENTRY *NewPos;\r
- LIST_ENTRY *TopOfScreen;\r
- LIST_ENTRY *SavedListEntry;\r
- UI_MENU_OPTION *MenuOption;\r
- UI_MENU_OPTION *NextMenuOption;\r
- UI_MENU_OPTION *SavedMenuOption;\r
- UI_CONTROL_FLAG ControlFlag;\r
- UI_SCREEN_OPERATION ScreenOperation;\r
- FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
- BROWSER_HOT_KEY *HotKey;\r
- UINTN HelpPageIndex;\r
- UINTN HelpPageCount;\r
- UINTN RowCount;\r
- UINTN HelpLine;\r
- UINTN HelpHeaderLine;\r
- UINTN HelpBottomLine;\r
- BOOLEAN MultiHelpPage;\r
- UINT16 EachLineWidth;\r
- UINT16 HeaderLineWidth;\r
- UINT16 BottomLineWidth;\r
- EFI_STRING_ID HelpInfo;\r
- UI_EVENT_TYPE EventType;\r
- BOOLEAN SkipHighLight;\r
- EFI_HII_VALUE *StatementValue;\r
-\r
- EventType = UIEventNone;\r
- Status = EFI_SUCCESS;\r
- HelpString = NULL;\r
- HelpHeaderString = NULL;\r
- HelpBottomString = NULL;\r
- OptionString = NULL;\r
- ScreenOperation = UiNoOperation;\r
- NewLine = TRUE;\r
- HelpPageCount = 0;\r
- HelpLine = 0;\r
- RowCount = 0;\r
- HelpBottomLine = 0;\r
- HelpHeaderLine = 0;\r
- HelpPageIndex = 0;\r
- MultiHelpPage = FALSE;\r
- EachLineWidth = 0;\r
- HeaderLineWidth = 0;\r
- BottomLineWidth = 0;\r
- UpArrow = FALSE;\r
- DownArrow = FALSE;\r
- SkipValue = 0;\r
- SkipHighLight = FALSE;\r
-\r
- NextMenuOption = NULL;\r
- SavedMenuOption = NULL;\r
- HotKey = NULL;\r
- Repaint = TRUE;\r
- MenuOption = NULL;\r
- gModalSkipColumn = (CHAR16) (gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn) / 6;\r
+ UINTN SkipValue;\r
+ INTN Difference;\r
+ UINTN DistanceValue;\r
+ UINTN Row;\r
+ UINTN Col;\r
+ UINTN Temp;\r
+ UINTN Temp2;\r
+ UINTN TopRow;\r
+ UINTN BottomRow;\r
+ UINTN Index;\r
+ CHAR16 *StringPtr;\r
+ CHAR16 *StringRightPtr;\r
+ CHAR16 *StringErrorPtr;\r
+ CHAR16 *OptionString;\r
+ CHAR16 *HelpString;\r
+ CHAR16 *HelpHeaderString;\r
+ CHAR16 *HelpBottomString;\r
+ BOOLEAN NewLine;\r
+ BOOLEAN Repaint;\r
+ BOOLEAN UpArrow;\r
+ BOOLEAN DownArrow;\r
+ EFI_STATUS Status;\r
+ EFI_INPUT_KEY Key;\r
+ LIST_ENTRY *Link;\r
+ LIST_ENTRY *NewPos;\r
+ LIST_ENTRY *TopOfScreen;\r
+ LIST_ENTRY *SavedListEntry;\r
+ UI_MENU_OPTION *MenuOption;\r
+ UI_MENU_OPTION *NextMenuOption;\r
+ UI_MENU_OPTION *SavedMenuOption;\r
+ UI_CONTROL_FLAG ControlFlag;\r
+ UI_SCREEN_OPERATION ScreenOperation;\r
+ FORM_DISPLAY_ENGINE_STATEMENT *Statement;\r
+ BROWSER_HOT_KEY *HotKey;\r
+ UINTN HelpPageIndex;\r
+ UINTN HelpPageCount;\r
+ UINTN RowCount;\r
+ UINTN HelpLine;\r
+ UINTN HelpHeaderLine;\r
+ UINTN HelpBottomLine;\r
+ BOOLEAN MultiHelpPage;\r
+ UINT16 EachLineWidth;\r
+ UINT16 HeaderLineWidth;\r
+ UINT16 BottomLineWidth;\r
+ EFI_STRING_ID HelpInfo;\r
+ UI_EVENT_TYPE EventType;\r
+ BOOLEAN SkipHighLight;\r
+ EFI_HII_VALUE *StatementValue;\r
+\r
+ EventType = UIEventNone;\r
+ Status = EFI_SUCCESS;\r
+ HelpString = NULL;\r
+ HelpHeaderString = NULL;\r
+ HelpBottomString = NULL;\r
+ OptionString = NULL;\r
+ ScreenOperation = UiNoOperation;\r
+ NewLine = TRUE;\r
+ HelpPageCount = 0;\r
+ HelpLine = 0;\r
+ RowCount = 0;\r
+ HelpBottomLine = 0;\r
+ HelpHeaderLine = 0;\r
+ HelpPageIndex = 0;\r
+ MultiHelpPage = FALSE;\r
+ EachLineWidth = 0;\r
+ HeaderLineWidth = 0;\r
+ BottomLineWidth = 0;\r
+ UpArrow = FALSE;\r
+ DownArrow = FALSE;\r
+ SkipValue = 0;\r
+ SkipHighLight = FALSE;\r
+\r
+ NextMenuOption = NULL;\r
+ SavedMenuOption = NULL;\r
+ HotKey = NULL;\r
+ Repaint = TRUE;\r
+ MenuOption = NULL;\r
+ gModalSkipColumn = (CHAR16)(gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn) / 6;\r
\r
ZeroMem (&Key, sizeof (EFI_INPUT_KEY));\r
\r
Col = gStatementDimensions.LeftColumn + LEFT_SKIPPED_COLUMNS;\r
}\r
\r
- FindTopMenu(FormData, &TopOfScreen, &NewPos, &SkipValue);\r
+ FindTopMenu (FormData, &TopOfScreen, &NewPos, &SkipValue);\r
if (!IsListEmpty (&gMenuOption)) {\r
- NextMenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
+ NextMenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
gUserInput->SelectedStatement = NextMenuOption->ThisTag;\r
}\r
\r
ControlFlag = CfInitialization;\r
while (TRUE) {\r
switch (ControlFlag) {\r
- case CfInitialization:\r
- if ((gOldFormEntry.HiiHandle != FormData->HiiHandle) ||\r
- (!CompareGuid (&gOldFormEntry.FormSetGuid, &FormData->FormSetGuid))) {\r
- //\r
- // Clear Statement range if different formset is painted.\r
- //\r
- ClearLines (\r
- gStatementDimensions.LeftColumn,\r
- gStatementDimensions.RightColumn,\r
- TopRow - SCROLL_ARROW_HEIGHT,\r
- BottomRow + SCROLL_ARROW_HEIGHT,\r
- GetFieldTextColor ()\r
- );\r
-\r
- }\r
- ControlFlag = CfRepaint;\r
- break;\r
-\r
- case CfRepaint:\r
- ControlFlag = CfRefreshHighLight;\r
+ case CfInitialization:\r
+ if ((gOldFormEntry.HiiHandle != FormData->HiiHandle) ||\r
+ (!CompareGuid (&gOldFormEntry.FormSetGuid, &FormData->FormSetGuid)))\r
+ {\r
+ //\r
+ // Clear Statement range if different formset is painted.\r
+ //\r
+ ClearLines (\r
+ gStatementDimensions.LeftColumn,\r
+ gStatementDimensions.RightColumn,\r
+ TopRow - SCROLL_ARROW_HEIGHT,\r
+ BottomRow + SCROLL_ARROW_HEIGHT,\r
+ GetFieldTextColor ()\r
+ );\r
+ }\r
\r
- if (Repaint) {\r
- //\r
- // Display menu\r
- //\r
- DownArrow = FALSE;\r
- UpArrow = FALSE;\r
- Row = TopRow;\r
+ ControlFlag = CfRepaint;\r
+ break;\r
\r
- gST->ConOut->SetAttribute (gST->ConOut, GetFieldTextColor ());\r
+ case CfRepaint:\r
+ ControlFlag = CfRefreshHighLight;\r
\r
- //\r
- // 1. Check whether need to print the arrow up.\r
- //\r
- if (!ValueIsScroll (TRUE, TopOfScreen)) {\r
- UpArrow = TRUE;\r
- }\r
+ if (Repaint) {\r
+ //\r
+ // Display menu\r
+ //\r
+ DownArrow = FALSE;\r
+ UpArrow = FALSE;\r
+ Row = TopRow;\r
\r
- if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
- PrintStringAtWithWidth(gStatementDimensions.LeftColumn + gModalSkipColumn, TopRow - 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * gModalSkipColumn);\r
- } else {\r
- PrintStringAtWithWidth(gStatementDimensions.LeftColumn, TopRow - 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);\r
- }\r
- if (UpArrow) {\r
- gST->ConOut->SetAttribute (gST->ConOut, GetArrowColor ());\r
- PrintCharAt (\r
- gStatementDimensions.LeftColumn + gPromptBlockWidth + gOptionBlockWidth + 1,\r
- TopRow - SCROLL_ARROW_HEIGHT,\r
- ARROW_UP\r
- );\r
gST->ConOut->SetAttribute (gST->ConOut, GetFieldTextColor ());\r
- }\r
\r
- //\r
- // 2.Paint the menu.\r
- //\r
- for (Link = TopOfScreen; Link != &gMenuOption; Link = Link->ForwardLink) {\r
- MenuOption = MENU_OPTION_FROM_LINK (Link);\r
- MenuOption->Row = Row;\r
- MenuOption->Col = Col;\r
+ //\r
+ // 1. Check whether need to print the arrow up.\r
+ //\r
+ if (!ValueIsScroll (TRUE, TopOfScreen)) {\r
+ UpArrow = TRUE;\r
+ }\r
+\r
if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
- MenuOption->OptCol = gStatementDimensions.LeftColumn + LEFT_SKIPPED_COLUMNS + gPromptBlockWidth + gModalSkipColumn;\r
+ PrintStringAtWithWidth (gStatementDimensions.LeftColumn + gModalSkipColumn, TopRow - 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * gModalSkipColumn);\r
} else {\r
- MenuOption->OptCol = gStatementDimensions.LeftColumn + LEFT_SKIPPED_COLUMNS + gPromptBlockWidth;\r
+ PrintStringAtWithWidth (gStatementDimensions.LeftColumn, TopRow - 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);\r
}\r
\r
- if (MenuOption->NestInStatement) {\r
- MenuOption->Col += SUBTITLE_INDENT;\r
+ if (UpArrow) {\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetArrowColor ());\r
+ PrintCharAt (\r
+ gStatementDimensions.LeftColumn + gPromptBlockWidth + gOptionBlockWidth + 1,\r
+ TopRow - SCROLL_ARROW_HEIGHT,\r
+ ARROW_UP\r
+ );\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetFieldTextColor ());\r
}\r
\r
//\r
- // Save the highlight menu, will be used in CfRefreshHighLight case.\r
+ // 2.Paint the menu.\r
//\r
- if (Link == NewPos) {\r
- SavedMenuOption = MenuOption;\r
- SkipHighLight = TRUE;\r
- }\r
+ for (Link = TopOfScreen; Link != &gMenuOption; Link = Link->ForwardLink) {\r
+ MenuOption = MENU_OPTION_FROM_LINK (Link);\r
+ MenuOption->Row = Row;\r
+ MenuOption->Col = Col;\r
+ if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
+ MenuOption->OptCol = gStatementDimensions.LeftColumn + LEFT_SKIPPED_COLUMNS + gPromptBlockWidth + gModalSkipColumn;\r
+ } else {\r
+ MenuOption->OptCol = gStatementDimensions.LeftColumn + LEFT_SKIPPED_COLUMNS + gPromptBlockWidth;\r
+ }\r
\r
- if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
- Status = DisplayOneMenu (MenuOption,\r
- MenuOption->Col - gStatementDimensions.LeftColumn,\r
- gStatementDimensions.LeftColumn + gModalSkipColumn,\r
- Link == TopOfScreen ? SkipValue : 0,\r
- BottomRow,\r
- (BOOLEAN) ((Link == NewPos) && IsSelectable(MenuOption)),\r
- TRUE\r
- );\r
- } else {\r
- Status = DisplayOneMenu (MenuOption,\r
- MenuOption->Col - gStatementDimensions.LeftColumn,\r
- gStatementDimensions.LeftColumn,\r
- Link == TopOfScreen ? SkipValue : 0,\r
- BottomRow,\r
- (BOOLEAN) ((Link == NewPos) && IsSelectable(MenuOption)),\r
- TRUE\r
- );\r
- }\r
+ if (MenuOption->NestInStatement) {\r
+ MenuOption->Col += SUBTITLE_INDENT;\r
+ }\r
+\r
+ //\r
+ // Save the highlight menu, will be used in CfRefreshHighLight case.\r
+ //\r
+ if (Link == NewPos) {\r
+ SavedMenuOption = MenuOption;\r
+ SkipHighLight = TRUE;\r
+ }\r
+\r
+ if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
+ Status = DisplayOneMenu (\r
+ MenuOption,\r
+ MenuOption->Col - gStatementDimensions.LeftColumn,\r
+ gStatementDimensions.LeftColumn + gModalSkipColumn,\r
+ Link == TopOfScreen ? SkipValue : 0,\r
+ BottomRow,\r
+ (BOOLEAN)((Link == NewPos) && IsSelectable (MenuOption)),\r
+ TRUE\r
+ );\r
+ } else {\r
+ Status = DisplayOneMenu (\r
+ MenuOption,\r
+ MenuOption->Col - gStatementDimensions.LeftColumn,\r
+ gStatementDimensions.LeftColumn,\r
+ Link == TopOfScreen ? SkipValue : 0,\r
+ BottomRow,\r
+ (BOOLEAN)((Link == NewPos) && IsSelectable (MenuOption)),\r
+ TRUE\r
+ );\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ if (gMisMatch) {\r
+ return EFI_SUCCESS;\r
+ } else {\r
+ return Status;\r
+ }\r
+ }\r
\r
- if (EFI_ERROR (Status)) {\r
- if (gMisMatch) {\r
- return EFI_SUCCESS;\r
+ //\r
+ // 3. Update the row info which will be used by next menu.\r
+ //\r
+ if (Link == TopOfScreen) {\r
+ Row += MenuOption->Skip - SkipValue;\r
} else {\r
- return Status;\r
+ Row += MenuOption->Skip;\r
+ }\r
+\r
+ if (Row > BottomRow) {\r
+ if (!ValueIsScroll (FALSE, Link)) {\r
+ DownArrow = TRUE;\r
+ }\r
+\r
+ Row = BottomRow + 1;\r
+ break;\r
}\r
}\r
+\r
//\r
- // 3. Update the row info which will be used by next menu.\r
+ // 3. Menus in this form may not cover all form, clean the remain field.\r
//\r
- if (Link == TopOfScreen) {\r
- Row += MenuOption->Skip - SkipValue;\r
- } else {\r
- Row += MenuOption->Skip;\r
- }\r
-\r
- if (Row > BottomRow) {\r
- if (!ValueIsScroll (FALSE, Link)) {\r
- DownArrow = TRUE;\r
+ while (Row <= BottomRow) {\r
+ if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
+ PrintStringAtWithWidth (gStatementDimensions.LeftColumn + gModalSkipColumn, Row++, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * gModalSkipColumn);\r
+ } else {\r
+ PrintStringAtWithWidth (gStatementDimensions.LeftColumn, Row++, L"", gStatementDimensions.RightColumn - gHelpBlockWidth - gStatementDimensions.LeftColumn);\r
}\r
-\r
- Row = BottomRow + 1;\r
- break;\r
}\r
- }\r
\r
- //\r
- // 3. Menus in this form may not cover all form, clean the remain field.\r
- //\r
- while (Row <= BottomRow) {\r
+ //\r
+ // 4. Print the down arrow row.\r
+ //\r
if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
- PrintStringAtWithWidth(gStatementDimensions.LeftColumn + gModalSkipColumn, Row++, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * gModalSkipColumn);\r
+ PrintStringAtWithWidth (gStatementDimensions.LeftColumn + gModalSkipColumn, BottomRow + 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * +gModalSkipColumn);\r
} else {\r
- PrintStringAtWithWidth(gStatementDimensions.LeftColumn, Row++, L"", gStatementDimensions.RightColumn - gHelpBlockWidth - gStatementDimensions.LeftColumn);\r
+ PrintStringAtWithWidth (gStatementDimensions.LeftColumn, BottomRow + 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);\r
}\r
- }\r
-\r
- //\r
- // 4. Print the down arrow row.\r
- //\r
- if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
- PrintStringAtWithWidth(gStatementDimensions.LeftColumn + gModalSkipColumn, BottomRow + 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * + gModalSkipColumn);\r
- } else {\r
- PrintStringAtWithWidth(gStatementDimensions.LeftColumn, BottomRow + 1, L"", gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn);\r
- }\r
- if (DownArrow) {\r
- gST->ConOut->SetAttribute (gST->ConOut, GetArrowColor ());\r
- PrintCharAt (\r
- gStatementDimensions.LeftColumn + gPromptBlockWidth + gOptionBlockWidth + 1,\r
- BottomRow + SCROLL_ARROW_HEIGHT,\r
- ARROW_DOWN\r
- );\r
- gST->ConOut->SetAttribute (gST->ConOut, GetFieldTextColor ());\r
- }\r
-\r
- MenuOption = NULL;\r
- }\r
- break;\r
-\r
- case CfRefreshHighLight:\r
\r
- //\r
- // MenuOption: Last menu option that need to remove hilight\r
- // MenuOption is set to NULL in Repaint\r
- // NewPos: Current menu option that need to hilight\r
- //\r
- ControlFlag = CfUpdateHelpString;\r
+ if (DownArrow) {\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetArrowColor ());\r
+ PrintCharAt (\r
+ gStatementDimensions.LeftColumn + gPromptBlockWidth + gOptionBlockWidth + 1,\r
+ BottomRow + SCROLL_ARROW_HEIGHT,\r
+ ARROW_DOWN\r
+ );\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetFieldTextColor ());\r
+ }\r
\r
- UpdateHighlightMenuInfo(NewPos, TopOfScreen, SkipValue);\r
+ MenuOption = NULL;\r
+ }\r
\r
- if (SkipHighLight) {\r
- SkipHighLight = FALSE;\r
- MenuOption = SavedMenuOption;\r
- RefreshKeyHelp(gFormData, SavedMenuOption->ThisTag, FALSE);\r
break;\r
- }\r
\r
- if (IsListEmpty (&gMenuOption)) {\r
+ case CfRefreshHighLight:\r
+\r
//\r
- // No menu option, just update the hotkey filed.\r
+ // MenuOption: Last menu option that need to remove hilight\r
+ // MenuOption is set to NULL in Repaint\r
+ // NewPos: Current menu option that need to hilight\r
//\r
- RefreshKeyHelp(gFormData, NULL, FALSE);\r
- break;\r
- }\r
+ ControlFlag = CfUpdateHelpString;\r
\r
- if (MenuOption != NULL && TopOfScreen == &MenuOption->Link) {\r
- Temp = SkipValue;\r
- } else {\r
- Temp = 0;\r
- }\r
- if (NewPos == TopOfScreen) {\r
- Temp2 = SkipValue;\r
- } else {\r
- Temp2 = 0;\r
- }\r
+ ASSERT (NewPos != NULL);\r
+ UpdateHighlightMenuInfo (NewPos, TopOfScreen, SkipValue);\r
+\r
+ if (SkipHighLight) {\r
+ SkipHighLight = FALSE;\r
+ MenuOption = SavedMenuOption;\r
+ RefreshKeyHelp (gFormData, SavedMenuOption->ThisTag, FALSE);\r
+ break;\r
+ }\r
\r
- if (NewPos != NULL && (MenuOption == NULL || NewPos != &MenuOption->Link)) {\r
- if (MenuOption != NULL) {\r
+ if (IsListEmpty (&gMenuOption)) {\r
//\r
- // Remove the old highlight menu.\r
+ // No menu option, just update the hotkey filed.\r
//\r
- Status = DisplayOneMenu (MenuOption,\r
- MenuOption->Col - gStatementDimensions.LeftColumn,\r
- gStatementDimensions.LeftColumn,\r
- Temp,\r
- BottomRow,\r
- FALSE,\r
- FALSE\r
- );\r
+ RefreshKeyHelp (gFormData, NULL, FALSE);\r
+ break;\r
}\r
\r
- //\r
- // This is the current selected statement\r
- //\r
- MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
- RefreshKeyHelp(gFormData, MenuOption->ThisTag, FALSE);\r
-\r
- if (!IsSelectable (MenuOption)) {\r
- break;\r
+ if ((MenuOption != NULL) && (TopOfScreen == &MenuOption->Link)) {\r
+ Temp = SkipValue;\r
+ } else {\r
+ Temp = 0;\r
}\r
\r
- Status = DisplayOneMenu (MenuOption,\r
- MenuOption->Col - gStatementDimensions.LeftColumn,\r
- gStatementDimensions.LeftColumn,\r
- Temp2,\r
- BottomRow,\r
- TRUE,\r
- FALSE\r
- );\r
- }\r
- break;\r
+ if (NewPos == TopOfScreen) {\r
+ Temp2 = SkipValue;\r
+ } else {\r
+ Temp2 = 0;\r
+ }\r
\r
- case CfUpdateHelpString:\r
- ControlFlag = CfPrepareToReadKey;\r
- if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
- break;\r
- }\r
+ if ((MenuOption == NULL) || (NewPos != &MenuOption->Link)) {\r
+ if (MenuOption != NULL) {\r
+ //\r
+ // Remove the old highlight menu.\r
+ //\r
+ Status = DisplayOneMenu (\r
+ MenuOption,\r
+ MenuOption->Col - gStatementDimensions.LeftColumn,\r
+ gStatementDimensions.LeftColumn,\r
+ Temp,\r
+ BottomRow,\r
+ FALSE,\r
+ FALSE\r
+ );\r
+ }\r
\r
- //\r
- // NewLine means only update highlight menu (remove old highlight and highlith\r
- // the new one), not need to full repain the form.\r
- //\r
- if (Repaint || NewLine) {\r
- if (IsListEmpty (&gMenuOption)) {\r
- //\r
- // Don't print anything if no mwnu option.\r
- //\r
- StringPtr = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);\r
- } else {\r
//\r
- // Don't print anything if it is a NULL help token\r
+ // This is the current selected statement\r
//\r
- ASSERT(MenuOption != NULL);\r
- HelpInfo = ((EFI_IFR_STATEMENT_HEADER *) ((CHAR8 *)MenuOption->ThisTag->OpCode + sizeof (EFI_IFR_OP_HEADER)))->Help;\r
- Statement = MenuOption->ThisTag;\r
- StatementValue = &Statement->CurrentValue;\r
- if (HelpInfo == 0 || !IsSelectable (MenuOption)) {\r
- if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP && StatementValue->Value.date.Month== 0xff)||(Statement->OpCode->OpCode == EFI_IFR_TIME_OP && StatementValue->Value.time.Hour == 0xff)){\r
- StringPtr = GetToken (STRING_TOKEN (GET_TIME_FAIL), gHiiHandle);\r
- } else {\r
- StringPtr = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);\r
- }\r
- } else {\r
- if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP && StatementValue->Value.date.Month== 0xff)||(Statement->OpCode->OpCode == EFI_IFR_TIME_OP && StatementValue->Value.time.Hour == 0xff)){\r
- StringRightPtr = GetToken (HelpInfo, gFormData->HiiHandle);\r
- StringErrorPtr = GetToken (STRING_TOKEN (GET_TIME_FAIL), gHiiHandle);\r
- StringPtr = AllocateZeroPool ((StrLen (StringRightPtr) + StrLen (StringErrorPtr)+ 1 ) * sizeof (CHAR16));\r
- StrCpyS (StringPtr, StrLen (StringRightPtr) + StrLen (StringErrorPtr) + 1, StringRightPtr);\r
- StrCatS (StringPtr, StrLen (StringRightPtr) + StrLen (StringErrorPtr) + 1, StringErrorPtr);\r
- FreePool (StringRightPtr);\r
- FreePool (StringErrorPtr);\r
- } else {\r
- StringPtr = GetToken (HelpInfo, gFormData->HiiHandle);\r
- }\r
+ MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
+ RefreshKeyHelp (gFormData, MenuOption->ThisTag, FALSE);\r
+\r
+ if (!IsSelectable (MenuOption)) {\r
+ break;\r
}\r
+\r
+ Status = DisplayOneMenu (\r
+ MenuOption,\r
+ MenuOption->Col - gStatementDimensions.LeftColumn,\r
+ gStatementDimensions.LeftColumn,\r
+ Temp2,\r
+ BottomRow,\r
+ TRUE,\r
+ FALSE\r
+ );\r
+ }\r
+\r
+ break;\r
+\r
+ case CfUpdateHelpString:\r
+ ControlFlag = CfPrepareToReadKey;\r
+ if ((FormData->Attribute & HII_DISPLAY_MODAL) != 0) {\r
+ break;\r
}\r
\r
- RowCount = BottomRow - TopRow + 1;\r
- HelpPageIndex = 0;\r
//\r
- // 1.Calculate how many line the help string need to print.\r
+ // NewLine means only update highlight menu (remove old highlight and highlith\r
+ // the new one), not need to full repain the form.\r
//\r
- if (HelpString != NULL) {\r
- FreePool (HelpString);\r
- HelpString = NULL;\r
- }\r
- HelpLine = ProcessHelpString (StringPtr, &HelpString, &EachLineWidth, RowCount);\r
- FreePool (StringPtr);\r
-\r
- if (HelpLine > RowCount) {\r
- MultiHelpPage = TRUE;\r
- StringPtr = GetToken (STRING_TOKEN(ADJUST_HELP_PAGE_UP), gHiiHandle);\r
- if (HelpHeaderString != NULL) {\r
- FreePool (HelpHeaderString);\r
- HelpHeaderString = NULL;\r
- }\r
- HelpHeaderLine = ProcessHelpString (StringPtr, &HelpHeaderString, &HeaderLineWidth, 0);\r
- FreePool (StringPtr);\r
- StringPtr = GetToken (STRING_TOKEN(ADJUST_HELP_PAGE_DOWN), gHiiHandle);\r
- if (HelpBottomString != NULL) {\r
- FreePool (HelpBottomString);\r
- HelpBottomString = NULL;\r
+ if (Repaint || NewLine) {\r
+ if (IsListEmpty (&gMenuOption)) {\r
+ //\r
+ // Don't print anything if no mwnu option.\r
+ //\r
+ StringPtr = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);\r
+ } else {\r
+ //\r
+ // Don't print anything if it is a NULL help token\r
+ //\r
+ ASSERT (MenuOption != NULL);\r
+ HelpInfo = ((EFI_IFR_STATEMENT_HEADER *)((CHAR8 *)MenuOption->ThisTag->OpCode + sizeof (EFI_IFR_OP_HEADER)))->Help;\r
+ Statement = MenuOption->ThisTag;\r
+ StatementValue = &Statement->CurrentValue;\r
+ if ((HelpInfo == 0) || !IsSelectable (MenuOption)) {\r
+ if (((Statement->OpCode->OpCode == EFI_IFR_DATE_OP) && (StatementValue->Value.date.Month == 0xff)) || ((Statement->OpCode->OpCode == EFI_IFR_TIME_OP) && (StatementValue->Value.time.Hour == 0xff))) {\r
+ StringPtr = GetToken (STRING_TOKEN (GET_TIME_FAIL), gHiiHandle);\r
+ } else {\r
+ StringPtr = GetToken (STRING_TOKEN (EMPTY_STRING), gHiiHandle);\r
+ }\r
+ } else {\r
+ if (((Statement->OpCode->OpCode == EFI_IFR_DATE_OP) && (StatementValue->Value.date.Month == 0xff)) || ((Statement->OpCode->OpCode == EFI_IFR_TIME_OP) && (StatementValue->Value.time.Hour == 0xff))) {\r
+ StringRightPtr = GetToken (HelpInfo, gFormData->HiiHandle);\r
+ StringErrorPtr = GetToken (STRING_TOKEN (GET_TIME_FAIL), gHiiHandle);\r
+ StringPtr = AllocateZeroPool ((StrLen (StringRightPtr) + StrLen (StringErrorPtr)+ 1) * sizeof (CHAR16));\r
+ StrCpyS (StringPtr, StrLen (StringRightPtr) + StrLen (StringErrorPtr) + 1, StringRightPtr);\r
+ StrCatS (StringPtr, StrLen (StringRightPtr) + StrLen (StringErrorPtr) + 1, StringErrorPtr);\r
+ FreePool (StringRightPtr);\r
+ FreePool (StringErrorPtr);\r
+ } else {\r
+ StringPtr = GetToken (HelpInfo, gFormData->HiiHandle);\r
+ }\r
+ }\r
}\r
- HelpBottomLine = ProcessHelpString (StringPtr, &HelpBottomString, &BottomLineWidth, 0);\r
- FreePool (StringPtr);\r
+\r
+ RowCount = BottomRow - TopRow + 1;\r
+ HelpPageIndex = 0;\r
//\r
- // Calculate the help page count.\r
+ // 1.Calculate how many line the help string need to print.\r
//\r
- if (HelpLine > 2 * RowCount - 2) {\r
- HelpPageCount = (HelpLine - RowCount + 1) / (RowCount - 2) + 1;\r
- if ((HelpLine - RowCount + 1) % (RowCount - 2) != 0) {\r
- HelpPageCount += 1;\r
+ if (HelpString != NULL) {\r
+ FreePool (HelpString);\r
+ HelpString = NULL;\r
+ }\r
+\r
+ HelpLine = ProcessHelpString (StringPtr, &HelpString, &EachLineWidth, RowCount);\r
+ FreePool (StringPtr);\r
+\r
+ if (HelpLine > RowCount) {\r
+ MultiHelpPage = TRUE;\r
+ StringPtr = GetToken (STRING_TOKEN (ADJUST_HELP_PAGE_UP), gHiiHandle);\r
+ if (HelpHeaderString != NULL) {\r
+ FreePool (HelpHeaderString);\r
+ HelpHeaderString = NULL;\r
+ }\r
+\r
+ HelpHeaderLine = ProcessHelpString (StringPtr, &HelpHeaderString, &HeaderLineWidth, 0);\r
+ FreePool (StringPtr);\r
+ StringPtr = GetToken (STRING_TOKEN (ADJUST_HELP_PAGE_DOWN), gHiiHandle);\r
+ if (HelpBottomString != NULL) {\r
+ FreePool (HelpBottomString);\r
+ HelpBottomString = NULL;\r
+ }\r
+\r
+ HelpBottomLine = ProcessHelpString (StringPtr, &HelpBottomString, &BottomLineWidth, 0);\r
+ FreePool (StringPtr);\r
+ //\r
+ // Calculate the help page count.\r
+ //\r
+ if (HelpLine > 2 * RowCount - 2) {\r
+ HelpPageCount = (HelpLine - RowCount + 1) / (RowCount - 2) + 1;\r
+ if ((HelpLine - RowCount + 1) % (RowCount - 2) != 0) {\r
+ HelpPageCount += 1;\r
+ }\r
+ } else {\r
+ HelpPageCount = 2;\r
}\r
} else {\r
- HelpPageCount = 2;\r
+ MultiHelpPage = FALSE;\r
}\r
- } else {\r
- MultiHelpPage = FALSE;\r
}\r
- }\r
\r
- //\r
- // Check whether need to show the 'More(U/u)' at the begin.\r
- // Base on current direct info, here shows aligned to the right side of the column.\r
- // If the direction is multi line and aligned to right side may have problem, so\r
- // add ASSERT code here.\r
- //\r
- if (HelpPageIndex > 0) {\r
- gST->ConOut->SetAttribute (gST->ConOut, GetInfoTextColor ());\r
- for (Index = 0; Index < HelpHeaderLine; Index++) {\r
- ASSERT (HelpHeaderLine == 1);\r
- ASSERT (GetStringWidth (HelpHeaderString) / 2 < ((UINT32) gHelpBlockWidth - 1));\r
- PrintStringAtWithWidth (\r
- gStatementDimensions.RightColumn - gHelpBlockWidth,\r
- Index + TopRow,\r
- gEmptyString,\r
- gHelpBlockWidth\r
- );\r
- PrintStringAt (\r
- gStatementDimensions.RightColumn - GetStringWidth (HelpHeaderString) / 2 - 1,\r
- Index + TopRow,\r
- &HelpHeaderString[Index * HeaderLineWidth]\r
- );\r
+ //\r
+ // Check whether need to show the 'More(U/u)' at the begin.\r
+ // Base on current direct info, here shows aligned to the right side of the column.\r
+ // If the direction is multi line and aligned to right side may have problem, so\r
+ // add ASSERT code here.\r
+ //\r
+ if (HelpPageIndex > 0) {\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetInfoTextColor ());\r
+ for (Index = 0; Index < HelpHeaderLine; Index++) {\r
+ ASSERT (HelpHeaderLine == 1);\r
+ ASSERT (GetStringWidth (HelpHeaderString) / 2 < ((UINT32)gHelpBlockWidth - 1));\r
+ PrintStringAtWithWidth (\r
+ gStatementDimensions.RightColumn - gHelpBlockWidth,\r
+ Index + TopRow,\r
+ gEmptyString,\r
+ gHelpBlockWidth\r
+ );\r
+ PrintStringAt (\r
+ gStatementDimensions.RightColumn - GetStringWidth (HelpHeaderString) / 2 - 1,\r
+ Index + TopRow,\r
+ &HelpHeaderString[Index * HeaderLineWidth]\r
+ );\r
+ }\r
}\r
- }\r
\r
- gST->ConOut->SetAttribute (gST->ConOut, GetHelpTextColor ());\r
- //\r
- // Print the help string info.\r
- //\r
- if (!MultiHelpPage) {\r
- for (Index = 0; Index < HelpLine; Index++) {\r
- PrintStringAtWithWidth (\r
- gStatementDimensions.RightColumn - gHelpBlockWidth,\r
- Index + TopRow,\r
- &HelpString[Index * EachLineWidth],\r
- gHelpBlockWidth\r
- );\r
- }\r
- for (; Index < RowCount; Index ++) {\r
- PrintStringAtWithWidth (\r
- gStatementDimensions.RightColumn - gHelpBlockWidth,\r
- Index + TopRow,\r
- gEmptyString,\r
- gHelpBlockWidth\r
- );\r
- }\r
- gST->ConOut->SetCursorPosition(gST->ConOut, gStatementDimensions.RightColumn-1, BottomRow);\r
- } else {\r
- if (HelpPageIndex == 0) {\r
- for (Index = 0; Index < RowCount - HelpBottomLine; Index++) {\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetHelpTextColor ());\r
+ //\r
+ // Print the help string info.\r
+ //\r
+ if (!MultiHelpPage) {\r
+ for (Index = 0; Index < HelpLine; Index++) {\r
PrintStringAtWithWidth (\r
gStatementDimensions.RightColumn - gHelpBlockWidth,\r
Index + TopRow,\r
gHelpBlockWidth\r
);\r
}\r
- } else {\r
- for (Index = 0; (Index < RowCount - HelpBottomLine - HelpHeaderLine) &&\r
- (Index + HelpPageIndex * (RowCount - 2) + 1 < HelpLine); Index++) {\r
+\r
+ for ( ; Index < RowCount; Index++) {\r
PrintStringAtWithWidth (\r
gStatementDimensions.RightColumn - gHelpBlockWidth,\r
- Index + TopRow + HelpHeaderLine,\r
- &HelpString[(Index + HelpPageIndex * (RowCount - 2) + 1)* EachLineWidth],\r
+ Index + TopRow,\r
+ gEmptyString,\r
gHelpBlockWidth\r
);\r
}\r
- if (HelpPageIndex == HelpPageCount - 1) {\r
- for (; Index < RowCount - HelpHeaderLine; Index ++) {\r
+\r
+ gST->ConOut->SetCursorPosition (gST->ConOut, gStatementDimensions.RightColumn-1, BottomRow);\r
+ } else {\r
+ if (HelpPageIndex == 0) {\r
+ for (Index = 0; Index < RowCount - HelpBottomLine; Index++) {\r
+ PrintStringAtWithWidth (\r
+ gStatementDimensions.RightColumn - gHelpBlockWidth,\r
+ Index + TopRow,\r
+ &HelpString[Index * EachLineWidth],\r
+ gHelpBlockWidth\r
+ );\r
+ }\r
+ } else {\r
+ for (Index = 0; (Index < RowCount - HelpBottomLine - HelpHeaderLine) &&\r
+ (Index + HelpPageIndex * (RowCount - 2) + 1 < HelpLine); Index++)\r
+ {\r
PrintStringAtWithWidth (\r
gStatementDimensions.RightColumn - gHelpBlockWidth,\r
Index + TopRow + HelpHeaderLine,\r
- gEmptyString,\r
+ &HelpString[(Index + HelpPageIndex * (RowCount - 2) + 1)* EachLineWidth],\r
gHelpBlockWidth\r
);\r
}\r
- gST->ConOut->SetCursorPosition(gST->ConOut, gStatementDimensions.RightColumn-1, BottomRow);\r
- }\r
- }\r
- }\r
-\r
- //\r
- // Check whether need to print the 'More(D/d)' at the bottom.\r
- // Base on current direct info, here shows aligned to the right side of the column.\r
- // If the direction is multi line and aligned to right side may have problem, so\r
- // add ASSERT code here.\r
- //\r
- if (HelpPageIndex < HelpPageCount - 1 && MultiHelpPage) {\r
- gST->ConOut->SetAttribute (gST->ConOut, GetInfoTextColor ());\r
- for (Index = 0; Index < HelpBottomLine; Index++) {\r
- ASSERT (HelpBottomLine == 1);\r
- ASSERT (GetStringWidth (HelpBottomString) / 2 < ((UINT32) gHelpBlockWidth - 1));\r
- PrintStringAtWithWidth (\r
- gStatementDimensions.RightColumn - gHelpBlockWidth,\r
- BottomRow + Index - HelpBottomLine + 1,\r
- gEmptyString,\r
- gHelpBlockWidth\r
- );\r
- PrintStringAt (\r
- gStatementDimensions.RightColumn - GetStringWidth (HelpBottomString) / 2 - 1,\r
- BottomRow + Index - HelpBottomLine + 1,\r
- &HelpBottomString[Index * BottomLineWidth]\r
- );\r
- }\r
- }\r
- //\r
- // Reset this flag every time we finish using it.\r
- //\r
- Repaint = FALSE;\r
- NewLine = FALSE;\r
- break;\r
\r
- case CfPrepareToReadKey:\r
- ControlFlag = CfReadKey;\r
- ScreenOperation = UiNoOperation;\r
- break;\r
-\r
- case CfReadKey:\r
- ControlFlag = CfScreenOperation;\r
+ if (HelpPageIndex == HelpPageCount - 1) {\r
+ for ( ; Index < RowCount - HelpHeaderLine; Index++) {\r
+ PrintStringAtWithWidth (\r
+ gStatementDimensions.RightColumn - gHelpBlockWidth,\r
+ Index + TopRow + HelpHeaderLine,\r
+ gEmptyString,\r
+ gHelpBlockWidth\r
+ );\r
+ }\r
\r
- //\r
- // Wait for user's selection\r
- //\r
- while (TRUE) {\r
- Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
- if (!EFI_ERROR (Status)) {\r
- EventType = UIEventKey;\r
- break;\r
+ gST->ConOut->SetCursorPosition (gST->ConOut, gStatementDimensions.RightColumn-1, BottomRow);\r
+ }\r
+ }\r
}\r
\r
//\r
- // If we encounter error, continue to read another key in.\r
+ // Check whether need to print the 'More(D/d)' at the bottom.\r
+ // Base on current direct info, here shows aligned to the right side of the column.\r
+ // If the direction is multi line and aligned to right side may have problem, so\r
+ // add ASSERT code here.\r
//\r
- if (Status != EFI_NOT_READY) {\r
- continue;\r
+ if ((HelpPageIndex < HelpPageCount - 1) && MultiHelpPage) {\r
+ gST->ConOut->SetAttribute (gST->ConOut, GetInfoTextColor ());\r
+ for (Index = 0; Index < HelpBottomLine; Index++) {\r
+ ASSERT (HelpBottomLine == 1);\r
+ ASSERT (GetStringWidth (HelpBottomString) / 2 < ((UINT32)gHelpBlockWidth - 1));\r
+ PrintStringAtWithWidth (\r
+ gStatementDimensions.RightColumn - gHelpBlockWidth,\r
+ BottomRow + Index - HelpBottomLine + 1,\r
+ gEmptyString,\r
+ gHelpBlockWidth\r
+ );\r
+ PrintStringAt (\r
+ gStatementDimensions.RightColumn - GetStringWidth (HelpBottomString) / 2 - 1,\r
+ BottomRow + Index - HelpBottomLine + 1,\r
+ &HelpBottomString[Index * BottomLineWidth]\r
+ );\r
+ }\r
}\r
\r
- EventType = UiWaitForEvent(gST->ConIn->WaitForKey);\r
- if (EventType == UIEventKey) {\r
- gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
- }\r
+ //\r
+ // Reset this flag every time we finish using it.\r
+ //\r
+ Repaint = FALSE;\r
+ NewLine = FALSE;\r
break;\r
- }\r
\r
- if (EventType == UIEventDriver) {\r
- gMisMatch = TRUE;\r
- gUserInput->Action = BROWSER_ACTION_NONE;\r
- ControlFlag = CfExit;\r
+ case CfPrepareToReadKey:\r
+ ControlFlag = CfReadKey;\r
+ ScreenOperation = UiNoOperation;\r
break;\r
- }\r
\r
- if (EventType == UIEventTimeOut) {\r
- gUserInput->Action = BROWSER_ACTION_FORM_EXIT;\r
- ControlFlag = CfExit;\r
- break;\r
- }\r
+ case CfReadKey:\r
+ ControlFlag = CfScreenOperation;\r
+\r
+ //\r
+ // Wait for user's selection\r
+ //\r
+ while (TRUE) {\r
+ Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
+ if (!EFI_ERROR (Status)) {\r
+ EventType = UIEventKey;\r
+ break;\r
+ }\r
+\r
+ //\r
+ // If we encounter error, continue to read another key in.\r
+ //\r
+ if (Status != EFI_NOT_READY) {\r
+ continue;\r
+ }\r
+\r
+ EventType = UiWaitForEvent (gST->ConIn->WaitForKey);\r
+ if (EventType == UIEventKey) {\r
+ gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
+ }\r
\r
- switch (Key.UnicodeChar) {\r
- case CHAR_CARRIAGE_RETURN:\r
- if(MenuOption == NULL || MenuOption->GrayOut || MenuOption->ReadOnly) {\r
- ControlFlag = CfReadKey;\r
break;\r
}\r
\r
- ScreenOperation = UiSelect;\r
- gDirection = 0;\r
- break;\r
+ if (EventType == UIEventDriver) {\r
+ gMisMatch = TRUE;\r
+ gUserInput->Action = BROWSER_ACTION_NONE;\r
+ ControlFlag = CfExit;\r
+ break;\r
+ }\r
\r
- //\r
- // We will push the adjustment of these numeric values directly to the input handler\r
- // NOTE: we won't handle manual input numeric\r
- //\r
- case '+':\r
- case '-':\r
- //\r
- // If the screen has no menu items, and the user didn't select UiReset\r
- // ignore the selection and go back to reading keys.\r
- //\r
- ASSERT(MenuOption != NULL);\r
- if(IsListEmpty (&gMenuOption) || MenuOption->GrayOut || MenuOption->ReadOnly) {\r
- ControlFlag = CfReadKey;\r
+ if (EventType == UIEventTimeOut) {\r
+ gUserInput->Action = BROWSER_ACTION_FORM_EXIT;\r
+ ControlFlag = CfExit;\r
break;\r
}\r
\r
- Statement = MenuOption->ThisTag;\r
- if ((Statement->OpCode->OpCode == EFI_IFR_DATE_OP)\r
- || (Statement->OpCode->OpCode == EFI_IFR_TIME_OP)\r
- || ((Statement->OpCode->OpCode == EFI_IFR_NUMERIC_OP) && (GetFieldFromNum(Statement->OpCode) != 0))\r
- ){\r
- if (Key.UnicodeChar == '+') {\r
- gDirection = SCAN_RIGHT;\r
- } else {\r
- gDirection = SCAN_LEFT;\r
- }\r
+ switch (Key.UnicodeChar) {\r
+ case CHAR_CARRIAGE_RETURN:\r
+ if ((MenuOption == NULL) || MenuOption->GrayOut || MenuOption->ReadOnly) {\r
+ ControlFlag = CfReadKey;\r
+ break;\r
+ }\r
\r
- Status = ProcessOptions (MenuOption, TRUE, &OptionString, TRUE);\r
- if (OptionString != NULL) {\r
- FreePool (OptionString);\r
- }\r
- if (EFI_ERROR (Status)) {\r
+ ScreenOperation = UiSelect;\r
+ gDirection = 0;\r
+ break;\r
+\r
+ //\r
+ // We will push the adjustment of these numeric values directly to the input handler\r
+ // NOTE: we won't handle manual input numeric\r
+ //\r
+ case '+':\r
+ case '-':\r
//\r
- // Repaint to clear possible error prompt pop-up\r
+ // If the screen has no menu items, and the user didn't select UiReset\r
+ // ignore the selection and go back to reading keys.\r
//\r
- Repaint = TRUE;\r
- NewLine = TRUE;\r
- } else {\r
- ControlFlag = CfExit;\r
- }\r
- }\r
- break;\r
+ ASSERT (MenuOption != NULL);\r
+ if (IsListEmpty (&gMenuOption) || MenuOption->GrayOut || MenuOption->ReadOnly) {\r
+ ControlFlag = CfReadKey;\r
+ break;\r
+ }\r
\r
- case '^':\r
- ScreenOperation = UiUp;\r
- break;\r
+ Statement = MenuOption->ThisTag;\r
+ if ( (Statement->OpCode->OpCode == EFI_IFR_DATE_OP)\r
+ || (Statement->OpCode->OpCode == EFI_IFR_TIME_OP)\r
+ || ((Statement->OpCode->OpCode == EFI_IFR_NUMERIC_OP) && (GetFieldFromNum (Statement->OpCode) != 0))\r
+ )\r
+ {\r
+ if (Key.UnicodeChar == '+') {\r
+ gDirection = SCAN_RIGHT;\r
+ } else {\r
+ gDirection = SCAN_LEFT;\r
+ }\r
+\r
+ Status = ProcessOptions (MenuOption, TRUE, &OptionString, TRUE);\r
+ if (OptionString != NULL) {\r
+ FreePool (OptionString);\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ //\r
+ // Repaint to clear possible error prompt pop-up\r
+ //\r
+ Repaint = TRUE;\r
+ NewLine = TRUE;\r
+ } else {\r
+ ControlFlag = CfExit;\r
+ }\r
+ }\r
\r
- case 'V':\r
- case 'v':\r
- ScreenOperation = UiDown;\r
- break;\r
+ break;\r
\r
- case ' ':\r
- if(IsListEmpty (&gMenuOption)) {\r
- ControlFlag = CfReadKey;\r
- break;\r
- }\r
+ case '^':\r
+ ScreenOperation = UiUp;\r
+ break;\r
\r
- ASSERT(MenuOption != NULL);\r
- if (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_CHECKBOX_OP && !MenuOption->GrayOut && !MenuOption->ReadOnly) {\r
- ScreenOperation = UiSelect;\r
- }\r
- break;\r
+ case 'V':\r
+ case 'v':\r
+ ScreenOperation = UiDown;\r
+ break;\r
\r
- case 'D':\r
- case 'd':\r
- if (!MultiHelpPage) {\r
- ControlFlag = CfReadKey;\r
- break;\r
- }\r
- ControlFlag = CfUpdateHelpString;\r
- HelpPageIndex = HelpPageIndex < HelpPageCount - 1 ? HelpPageIndex + 1 : HelpPageCount - 1;\r
- break;\r
+ case ' ':\r
+ if (IsListEmpty (&gMenuOption)) {\r
+ ControlFlag = CfReadKey;\r
+ break;\r
+ }\r
\r
- case 'U':\r
- case 'u':\r
- if (!MultiHelpPage) {\r
- ControlFlag = CfReadKey;\r
- break;\r
+ ASSERT (MenuOption != NULL);\r
+ if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_CHECKBOX_OP) && !MenuOption->GrayOut && !MenuOption->ReadOnly) {\r
+ ScreenOperation = UiSelect;\r
+ }\r
+\r
+ break;\r
+\r
+ case 'D':\r
+ case 'd':\r
+ if (!MultiHelpPage) {\r
+ ControlFlag = CfReadKey;\r
+ break;\r
+ }\r
+\r
+ ControlFlag = CfUpdateHelpString;\r
+ HelpPageIndex = HelpPageIndex < HelpPageCount - 1 ? HelpPageIndex + 1 : HelpPageCount - 1;\r
+ break;\r
+\r
+ case 'U':\r
+ case 'u':\r
+ if (!MultiHelpPage) {\r
+ ControlFlag = CfReadKey;\r
+ break;\r
+ }\r
+\r
+ ControlFlag = CfUpdateHelpString;\r
+ HelpPageIndex = HelpPageIndex > 0 ? HelpPageIndex - 1 : 0;\r
+ break;\r
+\r
+ case CHAR_NULL:\r
+ for (Index = 0; Index < mScanCodeNumber; Index++) {\r
+ if (Key.ScanCode == gScanCodeToOperation[Index].ScanCode) {\r
+ ScreenOperation = gScanCodeToOperation[Index].ScreenOperation;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (((FormData->Attribute & HII_DISPLAY_MODAL) != 0) && ((Key.ScanCode == SCAN_ESC) || (Index == mScanCodeNumber))) {\r
+ //\r
+ // ModalForm has no ESC key and Hot Key.\r
+ //\r
+ ControlFlag = CfReadKey;\r
+ } else if (Index == mScanCodeNumber) {\r
+ //\r
+ // Check whether Key matches the registered hot key.\r
+ //\r
+ HotKey = NULL;\r
+ HotKey = GetHotKeyFromRegisterList (&Key);\r
+ if (HotKey != NULL) {\r
+ ScreenOperation = UiHotKey;\r
+ }\r
+ }\r
+\r
+ break;\r
}\r
- ControlFlag = CfUpdateHelpString;\r
- HelpPageIndex = HelpPageIndex > 0 ? HelpPageIndex - 1 : 0;\r
+\r
break;\r
\r
- case CHAR_NULL:\r
- for (Index = 0; Index < mScanCodeNumber; Index++) {\r
- if (Key.ScanCode == gScanCodeToOperation[Index].ScanCode) {\r
- ScreenOperation = gScanCodeToOperation[Index].ScreenOperation;\r
+ case CfScreenOperation:\r
+ if ((ScreenOperation != UiReset) && (ScreenOperation != UiHotKey)) {\r
+ //\r
+ // If the screen has no menu items, and the user didn't select UiReset or UiHotKey\r
+ // ignore the selection and go back to reading keys.\r
+ //\r
+ if (IsListEmpty (&gMenuOption)) {\r
+ ControlFlag = CfReadKey;\r
break;\r
}\r
}\r
\r
- if (((FormData->Attribute & HII_DISPLAY_MODAL) != 0) && (Key.ScanCode == SCAN_ESC || Index == mScanCodeNumber)) {\r
- //\r
- // ModalForm has no ESC key and Hot Key.\r
- //\r
- ControlFlag = CfReadKey;\r
- } else if (Index == mScanCodeNumber) {\r
- //\r
- // Check whether Key matches the registered hot key.\r
- //\r
- HotKey = NULL;\r
- HotKey = GetHotKeyFromRegisterList (&Key);\r
- if (HotKey != NULL) {\r
- ScreenOperation = UiHotKey;\r
+ for (Index = 0;\r
+ Index < ARRAY_SIZE (gScreenOperationToControlFlag);\r
+ Index++\r
+ )\r
+ {\r
+ if (ScreenOperation == gScreenOperationToControlFlag[Index].ScreenOperation) {\r
+ ControlFlag = gScreenOperationToControlFlag[Index].ControlFlag;\r
+ break;\r
}\r
}\r
+\r
break;\r
- }\r
- break;\r
\r
- case CfScreenOperation:\r
- if ((ScreenOperation != UiReset) && (ScreenOperation != UiHotKey)) {\r
- //\r
- // If the screen has no menu items, and the user didn't select UiReset or UiHotKey\r
- // ignore the selection and go back to reading keys.\r
- //\r
- if (IsListEmpty (&gMenuOption)) {\r
- ControlFlag = CfReadKey;\r
- break;\r
- }\r
- }\r
+ case CfUiSelect:\r
+ ControlFlag = CfRepaint;\r
\r
- for (Index = 0;\r
- Index < ARRAY_SIZE (gScreenOperationToControlFlag);\r
- Index++\r
- ) {\r
- if (ScreenOperation == gScreenOperationToControlFlag[Index].ScreenOperation) {\r
- ControlFlag = gScreenOperationToControlFlag[Index].ControlFlag;\r
+ ASSERT (MenuOption != NULL);\r
+ Statement = MenuOption->ThisTag;\r
+ if (Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) {\r
break;\r
}\r
- }\r
- break;\r
\r
- case CfUiSelect:\r
- ControlFlag = CfRepaint;\r
+ switch (Statement->OpCode->OpCode) {\r
+ case EFI_IFR_REF_OP:\r
+ case EFI_IFR_ACTION_OP:\r
+ case EFI_IFR_RESET_BUTTON_OP:\r
+ ControlFlag = CfExit;\r
+ break;\r
\r
- ASSERT(MenuOption != NULL);\r
- Statement = MenuOption->ThisTag;\r
- if (Statement->OpCode->OpCode == EFI_IFR_TEXT_OP) {\r
- break;\r
- }\r
+ default:\r
+ //\r
+ // Editable Questions: oneof, ordered list, checkbox, numeric, string, password\r
+ //\r
+ RefreshKeyHelp (gFormData, Statement, TRUE);\r
+ Status = ProcessOptions (MenuOption, TRUE, &OptionString, TRUE);\r
+\r
+ if (OptionString != NULL) {\r
+ FreePool (OptionString);\r
+ }\r
+\r
+ if (EFI_ERROR (Status)) {\r
+ Repaint = TRUE;\r
+ NewLine = TRUE;\r
+ RefreshKeyHelp (gFormData, Statement, FALSE);\r
+ break;\r
+ } else {\r
+ ControlFlag = CfExit;\r
+ break;\r
+ }\r
+ }\r
\r
- switch (Statement->OpCode->OpCode) {\r
- case EFI_IFR_REF_OP:\r
- case EFI_IFR_ACTION_OP:\r
- case EFI_IFR_RESET_BUTTON_OP:\r
- ControlFlag = CfExit;\r
break;\r
\r
- default:\r
+ case CfUiReset:\r
//\r
- // Editable Questions: oneof, ordered list, checkbox, numeric, string, password\r
+ // We come here when someone press ESC\r
+ // If the policy is not exit front page when user press ESC, process here.\r
//\r
- RefreshKeyHelp (gFormData, Statement, TRUE);\r
- Status = ProcessOptions (MenuOption, TRUE, &OptionString, TRUE);\r
-\r
- if (OptionString != NULL) {\r
- FreePool (OptionString);\r
- }\r
-\r
- if (EFI_ERROR (Status)) {\r
- Repaint = TRUE;\r
- NewLine = TRUE;\r
- RefreshKeyHelp (gFormData, Statement, FALSE);\r
- break;\r
- } else {\r
- ControlFlag = CfExit;\r
+ if (!FormExitPolicy ()) {\r
+ Repaint = TRUE;\r
+ NewLine = TRUE;\r
+ ControlFlag = CfRepaint;\r
break;\r
}\r
- }\r
- break;\r
\r
- case CfUiReset:\r
- //\r
- // We come here when someone press ESC\r
- // If the policy is not exit front page when user press ESC, process here.\r
- //\r
- if (!FormExitPolicy()) {\r
- Repaint = TRUE;\r
- NewLine = TRUE;\r
- ControlFlag = CfRepaint;\r
+ gUserInput->Action = BROWSER_ACTION_FORM_EXIT;\r
+ ControlFlag = CfExit;\r
break;\r
- }\r
\r
- gUserInput->Action = BROWSER_ACTION_FORM_EXIT;\r
- ControlFlag = CfExit;\r
- break;\r
+ case CfUiHotKey:\r
+ ControlFlag = CfRepaint;\r
\r
- case CfUiHotKey:\r
- ControlFlag = CfRepaint;\r
+ ASSERT (HotKey != NULL);\r
\r
- ASSERT (HotKey != NULL);\r
+ if (FxConfirmPopup (HotKey->Action)) {\r
+ gUserInput->Action = HotKey->Action;\r
+ if ((HotKey->Action & BROWSER_ACTION_DEFAULT) == BROWSER_ACTION_DEFAULT) {\r
+ gUserInput->DefaultId = HotKey->DefaultId;\r
+ }\r
\r
- if (FxConfirmPopup(HotKey->Action)) {\r
- gUserInput->Action = HotKey->Action;\r
- if ((HotKey->Action & BROWSER_ACTION_DEFAULT) == BROWSER_ACTION_DEFAULT) {\r
- gUserInput->DefaultId = HotKey->DefaultId;\r
+ ControlFlag = CfExit;\r
+ } else {\r
+ Repaint = TRUE;\r
+ NewLine = TRUE;\r
+ ControlFlag = CfRepaint;\r
}\r
- ControlFlag = CfExit;\r
- } else {\r
- Repaint = TRUE;\r
- NewLine = TRUE;\r
- ControlFlag = CfRepaint;\r
- }\r
\r
- break;\r
+ break;\r
\r
- case CfUiLeft:\r
- ControlFlag = CfRepaint;\r
- ASSERT(MenuOption != NULL);\r
- if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_DATE_OP) || (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
- if (MenuOption->Sequence != 0) {\r
- //\r
- // In the middle or tail of the Date/Time op-code set, go left.\r
- //\r
- ASSERT(NewPos != NULL);\r
- NewPos = NewPos->BackLink;\r
+ case CfUiLeft:\r
+ ControlFlag = CfRepaint;\r
+ ASSERT (MenuOption != NULL);\r
+ if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_DATE_OP) || (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
+ if (MenuOption->Sequence != 0) {\r
+ //\r
+ // In the middle or tail of the Date/Time op-code set, go left.\r
+ //\r
+ ASSERT (NewPos != NULL);\r
+ NewPos = NewPos->BackLink;\r
+ }\r
}\r
- }\r
- break;\r
\r
- case CfUiRight:\r
- ControlFlag = CfRepaint;\r
- ASSERT(MenuOption != NULL);\r
- if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_DATE_OP) || (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
- if (MenuOption->Sequence != 2) {\r
- //\r
- // In the middle or tail of the Date/Time op-code set, go left.\r
- //\r
- ASSERT(NewPos != NULL);\r
- NewPos = NewPos->ForwardLink;\r
+ break;\r
+\r
+ case CfUiRight:\r
+ ControlFlag = CfRepaint;\r
+ ASSERT (MenuOption != NULL);\r
+ if ((MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_DATE_OP) || (MenuOption->ThisTag->OpCode->OpCode == EFI_IFR_TIME_OP)) {\r
+ if (MenuOption->Sequence != 2) {\r
+ //\r
+ // In the middle or tail of the Date/Time op-code set, go left.\r
+ //\r
+ ASSERT (NewPos != NULL);\r
+ NewPos = NewPos->ForwardLink;\r
+ }\r
}\r
- }\r
- break;\r
\r
- case CfUiUp:\r
- ControlFlag = CfRepaint;\r
- NewLine = TRUE;\r
+ break;\r
\r
- SavedListEntry = NewPos;\r
- ASSERT(NewPos != NULL);\r
+ case CfUiUp:\r
+ ControlFlag = CfRepaint;\r
+ NewLine = TRUE;\r
\r
- MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
- ASSERT (MenuOption != NULL);\r
+ SavedListEntry = NewPos;\r
+ ASSERT (NewPos != NULL);\r
\r
- //\r
- // Adjust Date/Time position before we advance forward.\r
- //\r
- AdjustDateAndTimePosition (TRUE, &NewPos);\r
+ MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
+ ASSERT (MenuOption != NULL);\r
\r
- NewPos = NewPos->BackLink;\r
- //\r
- // Find next selectable menu or the first menu beyond current form.\r
- //\r
- Difference = MoveToNextStatement (TRUE, &NewPos, MenuOption->Row - TopRow, FALSE);\r
- if (Difference < 0) {\r
//\r
- // We hit the begining MenuOption that can be focused\r
- // so we simply scroll to the top.\r
+ // Adjust Date/Time position before we advance forward.\r
//\r
- Repaint = TRUE;\r
- if (TopOfScreen != gMenuOption.ForwardLink || SkipValue != 0) {\r
- TopOfScreen = gMenuOption.ForwardLink;\r
- NewPos = SavedListEntry;\r
- SkipValue = 0;\r
- } else {\r
- //\r
- // Scroll up to the last page when we have arrived at top page.\r
- //\r
- TopOfScreen = FindTopOfScreenMenu (gMenuOption.BackLink, BottomRow - TopRow, &SkipValue);\r
- NewPos = gMenuOption.BackLink;\r
- MoveToNextStatement (TRUE, &NewPos, BottomRow - TopRow, TRUE);\r
- }\r
- } else {\r
- NextMenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
-\r
- if (MenuOption->Row < TopRow + Difference + NextMenuOption->Skip) {\r
- //\r
- // Previous focus MenuOption is above the TopOfScreen, so we need to scroll\r
- //\r
- TopOfScreen = NewPos;\r
- Repaint = TRUE;\r
- SkipValue = 0;\r
- }\r
+ AdjustDateAndTimePosition (TRUE, &NewPos);\r
\r
+ NewPos = NewPos->BackLink;\r
//\r
- // Check whether new highlight menu is selectable, if not, keep highlight on the old one.\r
- //\r
- // BottomRow - TopRow + 1 means the total rows current forms supported.\r
- // Difference + NextMenuOption->Skip + 1 means the distance between last highlight menu\r
- // and new top menu. New top menu will all shows in next form, but last highlight menu\r
- // may only shows 1 line. + 1 at right part means at least need to keep 1 line for the\r
- // last highlight menu.\r
+ // Find next selectable menu or the first menu beyond current form.\r
//\r
- if (!IsSelectable(NextMenuOption) && IsSelectable(MenuOption) &&\r
- (BottomRow - TopRow + 1 >= Difference + NextMenuOption->Skip + 1)) {\r
- NewPos = SavedListEntry;\r
- }\r
- }\r
-\r
- UpdateStatusBar (INPUT_ERROR, FALSE);\r
+ Difference = MoveToNextStatement (TRUE, &NewPos, MenuOption->Row - TopRow, FALSE);\r
+ if (Difference < 0) {\r
+ //\r
+ // We hit the begining MenuOption that can be focused\r
+ // so we simply scroll to the top.\r
+ //\r
+ Repaint = TRUE;\r
+ if ((TopOfScreen != gMenuOption.ForwardLink) || (SkipValue != 0)) {\r
+ TopOfScreen = gMenuOption.ForwardLink;\r
+ NewPos = SavedListEntry;\r
+ SkipValue = 0;\r
+ } else {\r
+ //\r
+ // Scroll up to the last page when we have arrived at top page.\r
+ //\r
+ TopOfScreen = FindTopOfScreenMenu (gMenuOption.BackLink, BottomRow - TopRow, &SkipValue);\r
+ NewPos = gMenuOption.BackLink;\r
+ MoveToNextStatement (TRUE, &NewPos, BottomRow - TopRow, TRUE);\r
+ }\r
+ } else {\r
+ NextMenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
\r
- //\r
- // If we encounter a Date/Time op-code set, rewind to the first op-code of the set.\r
- //\r
- AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
- AdjustDateAndTimePosition (TRUE, &NewPos);\r
+ if (MenuOption->Row < TopRow + Difference + NextMenuOption->Skip) {\r
+ //\r
+ // Previous focus MenuOption is above the TopOfScreen, so we need to scroll\r
+ //\r
+ TopOfScreen = NewPos;\r
+ Repaint = TRUE;\r
+ SkipValue = 0;\r
+ }\r
\r
- UpdateHighlightMenuInfo(NewPos, TopOfScreen, SkipValue);\r
- break;\r
+ //\r
+ // Check whether new highlight menu is selectable, if not, keep highlight on the old one.\r
+ //\r
+ // BottomRow - TopRow + 1 means the total rows current forms supported.\r
+ // Difference + NextMenuOption->Skip + 1 means the distance between last highlight menu\r
+ // and new top menu. New top menu will all shows in next form, but last highlight menu\r
+ // may only shows 1 line. + 1 at right part means at least need to keep 1 line for the\r
+ // last highlight menu.\r
+ //\r
+ if (!IsSelectable (NextMenuOption) && IsSelectable (MenuOption) &&\r
+ (BottomRow - TopRow + 1 >= Difference + NextMenuOption->Skip + 1))\r
+ {\r
+ NewPos = SavedListEntry;\r
+ }\r
+ }\r
\r
- case CfUiPageUp:\r
- //\r
- // SkipValue means lines is skipped when show the top menu option.\r
- //\r
- ControlFlag = CfRepaint;\r
- NewLine = TRUE;\r
- Repaint = TRUE;\r
+ UpdateStatusBar (INPUT_ERROR, FALSE);\r
\r
- Link = TopOfScreen;\r
- //\r
- // First minus the menu of the top screen, it's value is SkipValue.\r
- //\r
- if (SkipValue >= BottomRow - TopRow + 1) {\r
//\r
- // SkipValue > (BottomRow - TopRow + 1) means current menu has more than one\r
- // form of options to be show, so just update the SkipValue to show the next\r
- // parts of options.\r
+ // If we encounter a Date/Time op-code set, rewind to the first op-code of the set.\r
//\r
- SkipValue -= BottomRow - TopRow + 1;\r
- NewPos = TopOfScreen;\r
+ AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, &NewPos);\r
+\r
+ UpdateHighlightMenuInfo (NewPos, TopOfScreen, SkipValue);\r
break;\r
- } else {\r
- Index = (BottomRow + 1) - SkipValue - TopRow;\r
- }\r
\r
- TopOfScreen = FindTopOfScreenMenu(TopOfScreen, Index, &SkipValue);\r
- NewPos = TopOfScreen;\r
- MoveToNextStatement (FALSE, &NewPos, BottomRow - TopRow, FALSE);\r
+ case CfUiPageUp:\r
+ //\r
+ // SkipValue means lines is skipped when show the top menu option.\r
+ //\r
+ ControlFlag = CfRepaint;\r
+ NewLine = TRUE;\r
+ Repaint = TRUE;\r
\r
- UpdateStatusBar (INPUT_ERROR, FALSE);\r
+ Link = TopOfScreen;\r
+ //\r
+ // First minus the menu of the top screen, it's value is SkipValue.\r
+ //\r
+ if (SkipValue >= BottomRow - TopRow + 1) {\r
+ //\r
+ // SkipValue > (BottomRow - TopRow + 1) means current menu has more than one\r
+ // form of options to be show, so just update the SkipValue to show the next\r
+ // parts of options.\r
+ //\r
+ SkipValue -= BottomRow - TopRow + 1;\r
+ NewPos = TopOfScreen;\r
+ break;\r
+ } else {\r
+ Index = (BottomRow + 1) - SkipValue - TopRow;\r
+ }\r
\r
- //\r
- // If we encounter a Date/Time op-code set, rewind to the first op-code of the set.\r
- // Don't do this when we are already in the first page.\r
- //\r
- AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
- AdjustDateAndTimePosition (TRUE, &NewPos);\r
+ TopOfScreen = FindTopOfScreenMenu (TopOfScreen, Index, &SkipValue);\r
+ NewPos = TopOfScreen;\r
+ MoveToNextStatement (FALSE, &NewPos, BottomRow - TopRow, FALSE);\r
\r
- UpdateHighlightMenuInfo(NewPos, TopOfScreen, SkipValue);\r
- break;\r
+ UpdateStatusBar (INPUT_ERROR, FALSE);\r
\r
- case CfUiPageDown:\r
- //\r
- // SkipValue means lines is skipped when show the top menu option.\r
- //\r
- ControlFlag = CfRepaint;\r
- NewLine = TRUE;\r
- Repaint = TRUE;\r
+ //\r
+ // If we encounter a Date/Time op-code set, rewind to the first op-code of the set.\r
+ // Don't do this when we are already in the first page.\r
+ //\r
+ AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, &NewPos);\r
\r
- Link = TopOfScreen;\r
- NextMenuOption = MENU_OPTION_FROM_LINK (Link);\r
- Index = TopRow + NextMenuOption->Skip - SkipValue;\r
- //\r
- // Count to the menu option which will show at the top of the next form.\r
- //\r
- while ((Index <= BottomRow + 1) && (Link->ForwardLink != &gMenuOption)) {\r
- Link = Link->ForwardLink;\r
- NextMenuOption = MENU_OPTION_FROM_LINK (Link);\r
- Index = Index + NextMenuOption->Skip;\r
- }\r
+ UpdateHighlightMenuInfo (NewPos, TopOfScreen, SkipValue);\r
+ break;\r
\r
- if ((Link->ForwardLink == &gMenuOption) && (Index <= BottomRow + 1)) {\r
+ case CfUiPageDown:\r
//\r
- // Highlight on the last menu which can be highlight.\r
+ // SkipValue means lines is skipped when show the top menu option.\r
//\r
- Repaint = FALSE;\r
- MoveToNextStatement (TRUE, &Link, Index - TopRow, TRUE);\r
- } else {\r
+ ControlFlag = CfRepaint;\r
+ NewLine = TRUE;\r
+ Repaint = TRUE;\r
+\r
+ Link = TopOfScreen;\r
+ NextMenuOption = MENU_OPTION_FROM_LINK (Link);\r
+ Index = TopRow + NextMenuOption->Skip - SkipValue;\r
//\r
- // Calculate the skip line for top of screen menu.\r
+ // Count to the menu option which will show at the top of the next form.\r
//\r
- if (Link == TopOfScreen) {\r
+ while ((Index <= BottomRow + 1) && (Link->ForwardLink != &gMenuOption)) {\r
+ Link = Link->ForwardLink;\r
+ NextMenuOption = MENU_OPTION_FROM_LINK (Link);\r
+ Index = Index + NextMenuOption->Skip;\r
+ }\r
+\r
+ if ((Link->ForwardLink == &gMenuOption) && (Index <= BottomRow + 1)) {\r
//\r
- // The top of screen menu option occupies the entire form.\r
+ // Highlight on the last menu which can be highlight.\r
//\r
- SkipValue += BottomRow - TopRow + 1;\r
+ Repaint = FALSE;\r
+ MoveToNextStatement (TRUE, &Link, Index - TopRow, TRUE);\r
} else {\r
- SkipValue = NextMenuOption->Skip - (Index - (BottomRow + 1));\r
+ //\r
+ // Calculate the skip line for top of screen menu.\r
+ //\r
+ if (Link == TopOfScreen) {\r
+ //\r
+ // The top of screen menu option occupies the entire form.\r
+ //\r
+ SkipValue += BottomRow - TopRow + 1;\r
+ } else {\r
+ SkipValue = NextMenuOption->Skip - (Index - (BottomRow + 1));\r
+ }\r
+\r
+ TopOfScreen = Link;\r
+ MenuOption = NULL;\r
+ //\r
+ // Move to the Next selectable menu.\r
+ //\r
+ MoveToNextStatement (FALSE, &Link, BottomRow - TopRow, TRUE);\r
}\r
- TopOfScreen = Link;\r
- MenuOption = NULL;\r
+\r
//\r
- // Move to the Next selectable menu.\r
+ // Save the menu as the next highlight menu.\r
//\r
- MoveToNextStatement (FALSE, &Link, BottomRow - TopRow, TRUE);\r
- }\r
-\r
- //\r
- // Save the menu as the next highlight menu.\r
- //\r
- NewPos = Link;\r
-\r
- UpdateStatusBar (INPUT_ERROR, FALSE);\r
-\r
- //\r
- // If we encounter a Date/Time op-code set, rewind to the first op-code of the set.\r
- // Don't do this when we are already in the last page.\r
- //\r
- AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
- AdjustDateAndTimePosition (TRUE, &NewPos);\r
+ NewPos = Link;\r
\r
- UpdateHighlightMenuInfo(NewPos, TopOfScreen, SkipValue);\r
- break;\r
+ UpdateStatusBar (INPUT_ERROR, FALSE);\r
\r
- case CfUiDown:\r
- //\r
- // SkipValue means lines is skipped when show the top menu option.\r
- // NewPos points to the menu which is highlighted now.\r
- //\r
- ControlFlag = CfRepaint;\r
- NewLine = TRUE;\r
+ //\r
+ // If we encounter a Date/Time op-code set, rewind to the first op-code of the set.\r
+ // Don't do this when we are already in the last page.\r
+ //\r
+ AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, &NewPos);\r
\r
- if (NewPos == TopOfScreen) {\r
- Temp2 = SkipValue;\r
- } else {\r
- Temp2 = 0;\r
- }\r
+ UpdateHighlightMenuInfo (NewPos, TopOfScreen, SkipValue);\r
+ break;\r
\r
- SavedListEntry = NewPos;\r
- //\r
- // Since the behavior of hitting the down arrow on a Date/Time op-code is intended\r
- // to be one that progresses to the next set of op-codes, we need to advance to the last\r
- // Date/Time op-code and leave the remaining logic in UiDown intact so the appropriate\r
- // checking can be done. The only other logic we need to introduce is that if a Date/Time\r
- // op-code is the last entry in the menu, we need to rewind back to the first op-code of\r
- // the Date/Time op-code.\r
- //\r
- AdjustDateAndTimePosition (FALSE, &NewPos);\r
+ case CfUiDown:\r
+ //\r
+ // SkipValue means lines is skipped when show the top menu option.\r
+ // NewPos points to the menu which is highlighted now.\r
+ //\r
+ ControlFlag = CfRepaint;\r
+ NewLine = TRUE;\r
\r
- MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
- NewPos = NewPos->ForwardLink;\r
- //\r
- // Find the next selectable menu.\r
- //\r
- if (MenuOption->Row + MenuOption->Skip - Temp2 > BottomRow + 1) {\r
- if (gMenuOption.ForwardLink == NewPos || &gMenuOption == NewPos) {\r
- Difference = -1;\r
+ if (NewPos == TopOfScreen) {\r
+ Temp2 = SkipValue;\r
} else {\r
- Difference = 0;\r
+ Temp2 = 0;\r
}\r
- } else {\r
- Difference = MoveToNextStatement (FALSE, &NewPos, BottomRow + 1 - (MenuOption->Row + MenuOption->Skip - Temp2), FALSE);\r
- }\r
- if (Difference < 0) {\r
+\r
+ SavedListEntry = NewPos;\r
//\r
- // Scroll to the first page.\r
+ // Since the behavior of hitting the down arrow on a Date/Time op-code is intended\r
+ // to be one that progresses to the next set of op-codes, we need to advance to the last\r
+ // Date/Time op-code and leave the remaining logic in UiDown intact so the appropriate\r
+ // checking can be done. The only other logic we need to introduce is that if a Date/Time\r
+ // op-code is the last entry in the menu, we need to rewind back to the first op-code of\r
+ // the Date/Time op-code.\r
//\r
- if (TopOfScreen != gMenuOption.ForwardLink || SkipValue != 0) {\r
- TopOfScreen = gMenuOption.ForwardLink;\r
- Repaint = TRUE;\r
- MenuOption = NULL;\r
- } else {\r
- MenuOption = MENU_OPTION_FROM_LINK (SavedListEntry);\r
- }\r
- NewPos = gMenuOption.ForwardLink;\r
- MoveToNextStatement (FALSE, &NewPos, BottomRow - TopRow, TRUE);\r
+ AdjustDateAndTimePosition (FALSE, &NewPos);\r
\r
- SkipValue = 0;\r
+ MenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
+ NewPos = NewPos->ForwardLink;\r
//\r
- // If we are at the end of the list and sitting on a Date/Time op, rewind to the head.\r
+ // Find the next selectable menu.\r
//\r
- AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
- AdjustDateAndTimePosition (TRUE, &NewPos);\r
+ if (MenuOption->Row + MenuOption->Skip - Temp2 > BottomRow + 1) {\r
+ if ((gMenuOption.ForwardLink == NewPos) || (&gMenuOption == NewPos)) {\r
+ Difference = -1;\r
+ } else {\r
+ Difference = 0;\r
+ }\r
+ } else {\r
+ Difference = MoveToNextStatement (FALSE, &NewPos, BottomRow + 1 - (MenuOption->Row + MenuOption->Skip - Temp2), FALSE);\r
+ }\r
\r
- UpdateHighlightMenuInfo(NewPos, TopOfScreen, SkipValue);\r
- break;\r
- }\r
+ if (Difference < 0) {\r
+ //\r
+ // Scroll to the first page.\r
+ //\r
+ if ((TopOfScreen != gMenuOption.ForwardLink) || (SkipValue != 0)) {\r
+ TopOfScreen = gMenuOption.ForwardLink;\r
+ Repaint = TRUE;\r
+ MenuOption = NULL;\r
+ } else {\r
+ MenuOption = MENU_OPTION_FROM_LINK (SavedListEntry);\r
+ }\r
\r
- //\r
- // Get next selected menu info.\r
- //\r
- AdjustDateAndTimePosition (FALSE, &NewPos);\r
- NextMenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
- if (NextMenuOption->Row == 0) {\r
- UpdateOptionSkipLines (NextMenuOption);\r
- }\r
+ NewPos = gMenuOption.ForwardLink;\r
+ MoveToNextStatement (FALSE, &NewPos, BottomRow - TopRow, TRUE);\r
+\r
+ SkipValue = 0;\r
+ //\r
+ // If we are at the end of the list and sitting on a Date/Time op, rewind to the head.\r
+ //\r
+ AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, &NewPos);\r
+\r
+ UpdateHighlightMenuInfo (NewPos, TopOfScreen, SkipValue);\r
+ break;\r
+ }\r
\r
- //\r
- // Calculate new highlight menu end row.\r
- //\r
- Temp = (MenuOption->Row + MenuOption->Skip - Temp2) + Difference + NextMenuOption->Skip - 1;\r
- if (Temp > BottomRow) {\r
//\r
- // Get the top screen menu info.\r
+ // Get next selected menu info.\r
//\r
- AdjustDateAndTimePosition (FALSE, &TopOfScreen);\r
- SavedMenuOption = MENU_OPTION_FROM_LINK (TopOfScreen);\r
+ AdjustDateAndTimePosition (FALSE, &NewPos);\r
+ NextMenuOption = MENU_OPTION_FROM_LINK (NewPos);\r
+ if (NextMenuOption->Row == 0) {\r
+ UpdateOptionSkipLines (NextMenuOption);\r
+ }\r
\r
//\r
- // Current Top screen menu occupy (SavedMenuOption->Skip - SkipValue) rows.\r
- // Full shows the new selected menu need to skip (Temp - BottomRow - 1) rows.\r
+ // Calculate new highlight menu end row.\r
//\r
- if ((Temp - BottomRow) >= (SavedMenuOption->Skip - SkipValue)) {\r
+ Temp = (MenuOption->Row + MenuOption->Skip - Temp2) + Difference + NextMenuOption->Skip - 1;\r
+ if (Temp > BottomRow) {\r
//\r
- // Skip the top op-code\r
+ // Get the top screen menu info.\r
//\r
- TopOfScreen = TopOfScreen->ForwardLink;\r
- DistanceValue = (Temp - BottomRow) - (SavedMenuOption->Skip - SkipValue);\r
-\r
+ AdjustDateAndTimePosition (FALSE, &TopOfScreen);\r
SavedMenuOption = MENU_OPTION_FROM_LINK (TopOfScreen);\r
\r
//\r
- // If we have a remainder, skip that many more op-codes until we drain the remainder\r
- // Special case is the selected highlight menu has more than one form of menus.\r
+ // Current Top screen menu occupy (SavedMenuOption->Skip - SkipValue) rows.\r
+ // Full shows the new selected menu need to skip (Temp - BottomRow - 1) rows.\r
//\r
- while (DistanceValue >= SavedMenuOption->Skip && TopOfScreen != NewPos) {\r
+ if ((Temp - BottomRow) >= (SavedMenuOption->Skip - SkipValue)) {\r
//\r
- // Since the Difference is greater than or equal to this op-code's skip value, skip it\r
+ // Skip the top op-code\r
//\r
- DistanceValue = DistanceValue - (INTN) SavedMenuOption->Skip;\r
- TopOfScreen = TopOfScreen->ForwardLink;\r
+ TopOfScreen = TopOfScreen->ForwardLink;\r
+ DistanceValue = (Temp - BottomRow) - (SavedMenuOption->Skip - SkipValue);\r
+\r
SavedMenuOption = MENU_OPTION_FROM_LINK (TopOfScreen);\r
- }\r
- //\r
- // Since we will act on this op-code in the next routine, and increment the\r
- // SkipValue, set the skips to one less than what is required.\r
- //\r
- if (TopOfScreen != NewPos) {\r
- SkipValue = DistanceValue;\r
+\r
+ //\r
+ // If we have a remainder, skip that many more op-codes until we drain the remainder\r
+ // Special case is the selected highlight menu has more than one form of menus.\r
+ //\r
+ while (DistanceValue >= SavedMenuOption->Skip && TopOfScreen != NewPos) {\r
+ //\r
+ // Since the Difference is greater than or equal to this op-code's skip value, skip it\r
+ //\r
+ DistanceValue = DistanceValue - (INTN)SavedMenuOption->Skip;\r
+ TopOfScreen = TopOfScreen->ForwardLink;\r
+ SavedMenuOption = MENU_OPTION_FROM_LINK (TopOfScreen);\r
+ }\r
+\r
+ //\r
+ // Since we will act on this op-code in the next routine, and increment the\r
+ // SkipValue, set the skips to one less than what is required.\r
+ //\r
+ if (TopOfScreen != NewPos) {\r
+ SkipValue = DistanceValue;\r
+ } else {\r
+ SkipValue = 0;\r
+ }\r
} else {\r
- SkipValue = 0;\r
+ //\r
+ // Since we will act on this op-code in the next routine, and increment the\r
+ // SkipValue, set the skips to one less than what is required.\r
+ //\r
+ SkipValue += Temp - BottomRow;\r
}\r
- } else {\r
+\r
+ Repaint = TRUE;\r
+ } else if (!IsSelectable (NextMenuOption)) {\r
//\r
- // Since we will act on this op-code in the next routine, and increment the\r
- // SkipValue, set the skips to one less than what is required.\r
+ // Continue to go down until scroll to next page or the selectable option is found.\r
//\r
- SkipValue += Temp - BottomRow;\r
+ ScreenOperation = UiDown;\r
+ ControlFlag = CfScreenOperation;\r
+ break;\r
}\r
- Repaint = TRUE;\r
- } else if (!IsSelectable (NextMenuOption)) {\r
+\r
+ MenuOption = MENU_OPTION_FROM_LINK (SavedListEntry);\r
+\r
//\r
- // Continue to go down until scroll to next page or the selectable option is found.\r
+ // Check whether new highlight menu is selectable, if not, keep highlight on the old one.\r
//\r
- ScreenOperation = UiDown;\r
- ControlFlag = CfScreenOperation;\r
- break;\r
- }\r
+ // BottomRow - TopRow + 1 means the total rows current forms supported.\r
+ // Difference + NextMenuOption->Skip + 1 means the distance between last highlight menu\r
+ // and new top menu. New top menu will all shows in next form, but last highlight menu\r
+ // may only shows 1 line. + 1 at right part means at least need to keep 1 line for the\r
+ // last highlight menu.\r
+ //\r
+ if (!IsSelectable (NextMenuOption) && IsSelectable (MenuOption) &&\r
+ (BottomRow - TopRow + 1 >= Difference + NextMenuOption->Skip + 1))\r
+ {\r
+ NewPos = SavedListEntry;\r
+ }\r
\r
- MenuOption = MENU_OPTION_FROM_LINK (SavedListEntry);\r
+ UpdateStatusBar (INPUT_ERROR, FALSE);\r
\r
- //\r
- // Check whether new highlight menu is selectable, if not, keep highlight on the old one.\r
- //\r
- // BottomRow - TopRow + 1 means the total rows current forms supported.\r
- // Difference + NextMenuOption->Skip + 1 means the distance between last highlight menu\r
- // and new top menu. New top menu will all shows in next form, but last highlight menu\r
- // may only shows 1 line. + 1 at right part means at least need to keep 1 line for the\r
- // last highlight menu.\r
- //\r
- if (!IsSelectable (NextMenuOption) && IsSelectable (MenuOption) &&\r
- (BottomRow - TopRow + 1 >= Difference + NextMenuOption->Skip + 1)) {\r
- NewPos = SavedListEntry;\r
- }\r
+ //\r
+ // If we are at the end of the list and sitting on a Date/Time op, rewind to the head.\r
+ //\r
+ AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
+ AdjustDateAndTimePosition (TRUE, &NewPos);\r
\r
- UpdateStatusBar (INPUT_ERROR, FALSE);\r
+ UpdateHighlightMenuInfo (NewPos, TopOfScreen, SkipValue);\r
+ break;\r
\r
- //\r
- // If we are at the end of the list and sitting on a Date/Time op, rewind to the head.\r
- //\r
- AdjustDateAndTimePosition (TRUE, &TopOfScreen);\r
- AdjustDateAndTimePosition (TRUE, &NewPos);\r
+ case CfUiNoOperation:\r
+ ControlFlag = CfRepaint;\r
+ break;\r
\r
- UpdateHighlightMenuInfo(NewPos, TopOfScreen, SkipValue);\r
- break;\r
+ case CfExit:\r
+ gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));\r
+ if (HelpString != NULL) {\r
+ FreePool (HelpString);\r
+ }\r
\r
- case CfUiNoOperation:\r
- ControlFlag = CfRepaint;\r
- break;\r
+ if (HelpHeaderString != NULL) {\r
+ FreePool (HelpHeaderString);\r
+ }\r
\r
- case CfExit:\r
- gST->ConOut->SetAttribute (gST->ConOut, EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK));\r
- if (HelpString != NULL) {\r
- FreePool (HelpString);\r
- }\r
- if (HelpHeaderString != NULL) {\r
- FreePool (HelpHeaderString);\r
- }\r
- if (HelpBottomString != NULL) {\r
- FreePool (HelpBottomString);\r
- }\r
- return EFI_SUCCESS;\r
+ if (HelpBottomString != NULL) {\r
+ FreePool (HelpBottomString);\r
+ }\r
\r
- default:\r
- break;\r
+ return EFI_SUCCESS;\r
+\r
+ default:\r
+ break;\r
}\r
}\r
}\r
\r
**/\r
VOID\r
-FreeMenuOptionData(\r
- LIST_ENTRY *MenuOptionList\r
+FreeMenuOptionData (\r
+ LIST_ENTRY *MenuOptionList\r
)\r
{\r
- LIST_ENTRY *Link;\r
- UI_MENU_OPTION *Option;\r
+ LIST_ENTRY *Link;\r
+ UI_MENU_OPTION *Option;\r
\r
//\r
// Free menu option list\r
//\r
while (!IsListEmpty (MenuOptionList)) {\r
- Link = GetFirstNode (MenuOptionList);\r
+ Link = GetFirstNode (MenuOptionList);\r
Option = MENU_OPTION_FROM_LINK (Link);\r
- if (Option->Description != NULL){\r
- FreePool(Option->Description);\r
+ if (Option->Description != NULL) {\r
+ FreePool (Option->Description);\r
}\r
+\r
RemoveEntryList (&Option->Link);\r
FreePool (Option);\r
}\r
VOID\r
)\r
{\r
- CHAR16 *ErrorInfo;\r
- EFI_INPUT_KEY Key;\r
- EFI_EVENT WaitList[2];\r
- EFI_EVENT RefreshIntervalEvent;\r
- EFI_EVENT TimeOutEvent;\r
- UINT8 TimeOut;\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- WARNING_IF_CONTEXT EventContext;\r
- EFI_IFR_OP_HEADER *OpCodeBuf;\r
- EFI_STRING_ID StringToken;\r
- CHAR16 DiscardChange;\r
- CHAR16 JumpToFormSet;\r
- CHAR16 *PrintString;\r
+ CHAR16 *ErrorInfo;\r
+ EFI_INPUT_KEY Key;\r
+ EFI_EVENT WaitList[2];\r
+ EFI_EVENT RefreshIntervalEvent;\r
+ EFI_EVENT TimeOutEvent;\r
+ UINT8 TimeOut;\r
+ EFI_STATUS Status;\r
+ UINTN Index;\r
+ WARNING_IF_CONTEXT EventContext;\r
+ EFI_IFR_OP_HEADER *OpCodeBuf;\r
+ EFI_STRING_ID StringToken;\r
+ CHAR16 DiscardChange;\r
+ CHAR16 JumpToFormSet;\r
+ CHAR16 *PrintString;\r
\r
if (gFormData->BrowserStatus == BROWSER_SUCCESS) {\r
return;\r
if (gFormData->BrowserStatus == (BROWSER_WARNING_IF)) {\r
ASSERT (OpCodeBuf != NULL && OpCodeBuf->OpCode == EFI_IFR_WARNING_IF_OP);\r
\r
- TimeOut = ((EFI_IFR_WARNING_IF *) OpCodeBuf)->TimeOut;\r
- StringToken = ((EFI_IFR_WARNING_IF *) OpCodeBuf)->Warning;\r
+ TimeOut = ((EFI_IFR_WARNING_IF *)OpCodeBuf)->TimeOut;\r
+ StringToken = ((EFI_IFR_WARNING_IF *)OpCodeBuf)->Warning;\r
} else {\r
TimeOut = 0;\r
if ((gFormData->BrowserStatus == (BROWSER_NO_SUBMIT_IF)) &&\r
- (OpCodeBuf != NULL && OpCodeBuf->OpCode == EFI_IFR_NO_SUBMIT_IF_OP)) {\r
- StringToken = ((EFI_IFR_NO_SUBMIT_IF *) OpCodeBuf)->Error;\r
+ ((OpCodeBuf != NULL) && (OpCodeBuf->OpCode == EFI_IFR_NO_SUBMIT_IF_OP)))\r
+ {\r
+ StringToken = ((EFI_IFR_NO_SUBMIT_IF *)OpCodeBuf)->Error;\r
} else if ((gFormData->BrowserStatus == (BROWSER_INCONSISTENT_IF)) &&\r
- (OpCodeBuf != NULL && OpCodeBuf->OpCode == EFI_IFR_INCONSISTENT_IF_OP)) {\r
- StringToken = ((EFI_IFR_INCONSISTENT_IF *) OpCodeBuf)->Error;\r
+ ((OpCodeBuf != NULL) && (OpCodeBuf->OpCode == EFI_IFR_INCONSISTENT_IF_OP)))\r
+ {\r
+ StringToken = ((EFI_IFR_INCONSISTENT_IF *)OpCodeBuf)->Error;\r
}\r
}\r
\r
ErrorInfo = gFormData->ErrorString;\r
} else {\r
switch (gFormData->BrowserStatus) {\r
- case BROWSER_SUBMIT_FAIL:\r
- ErrorInfo = gSaveFailed;\r
- break;\r
+ case BROWSER_SUBMIT_FAIL:\r
+ ErrorInfo = gSaveFailed;\r
+ break;\r
\r
- case BROWSER_FORM_NOT_FOUND:\r
- ErrorInfo = gFormNotFound;\r
- break;\r
+ case BROWSER_FORM_NOT_FOUND:\r
+ ErrorInfo = gFormNotFound;\r
+ break;\r
\r
- case BROWSER_FORM_SUPPRESS:\r
- ErrorInfo = gFormSuppress;\r
- break;\r
+ case BROWSER_FORM_SUPPRESS:\r
+ ErrorInfo = gFormSuppress;\r
+ break;\r
\r
- case BROWSER_PROTOCOL_NOT_FOUND:\r
- ErrorInfo = gProtocolNotFound;\r
- break;\r
+ case BROWSER_PROTOCOL_NOT_FOUND:\r
+ ErrorInfo = gProtocolNotFound;\r
+ break;\r
\r
- case BROWSER_SUBMIT_FAIL_NO_SUBMIT_IF:\r
- ErrorInfo = gNoSubmitIfFailed;\r
- break;\r
+ case BROWSER_SUBMIT_FAIL_NO_SUBMIT_IF:\r
+ ErrorInfo = gNoSubmitIfFailed;\r
+ break;\r
\r
- case BROWSER_RECONNECT_FAIL:\r
- ErrorInfo = gReconnectFail;\r
- break;\r
+ case BROWSER_RECONNECT_FAIL:\r
+ ErrorInfo = gReconnectFail;\r
+ break;\r
\r
- case BROWSER_RECONNECT_SAVE_CHANGES:\r
- ErrorInfo = gReconnectConfirmChanges;\r
- break;\r
+ case BROWSER_RECONNECT_SAVE_CHANGES:\r
+ ErrorInfo = gReconnectConfirmChanges;\r
+ break;\r
\r
- case BROWSER_RECONNECT_REQUIRED:\r
- ErrorInfo = gReconnectRequired;\r
- break;\r
+ case BROWSER_RECONNECT_REQUIRED:\r
+ ErrorInfo = gReconnectRequired;\r
+ break;\r
\r
- default:\r
- ErrorInfo = gBrowserError;\r
- break;\r
+ default:\r
+ ErrorInfo = gBrowserError;\r
+ break;\r
}\r
}\r
\r
switch (gFormData->BrowserStatus) {\r
- case BROWSER_SUBMIT_FAIL:\r
- case BROWSER_SUBMIT_FAIL_NO_SUBMIT_IF:\r
- case BROWSER_RECONNECT_SAVE_CHANGES:\r
- ASSERT (gUserInput != NULL);\r
- if (gFormData->BrowserStatus == (BROWSER_SUBMIT_FAIL)) {\r
- PrintString = gSaveProcess;\r
- JumpToFormSet = gJumpToFormSet[0];\r
- DiscardChange = gDiscardChange[0];\r
- } else if (gFormData->BrowserStatus == (BROWSER_RECONNECT_SAVE_CHANGES)){\r
- PrintString = gChangesOpt;\r
- JumpToFormSet = gConfirmOptYes[0];\r
- DiscardChange = gConfirmOptNo[0];\r
- } else {\r
- PrintString = gSaveNoSubmitProcess;\r
- JumpToFormSet = gCheckError[0];\r
- DiscardChange = gDiscardChange[0];\r
- }\r
+ case BROWSER_SUBMIT_FAIL:\r
+ case BROWSER_SUBMIT_FAIL_NO_SUBMIT_IF:\r
+ case BROWSER_RECONNECT_SAVE_CHANGES:\r
+ ASSERT (gUserInput != NULL);\r
+ if (gFormData->BrowserStatus == (BROWSER_SUBMIT_FAIL)) {\r
+ PrintString = gSaveProcess;\r
+ JumpToFormSet = gJumpToFormSet[0];\r
+ DiscardChange = gDiscardChange[0];\r
+ } else if (gFormData->BrowserStatus == (BROWSER_RECONNECT_SAVE_CHANGES)) {\r
+ PrintString = gChangesOpt;\r
+ JumpToFormSet = gConfirmOptYes[0];\r
+ DiscardChange = gConfirmOptNo[0];\r
+ } else {\r
+ PrintString = gSaveNoSubmitProcess;\r
+ JumpToFormSet = gCheckError[0];\r
+ DiscardChange = gDiscardChange[0];\r
+ }\r
\r
- do {\r
- CreateDialog (&Key, gEmptyString, ErrorInfo, PrintString, gEmptyString, NULL);\r
- } while (((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) != (DiscardChange | UPPER_LOWER_CASE_OFFSET)) &&\r
- ((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) != (JumpToFormSet | UPPER_LOWER_CASE_OFFSET)));\r
+ do {\r
+ CreateDialog (&Key, gEmptyString, ErrorInfo, PrintString, gEmptyString, NULL);\r
+ } while (((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) != (DiscardChange | UPPER_LOWER_CASE_OFFSET)) &&\r
+ ((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) != (JumpToFormSet | UPPER_LOWER_CASE_OFFSET)));\r
\r
- if ((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) == (DiscardChange | UPPER_LOWER_CASE_OFFSET)) {\r
- gUserInput->Action = BROWSER_ACTION_DISCARD;\r
- } else {\r
- gUserInput->Action = BROWSER_ACTION_GOTO;\r
- }\r
- break;\r
+ if ((Key.UnicodeChar | UPPER_LOWER_CASE_OFFSET) == (DiscardChange | UPPER_LOWER_CASE_OFFSET)) {\r
+ gUserInput->Action = BROWSER_ACTION_DISCARD;\r
+ } else {\r
+ gUserInput->Action = BROWSER_ACTION_GOTO;\r
+ }\r
\r
- default:\r
- if (TimeOut == 0) {\r
- do {\r
- CreateDialog (&Key, gEmptyString, ErrorInfo, gPressEnter, gEmptyString, NULL);\r
- } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);\r
- } else {\r
- Status = gBS->CreateEvent (EVT_NOTIFY_WAIT, TPL_CALLBACK, EmptyEventProcess, NULL, &TimeOutEvent);\r
- ASSERT_EFI_ERROR (Status);\r
+ break;\r
\r
- EventContext.SyncEvent = TimeOutEvent;\r
- EventContext.TimeOut = &TimeOut;\r
- EventContext.ErrorInfo = ErrorInfo;\r
+ default:\r
+ if (TimeOut == 0) {\r
+ do {\r
+ CreateDialog (&Key, gEmptyString, ErrorInfo, gPressEnter, gEmptyString, NULL);\r
+ } while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);\r
+ } else {\r
+ Status = gBS->CreateEvent (EVT_NOTIFY_WAIT, TPL_CALLBACK, EmptyEventProcess, NULL, &TimeOutEvent);\r
+ ASSERT_EFI_ERROR (Status);\r
\r
- Status = gBS->CreateEvent (EVT_TIMER | EVT_NOTIFY_SIGNAL, TPL_CALLBACK, RefreshTimeOutProcess, &EventContext, &RefreshIntervalEvent);\r
- ASSERT_EFI_ERROR (Status);\r
+ EventContext.SyncEvent = TimeOutEvent;\r
+ EventContext.TimeOut = &TimeOut;\r
+ EventContext.ErrorInfo = ErrorInfo;\r
\r
- //\r
- // Show the dialog first to avoid long time not reaction.\r
- //\r
- gBS->SignalEvent (RefreshIntervalEvent);\r
+ Status = gBS->CreateEvent (EVT_TIMER | EVT_NOTIFY_SIGNAL, TPL_CALLBACK, RefreshTimeOutProcess, &EventContext, &RefreshIntervalEvent);\r
+ ASSERT_EFI_ERROR (Status);\r
\r
- Status = gBS->SetTimer (RefreshIntervalEvent, TimerPeriodic, ONE_SECOND);\r
- ASSERT_EFI_ERROR (Status);\r
+ //\r
+ // Show the dialog first to avoid long time not reaction.\r
+ //\r
+ gBS->SignalEvent (RefreshIntervalEvent);\r
\r
- while (TRUE) {\r
- Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
- if (!EFI_ERROR (Status) && Key.UnicodeChar == CHAR_CARRIAGE_RETURN) {\r
- break;\r
- }\r
+ Status = gBS->SetTimer (RefreshIntervalEvent, TimerPeriodic, ONE_SECOND);\r
+ ASSERT_EFI_ERROR (Status);\r
\r
- if (Status != EFI_NOT_READY) {\r
- continue;\r
- }\r
+ while (TRUE) {\r
+ Status = gST->ConIn->ReadKeyStroke (gST->ConIn, &Key);\r
+ if (!EFI_ERROR (Status) && (Key.UnicodeChar == CHAR_CARRIAGE_RETURN)) {\r
+ break;\r
+ }\r
\r
- WaitList[0] = TimeOutEvent;\r
- WaitList[1] = gST->ConIn->WaitForKey;\r
+ if (Status != EFI_NOT_READY) {\r
+ continue;\r
+ }\r
\r
- Status = gBS->WaitForEvent (2, WaitList, &Index);\r
- ASSERT_EFI_ERROR (Status);\r
+ WaitList[0] = TimeOutEvent;\r
+ WaitList[1] = gST->ConIn->WaitForKey;\r
\r
- if (Index == 0) {\r
- //\r
- // Timeout occur, close the hoot time out event.\r
- //\r
- break;\r
+ Status = gBS->WaitForEvent (2, WaitList, &Index);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ if (Index == 0) {\r
+ //\r
+ // Timeout occur, close the hoot time out event.\r
+ //\r
+ break;\r
+ }\r
}\r
+\r
+ gBS->CloseEvent (TimeOutEvent);\r
+ gBS->CloseEvent (RefreshIntervalEvent);\r
}\r
\r
- gBS->CloseEvent (TimeOutEvent);\r
- gBS->CloseEvent (RefreshIntervalEvent);\r
- }\r
- break;\r
+ break;\r
}\r
\r
if (StringToken != 0) {\r
//\r
// Process the status info first.\r
//\r
- BrowserStatusProcess();\r
+ BrowserStatusProcess ();\r
if (gFormData->BrowserStatus != BROWSER_SUCCESS) {\r
//\r
// gFormData->BrowserStatus != BROWSER_SUCCESS, means only need to print the error info, return here.\r
// |<-.->|<-.........->|<- .........->|<-...........->|\r
// Skip Prompt Option Help\r
//\r
- gOptionBlockWidth = (CHAR16) ((gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn) / 3) + 1;\r
- gHelpBlockWidth = (CHAR16) (gOptionBlockWidth - 1 - LEFT_SKIPPED_COLUMNS);\r
- gPromptBlockWidth = (CHAR16) (gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * (gOptionBlockWidth - 1) - 1);\r
+ gOptionBlockWidth = (CHAR16)((gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn) / 3) + 1;\r
+ gHelpBlockWidth = (CHAR16)(gOptionBlockWidth - 1 - LEFT_SKIPPED_COLUMNS);\r
+ gPromptBlockWidth = (CHAR16)(gStatementDimensions.RightColumn - gStatementDimensions.LeftColumn - 2 * (gOptionBlockWidth - 1) - 1);\r
\r
- ConvertStatementToMenu();\r
+ ConvertStatementToMenu ();\r
\r
//\r
// Check whether layout is changed.\r
//\r
- if (mIsFirstForm\r
- || (gOldFormEntry.HiiHandle != FormData->HiiHandle)\r
- || (!CompareGuid (&gOldFormEntry.FormSetGuid, &FormData->FormSetGuid))\r
- || (gOldFormEntry.FormId != FormData->FormId)) {\r
+ if ( mIsFirstForm\r
+ || (gOldFormEntry.HiiHandle != FormData->HiiHandle)\r
+ || (!CompareGuid (&gOldFormEntry.FormSetGuid, &FormData->FormSetGuid))\r
+ || (gOldFormEntry.FormId != FormData->FormId))\r
+ {\r
mStatementLayoutIsChanged = TRUE;\r
} else {\r
mStatementLayoutIsChanged = FALSE;\r
}\r
\r
- Status = UiDisplayMenu(FormData);\r
+ Status = UiDisplayMenu (FormData);\r
\r
//\r
// Backup last form info.\r
mIsFirstForm = FALSE;\r
gOldFormEntry.HiiHandle = FormData->HiiHandle;\r
CopyGuid (&gOldFormEntry.FormSetGuid, &FormData->FormSetGuid);\r
- gOldFormEntry.FormId = FormData->FormId;\r
+ gOldFormEntry.FormId = FormData->FormId;\r
\r
//\r
- //Free the Ui menu option list.\r
+ // Free the Ui menu option list.\r
//\r
- FreeMenuOptionData(&gMenuOption);\r
+ FreeMenuOptionData (&gMenuOption);\r
\r
return Status;\r
}\r
**/\r
VOID\r
SetUnicodeMem (\r
- IN VOID *Buffer,\r
- IN UINTN Size,\r
- IN CHAR16 Value\r
+ IN VOID *Buffer,\r
+ IN UINTN Size,\r
+ IN CHAR16 Value\r
)\r
{\r
CHAR16 *Ptr;\r
EFI_STATUS\r
EFIAPI\r
InitializeDisplayEngine (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_INPUT_KEY HotKey;\r
- EFI_STRING NewString;\r
- EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL *FormBrowserEx2;\r
+ EFI_STATUS Status;\r
+ EFI_INPUT_KEY HotKey;\r
+ EFI_STRING NewString;\r
+ EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL *FormBrowserEx2;\r
\r
//\r
// Publish our HII data\r
// Install HII Popup Protocol.\r
//\r
Status = gBS->InstallProtocolInterface (\r
- &mPrivateData.Handle,\r
- &gEfiHiiPopupProtocolGuid,\r
- EFI_NATIVE_INTERFACE,\r
- &mPrivateData.HiiPopup\r
- );\r
+ &mPrivateData.Handle,\r
+ &gEfiHiiPopupProtocolGuid,\r
+ EFI_NATIVE_INTERFACE,\r
+ &mPrivateData.HiiPopup\r
+ );\r
ASSERT_EFI_ERROR (Status);\r
\r
- InitializeDisplayStrings();\r
+ InitializeDisplayStrings ();\r
\r
ZeroMem (&gHighligthMenuInfo, sizeof (gHighligthMenuInfo));\r
ZeroMem (&gOldFormEntry, sizeof (gOldFormEntry));\r
//\r
// Use BrowserEx2 protocol to register HotKey.\r
//\r
- Status = gBS->LocateProtocol (&gEdkiiFormBrowserEx2ProtocolGuid, NULL, (VOID **) &FormBrowserEx2);\r
+ Status = gBS->LocateProtocol (&gEdkiiFormBrowserEx2ProtocolGuid, NULL, (VOID **)&FormBrowserEx2);\r
if (!EFI_ERROR (Status)) {\r
//\r
// Register the default HotKey F9 and F10 again.\r
//\r
HotKey.UnicodeChar = CHAR_NULL;\r
- HotKey.ScanCode = SCAN_F10;\r
- NewString = HiiGetString (gHiiHandle, STRING_TOKEN (FUNCTION_TEN_STRING), NULL);\r
+ HotKey.ScanCode = SCAN_F10;\r
+ NewString = HiiGetString (gHiiHandle, STRING_TOKEN (FUNCTION_TEN_STRING), NULL);\r
ASSERT (NewString != NULL);\r
FormBrowserEx2->RegisterHotKey (&HotKey, BROWSER_ACTION_SUBMIT, 0, NewString);\r
FreePool (NewString);\r
\r
- HotKey.ScanCode = SCAN_F9;\r
- NewString = HiiGetString (gHiiHandle, STRING_TOKEN (FUNCTION_NINE_STRING), NULL);\r
+ HotKey.ScanCode = SCAN_F9;\r
+ NewString = HiiGetString (gHiiHandle, STRING_TOKEN (FUNCTION_NINE_STRING), NULL);\r
ASSERT (NewString != NULL);\r
FormBrowserEx2->RegisterHotKey (&HotKey, BROWSER_ACTION_DEFAULT, EFI_HII_DEFAULT_CLASS_STANDARD, NewString);\r
FreePool (NewString);\r
EFI_STATUS\r
EFIAPI\r
UnloadDisplayEngine (\r
- IN EFI_HANDLE ImageHandle\r
+ IN EFI_HANDLE ImageHandle\r
)\r
{\r
- HiiRemovePackages(gHiiHandle);\r
+ HiiRemovePackages (gHiiHandle);\r
\r
FreeDisplayStrings ();\r
\r