UINTN Signature;\r
LIST_ENTRY Link;\r
\r
+ LIST_ENTRY SaveFailLink;\r
+\r
UINT16 VarStoreId;\r
\r
BROWSER_STORAGE *BrowserStorage;\r
} 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
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
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
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
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
\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
// 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
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
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