BootMaintenanceManagerUiLib: change code for customization.

Change file arrangement to let user easy customize the BMM UI.
After this change:
1. UiCustomizeBMMPage function in BootMaintenanceManagerCustomizedUi.c
use to let user customize BMM first page menus. UiBMMCallbackHandler
function use to handle the callback for the added menus.
2. BootMaintenanceManagerCustomizedUiSupport.c file used to add support
 functions used by BootMaintenanceManagerCustomizedUi.c file.
3. After this change, only above two files need to be updated if BMM
first page menus needed to be changed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Dong, Eric
2016-05-12 16:32:17 +08:00
committed by Liming Gao
parent 6ef3ae6c82
commit a85be3ae48
11 changed files with 811 additions and 380 deletions

View File

@ -657,138 +657,6 @@ UpdateOrderPage (
}
/**
Create the dynamic page to allow user to set
the "BootNext" value.
@param CallbackData The BMM context data.
**/
VOID
UpdateBootNextPage (
IN BMM_CALLBACK_DATA *CallbackData
)
{
BM_MENU_ENTRY *NewMenuEntry;
BM_LOAD_CONTEXT *NewLoadContext;
UINTN NumberOfOptions;
UINT16 Index;
VOID *OptionsOpCodeHandle;
NumberOfOptions = BootOptionMenu.MenuNumber;
CallbackData->BmmAskSaveOrNot = TRUE;
UpdatePageStart (CallbackData);
if (NumberOfOptions > 0) {
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();
ASSERT (OptionsOpCodeHandle != NULL);
CallbackData->BmmFakeNvData.BootNext = NONE_BOOTNEXT_VALUE;
for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {
NewMenuEntry = BOpt_GetMenuEntry (&BootOptionMenu, Index);
NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;
if (NewLoadContext->IsBootNext) {
HiiCreateOneOfOptionOpCode (
OptionsOpCodeHandle,
NewMenuEntry->DisplayStringToken,
EFI_IFR_OPTION_DEFAULT,
EFI_IFR_TYPE_NUM_SIZE_32,
Index
);
CallbackData->BmmFakeNvData.BootNext = Index;
} else {
HiiCreateOneOfOptionOpCode (
OptionsOpCodeHandle,
NewMenuEntry->DisplayStringToken,
0,
EFI_IFR_TYPE_NUM_SIZE_32,
Index
);
}
}
if (CallbackData->BmmFakeNvData.BootNext == NONE_BOOTNEXT_VALUE) {
HiiCreateOneOfOptionOpCode (
OptionsOpCodeHandle,
STRING_TOKEN (STR_NONE),
EFI_IFR_OPTION_DEFAULT,
EFI_IFR_TYPE_NUM_SIZE_32,
NONE_BOOTNEXT_VALUE
);
} else {
HiiCreateOneOfOptionOpCode (
OptionsOpCodeHandle,
STRING_TOKEN (STR_NONE),
0,
EFI_IFR_TYPE_NUM_SIZE_32,
NONE_BOOTNEXT_VALUE
);
}
HiiCreateOneOfOpCode (
mStartOpCodeHandle,
(EFI_QUESTION_ID) BOOT_NEXT_QUESTION_ID,
VARSTORE_ID_BOOT_MAINT,
BOOT_NEXT_VAR_OFFSET,
STRING_TOKEN (STR_BOOT_NEXT),
STRING_TOKEN (STR_BOOT_NEXT_HELP),
0,
EFI_IFR_NUMERIC_SIZE_4,
OptionsOpCodeHandle,
NULL
);
HiiFreeOpCodeHandle (OptionsOpCodeHandle);
}
UpdatePageEnd (CallbackData);
}
/**
Create the dynamic page to allow user to set the "TimeOut" value.
@param CallbackData The BMM context data.
**/
VOID
UpdateTimeOutPage (
IN BMM_CALLBACK_DATA *CallbackData
)
{
VOID *DefaultOpCodeHandle;
CallbackData->BmmAskSaveOrNot = TRUE;
UpdatePageStart (CallbackData);
DefaultOpCodeHandle = HiiAllocateOpCodeHandle ();
ASSERT (DefaultOpCodeHandle != NULL);
HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, CallbackData->BmmFakeNvData.BootTimeOut);
HiiCreateNumericOpCode (
mStartOpCodeHandle,
(EFI_QUESTION_ID) BOOT_TIME_OUT_QUESTION_ID,
VARSTORE_ID_BOOT_MAINT,
BOOT_TIME_OUT_VAR_OFFSET,
STRING_TOKEN (STR_NUM_AUTO_BOOT),
STRING_TOKEN (STR_HLP_AUTO_BOOT),
0,
EFI_IFR_NUMERIC_SIZE_2 | EFI_IFR_DISPLAY_UINT_DEC,
0,
65535,
0,
DefaultOpCodeHandle
);
HiiFreeOpCodeHandle (DefaultOpCodeHandle);
UpdatePageEnd (CallbackData);
}
/**
Refresh the text mode page.