]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
Enable SetupBrowser to support multiple form class guid.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Setup.h
index 21b289126b8793ee4d30f10819c5d935b46bc9c9..11714d6be7306f6388ad8404b70ebbe457e3c523 100644 (file)
@@ -1,5 +1,5 @@
 /** @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
@@ -28,6 +28,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #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
@@ -71,10 +72,8 @@ extern UINT8  SetupBrowserStrings[];
 // 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
@@ -194,8 +193,8 @@ typedef struct {
 #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
@@ -347,6 +346,7 @@ typedef struct {
 \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
@@ -402,6 +402,7 @@ typedef struct {
 \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
@@ -442,8 +443,68 @@ typedef struct {
   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
@@ -458,14 +519,12 @@ extern BOOLEAN               gNvUpdateRequired;
 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
@@ -495,6 +554,7 @@ extern CHAR16            *gMinusString;
 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
@@ -503,6 +563,7 @@ extern CHAR16            gHelpBlockWidth;
 extern EFI_GUID          gZeroGuid;\r
 extern EFI_GUID          gTianoHiiIfrGuid;\r
 \r
+#include "Ui.h"\r
 //\r
 // Global Procedure Defines\r
 //\r
@@ -880,6 +941,9 @@ ExtractFormDefault (
 /**\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
@@ -888,8 +952,26 @@ ExtractFormDefault (
 **/\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
@@ -964,6 +1046,26 @@ GetIfrBinaryData (
   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
@@ -983,7 +1085,7 @@ GetIfrBinaryData (
                          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