]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
MdeModulePkg/UiApp: Retrieve the value of language menu
[mirror_edk2.git] / MdeModulePkg / Application / UiApp / FrontPageCustomizedUiSupport.c
index b838222106ee956e1bd9a57b4d3a49d8c52950fe..da0cff7556c84f0e9e2a164637fb049f1229caa3 100644 (file)
@@ -55,7 +55,8 @@ typedef struct {
 CHAR8                        *gLanguageString;\r
 EFI_STRING_ID                *gLanguageToken;\r
 UI_HII_DRIVER_INSTANCE       *gHiiDriverList;\r
-EFI_HII_HANDLE               gHiiHandle;\r
+extern EFI_HII_HANDLE        gStringPackHandle;\r
+UINT8                        gCurrentLanguageIndex;\r
 \r
 \r
 /**\r
@@ -130,6 +131,7 @@ LanguageChangeHandler (
     GetNextLanguage (&LangCode, Lang);\r
 \r
     if (Index == Value->u8) {\r
+      gCurrentLanguageIndex = Value->u8;\r
       break;\r
     }\r
 \r
@@ -190,6 +192,16 @@ UiSupportLibCallbackHandler (
     return FALSE;\r
   }\r
 \r
+  if (Action == EFI_BROWSER_ACTION_RETRIEVE) {\r
+    if (QuestionId == FRONT_PAGE_KEY_LANGUAGE) {\r
+      Value->u8 = gCurrentLanguageIndex;\r
+      *Status = EFI_SUCCESS;\r
+    } else {\r
+      *Status = EFI_UNSUPPORTED;\r
+    }\r
+    return TRUE;\r
+  }\r
+\r
   if (Action != EFI_BROWSER_ACTION_CHANGED) {\r
     //\r
     // Do nothing for other UEFI Action. Only do call back when data is changed.\r
@@ -236,11 +248,8 @@ UiSupportLibCallbackHandler (
   Create Select language menu in the front page with oneof opcode.\r
 \r
   @param[in]    HiiHandle           The hii handle for the Uiapp driver.\r
-  @param[in]    QuestionId          Question ID\r
   @param[in]    StartOpCodeHandle   The opcode handle to save the new opcode.\r
 \r
-  @retval   EFI_SUCCESS         Search the driver success\r
-\r
 **/\r
 VOID\r
 UiCreateLanguageMenu (\r
@@ -350,6 +359,7 @@ UiCreateLanguageMenu (
         EFI_IFR_NUMERIC_SIZE_1,\r
         (UINT8) OptionCount\r
         );\r
+      gCurrentLanguageIndex = (UINT8) OptionCount;\r
     } else {\r
       HiiCreateOneOfOptionOpCode (\r
         OptionsOpCodeHandle,\r
@@ -547,8 +557,8 @@ RequiredDriver (
 \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
@@ -592,7 +602,7 @@ UiListThirdPartyDrivers (
 \r
     String = HiiGetString (HiiHandles[Index], Token, NULL);\r
     if (String == NULL) {\r
-      String = HiiGetString (gHiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
+      String = HiiGetString (gStringPackHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
       ASSERT (String != NULL);\r
     } else if (SpecialHandlerFn != NULL) {\r
       //\r
@@ -610,7 +620,7 @@ UiListThirdPartyDrivers (
 \r
     String = HiiGetString (HiiHandles[Index], TokenHelp, NULL);\r
     if (String == NULL) {\r
-      String = HiiGetString (gHiiHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
+      String = HiiGetString (gStringPackHandle, STRING_TOKEN (STR_MISSING_STRING), NULL);\r
       ASSERT (String != NULL);\r
     }\r
     DriverListPtr[Count].HelpId = HiiSetString (HiiHandle, 0, String, NULL);\r