]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerCustomizedUiSupport.c
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Library / BootMaintenanceManagerUiLib / BootMaintenanceManagerCustomizedUiSupport.c
index 177b2498d3ecfb8a64f0d1c0a84b80317da0a08b..656106fc244faf0feccddb551946a52a28737633 100644 (file)
@@ -2,13 +2,7 @@
 The functions for Boot Maintainence Main menu.\r
 \r
 Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -26,13 +20,14 @@ typedef struct {
   BOOLEAN         EmptyLineAfter;\r
 } UI_HII_DRIVER_INSTANCE;\r
 \r
-UI_HII_DRIVER_INSTANCE       *gHiiDriverList;\r
+STATIC UI_HII_DRIVER_INSTANCE       *gHiiDriverList;\r
 \r
 \r
 /**\r
   Create the dynamic item to allow user to set the "BootNext" vaule.\r
 \r
-  @param CallbackData    The BMM context data.\r
+  @param[in]    HiiHandle           The hii handle for the Uiapp driver.\r
+  @param[in]    StartOpCodeHandle   The opcode handle to save the new opcode.\r
 \r
 **/\r
 VOID\r
@@ -42,53 +37,62 @@ BmmCreateBootNextMenu(
   )\r
 {\r
   BM_MENU_ENTRY   *NewMenuEntry;\r
-  UINTN           NumberOfOptions;\r
+  BM_LOAD_CONTEXT *NewLoadContext;\r
   UINT16          Index;\r
   VOID            *OptionsOpCodeHandle;\r
-  CHAR16          *StringBuffer;\r
-  EFI_STRING_ID   OptionId;\r
+  UINT32          BootNextIndex;\r
 \r
-  NumberOfOptions = BootOptionMenu.MenuNumber;\r
-  if (NumberOfOptions == 0) {\r
+  if (BootOptionMenu.MenuNumber == 0) {\r
     return;\r
   }\r
 \r
+  BootNextIndex = NONE_BOOTNEXT_VALUE;\r
+\r
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
   for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
     NewMenuEntry    = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
+    NewLoadContext  = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
+\r
+    if (NewLoadContext->IsBootNext) {\r
+      HiiCreateOneOfOptionOpCode (\r
+        OptionsOpCodeHandle,\r
+        NewMenuEntry->DisplayStringToken,\r
+        EFI_IFR_OPTION_DEFAULT,\r
+        EFI_IFR_TYPE_NUM_SIZE_32,\r
+        Index\r
+        );\r
+      BootNextIndex = Index;\r
+    } else {\r
+      HiiCreateOneOfOptionOpCode (\r
+        OptionsOpCodeHandle,\r
+        NewMenuEntry->DisplayStringToken,\r
+        0,\r
+        EFI_IFR_TYPE_NUM_SIZE_32,\r
+        Index\r
+        );\r
+    }\r
+  }\r
 \r
-    StringBuffer = HiiGetString (HiiHandle, NewMenuEntry->DisplayStringToken, NULL);\r
-    ASSERT (StringBuffer != NULL);\r
-    OptionId = HiiSetString (HiiHandle, 0, StringBuffer, NULL);\r
-    FreePool (StringBuffer);\r
-\r
+  if (BootNextIndex == NONE_BOOTNEXT_VALUE) {\r
     HiiCreateOneOfOptionOpCode (\r
       OptionsOpCodeHandle,\r
-      OptionId,\r
+      STRING_TOKEN (STR_NONE),\r
+      EFI_IFR_OPTION_DEFAULT,\r
+      EFI_IFR_TYPE_NUM_SIZE_32,\r
+      NONE_BOOTNEXT_VALUE\r
+      );\r
+  } else {\r
+    HiiCreateOneOfOptionOpCode (\r
+      OptionsOpCodeHandle,\r
+      STRING_TOKEN (STR_NONE),\r
       0,\r
-      EFI_IFR_TYPE_NUM_SIZE_16,\r
-      Index\r
+      EFI_IFR_TYPE_NUM_SIZE_32,\r
+      NONE_BOOTNEXT_VALUE\r
       );\r
   }\r
 \r
-  StringBuffer = HiiGetString (HiiHandle, STRING_TOKEN (STR_NONE), NULL);\r
-  ASSERT (StringBuffer != NULL);\r
-  OptionId = HiiSetString (HiiHandle, 0, StringBuffer, NULL);\r
-  FreePool (StringBuffer);\r
-\r
-  //\r
-  // Set no Boot Next Value as default.\r
-  //\r
-  HiiCreateOneOfOptionOpCode (\r
-    OptionsOpCodeHandle,\r
-    OptionId,\r
-    EFI_IFR_OPTION_DEFAULT,\r
-    EFI_IFR_TYPE_NUM_SIZE_16,\r
-    Index\r
-    );\r
-\r
   HiiCreateOneOfOpCode (\r
     StartOpCodeHandle,\r
     (EFI_QUESTION_ID) BOOT_NEXT_QUESTION_ID,\r
@@ -97,7 +101,7 @@ BmmCreateBootNextMenu(
     STRING_TOKEN (STR_BOOT_NEXT),\r
     STRING_TOKEN (STR_BOOT_NEXT_HELP),\r
     0,\r
-    EFI_IFR_NUMERIC_SIZE_2,\r
+    EFI_IFR_NUMERIC_SIZE_4,\r
     OptionsOpCodeHandle,\r
     NULL\r
     );\r
@@ -111,10 +115,6 @@ BmmCreateBootNextMenu(
 \r
   @param[in]    HiiHandle           The hii handle for the Uiapp driver.\r
   @param[in]    StartOpCodeHandle   The opcode handle to save the new opcode.\r
-  @param[in]    PromptId            The Prompt string id.\r
-  @param[in]    HelpId              The help string id.\r
-  @param[in]    FormId              The Form id for the dest form.\r
-  @param[in]    QuestionId          The question id for this goto question.\r
 \r
 **/\r
 VOID\r
@@ -213,10 +213,6 @@ BmmCreateComOptionMenu (
 \r
   @param[in]    HiiHandle           The hii handle for the Uiapp driver.\r
   @param[in]    StartOpCodeHandle   The opcode handle to save the new opcode.\r
-  @param[in]    PromptId            The Prompt string id.\r
-  @param[in]    HelpId              The help string id.\r
-  @param[in]    FormId              The Form id for the dest form.\r
-  @param[in]    QuestionId          The question id for this goto question.\r
 \r
 **/\r
 VOID\r
@@ -354,8 +350,8 @@ IsRequiredDriver (
 \r
   @param    HiiHandle           The hii handle for the Uiapp driver.\r
   @param    ClassGuid           The class guid for the driver which is the target.\r
+  @param    SpecialHandlerFn    The pointer to the specail handler function, if any.\r
   @param    StartOpCodeHandle   The opcode handle to save the new opcode.\r
-  @param    SpecialHandler      The pointer to the specail handler function, if any.\r
 \r
   @retval   EFI_SUCCESS         Search the driver success\r
 \r
@@ -433,9 +429,13 @@ BmmListThirdPartyDrivers (
 \r
     Count++;\r
     if (Count >= CurrentSize) {\r
-      DriverListPtr = AllocateCopyPool ((Count + UI_HII_DRIVER_LIST_SIZE) * sizeof (UI_HII_DRIVER_INSTANCE), gHiiDriverList);\r
+      DriverListPtr = ReallocatePool (\r
+                        CurrentSize * sizeof (UI_HII_DRIVER_INSTANCE),\r
+                        (Count + UI_HII_DRIVER_LIST_SIZE)\r
+                        * sizeof (UI_HII_DRIVER_INSTANCE),\r
+                        gHiiDriverList\r
+                        );\r
       ASSERT (DriverListPtr != NULL);\r
-      FreePool (gHiiDriverList);\r
       gHiiDriverList = DriverListPtr;\r
       CurrentSize += UI_HII_DRIVER_LIST_SIZE;\r
     }\r