]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
Refine the save action for the browser.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Setup.h
index d21a6cd9c73f4c459ee3a58dbf69999e09ee6a10..34b6d944d01f1e3d4631e346441ab0884dd5717c 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
@@ -1523,6 +1538,19 @@ UiFindParentMenu (
   IN FORM_ENTRY_INFO  *CurrentMenu\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
   Search an Option of a Question by its value.\r
 \r
@@ -1713,13 +1741,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