Enable SetupBrowser to support multiple form class guid.
authorlgao4 <lgao4@de2fecce-e211-0410-80a6-f3fac2684e05>
Wed, 6 Jan 2010 06:41:09 +0000 (06:41 +0000)
committerlgao4 <lgao4@de2fecce-e211-0410-80a6-f3fac2684e05>
Wed, 6 Jan 2010 06:41:09 +0000 (06:41 +0000)
git-svn-id: https://edk2.tianocore.org/svn/edk2/trunk@9680 de2fecce-e211-0410-80a6-f3fac2684e05

edk2/MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
edk2/MdeModulePkg/Universal/SetupBrowserDxe/Setup.c
edk2/MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
edk2/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c

index 69c0496..4e3e981 100644 (file)
@@ -208,7 +208,7 @@ DisplayPageFrame (
     Buffer[Index] = Character;\r
   }\r
 \r
-  if (gClassOfVfr == FORMSET_CLASS_FRONT_PAGE) {\r
+  if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE) {\r
     //\r
     //    ClearLines(0, LocalScreen.RightColumn, 0, BANNER_HEIGHT-1, BANNER_TEXT | BANNER_BACKGROUND);\r
     //\r
@@ -289,7 +289,7 @@ DisplayPageFrame (
     KEYHELP_TEXT | KEYHELP_BACKGROUND\r
     );\r
 \r
-  if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) {\r
+  if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {\r
     ClearLines (\r
       LocalScreen.LeftColumn,\r
       LocalScreen.RightColumn,\r
@@ -324,7 +324,7 @@ DisplayPageFrame (
     Character = BOXDRAW_UP_LEFT;\r
     PrintChar (Character);\r
 \r
-    if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
+    if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {\r
       //\r
       // Print Bottom border line\r
       // +------------------------------------------------------------------------------+\r
@@ -472,7 +472,7 @@ DisplayForm (
 \r
   StringPtr = GetToken (Selection->Form->FormTitle, Handle);\r
 \r
-  if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) {\r
+  if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {\r
     gST->ConOut->SetAttribute (gST->ConOut, TITLE_TEXT | TITLE_BACKGROUND);\r
     PrintStringAt (\r
       (LocalScreen.RightColumn + LocalScreen.LeftColumn - GetStringWidth (StringPtr) / 2) / 2,\r
@@ -685,7 +685,7 @@ UpdateKeyHelp (
     ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);\r
 \r
     if (!Selected) {\r
-      if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
+      if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {\r
         if (Selection->FormEditable) {\r
           PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);\r
           PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);\r
@@ -742,7 +742,7 @@ UpdateKeyHelp (
   case EFI_IFR_CHECKBOX_OP:\r
     ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);\r
 \r
-    if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
+    if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {\r
       if (Selection->FormEditable) {\r
         PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);\r
         PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);\r
@@ -763,7 +763,7 @@ UpdateKeyHelp (
     ClearLines (LeftColumnOfHelp, RightColumnOfHelp, TopRowOfHelp, BottomRowOfHelp, KEYHELP_TEXT | KEYHELP_BACKGROUND);\r
 \r
     if (!Selected) {\r
-      if (gClassOfVfr == FORMSET_CLASS_PLATFORM_SETUP) {\r
+      if ((gClassOfVfr & FORMSET_CLASS_PLATFORM_SETUP) == FORMSET_CLASS_PLATFORM_SETUP) {\r
         if (Selection->FormEditable) {\r
           PrintStringAt (SecCol, TopRowOfHelp, gFunctionNineString);\r
           PrintStringAt (ThdCol, TopRowOfHelp, gFunctionTenString);\r
index 5b99e7c..da690eb 100644 (file)
@@ -277,7 +277,6 @@ SendForm (
   InitializeBrowserStrings ();\r
 \r
   gFunctionKeySetting = DEFAULT_FUNCTION_KEY_SETTING;\r
-  gClassOfVfr         = FORMSET_CLASS_PLATFORM_SETUP;\r
 \r
   //\r
   // Ensure we are in Text mode\r
@@ -942,6 +941,10 @@ ConfigRespToStorage (
     break;\r
 \r
   case EFI_HII_VARSTORE_NAME_VALUE:\r
+    StrPtr = StrStr (ConfigResp, L"PATH");\r
+    if (StrPtr == NULL) {\r
+      break;\r
+    }\r
     StrPtr = StrStr (ConfigResp, L"&");\r
     while (StrPtr != NULL) {\r
       //\r
@@ -2584,9 +2587,25 @@ InitializeFormSet (
     return Status;\r
   }\r
 \r
+  //\r
+  // Set VFR type by FormSet SubClass field\r
+  //\r
   gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;\r
   if (FormSet->SubClass == EFI_FRONT_PAGE_SUBCLASS) {\r
     gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;\r
+  }\r
+  \r
+  //\r
+  // Set VFR type by FormSet class guid\r
+  //\r
+  for (Index = 0; Index < 3; Index ++) {\r
+    if (CompareGuid (&FormSet->ClassGuid[Index], &gEfiHiiPlatformSetupFormsetGuid)) {\r
+      gClassOfVfr |= FORMSET_CLASS_PLATFORM_SETUP;\r
+      break;\r
+    }\r
+  }\r
+\r
+  if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE) {\r
     gFrontPageHandle = FormSet->HiiHandle;\r
   }\r
 \r
index b5cbc67..11714d6 100644 (file)
@@ -193,8 +193,8 @@ typedef struct {
 #define FORM_INCONSISTENT_VALIDATION         0\r
 #define FORM_NO_SUBMIT_VALIDATION            1\r
 \r
-#define FORMSET_CLASS_PLATFORM_SETUP         0\r
-#define FORMSET_CLASS_FRONT_PAGE             1\r
+#define FORMSET_CLASS_PLATFORM_SETUP         0x0001\r
+#define FORMSET_CLASS_FRONT_PAGE             0x0002\r
 \r
 typedef struct {\r
   UINT8               Type;\r
index 5b1f361..f8d0e07 100644 (file)
@@ -1037,7 +1037,7 @@ UpdateStatusBar (
     break;\r
 \r
   case NV_UPDATE_REQUIRED:\r
-    if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) {\r
+    if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {\r
       if (State) {\r
         gST->ConOut->SetAttribute (gST->ConOut, INFO_TEXT);\r
         PrintStringAt (\r
@@ -1694,7 +1694,7 @@ UiDisplayMenu (
 \r
   ZeroMem (&Key, sizeof (EFI_INPUT_KEY));\r
 \r
-  if (gClassOfVfr == FORMSET_CLASS_FRONT_PAGE) {\r
+  if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE){\r
     TopRow  = LocalScreen.TopRow + FRONT_PAGE_HEADER_HEIGHT + SCROLL_ARROW_HEIGHT;\r
     Row     = LocalScreen.TopRow + FRONT_PAGE_HEADER_HEIGHT + SCROLL_ARROW_HEIGHT;\r
   } else {\r
@@ -2404,7 +2404,7 @@ UiDisplayMenu (
         break;\r
 \r
       case ' ':\r
-        if (gClassOfVfr != FORMSET_CLASS_FRONT_PAGE) {\r
+        if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) != FORMSET_CLASS_FRONT_PAGE) {\r
           if (MenuOption->ThisTag->Operand == EFI_IFR_CHECKBOX_OP && !MenuOption->GrayOut) {\r
             ScreenOperation = UiSelect;\r
           }\r
@@ -2686,7 +2686,7 @@ UiDisplayMenu (
         break;\r
       }\r
 \r
-      if (gClassOfVfr == FORMSET_CLASS_FRONT_PAGE) {\r
+      if ((gClassOfVfr & FORMSET_CLASS_FRONT_PAGE) == FORMSET_CLASS_FRONT_PAGE) {\r
         //\r
         // We never exit FrontPage, so skip the ESC\r
         //\r