]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
MdeModulePkg: INF/DEC file updates to EDK II packages
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Setup.h
index d21a6cd9c73f4c459ee3a58dbf69999e09ee6a10..327c4e08a3a903953b590d885a939342652e1a63 100644 (file)
@@ -164,6 +164,8 @@ typedef struct {
   UINTN            Signature;\r
   LIST_ENTRY       Link;\r
 \r
+  LIST_ENTRY       SaveFailLink;\r
+\r
   UINT16           VarStoreId;\r
 \r
   BROWSER_STORAGE  *BrowserStorage;\r
@@ -174,6 +176,7 @@ typedef struct {
 } FORMSET_STORAGE;\r
 \r
 #define FORMSET_STORAGE_FROM_LINK(a)  CR (a, FORMSET_STORAGE, Link, FORMSET_STORAGE_SIGNATURE)\r
+#define FORMSET_STORAGE_FROM_SAVE_FAIL_LINK(a)  CR (a, FORMSET_STORAGE, SaveFailLink, FORMSET_STORAGE_SIGNATURE)\r
 \r
 typedef union {\r
   EFI_STRING_ID         VarName;\r
@@ -373,6 +376,8 @@ typedef struct {
   UINTN                 Signature;\r
   LIST_ENTRY            Link;\r
 \r
+  LIST_ENTRY            SaveFailLink;\r
+\r
   CHAR16                *ConfigRequest; // <ConfigRequest> = <ConfigHdr> + <RequestElement>\r
   UINTN                 ElementCount;   // Number of <RequestElement> in the <ConfigRequest>  \r
   UINTN                 SpareStrLen;\r
@@ -380,6 +385,7 @@ typedef struct {
   BROWSER_STORAGE       *Storage;\r
 } FORM_BROWSER_CONFIG_REQUEST;\r
 #define FORM_BROWSER_CONFIG_REQUEST_FROM_LINK(a)  CR (a, FORM_BROWSER_CONFIG_REQUEST, Link, FORM_BROWSER_CONFIG_REQUEST_SIGNATURE)\r
+#define FORM_BROWSER_CONFIG_REQUEST_FROM_SAVE_FAIL_LINK(a)  CR (a, FORM_BROWSER_CONFIG_REQUEST, SaveFailLink, FORM_BROWSER_CONFIG_REQUEST_SIGNATURE)\r
 \r
 #define FORM_BROWSER_FORM_SIGNATURE  SIGNATURE_32 ('F', 'F', 'R', 'M')\r
 #define STANDARD_MAP_FORM_TYPE 0x01\r
@@ -397,6 +403,7 @@ typedef struct {
   BOOLEAN              ModalForm;            // Whether this is a modal form.\r
   BOOLEAN              Locked;               // Whether this form is locked.\r
 \r
+  LIST_ENTRY           FormViewListHead;     // List of type FORMID_INFO is Browser View Form History List.\r
   LIST_ENTRY           ExpressionListHead;   // List of Expressions (FORM_EXPRESSION)\r
   LIST_ENTRY           StatementListHead;    // List of Statements and Questions (FORM_BROWSER_STATEMENT)\r
   LIST_ENTRY           ConfigRequestHead;    // List of configreques for all storage.\r
@@ -422,6 +429,8 @@ typedef struct {
 typedef struct {\r
   UINTN                           Signature;\r
   LIST_ENTRY                      Link;\r
+  LIST_ENTRY                      SaveFailLink;\r
+\r
   EFI_HII_HANDLE                  HiiHandle;      // unique id for formset.\r
   EFI_HANDLE                      DriverHandle;\r
   EFI_HII_CONFIG_ACCESS_PROTOCOL  *ConfigAccess;\r
@@ -442,15 +451,20 @@ typedef struct {
 \r
   FORM_BROWSER_STATEMENT          *StatementBuffer;     // Buffer for all Statements and Questions\r
   EXPRESSION_OPCODE               *ExpressionBuffer;    // Buffer for all Expression OpCode\r
+  FORM_BROWSER_FORM               *SaveFailForm;        // The form which failed to save.\r
+  FORM_BROWSER_STATEMENT          *SaveFailStatement;   // The Statement which failed to save.\r
 \r
   LIST_ENTRY                      StatementListOSF;     // Statement list out side of the form.\r
   LIST_ENTRY                      StorageListHead;      // Storage list (FORMSET_STORAGE)\r
+  LIST_ENTRY                      SaveFailStorageListHead; // Storage list for the save fail 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
 #define FORM_BROWSER_FORMSET_FROM_LINK(a)  CR (a, FORM_BROWSER_FORMSET, Link, FORM_BROWSER_FORMSET_SIGNATURE)\r
 \r
+#define FORM_BROWSER_FORMSET_FROM_SAVE_FAIL_LINK(a)  CR (a, FORM_BROWSER_FORMSET, SaveFailLink, FORM_BROWSER_FORMSET_SIGNATURE)\r
+\r
 typedef struct {\r
   LIST_ENTRY   Link;\r
   EFI_EVENT    RefreshEvent;\r
@@ -534,9 +548,10 @@ typedef enum {
 // Get/set question value from/to.\r
 //\r
 typedef enum {\r
-  GetSetValueWithEditBuffer,       // Get/Set question value from/to editbuffer in the storage.\r
+  GetSetValueWithEditBuffer = 0,   // Get/Set question value from/to editbuffer in the storage.\r
   GetSetValueWithBuffer,           // Get/Set question value from/to buffer in the storage.\r
   GetSetValueWithHiiDriver,        // Get/Set question value from/to hii driver.\r
+  GetSetValueWithBothBuffer,       // Compare the editbuffer with buffer for this question, not use the question value.\r
   GetSetValueWithMax               // Invalid value.\r
 } GET_SET_QUESTION_VALUE_WITH;\r
 \r
@@ -1515,12 +1530,44 @@ UiFreeMenuList (
   Find parent menu for current menu.\r
 \r
   @param  CurrentMenu    Current Menu\r
+  @param  SettingLevel   Whether find parent menu in Form Level or Formset level.\r
+                         In form level, just find the parent menu; \r
+                         In formset level, find the parent menu which has different\r
+                         formset guid value.\r
 \r
   @retval   The parent menu for current menu.\r
 **/\r
 FORM_ENTRY_INFO *\r
 UiFindParentMenu (\r
-  IN FORM_ENTRY_INFO  *CurrentMenu\r
+  IN FORM_ENTRY_INFO          *CurrentMenu,\r
+  IN BROWSER_SETTING_SCOPE    SettingLevel\r
+  );\r
+  \r
+/**\r
+  Validate the HiiHandle.\r
+\r
+  @param  HiiHandle              The input HiiHandle which need to validate.\r
+\r
+  @retval TRUE                   The handle is validate.\r
+  @retval FALSE                  The handle is invalidate.\r
+\r
+**/\r
+BOOLEAN\r
+ValidateHiiHandle (\r
+  EFI_HII_HANDLE          HiiHandle\r
+  );\r
+\r
+/**\r
+  Copy current Menu list to the new menu list.\r
+  \r
+  @param  NewMenuListHead        New create Menu list.\r
+  @param  CurrentMenuListHead    Current Menu list.\r
+\r
+**/\r
+VOID\r
+UiCopyMenuList (\r
+  OUT LIST_ENTRY   *NewMenuListHead,\r
+  IN  LIST_ENTRY   *CurrentMenuListHead\r
   );\r
 \r
 /**\r
@@ -1713,13 +1760,15 @@ ValueChangedValidation (
   Pop up the error info.\r
 \r
   @param      BrowserStatus    The input browser status.\r
+  @param      HiiHandle        The HiiHandle for this error opcode.\r
   @param      OpCode           The opcode use to get the erro info and timeout value.\r
   @param      ErrorString      Error string used by BROWSER_NO_SUBMIT_IF.\r
 \r
 **/\r
-VOID\r
+UINT32\r
 PopupErrorMessage (\r
   IN UINT32                BrowserStatus,\r
+  IN EFI_HII_HANDLE        HiiHandle,\r
   IN EFI_IFR_OP_HEADER     *OpCode, OPTIONAL\r
   IN CHAR16                *ErrorString\r
   );\r