Enable SetupBrowser to support multiple form class guid.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9680 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2010-01-06 06:41:09 +00:00
parent cb0a42901a
commit 4024517599
4 changed files with 33 additions and 14 deletions

View File

@ -208,7 +208,7 @@ DisplayPageFrame (
Buffer[Index] = Character; Buffer[Index] = Character;
} }
if (gClassOfVfr == FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE) {
// //
// ClearLines(0, LocalScreen.RightColumn, 0, BANNER_HEIGHT-1, BANNER_TEXT | BANNER_BACKGROUND); // ClearLines(0, LocalScreen.RightColumn, 0, BANNER_HEIGHT-1, BANNER_TEXT | BANNER_BACKGROUND);
// //
@ -289,7 +289,7 @@ DisplayPageFrame (
KEYHELP_TEXT | KEYHELP_BACKGROUND KEYHELP_TEXT | KEYHELP_BACKGROUND
); );
if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {
ClearLines ( ClearLines (
LocalScreen.LeftColumn, LocalScreen.LeftColumn,
LocalScreen.RightColumn, LocalScreen.RightColumn,
@ -324,7 +324,7 @@ DisplayPageFrame (
Character = BOXDRAW_UP_LEFT; Character = BOXDRAW_UP_LEFT;
PrintChar (Character); PrintChar (Character);
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) { if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {
// //
// Print Bottom border line // Print Bottom border line
// +------------------------------------------------------------------------------+ // +------------------------------------------------------------------------------+
@ -472,7 +472,7 @@ DisplayForm (
StringPtr = GetToken (Selection->Form->FormTitle, Handle); StringPtr = GetToken (Selection->Form->FormTitle, Handle);
if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {
gST->ConOut->SetAttribute (gST->ConOut, TITLE_TEXT | TITLE_BACKGROUND); gST->ConOut->SetAttribute (gST->ConOut, TITLE_TEXT | TITLE_BACKGROUND);
PrintStringAt ( PrintStringAt (
(LocalScreen.RightColumn + LocalScreen.LeftColumn - GetStringWidth (StringPtr) / 2) / 2, (LocalScreen.RightColumn + LocalScreen.LeftColumn - GetStringWidth (StringPtr) / 2) / 2,
@ -685,7 +685,7 @@ UpdateKeyHelp (
ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND); ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);
if (!Selected) { if (!Selected) {
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) { if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {
if (Selection->FormEditable) { if (Selection->FormEditable) {
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString); PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString); PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
@ -742,7 +742,7 @@ UpdateKeyHelp (
case EFI_IFR_CHECKBOX_OP: case EFI_IFR_CHECKBOX_OP:
ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND); ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) { if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {
if (Selection->FormEditable) { if (Selection->FormEditable) {
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString); PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString); PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);
@ -763,7 +763,7 @@ UpdateKeyHelp (
ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND); ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);
if (!Selected) { if (!Selected) {
if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) { if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {
if (Selection->FormEditable) { if (Selection->FormEditable) {
PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString); PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);
PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString); PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);

View File

@ -277,7 +277,6 @@ SendForm (
InitializeBrowserStrings (); InitializeBrowserStrings ();
gFunctionKeySetting = DEFAULT_FUNCTION_KEY_SETTING; gFunctionKeySetting = DEFAULT_FUNCTION_KEY_SETTING;
gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;
// //
// Ensure we are in Text mode // Ensure we are in Text mode
@ -942,6 +941,10 @@ ConfigRespToStorage (
break; break;
case EFI_HII_VARSTORE_NAME_VALUE: case EFI_HII_VARSTORE_NAME_VALUE:
StrPtr = StrStr (ConfigResp, L"PATH");
if (StrPtr == NULL) {
break;
}
StrPtr = StrStr (ConfigResp, L"&"); StrPtr = StrStr (ConfigResp, L"&");
while (StrPtr != NULL) { while (StrPtr != NULL) {
// //
@ -2584,9 +2587,25 @@ InitializeFormSet (
return Status; return Status;
} }
//
// Set VFR type by FormSet SubClass field
//
gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP; gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;
if (FormSet->SubClass == EFI_FRONT_PAGE_SUBCLASS) { if (FormSet->SubClass == EFI_FRONT_PAGE_SUBCLASS) {
gClassOfVfr = FORMSET_CLASS_FRONT_PAGE; gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;
}
//
// Set VFR type by FormSet class guid
//
for (Index = 0; Index < 3; Index ++) {
if (CompareGuid (&FormSet->ClassGuid[Index], &gEfiHiiPlatformSetupFormsetGuid)) {
gClassOfVfr |= FORMSET_CLASS_PLATFORM_SETUP;
break;
}
}
if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE) {
gFrontPageHandle = FormSet->HiiHandle; gFrontPageHandle = FormSet->HiiHandle;
} }

View File

@ -193,8 +193,8 @@ typedef struct {
#define FORM_INCONSISTENT_VALIDATION 0 #define FORM_INCONSISTENT_VALIDATION 0
#define FORM_NO_SUBMIT_VALIDATION 1 #define FORM_NO_SUBMIT_VALIDATION 1
#define FORMSET_CLASS_PLATFORM_SETUP 0 #define FORMSET_CLASS_PLATFORM_SETUP 0x0001
#define FORMSET_CLASS_FRONT_PAGE 1 #define FORMSET_CLASS_FRONT_PAGE 0x0002
typedef struct { typedef struct {
UINT8 Type; UINT8 Type;

View File

@ -1037,7 +1037,7 @@ UpdateStatusBar (
break; break;
case NV_UPDATE_REQUIRED: case NV_UPDATE_REQUIRED:
if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {
if (State) { if (State) {
gST->ConOut->SetAttribute (gST->ConOut, INFO_TEXT); gST->ConOut->SetAttribute (gST->ConOut, INFO_TEXT);
PrintStringAt ( PrintStringAt (
@ -1694,7 +1694,7 @@ UiDisplayMenu (
ZeroMem (&Key, sizeof (EFI_INPUT_KEY)); ZeroMem (&Key, sizeof (EFI_INPUT_KEY));
if (gClassOfVfr == FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE){
TopRow = LocalScreen.TopRow + FRONT_PAGE_HEADER_HEIGHT + SCROLL_ARROW_HEIGHT; TopRow = LocalScreen.TopRow + FRONT_PAGE_HEADER_HEIGHT + SCROLL_ARROW_HEIGHT;
Row = LocalScreen.TopRow + FRONT_PAGE_HEADER_HEIGHT + SCROLL_ARROW_HEIGHT; Row = LocalScreen.TopRow + FRONT_PAGE_HEADER_HEIGHT + SCROLL_ARROW_HEIGHT;
} else { } else {
@ -2404,7 +2404,7 @@ UiDisplayMenu (
break; break;
case ' ': case ' ':
if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {
if (MenuOption->ThisTag->Operand == EFI_IFR_CHECKBOX_OP && !MenuOption->GrayOut) { if (MenuOption->ThisTag->Operand == EFI_IFR_CHECKBOX_OP && !MenuOption->GrayOut) {
ScreenOperation = UiSelect; ScreenOperation = UiSelect;
} }
@ -2686,7 +2686,7 @@ UiDisplayMenu (
break; break;
} }
if (gClassOfVfr == FORMSET_CLASS_FRONT_PAGE) { if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE) {
// //
// We never exit FrontPage, so skip the ESC // We never exit FrontPage, so skip the ESC
// //