Export one interface to support 3rd party to change question attribute, such as hide/gray out.

Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14678 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Eric Dong
2013-09-16 09:50:32 +00:00
committed by ydong10
parent b7dbd9c27a
commit 184f3a02d6
5 changed files with 79 additions and 1 deletions

View File

@ -569,6 +569,47 @@ UpdateHotkeyList (
}
}
/**
Get the extra question attribute from override question list.
@param QuestionId The question id for this request question.
@retval The attribute for this question or NULL if not found this
question in the list.
**/
UINT32
ProcessQuestionExtraAttr (
IN EFI_QUESTION_ID QuestionId
)
{
LIST_ENTRY *Link;
QUESTION_ATTRIBUTE_OVERRIDE *QuestionDesc;
//
// Return HII_DISPLAY_NONE if input a invalid question id.
//
if (QuestionId == 0) {
return HII_DISPLAY_NONE;
}
Link = GetFirstNode (&mPrivateData.FormBrowserEx2.OverrideQestListHead);
while (!IsNull (&mPrivateData.FormBrowserEx2.OverrideQestListHead, Link)) {
QuestionDesc = FORM_QUESTION_ATTRIBUTE_OVERRIDE_FROM_LINK (Link);
Link = GetNextNode (&mPrivateData.FormBrowserEx2.OverrideQestListHead, Link);
if ((QuestionDesc->QuestionId == QuestionId) &&
(QuestionDesc->FormId == gCurrentSelection->FormId) &&
(QuestionDesc->HiiHandle == gCurrentSelection->Handle) &&
CompareGuid (&QuestionDesc->FormSetGuid, &gCurrentSelection->FormSetGuid)) {
return QuestionDesc->Attribute;
}
}
return HII_DISPLAY_NONE;
}
/**
Enum all statement in current form, find all the statement can be display and
@ -589,6 +630,7 @@ AddStatementToDisplayForm (
EFI_EVENT RefreshIntervalEvent;
FORM_BROWSER_REFRESH_EVENT_NODE *EventNode;
BOOLEAN FormEditable;
UINT32 ExtraAttribute;
HostDisplayStatement = NULL;
MinRefreshInterval = 0;
@ -630,6 +672,14 @@ AddStatementToDisplayForm (
continue;
}
//
// Check the extra attribute.
//
ExtraAttribute = ProcessQuestionExtraAttr (Statement->QuestionId);
if ((ExtraAttribute & HII_DISPLAY_SUPPRESS) != 0) {
continue;
}
DisplayStatement = AllocateZeroPool (sizeof (FORM_DISPLAY_ENGINE_STATEMENT));
ASSERT (DisplayStatement != NULL);
@ -638,6 +688,11 @@ AddStatementToDisplayForm (
//
InitializeDisplayStatement(DisplayStatement, Statement, HostDisplayStatement);
//
// Set the extra attribute.
//
DisplayStatement->Attribute |= ExtraAttribute;
//
// Save the Host statement info.
// Host statement may has nest statement follow it.