]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c
IntelFrameworkModulePkg: Replace [Ascii|Unicode]ValueToString
[mirror_edk2.git] / MdeModulePkg / Library / BootMaintenanceManagerUiLib / UpdatePage.c
index 9e79826a6afaaea4e715774da6ae18087ad421a1..dede4b392f153a0690be5323d8bcabdc2ae365b8 100644 (file)
@@ -262,6 +262,7 @@ UpdateBootDelPage (
       // through HiiSetBrowserData function.\r
       //\r
       CallbackData->BmmFakeNvData.BootOptionDel[Index] = FALSE;\r
+      CallbackData->BmmOldFakeNVData.BootOptionDel[Index] = FALSE;\r
     }\r
     \r
     HiiCreateCheckBoxOpCode (\r
@@ -348,6 +349,7 @@ UpdateDrvDelPage (
       // through HiiSetBrowserData function.\r
       //\r
       CallbackData->BmmFakeNvData.DriverOptionDel[Index] = FALSE;\r
+      CallbackData->BmmOldFakeNVData.DriverOptionDel[Index] = FALSE;\r
     }\r
     HiiCreateCheckBoxOpCode (\r
       mStartOpCodeHandle,\r
@@ -459,8 +461,6 @@ UpdateConsolePage (
   UINT16              Index2;\r
   UINT8               CheckFlags;\r
   UINT8               *ConsoleCheck;\r
-  UINT8               *OldConsoleCheck;\r
-  UINTN               ConsoleCheckSize;\r
   EFI_QUESTION_ID     QuestionIdBase;\r
   UINT16              VariableOffsetBase;\r
 \r
@@ -469,32 +469,24 @@ UpdateConsolePage (
   UpdatePageStart (CallbackData);\r
 \r
   ConsoleCheck       = NULL;\r
-  OldConsoleCheck    = NULL;\r
   QuestionIdBase     = 0;\r
   VariableOffsetBase = 0;\r
-  ConsoleCheckSize   = 0;\r
 \r
   switch (UpdatePageId) {\r
   case FORM_CON_IN_ID:\r
     ConsoleCheck       = &CallbackData->BmmFakeNvData.ConsoleInCheck[0];\r
-    OldConsoleCheck    = &CallbackData->BmmOldFakeNVData.ConsoleInCheck[0];\r
-    ConsoleCheckSize   = sizeof (CallbackData->BmmFakeNvData.ConsoleInCheck);\r
     QuestionIdBase     = CON_IN_DEVICE_QUESTION_ID;\r
     VariableOffsetBase = CON_IN_DEVICE_VAR_OFFSET;\r
     break;\r
 \r
   case FORM_CON_OUT_ID:\r
     ConsoleCheck       = &CallbackData->BmmFakeNvData.ConsoleOutCheck[0];\r
-    OldConsoleCheck    = &CallbackData->BmmOldFakeNVData.ConsoleOutCheck[0];\r
-    ConsoleCheckSize   = sizeof (CallbackData->BmmFakeNvData.ConsoleOutCheck);\r
     QuestionIdBase     = CON_OUT_DEVICE_QUESTION_ID;\r
     VariableOffsetBase = CON_OUT_DEVICE_VAR_OFFSET;\r
     break;\r
 \r
   case FORM_CON_ERR_ID:\r
     ConsoleCheck       = &CallbackData->BmmFakeNvData.ConsoleErrCheck[0];\r
-    OldConsoleCheck    = &CallbackData->BmmOldFakeNVData.ConsoleErrCheck[0];\r
-    ConsoleCheckSize   = sizeof (CallbackData->BmmFakeNvData.ConsoleErrCheck);\r
     QuestionIdBase     = CON_ERR_DEVICE_QUESTION_ID;\r
     VariableOffsetBase = CON_ERR_DEVICE_VAR_OFFSET;\r
     break;\r
@@ -519,7 +511,7 @@ UpdateConsolePage (
       (UINT16) (VariableOffsetBase + Index),\r
       NewMenuEntry->DisplayStringToken,\r
       NewMenuEntry->HelpStringToken,\r
-      0,\r
+      EFI_IFR_FLAG_CALLBACK,\r
       CheckFlags,\r
       NULL\r
       );\r
@@ -548,7 +540,7 @@ UpdateConsolePage (
       (UINT16) (VariableOffsetBase + Index),\r
       NewMenuEntry->DisplayStringToken,\r
       NewMenuEntry->HelpStringToken,\r
-      0,\r
+      EFI_IFR_FLAG_CALLBACK,\r
       CheckFlags,\r
       NULL\r
       );\r
@@ -556,8 +548,6 @@ UpdateConsolePage (
     Index++;\r
   }\r
 \r
-  CopyMem (OldConsoleCheck, ConsoleCheck, ConsoleCheckSize);\r
-\r
   UpdatePageEnd (CallbackData);\r
 }\r
 \r
@@ -595,14 +585,30 @@ UpdateOrderPage (
   switch (UpdatePageId) { \r
   \r
   case FORM_BOOT_CHG_ID:\r
-    GetBootOrder (CallbackData);\r
+    //\r
+    // If the BootOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData,\r
+    // means all Boot Options has been save in BootOptionMenu, we can get the date from the menu.\r
+    // else means browser maintains some uncommitted date which are not saved in BootOptionMenu,\r
+    // so we should not get the data from BootOptionMenu to show it.\r
+    //\r
+    if (CompareMem (CallbackData->BmmFakeNvData.BootOptionOrder, CallbackData->BmmOldFakeNVData.BootOptionOrder, sizeof (CallbackData->BmmFakeNvData.BootOptionOrder)) == 0) {\r
+      GetBootOrder (CallbackData);\r
+    }\r
     OptionOrder = CallbackData->BmmFakeNvData.BootOptionOrder;\r
     QuestionId = BOOT_OPTION_ORDER_QUESTION_ID;\r
     VarOffset = BOOT_OPTION_ORDER_VAR_OFFSET;\r
     break;\r
     \r
   case FORM_DRV_CHG_ID:\r
-    GetDriverOrder (CallbackData);\r
+    //\r
+    // If the DriverOptionOrder in the BmmFakeNvData are same with the date in the BmmOldFakeNVData,\r
+    // means all Driver Options has been save in DriverOptionMenu, we can get the DriverOptionOrder from the menu.\r
+    // else means browser maintains some uncommitted date which are not saved in DriverOptionMenu,\r
+    // so we should not get the data from DriverOptionMenu to show it.\r
+    //\r
+    if (CompareMem (CallbackData->BmmFakeNvData.DriverOptionOrder, CallbackData->BmmOldFakeNVData.DriverOptionOrder, sizeof (CallbackData->BmmFakeNvData.DriverOptionOrder)) == 0) {\r
+      GetDriverOrder (CallbackData);\r
+    }\r
     OptionOrder = CallbackData->BmmFakeNvData.DriverOptionOrder;\r
     QuestionId = DRIVER_OPTION_ORDER_QUESTION_ID;\r
     VarOffset = DRIVER_OPTION_ORDER_VAR_OFFSET;\r
@@ -730,7 +736,7 @@ UpdateConModePage (
     //\r
     UnicodeValueToString (ModeString, 0, Col, 0);\r
     PStr = &ModeString[0];\r
-    StrnCatS (PStr, sizeof (ModeString) / sizeof (ModeString[0]), L" x ", StrLen(L" x ") + 1);\r
+    StrnCatS (PStr, ARRAY_SIZE (ModeString), L" x ", StrLen(L" x ") + 1);\r
     PStr = PStr + StrLen (PStr);\r
     UnicodeValueToString (PStr , 0, Row, 0);\r
 \r
@@ -831,7 +837,7 @@ UpdateTerminalPage (
     (UINT16) (COM_BAUD_RATE_VAR_OFFSET + CurrentTerminal),\r
     STRING_TOKEN (STR_COM_BAUD_RATE),\r
     STRING_TOKEN (STR_COM_BAUD_RATE),\r
-    0,\r
+    EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
     OptionsOpCodeHandle,\r
     NULL\r
@@ -841,7 +847,7 @@ UpdateTerminalPage (
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
-  for (Index = 0; Index < sizeof (DataBitsList) / sizeof (DataBitsList[0]); Index++) {\r
+  for (Index = 0; Index < ARRAY_SIZE (DataBitsList); Index++) {\r
     CheckFlags = 0;\r
 \r
     if (DataBitsList[Index].Value == 8) {\r
@@ -864,7 +870,7 @@ UpdateTerminalPage (
     (UINT16) (COM_DATA_RATE_VAR_OFFSET + CurrentTerminal),\r
     STRING_TOKEN (STR_COM_DATA_BITS),\r
     STRING_TOKEN (STR_COM_DATA_BITS),\r
-    0,\r
+    EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
     OptionsOpCodeHandle,\r
     NULL\r
@@ -874,7 +880,7 @@ UpdateTerminalPage (
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
-  for (Index = 0; Index < sizeof (ParityList) / sizeof (ParityList[0]); Index++) {\r
+  for (Index = 0; Index < ARRAY_SIZE (ParityList); Index++) {\r
     CheckFlags = 0;\r
     if (ParityList[Index].Value ==  NoParity) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -896,7 +902,7 @@ UpdateTerminalPage (
     (UINT16) (COM_PARITY_VAR_OFFSET + CurrentTerminal),\r
     STRING_TOKEN (STR_COM_PARITY),\r
     STRING_TOKEN (STR_COM_PARITY),\r
-    0,\r
+    EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
     OptionsOpCodeHandle,\r
     NULL\r
@@ -906,7 +912,7 @@ UpdateTerminalPage (
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
-  for (Index = 0; Index < sizeof (StopBitsList) / sizeof (StopBitsList[0]); Index++) {\r
+  for (Index = 0; Index < ARRAY_SIZE (StopBitsList); Index++) {\r
     CheckFlags = 0;\r
     if (StopBitsList[Index].Value == OneStopBit) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -928,7 +934,7 @@ UpdateTerminalPage (
     (UINT16) (COM_STOP_BITS_VAR_OFFSET + CurrentTerminal),\r
     STRING_TOKEN (STR_COM_STOP_BITS),\r
     STRING_TOKEN (STR_COM_STOP_BITS),\r
-    0,\r
+    EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
     OptionsOpCodeHandle,\r
     NULL\r
@@ -938,7 +944,7 @@ UpdateTerminalPage (
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
-  for (Index = 0; Index < sizeof (TerminalType) / sizeof (TerminalType[0]); Index++) {\r
+  for (Index = 0; Index < ARRAY_SIZE (TerminalType); Index++) {\r
     CheckFlags = 0;\r
     if (Index == 0) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -960,7 +966,7 @@ UpdateTerminalPage (
     (UINT16) (COM_TERMINAL_VAR_OFFSET + CurrentTerminal),\r
     STRING_TOKEN (STR_COM_TERMI_TYPE),\r
     STRING_TOKEN (STR_COM_TERMI_TYPE),\r
-    0,\r
+    EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
     OptionsOpCodeHandle,\r
     NULL\r
@@ -970,7 +976,7 @@ UpdateTerminalPage (
   OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
   ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
-  for (Index = 0; Index < sizeof (mFlowControlType) / sizeof (mFlowControlType[0]); Index++) {\r
+  for (Index = 0; Index < ARRAY_SIZE (mFlowControlType); Index++) {\r
   CheckFlags = 0;\r
     if (Index == 0) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -991,7 +997,7 @@ UpdateTerminalPage (
     (UINT16) (COM_FLOWCONTROL_VAR_OFFSET + CurrentTerminal),\r
     STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
     STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
-    0,\r
+    EFI_IFR_FLAG_CALLBACK,\r
     EFI_IFR_NUMERIC_SIZE_1,\r
     OptionsOpCodeHandle,\r
     NULL\r
@@ -1037,11 +1043,15 @@ UpdateOptionPage(
     if (!CallbackData->BmmFakeNvData.BootOptionChanged) {\r
       ZeroMem (CallbackData->BmmFakeNvData.BootOptionalData, sizeof (CallbackData->BmmFakeNvData.BootOptionalData));\r
       ZeroMem (CallbackData->BmmFakeNvData.BootDescriptionData, sizeof (CallbackData->BmmFakeNvData.BootDescriptionData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.BootOptionalData, sizeof (CallbackData->BmmOldFakeNVData.BootOptionalData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.BootDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.BootDescriptionData));\r
     }\r
   } else if (FormId == FORM_DRV_ADD_FILE_ID){\r
     if (!CallbackData->BmmFakeNvData.DriverOptionChanged) {\r
       ZeroMem (CallbackData->BmmFakeNvData.DriverOptionalData, sizeof (CallbackData->BmmFakeNvData.DriverOptionalData));\r
       ZeroMem (CallbackData->BmmFakeNvData.DriverDescriptionData, sizeof (CallbackData->BmmFakeNvData.DriverDescriptionData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.DriverOptionalData, sizeof (CallbackData->BmmOldFakeNVData.DriverOptionalData));\r
+      ZeroMem (CallbackData->BmmOldFakeNVData.DriverDescriptionData, sizeof (CallbackData->BmmOldFakeNVData.DriverDescriptionData));\r
     }\r
   }\r
 \r