/** @file\r
-Private MACRO, structure and function definitions for Setup Browser module. \r
+Private MACRO, structure and function definitions for Setup Browser module.\r
\r
Copyright (c) 2007 - 2009, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
#include <Protocol/HiiConfigRouting.h>\r
#include <Protocol/HiiDatabase.h>\r
#include <Protocol/HiiString.h>\r
+#include <Protocol/UserManager.h>\r
\r
#include <Guid/MdeModuleHii.h>\r
#include <Guid/HiiPlatformSetupFormset.h>\r
// Definition for function key setting\r
//\r
#define NONE_FUNCTION_KEY_SETTING 0\r
-#define DEFAULT_FUNCTION_KEY_SETTING (FUNCTION_ONE | FUNCTION_TWO | FUNCTION_NINE | FUNCTION_TEN)\r
+#define DEFAULT_FUNCTION_KEY_SETTING (FUNCTION_NINE | FUNCTION_TEN)\r
\r
-#define FUNCTION_ONE (1 << 0)\r
-#define FUNCTION_TWO (1 << 1)\r
#define FUNCTION_NINE (1 << 2)\r
#define FUNCTION_TEN (1 << 3)\r
\r
#define FORM_INCONSISTENT_VALIDATION 0\r
#define FORM_NO_SUBMIT_VALIDATION 1\r
\r
-#define FORMSET_CLASS_PLATFORM_SETUP 0\r
-#define FORMSET_CLASS_FRONT_PAGE 1\r
+#define FORMSET_CLASS_PLATFORM_SETUP 0x0001\r
+#define FORMSET_CLASS_FRONT_PAGE 0x0002\r
\r
typedef struct {\r
UINT8 Type;\r
\r
EFI_HII_VALUE HiiValue; // Edit copy for checkbox, numberic, oneof\r
UINT8 *BufferValue; // Edit copy for string, password, orderedlist\r
+ UINT8 ValueType; // Data type for orderedlist value array\r
\r
//\r
// OpCode specific members\r
\r
LIST_ENTRY ExpressionListHead; // List of Expressions (FORM_EXPRESSION)\r
LIST_ENTRY StatementListHead; // List of Statements and Questions (FORM_BROWSER_STATEMENT)\r
+ FORM_EXPRESSION *SuppressExpression; // nesting inside of SuppressIf\r
} FORM_BROWSER_FORM;\r
\r
#define FORM_BROWSER_FORM_FROM_LINK(a) CR (a, FORM_BROWSER_FORM, Link, FORM_BROWSER_FORM_SIGNATURE)\r
LIST_ENTRY StorageListHead; // Storage list (FORMSET_STORAGE)\r
LIST_ENTRY DefaultStoreListHead; // DefaultStore list (FORMSET_DEFAULTSTORE)\r
LIST_ENTRY FormListHead; // Form list (FORM_BROWSER_FORM)\r
+ LIST_ENTRY ExpressionListHead; // List of Expressions (FORM_EXPRESSION)\r
} FORM_BROWSER_FORMSET;\r
\r
+#define BROWSER_CONTEXT_SIGNATURE SIGNATURE_32 ('B', 'C', 'T', 'X')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+\r
+ //\r
+ // Globals defined in Setup.c\r
+ //\r
+ BANNER_DATA *BannerData;\r
+ UINTN ClassOfVfr;\r
+ UINTN FunctionKeySetting;\r
+ BOOLEAN ResetRequired;\r
+ BOOLEAN NvUpdateRequired;\r
+ UINT16 Direction;\r
+ EFI_SCREEN_DESCRIPTOR ScreenDimensions;\r
+ CHAR16 *FunctionNineString;\r
+ CHAR16 *FunctionTenString;\r
+ CHAR16 *EnterString;\r
+ CHAR16 *EnterCommitString;\r
+ CHAR16 *EnterEscapeString;\r
+ CHAR16 *EscapeString;\r
+ CHAR16 *SaveFailed;\r
+ CHAR16 *MoveHighlight;\r
+ CHAR16 *MakeSelection;\r
+ CHAR16 *DecNumericInput;\r
+ CHAR16 *HexNumericInput;\r
+ CHAR16 *ToggleCheckBox;\r
+ CHAR16 *PromptForData;\r
+ CHAR16 *PromptForPassword;\r
+ CHAR16 *PromptForNewPassword;\r
+ CHAR16 *ConfirmPassword;\r
+ CHAR16 *ConfirmError;\r
+ CHAR16 *PassowordInvalid;\r
+ CHAR16 *PressEnter;\r
+ CHAR16 *EmptyString;\r
+ CHAR16 *AreYouSure;\r
+ CHAR16 *YesResponse;\r
+ CHAR16 *NoResponse;\r
+ CHAR16 *MiniString;\r
+ CHAR16 *PlusString;\r
+ CHAR16 *MinusString;\r
+ CHAR16 *AdjustNumber;\r
+ CHAR16 *SaveChanges;\r
+ CHAR16 *OptionMismatch;\r
+ CHAR16 *FormSuppress;\r
+ CHAR16 PromptBlockWidth;\r
+ CHAR16 OptionBlockWidth;\r
+ CHAR16 HelpBlockWidth;\r
+ FORM_BROWSER_FORMSET *OldFormSet;\r
+\r
+ //\r
+ // Globals defined in Ui.c\r
+ //\r
+ LIST_ENTRY MenuOption;\r
+ VOID *MenuRefreshHead;\r
+} BROWSER_CONTEXT;\r
+\r
+#define BROWSER_CONTEXT_FROM_LINK(a) CR (a, BROWSER_CONTEXT, Link, BROWSER_CONTEXT_SIGNATURE)\r
\r
extern EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
extern EFI_HII_STRING_PROTOCOL *mHiiString;\r
extern EFI_HII_HANDLE gHiiHandle;\r
extern UINT16 gDirection;\r
extern EFI_SCREEN_DESCRIPTOR gScreenDimensions;\r
-extern BOOLEAN gUpArrow;\r
-extern BOOLEAN gDownArrow;\r
+\r
+extern FORM_BROWSER_FORMSET *gOldFormSet;\r
\r
//\r
// Browser Global Strings\r
//\r
-extern CHAR16 *gFunctionOneString;\r
-extern CHAR16 *gFunctionTwoString;\r
extern CHAR16 *gFunctionNineString;\r
extern CHAR16 *gFunctionTenString;\r
extern CHAR16 *gEnterString;\r
extern CHAR16 *gAdjustNumber;\r
extern CHAR16 *gSaveChanges;\r
extern CHAR16 *gOptionMismatch;\r
+extern CHAR16 *gFormSuppress;\r
\r
extern CHAR16 gPromptBlockWidth;\r
extern CHAR16 gOptionBlockWidth;\r
extern EFI_GUID gZeroGuid;\r
extern EFI_GUID gTianoHiiIfrGuid;\r
\r
+#include "Ui.h"\r
//\r
// Global Procedure Defines\r
//\r
/**\r
Initialize Question's Edit copy from Storage.\r
\r
+ @param Selection Selection contains the information about \r
+ the Selection, form and formset to be displayed.\r
+ Selection action may be updated in retrieve callback.\r
@param FormSet FormSet data structure.\r
@param Form Form data structure.\r
\r
**/\r
EFI_STATUS\r
LoadFormConfig (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_FORM *Form\r
+ IN OUT UI_MENU_SELECTION *Selection,\r
+ IN FORM_BROWSER_FORMSET *FormSet,\r
+ IN FORM_BROWSER_FORM *Form\r
+ );\r
+\r
+/**\r
+ Initialize Question's Edit copy from Storage for the whole Formset.\r
+\r
+ @param Selection Selection contains the information about \r
+ the Selection, form and formset to be displayed.\r
+ Selection action may be updated in retrieve callback.\r
+ @param FormSet FormSet data structure.\r
+\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+\r
+**/\r
+EFI_STATUS\r
+LoadFormSetConfig (\r
+ IN OUT UI_MENU_SELECTION *Selection,\r
+ IN FORM_BROWSER_FORMSET *FormSet\r
);\r
\r
/**\r
OUT UINT8 **BinaryData\r
);\r
\r
+/**\r
+ Save globals used by previous call to SendForm(). SendForm() may be called from \r
+ HiiConfigAccess.Callback(), this will cause SendForm() be reentried.\r
+ So, save globals of previous call to SendForm() and restore them upon exit.\r
+\r
+**/\r
+VOID\r
+SaveBrowserContext (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Restore globals used by previous call to SendForm().\r
+\r
+**/\r
+VOID\r
+RestoreBrowserContext (\r
+ VOID\r
+ );\r
+\r
/**\r
This is the routine which an external caller uses to direct the browser\r
where to obtain it's information.\r
ScreenDimenions - This allows the browser to be called so that it occupies a\r
portion of the physical screen instead of dynamically determining the screen dimensions.\r
ActionRequest - Points to the action recommended by the form.\r
- @param ScreenDimensions Points to recommended form dimensions, including any non-content area, in \r
+ @param ScreenDimensions Points to recommended form dimensions, including any non-content area, in\r
characters.\r
@param ActionRequest Points to the action recommended by the form.\r
\r