]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
MdeModulePkg/DriverSample: Add sample case for popup protocol
[mirror_edk2.git] / MdeModulePkg / Universal / DriverSampleDxe / DriverSample.c
index f103b9ca21485e47d39fa8e8b793f048a8c2002c..bbd9713eea75afa3ca69131e8223bbc62e3797c8 100644 (file)
@@ -1100,6 +1100,9 @@ DriverCallback (
   CHAR16                          *TmpStr;\r
   UINTN                           Index;\r
   UINT64                          BufferValue;\r
+  EFI_HII_POPUP_SELECTION         UserSelection;\r
+\r
+  UserSelection = 0xFF;\r
 \r
   if (((Value == NULL) && (Action != EFI_BROWSER_ACTION_FORM_OPEN) && (Action != EFI_BROWSER_ACTION_FORM_CLOSE))||\r
     (ActionRequest == NULL)) {\r
@@ -1619,6 +1622,22 @@ DriverCallback (
         }\r
         break;\r
 \r
+      case 0x1330:\r
+        Status = mPrivateData->HiiPopup->CreatePopup (\r
+          mPrivateData->HiiPopup,\r
+          EfiHiiPopupStyleInfo,\r
+          EfiHiiPopupTypeYesNo,\r
+          mPrivateData->HiiHandle[0],\r
+          STRING_TOKEN (STR_POPUP_STRING),\r
+          &UserSelection\r
+          );\r
+        if (!EFI_ERROR (Status)) {\r
+          if (UserSelection == EfiHiiPopupSelectionYes) {\r
+            *ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;\r
+          }\r
+        }\r
+        break;\r
+\r
       default:\r
       break;\r
     }\r
@@ -1678,6 +1697,7 @@ DriverSampleInit (
   EFI_FORM_BROWSER2_PROTOCOL      *FormBrowser2;\r
   EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;\r
   EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *HiiKeywordHandler;\r
+  EFI_HII_POPUP_PROTOCOL              *PopupHandler;\r
   CHAR16                          *NewString;\r
   UINTN                           BufferSize;\r
   DRIVER_SAMPLE_CONFIGURATION     *Configuration;\r
@@ -1763,6 +1783,15 @@ DriverSampleInit (
   }\r
   mPrivateData->HiiKeywordHandler = HiiKeywordHandler;\r
 \r
+  //\r
+  // Locate HiiPopup protocol\r
+  //\r
+  Status = gBS->LocateProtocol (&gEfiHiiPopupProtocolGuid, NULL, (VOID **) &PopupHandler);\r
+  if (EFI_ERROR (Status)) {\r
+    return Status;\r
+  }\r
+  mPrivateData->HiiPopup = PopupHandler;\r
+\r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &DriverHandle[0],\r
                   &gEfiDevicePathProtocolGuid,\r