Re: [edk2] [PATCH v2] MdeModulePkg/UiApp: Retrieve the value of language menu

2016-06-15 Thread Gao, Liming
Reviewed-by: Liming Gao 

> -Original Message-
> From: Bi, Dandan
> Sent: Thursday, June 16, 2016 9:51 AM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming ; Dong, Eric 
> Subject: [PATCH v2] MdeModulePkg/UiApp: Retrieve the value of language
> menu
> 
> In current UI code, we use oneof opcode without storage for language
> menu. If we change the language form A->B, then go to another form and
> then go back to the front page, the language menu always shows A. Now
> we fix this issue by retrieving the value of oneof opcode(language menu)
> when display it.
> 
> Notes:
> v1->V2:
> -Change the subject from 'Get current language when open front page'
> to 'Retrieve the value of language menu'.
> -Get the value of oneof opcode(language menu) in retrieve callback instead
> of geting the value when open the form.
> 
> Cc: Liming Gao 
> Cc: Eric Dong 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Dandan Bi 
> Reviewed-by: Eric Dong 
> ---
>  .../Application/UiApp/FrontPageCustomizedUiSupport.c| 13
> +
>  1 file changed, 13 insertions(+)
> 
> diff --git
> a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
> b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
> index dc5d1c6..da0cff7 100644
> --- a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
> +++
> b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
> @@ -54,10 +54,11 @@ typedef struct {
> 
>  CHAR8*gLanguageString;
>  EFI_STRING_ID*gLanguageToken;
>  UI_HII_DRIVER_INSTANCE   *gHiiDriverList;
>  extern EFI_HII_HANDLEgStringPackHandle;
> +UINT8gCurrentLanguageIndex;
> 
> 
>  /**
>Get next language from language code list (with separator ';').
> 
> @@ -128,10 +129,11 @@ LanguageChangeHandler (
>LangCode = gLanguageString;
>while (*LangCode != 0) {
>  GetNextLanguage (, Lang);
> 
>  if (Index == Value->u8) {
> +  gCurrentLanguageIndex = Value->u8;
>break;
>  }
> 
>  Index++;
>}
> @@ -188,10 +190,20 @@ UiSupportLibCallbackHandler (
>QuestionId != FRONT_PAGE_KEY_RESET &&
>QuestionId != FRONT_PAGE_KEY_LANGUAGE) {
>  return FALSE;
>}
> 
> +  if (Action == EFI_BROWSER_ACTION_RETRIEVE) {
> +if (QuestionId == FRONT_PAGE_KEY_LANGUAGE) {
> +  Value->u8 = gCurrentLanguageIndex;
> +  *Status = EFI_SUCCESS;
> +} else {
> +  *Status = EFI_UNSUPPORTED;
> +}
> +return TRUE;
> +  }
> +
>if (Action != EFI_BROWSER_ACTION_CHANGED) {
>  //
>  // Do nothing for other UEFI Action. Only do call back when data is 
> changed.
>  //
>  *Status = EFI_UNSUPPORTED;
> @@ -345,10 +357,11 @@ UiCreateLanguageMenu (
>  gLanguageToken[OptionCount],
>  EFI_IFR_OPTION_DEFAULT,
>  EFI_IFR_NUMERIC_SIZE_1,
>  (UINT8) OptionCount
>  );
> +  gCurrentLanguageIndex = (UINT8) OptionCount;
>  } else {
>HiiCreateOneOfOptionOpCode (
>  OptionsOpCodeHandle,
>  gLanguageToken[OptionCount],
>  0,
> --
> 1.9.5.msysgit.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


[edk2] [PATCH v2] MdeModulePkg/UiApp: Retrieve the value of language menu

2016-06-15 Thread Dandan Bi
In current UI code, we use oneof opcode without storage for language
menu. If we change the language form A->B, then go to another form and
then go back to the front page, the language menu always shows A. Now
we fix this issue by retrieving the value of oneof opcode(language menu)
when display it.

Notes:
v1->V2:
-Change the subject from 'Get current language when open front page'
to 'Retrieve the value of language menu'.
-Get the value of oneof opcode(language menu) in retrieve callback instead
of geting the value when open the form.

Cc: Liming Gao 
Cc: Eric Dong 
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi 
Reviewed-by: Eric Dong 
---
 .../Application/UiApp/FrontPageCustomizedUiSupport.c| 13 +
 1 file changed, 13 insertions(+)

diff --git a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c 
b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
index dc5d1c6..da0cff7 100644
--- a/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
+++ b/MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c
@@ -54,10 +54,11 @@ typedef struct {
 
 CHAR8*gLanguageString;
 EFI_STRING_ID*gLanguageToken;
 UI_HII_DRIVER_INSTANCE   *gHiiDriverList;
 extern EFI_HII_HANDLEgStringPackHandle;
+UINT8gCurrentLanguageIndex;
 
 
 /**
   Get next language from language code list (with separator ';').
 
@@ -128,10 +129,11 @@ LanguageChangeHandler (
   LangCode = gLanguageString;
   while (*LangCode != 0) {
 GetNextLanguage (, Lang);
 
 if (Index == Value->u8) {
+  gCurrentLanguageIndex = Value->u8;
   break;
 }
 
 Index++;
   }
@@ -188,10 +190,20 @@ UiSupportLibCallbackHandler (
   QuestionId != FRONT_PAGE_KEY_RESET &&
   QuestionId != FRONT_PAGE_KEY_LANGUAGE) {
 return FALSE;
   }
 
+  if (Action == EFI_BROWSER_ACTION_RETRIEVE) {
+if (QuestionId == FRONT_PAGE_KEY_LANGUAGE) {
+  Value->u8 = gCurrentLanguageIndex;
+  *Status = EFI_SUCCESS;
+} else {
+  *Status = EFI_UNSUPPORTED;
+}
+return TRUE;
+  }
+
   if (Action != EFI_BROWSER_ACTION_CHANGED) {
 //
 // Do nothing for other UEFI Action. Only do call back when data is 
changed.
 //
 *Status = EFI_UNSUPPORTED;
@@ -345,10 +357,11 @@ UiCreateLanguageMenu (
 gLanguageToken[OptionCount],
 EFI_IFR_OPTION_DEFAULT,
 EFI_IFR_NUMERIC_SIZE_1,
 (UINT8) OptionCount
 );
+  gCurrentLanguageIndex = (UINT8) OptionCount;
 } else {
   HiiCreateOneOfOptionOpCode (
 OptionsOpCodeHandle,
 gLanguageToken[OptionCount],
 0,
-- 
1.9.5.msysgit.1

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel