git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2915 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			441 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			441 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| 
 | |
| 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
 | |
| 
 | |
| //
 | |
| // Include common header file for this module.
 | |
| //
 | |
| #include "CommonHeader.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
 |