blob: 522f4ce5b8560b67920dd96ecf1e0e0b375f8106 [file] [log] [blame]
/*++
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.
Module Name:
Ui.h
Abstract:
Head file UI
Revision History
--*/
#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