// \r
// Browser formset.\r
// \r
-// Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>\r
+// Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
// This program and the accompanying materials\r
// are licensed and made available under the terms and conditions of the BSD License\r
// which accompanies this distribution. The full text of the license may be found at\r
title = STRING_TOKEN(STR_FRONT_PAGE_TITLE),\r
help = STRING_TOKEN(STR_NULL_STRING),\r
classguid = FRONT_PAGE_FORMSET_GUID,\r
- class = FRONT_PAGE_CLASS,\r
- subclass = FRONT_PAGE_SUBCLASS,\r
\r
form formid = FRONT_PAGE_FORM_ID,\r
title = STRING_TOKEN(STR_FRONT_PAGE_TITLE);\r
## @file\r
# Customize display library used by display engine.\r
#\r
-# Copyright (c) 2013 - 2014, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserSubtitleTextColor ## CONSUMES\r
gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextColor ## CONSUMES\r
gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldTextHighlightColor ## CONSUMES\r
- gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor ## CONSUMES
\ No newline at end of file
+ gEfiMdeModulePkgTokenSpaceGuid.PcdBrowserFieldBackgroundHighlightColor ## CONSUMES\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid ## CONSUMES
\ No newline at end of file
\r
This library class defines a set of interfaces to customize Display module\r
\r
-Copyright (c) 2013, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2013-2015, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials are licensed and made available under \r
the terms and conditions of the BSD License that accompanies this distribution. \r
The full text of the license may be found at\r
IN EFI_IFR_OP_HEADER *OpCodeData\r
)\r
{\r
+ EFI_GUID * ClassGuid;\r
+ UINT8 ClassGuidNum;\r
+\r
+ ClassGuid = NULL;\r
+ ClassGuidNum = 0;\r
+\r
switch (OpCodeData->OpCode) {\r
+ case EFI_IFR_FORM_SET_OP:\r
+ //\r
+ // process the statement outside of form,if it is formset op, get its formsetguid or classguid and compared with gFrontPageFormSetGuid\r
+ //\r
+ if (CompareGuid((EFI_GUID*)PcdGetPtr (PcdFrontPageFormSetGuid),(EFI_GUID*)&((EFI_IFR_FORM_SET *) OpCodeData)->Guid)){\r
+ gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;\r
+ } else{\r
+ ClassGuidNum = (UINT8)(((EFI_IFR_FORM_SET *)OpCodeData)->Flags & 0x3);\r
+ ClassGuid = (EFI_GUID *)(VOID *)((UINT8 *)OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
+ while (ClassGuidNum-- > 0){\r
+ if (CompareGuid((EFI_GUID*)PcdGetPtr (PcdFrontPageFormSetGuid),ClassGuid)){\r
+ gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;\r
+ break;\r
+ }\r
+ ClassGuid ++;\r
+ }\r
+ }\r
+ break;\r
+\r
case EFI_IFR_GUID_OP: \r
if (CompareGuid (&gEfiIfrTianoGuid, (EFI_GUID *)((CHAR8*) OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {\r
//\r
gEfiMdeModulePkgTokenSpaceGuid.PcdSetupConOutRow|25|UINT32|0x4000000e\r
\r
[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]\r
+ ## This PCD points to the front page formset GUID\r
+ # Compare the FormsetGuid or ClassGuid with this PCD value can detect whether in front page\r
+ gEfiMdeModulePkgTokenSpaceGuid.PcdFrontPageFormSetGuid|{ 0xbc, 0x30, 0x0c, 0x9e,0x06, 0x3f, 0xa6, 0x4b, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe }|VOID*|0x0001006e\r
+\r
## Base address of the NV variable range in flash device.\r
# @Prompt Base address of flash NV variable range.\r
gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase|0x0|UINT32|0x30000001\r
\r
CopyMem (&FormSet->FormSetTitle, &((EFI_IFR_FORM_SET *) OpCodeData)->FormSetTitle, sizeof (EFI_STRING_ID));\r
CopyMem (&FormSet->Help, &((EFI_IFR_FORM_SET *) OpCodeData)->Help, sizeof (EFI_STRING_ID));\r
+ FormSet->OpCode = (EFI_IFR_OP_HEADER *) OpCodeData;//save the opcode address of formset\r
\r
if (OpCodeLength > OFFSET_OF (EFI_IFR_FORM_SET, Flags)) {\r
//\r
InsertTailList(&gDisplayFormData.StatementListOSF, &DisplayStatement->DisplayLink);\r
}\r
\r
+ //\r
+ // treat formset as statement outside the form,get its opcode.\r
+ //\r
+ DisplayStatement = AllocateZeroPool (sizeof (FORM_DISPLAY_ENGINE_STATEMENT));\r
+ ASSERT (DisplayStatement != NULL);\r
+\r
+ DisplayStatement->Signature = FORM_DISPLAY_ENGINE_STATEMENT_SIGNATURE;\r
+ DisplayStatement->Version = FORM_DISPLAY_ENGINE_STATEMENT_VERSION_1;\r
+ DisplayStatement->OpCode = gCurrentSelection->FormSet->OpCode;\r
+\r
+ InitializeListHead (&DisplayStatement->NestStatementList);\r
+ InitializeListHead (&DisplayStatement->OptionListHead);\r
+\r
+ InsertTailList(&gDisplayFormData.StatementListOSF, &DisplayStatement->DisplayLink);\r
+\r
//\r
// Process the statement in this form.\r
//\r
UINT16 Class; // Tiano extended Class code\r
UINT16 SubClass; // Tiano extended Subclass code\r
EFI_IMAGE_ID ImageId;\r
+ EFI_IFR_OP_HEADER *OpCode; //mainly for formset op to get ClassGuid\r
\r
FORM_BROWSER_STATEMENT *StatementBuffer; // Buffer for all Statements and Questions\r
EXPRESSION_OPCODE *ExpressionBuffer; // Buffer for all Expression OpCode\r