mirror of https://github.com/acidanthera/audk.git
429 lines
9.0 KiB
C
429 lines
9.0 KiB
C
/**@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
|