\r
gOptionBlockWidth = (CHAR16) ((gScreenDimensions.RightColumn - gScreenDimensions.LeftColumn) / 3);\r
gHelpBlockWidth = gOptionBlockWidth;\r
- gPromptBlockWidth = gOptionBlockWidth;\r
+ gPromptBlockWidth = (CHAR16) (gOptionBlockWidth + LEFT_SKIPPED_COLUMNS);\r
+ gOptionBlockWidth = (CHAR16) (gOptionBlockWidth - LEFT_SKIPPED_COLUMNS);\r
\r
//\r
// Initialize the strings for the browser, upon exit of the browser, the strings will be freed\r
\r
\r
/**\r
- Perform NoSubmit check for a Form.\r
+ Perform NoSubmit check for each Form in FormSet.\r
\r
@param FormSet FormSet data structure.\r
- @param Form Form data structure.\r
\r
@retval EFI_SUCCESS Form validation pass.\r
@retval other Form validation failed.\r
**/\r
EFI_STATUS\r
NoSubmitCheck (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_FORM *Form\r
+ IN FORM_BROWSER_FORMSET *FormSet\r
)\r
{\r
EFI_STATUS Status;\r
LIST_ENTRY *Link;\r
FORM_BROWSER_STATEMENT *Question;\r
+ FORM_BROWSER_FORM *Form;\r
+ LIST_ENTRY *LinkForm;\r
\r
- Link = GetFirstNode (&Form->StatementListHead);\r
- while (!IsNull (&Form->StatementListHead, Link)) {\r
- Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);\r
+ LinkForm = GetFirstNode (&FormSet->FormListHead);\r
+ while (!IsNull (&FormSet->FormListHead, LinkForm)) {\r
+ Form = FORM_BROWSER_FORM_FROM_LINK (LinkForm);\r
\r
- Status = ValidateQuestion (FormSet, Form, Question, EFI_HII_EXPRESSION_NO_SUBMIT_IF);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ Link = GetFirstNode (&Form->StatementListHead);\r
+ while (!IsNull (&Form->StatementListHead, Link)) {\r
+ Question = FORM_BROWSER_STATEMENT_FROM_LINK (Link);\r
+\r
+ Status = ValidateQuestion (FormSet, Form, Question, EFI_HII_EXPRESSION_NO_SUBMIT_IF);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
+ Link = GetNextNode (&Form->StatementListHead, Link);\r
}\r
\r
- Link = GetNextNode (&Form->StatementListHead, Link);\r
+ LinkForm = GetNextNode (&FormSet->FormListHead, LinkForm);\r
}\r
\r
return EFI_SUCCESS;\r
//\r
// Validate the Form by NoSubmit check\r
//\r
- Status = NoSubmitCheck (FormSet, Form);\r
+ Status = NoSubmitCheck (FormSet);\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
- \r
+\r
+ if ((Question->Operand == EFI_IFR_STRING_OP) || (Question->Operand == EFI_IFR_PASSWORD_OP)) {\r
+ HiiSetString (FormSet->HiiHandle, Question->HiiValue.Value.string, (CHAR16*)Question->BufferValue, NULL);\r
+ }\r
+\r
//\r
// Check whether EfiVarstore with CallBack can be got.\r
//\r
- if ((Question->QuestionId != 0) && (Question->Storage != NULL) &&\r
+ if ((FormSet->ConfigAccess != NULL) &&\r
+ (Selection->Action != UI_ACTION_REFRESH_FORMSET) &&\r
+ (Question->QuestionId != 0) && \r
+ (Question->Storage != NULL) &&\r
(Question->Storage->Type == EFI_HII_VARSTORE_EFI_VARIABLE) && \r
((Question->QuestionFlags & EFI_IFR_FLAG_CALLBACK) == EFI_IFR_FLAG_CALLBACK)) {\r
- //\r
- // ConfigAccess can't be NULL.\r
- //\r
- if (FormSet->ConfigAccess == NULL) {\r
- return EFI_UNSUPPORTED;\r
- }\r
+\r
//\r
// Check QuestionValue does exist.\r
//\r
ActionRequest = EFI_BROWSER_ACTION_REQUEST_NONE;\r
HiiValue = &Question->HiiValue;\r
BufferValue = (UINT8 *) &Question->HiiValue.Value;\r
- if (HiiValue->Type == EFI_IFR_TYPE_STRING) {\r
- //\r
- // Create String in HII database for Configuration Driver to retrieve\r
- //\r
- HiiValue->Value.string = NewString ((CHAR16 *) Question->BufferValue, FormSet->HiiHandle);\r
- } else if (HiiValue->Type == EFI_IFR_TYPE_BUFFER) {\r
+ if (HiiValue->Type == EFI_IFR_TYPE_BUFFER) {\r
BufferValue = Question->BufferValue;\r
}\r
\r
(EFI_IFR_TYPE_VALUE *) BufferValue,\r
&ActionRequest\r
);\r
-\r
- if (HiiValue->Type == EFI_IFR_TYPE_STRING) {\r
- //\r
- // Clean the String in HII Database\r
- //\r
- DeleteString (HiiValue->Value.string, FormSet->HiiHandle);\r
- }\r
-\r
if (!EFI_ERROR (Status)) {\r
switch (ActionRequest) {\r
case EFI_BROWSER_ACTION_REQUEST_RESET:\r