]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Enable lock attribute for statement and form; show this attribute same as grayout.
authorydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 16 Nov 2011 05:23:38 +0000 (05:23 +0000)
committerydong10 <ydong10@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 16 Nov 2011 05:23:38 +0000 (05:23 +0000)
Signed-off-by: ydong10
Reviewed-by: lgao4
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12721 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr
MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
MdeModulePkg/Universal/SetupBrowserDxe/Presentation.c
MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
MdeModulePkg/Universal/SetupBrowserDxe/Ui.c
MdeModulePkg/Universal/SetupBrowserDxe/Ui.h

index e3710acd1b2aae76174bfbcf84326772aed0e592..f5e3193c29df0ba6c58a743a0eb515754c01b31f 100644 (file)
@@ -358,6 +358,7 @@ formset
             minimum = 0,\r
             maximum = 0xff,\r
             step    = 0,\r
+            locked,\r
     endnumeric;\r
 \r
     numeric varid   = MyNameValueVar[1],     // This numeric take NameValueVar1 as storage\r
index 50ae87d92e668ba0a8f8a029d3734639dfb8b481..87924792a7d57cd3c8e254943f7d027ba861a1e7 100644 (file)
@@ -2117,6 +2117,28 @@ ParseOpCodes (
       CurrentForm->ModalForm = TRUE;\r
       break;\r
 \r
+    //\r
+    // Lock tag, used by form and statement.\r
+    //\r
+    case EFI_IFR_LOCKED_OP:\r
+      //\r
+      // Get ScopeOpcode from top of stack\r
+      //\r
+      PopScope (&ScopeOpCode);\r
+      PushScope (ScopeOpCode);\r
+      switch (ScopeOpCode) {\r
+      case EFI_IFR_FORM_OP:\r
+      case EFI_IFR_FORM_MAP_OP:\r
+        ASSERT (CurrentForm != NULL);\r
+        CurrentForm->Locked = TRUE;\r
+        break;\r
+\r
+      default:\r
+        ASSERT (CurrentStatement != NULL);\r
+        CurrentStatement->Locked = TRUE;\r
+      }      \r
+      break;\r
+\r
     //\r
     // Vendor specific\r
     //\r
index 80e3a71edd6c2fc995f33cabe74a0843e662bd3f..a6be2bbcee62b4f14536fd721fe5fcd59fb77da3 100644 (file)
@@ -554,7 +554,7 @@ DisplayForm (
       // We are NOT!! removing this StringPtr buffer via FreePool since it is being used in the menuoptions, we will do\r
       // it in UiFreeMenu.\r
       //\r
-      MenuOption = UiAddMenuOption (StringPtr, Selection->Handle, Statement, NumberOfLines, MenuItemCount);\r
+      MenuOption = UiAddMenuOption (StringPtr, Selection->Handle, Selection->Form, Statement, NumberOfLines, MenuItemCount);\r
       MenuItemCount++;\r
 \r
       if (MenuOption->IsQuestion && !MenuOption->ReadOnly) {\r
index 8f71e7cc386a41d0e55df698a0dea670b2fcfc52..eaf409b8e6afabd102be3e361633912c466877e2 100644 (file)
@@ -374,7 +374,7 @@ typedef struct {
 \r
   EFI_DEFAULT_ID        DefaultId;        // for EFI_IFR_RESET_BUTTON\r
   EFI_GUID              RefreshGuid;      // for EFI_IFR_REFRESH_ID\r
-\r
+  BOOLEAN               Locked;           // Whether this statement is locked.\r
   //\r
   // Get from IFR parsing\r
   //\r
@@ -425,6 +425,7 @@ typedef struct {
   EFI_IMAGE_ID      ImageId;\r
 \r
   BOOLEAN           ModalForm;            // Whether this is a modal form.\r
+  BOOLEAN           Locked;               // Whether this form is locked.\r
 \r
   BOOLEAN           NvUpdateRequired;     // Whether this form has NV update request.\r
 \r
index baf36a213b30548ed37a93dd7f987e6c4a90eff9..93399c40286e0e4ccf1809e786c33129f320fbdb 100644 (file)
@@ -577,6 +577,7 @@ UiWaitForSingleEvent (
 \r
   @param  String                 String description for this option.\r
   @param  Handle                 Hii handle for the package list.\r
+  @param  Form                   The form this statement belong to.\r
   @param  Statement              Statement of this Menu Option.\r
   @param  NumberOfLines          Display lines for this Menu Option.\r
   @param  MenuItemCount          The index for this Option in the Menu.\r
@@ -588,6 +589,7 @@ UI_MENU_OPTION *
 UiAddMenuOption (\r
   IN CHAR16                  *String,\r
   IN EFI_HII_HANDLE          Handle,\r
+  IN FORM_BROWSER_FORM       *Form,\r
   IN FORM_BROWSER_STATEMENT  *Statement,\r
   IN UINT16                  NumberOfLines,\r
   IN UINT16                  MenuItemCount\r
@@ -643,6 +645,13 @@ UiAddMenuOption (
       MenuOption->GrayOut = Statement->GrayOutExpression->Result.Value.b;\r
     }\r
 \r
+    //\r
+    // If the form or the question has the lock attribute, deal same as grayout.\r
+    //\r
+    if (Form->Locked || Statement->Locked) {\r
+      MenuOption->GrayOut = TRUE;\r
+    }\r
+    \r
     switch (Statement->Operand) {\r
     case EFI_IFR_ORDERED_LIST_OP:\r
     case EFI_IFR_ONE_OF_OP:\r
index f8797725e9df867a71d0525d6e6c781ef2563b37..92783182f935218f72da5b58a338233ac7e3c677 100644 (file)
@@ -295,6 +295,7 @@ UiFreeRefreshList (
 \r
   @param  String                 String description for this option.\r
   @param  Handle                 Hii handle for the package list.\r
+  @param  Form                   The form this statement belong to.\r
   @param  Statement              Statement of this Menu Option.\r
   @param  NumberOfLines          Display lines for this Menu Option.\r
   @param  MenuItemCount          The index for this Option in the Menu.\r
@@ -306,6 +307,7 @@ UI_MENU_OPTION *
 UiAddMenuOption (\r
   IN CHAR16                  *String,\r
   IN EFI_HII_HANDLE          Handle,\r
+  IN FORM_BROWSER_FORM       *Form,\r
   IN FORM_BROWSER_STATEMENT  *Statement,\r
   IN UINT16                  NumberOfLines,\r
   IN UINT16                  MenuItemCount\r