/**@file Copyright (c) 2006, Intel Corporation All rights reserved. This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef _UI_H #define _UI_H // // Globals // #define REGULAR_NUMERIC 0 #define TIME_NUMERIC 1 #define DATE_NUMERIC 2 typedef enum { UiNoOperation, UiDefault, UiSelect, UiUp, UiDown, UiLeft, UiRight, UiReset, UiSave, UiPrevious, UiPageUp, UiPageDown, UiMaxOperation } UI_SCREEN_OPERATION; typedef enum { CfInitialization, CfCheckSelection, CfRepaint, CfRefreshHighLight, CfUpdateHelpString, CfPrepareToReadKey, CfReadKey, CfScreenOperation, CfUiPrevious, CfUiSelect, CfUiReset, CfUiLeft, CfUiRight, CfUiUp, CfUiPageUp, CfUiPageDown, CfUiDown, CfUiSave, CfUiDefault, CfUiNoOperation, CfExit, CfMaxControlFlag } UI_CONTROL_FLAG; #define UI_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'm') #define UI_MENU_LIST_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'l') typedef struct { UINTN Signature; LIST_ENTRY Link; UINTN Row; UINTN Col; UINTN OptCol; CHAR16 *Description; UINTN Skip; UINTN IfrNumber; VOID *FormBinary; EFI_HII_HANDLE Handle; EFI_TAG *Tags; UINTN TagIndex; EFI_TAG *ThisTag; UINT16 FormId; BOOLEAN Previous; UINT16 EntryNumber; UINT16 Consistency; BOOLEAN GrayOut; } UI_MENU_OPTION; typedef struct { UINTN Signature; LIST_ENTRY MenuLink; UI_MENU_OPTION Selection; UINTN FormerEntryNumber; } UI_MENU_LIST; typedef struct _MENU_REFRESH_ENTRY { struct _MENU_REFRESH_ENTRY *Next; EFI_FILE_FORM_TAGS *FileFormTagsHead; UINTN CurrentColumn; UINTN CurrentRow; UINTN CurrentAttribute; UI_MENU_OPTION *MenuOption; // Describes the entry needing an update } MENU_REFRESH_ENTRY; typedef struct { UINT16 ScanCode; UI_SCREEN_OPERATION ScreenOperation; } SCAN_CODE_TO_SCREEN_OPERATION; typedef struct { UI_SCREEN_OPERATION ScreenOperation; UI_CONTROL_FLAG ControlFlag; } SCREEN_OPERATION_T0_CONTROL_FLAG; LIST_ENTRY Menu; LIST_ENTRY gMenuList; MENU_REFRESH_ENTRY *gMenuRefreshHead; INTN gEntryNumber; BOOLEAN gLastOpr; // // Global Functions // VOID UiInitMenu ( VOID ) ; VOID UiInitMenuList ( VOID ) ; VOID UiRemoveMenuListEntry ( IN UI_MENU_OPTION *Selection, OUT UI_MENU_OPTION **PreviousSelection ) ; VOID UiFreeMenuList ( VOID ) ; VOID UiAddMenuListEntry ( IN UI_MENU_OPTION *Selection ) ; VOID UiFreeMenu ( VOID ) ; VOID UiAddMenuOption ( IN CHAR16 *String, IN EFI_HII_HANDLE Handle, IN EFI_TAG *Tag, IN VOID *FormBinary, IN UINTN IfrNumber ) ; VOID UiAddSubMenuOption ( IN CHAR16 *String, IN EFI_HII_HANDLE Handle, IN EFI_TAG *Tag, IN UINTN TagIndex, IN UINT16 FormId, IN UINT16 MenuItemCount ) ; UI_MENU_OPTION * UiDisplayMenu ( IN BOOLEAN SubMenu, IN EFI_FILE_FORM_TAGS *FileFormTagsHead, OUT EFI_IFR_DATA_ARRAY *PageData ) ; VOID InitPage ( VOID ) ; UI_MENU_OPTION * SetupBrowser ( IN UI_MENU_OPTION *Selection, IN BOOLEAN Callback, IN EFI_FILE_FORM_TAGS *FileFormTagsHead, IN UINT8 *CallbackData ) ; VOID SetUnicodeMem ( IN VOID *Buffer, IN UINTN Size, IN CHAR16 Value ) ; EFI_STATUS UiWaitForSingleEvent ( IN EFI_EVENT Event, IN UINT64 Timeout OPTIONAL ) ; VOID CreatePopUp ( IN UINTN ScreenWidth, IN UINTN NumberOfLines, IN CHAR16 *ArrayOfStrings, ... ) ; EFI_STATUS ReadString ( IN UI_MENU_OPTION *MenuOption, OUT CHAR16 *StringPtr ) ; EFI_STATUS ReadPassword ( IN UI_MENU_OPTION *MenuOption, IN BOOLEAN PromptForPassword, IN EFI_TAG *Tag, IN EFI_IFR_DATA_ARRAY *PageData, IN BOOLEAN SecondEntry, IN EFI_FILE_FORM_TAGS *FileFormTags, OUT CHAR16 *StringPtr ) ; VOID EncodePassword ( IN CHAR16 *Password, IN UINT8 MaxSize ) ; EFI_STATUS GetSelectionInputPopUp ( IN UI_MENU_OPTION *MenuOption, IN EFI_TAG *Tag, IN UINTN ValueCount, OUT UINT16 *Value, OUT UINT16 *KeyValue ) ; EFI_STATUS GetSelectionInputLeftRight ( IN UI_MENU_OPTION *MenuOption, IN EFI_TAG *Tag, IN UINTN ValueCount, OUT UINT16 *Value ) ; EFI_STATUS GetNumericInput ( IN UI_MENU_OPTION *MenuOption, IN EFI_FILE_FORM_TAGS *FileFormTagsHead, IN BOOLEAN ManualInput, IN EFI_TAG *Tag, IN UINTN NumericType, OUT UINT16 *Value ) ; VOID UpdateStatusBar ( IN UINTN MessageType, IN UINT8 Flags, IN BOOLEAN State ) ; EFI_STATUS ProcessOptions ( IN UI_MENU_OPTION *MenuOption, IN BOOLEAN Selected, IN EFI_FILE_FORM_TAGS *FileFormTagsHead, IN EFI_IFR_DATA_ARRAY *PageData, OUT CHAR16 **OptionString ) ; VOID ProcessHelpString ( IN CHAR16 *StringPtr, OUT CHAR16 **FormattedString, IN UINTN RowCount ) ; VOID UpdateKeyHelp ( IN UI_MENU_OPTION *Selection, IN BOOLEAN Selected ) ; BOOLEAN ValueIsNotValid ( IN BOOLEAN Complex, IN UINT16 Value, IN EFI_TAG *Tag, IN EFI_FILE_FORM_TAGS *FileFormTags, IN STRING_REF *PopUp ) ; VOID FreeData ( IN EFI_FILE_FORM_TAGS *FileFormTagsHead, IN CHAR16 *FormattedString, IN CHAR16 *OptionString ) ; VOID ClearLines ( UINTN LeftColumn, UINTN RightColumn, UINTN TopRow, UINTN BottomRow, UINTN TextAttribute ) ; UINTN GetStringWidth ( CHAR16 *String ) ; UINT16 GetLineByWidth ( IN CHAR16 *InputString, IN UINT16 LineWidth, IN OUT UINTN *Index, OUT CHAR16 **OutputString ) ; UINT16 GetWidth ( IN EFI_TAG *Tag, IN EFI_HII_HANDLE Handle ) ; VOID NewStrCat ( CHAR16 *Destination, CHAR16 *Source ) ; VOID IfrToFormTag ( IN UINT8 OpCode, IN EFI_TAG *TargetTag, IN VOID *FormData, EFI_VARIABLE_DEFINITION *VariableDefinitionsHead ) ; EFI_STATUS ExtractNvValue ( IN EFI_FILE_FORM_TAGS *FileFormTags, IN UINT16 VariableId, IN UINT16 VariableSize, IN UINT16 OffsetValue, OUT VOID **Buffer ) ; EFI_STATUS ExtractRequestedNvMap ( IN EFI_FILE_FORM_TAGS *FileFormTags, IN UINT16 VariableId, OUT EFI_VARIABLE_DEFINITION **VariableDefinition ) ; BOOLEAN ValueIsScroll ( IN BOOLEAN Direction, IN LIST_ENTRY *CurrentPos ) ; UINTN AdjustDateAndTimePosition ( IN BOOLEAN DirectionUp, IN LIST_ENTRY **CurrentPosition ) ; EFI_STATUS WaitForKeyStroke ( OUT EFI_INPUT_KEY *Key ) ; #endif // _UI_H