MdeModulePkg/UiApp: Make it look like current FrontPage
Signed-off-by: Jeremy Soller <jeremy@system76.com> Signed-off-by: Tim Crawford <tcrawford@system76.com>
This commit is contained in:
@ -17,7 +17,6 @@ EFI_GUID mFrontPageGuid = FRONT_PAGE_FORMSET_GUID;
|
||||
BOOLEAN mResetRequired = FALSE;
|
||||
|
||||
EFI_FORM_BROWSER2_PROTOCOL *gFormBrowser2;
|
||||
CHAR8 *mLanguageString;
|
||||
BOOLEAN mModeInitialized = FALSE;
|
||||
//
|
||||
// Boot video resolution and text mode.
|
||||
@ -38,7 +37,6 @@ FRONT_PAGE_CALLBACK_DATA gFrontPagePrivate = {
|
||||
FRONT_PAGE_CALLBACK_DATA_SIGNATURE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
{
|
||||
FakeExtractConfig,
|
||||
FakeRouteConfig,
|
||||
@ -211,7 +209,7 @@ UpdateFrontPageForm (
|
||||
//
|
||||
StartGuidLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));
|
||||
StartGuidLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
|
||||
StartGuidLabel->Number = LABEL_FRANTPAGE_INFORMATION;
|
||||
StartGuidLabel->Number = LABEL_FRONTPAGE_INFORMATION;
|
||||
//
|
||||
// Create Hii Extend Label OpCode as the end opcode
|
||||
//
|
||||
@ -367,10 +365,6 @@ FreeFrontPage(
|
||||
// Publish our HII data
|
||||
//
|
||||
HiiRemovePackages (gFrontPagePrivate.HiiHandle);
|
||||
if (gFrontPagePrivate.LanguageToken != NULL) {
|
||||
FreePool (gFrontPagePrivate.LanguageToken);
|
||||
gFrontPagePrivate.LanguageToken = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -539,129 +533,81 @@ UpdateFrontPageBannerStrings (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
CHAR16 *MemoryStr;
|
||||
EFI_STATUS Status;
|
||||
EFI_STRING_ID TokenToUpdate;
|
||||
EFI_PHYSICAL_ADDRESS *Table;
|
||||
SMBIOS_TABLE_ENTRY_POINT *EntryPoint;
|
||||
SMBIOS_STRUCTURE_POINTER SmbiosTable;
|
||||
UINT64 InstalledMemory;
|
||||
|
||||
InstalledMemory = 0;
|
||||
|
||||
//
|
||||
// Update Front Page strings
|
||||
//
|
||||
Status = EfiGetSystemConfigurationTable (&gEfiSmbiosTableGuid, (VOID **) &Table);
|
||||
if (EFI_ERROR (Status) || Table == NULL) {
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
EntryPoint = (SMBIOS_TABLE_ENTRY_POINT*)Table;
|
||||
|
||||
SmbiosTable = GetSmbiosTableFromType (EntryPoint, EFI_SMBIOS_TYPE_BIOS_INFORMATION , 0);
|
||||
|
||||
if (SmbiosTable.Raw != NULL) {
|
||||
CHAR16 *FwVersion;
|
||||
CHAR16 *FwDate;
|
||||
CHAR16 *TmpBuffer;
|
||||
UINT8 VersionIdx;
|
||||
UINT8 DateIdx;
|
||||
|
||||
TmpBuffer = AllocateZeroPool (0x60);
|
||||
|
||||
VersionIdx = SmbiosTable.Type0->BiosVersion;
|
||||
DateIdx = SmbiosTable.Type0->BiosReleaseDate;
|
||||
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), VersionIdx, &FwVersion);
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), DateIdx, &FwDate);
|
||||
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), L"FW: ");
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), L"Version: ");
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), FwVersion);
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), L" ");
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), FwDate);
|
||||
|
||||
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);
|
||||
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, TmpBuffer, NULL);
|
||||
|
||||
FreePool (FwVersion);
|
||||
FreePool (FwDate);
|
||||
FreePool (TmpBuffer);
|
||||
}
|
||||
|
||||
SmbiosTable = GetSmbiosTableFromType (EntryPoint, SMBIOS_TYPE_SYSTEM_INFORMATION , 0);
|
||||
|
||||
if (SmbiosTable.Raw != NULL) {
|
||||
CHAR16 *ProductName;
|
||||
CHAR16 *Manufacturer;
|
||||
CHAR16 *DeviceName;
|
||||
CHAR16 *TmpBuffer;
|
||||
UINT8 ProductIdx;
|
||||
CHAR16 *ProductName;
|
||||
CHAR16 *ProductVersion;
|
||||
CHAR16 *Title;
|
||||
CHAR16 *Model;
|
||||
UINT8 ModelIdx;
|
||||
UINT8 ManIdx;
|
||||
UINT8 VersionIdx;
|
||||
|
||||
TmpBuffer = AllocateZeroPool (0x60);
|
||||
DeviceName = AllocateZeroPool (0x60);
|
||||
Title = AllocateZeroPool (0x60);
|
||||
Model = AllocateZeroPool (0x60);
|
||||
|
||||
ProductIdx = SmbiosTable.Type1->ProductName;
|
||||
ManIdx = SmbiosTable.Type1->Manufacturer;
|
||||
ModelIdx = SmbiosTable.Type1->ProductName;
|
||||
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), ProductIdx, &ProductName);
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), ModelIdx, &ProductName);
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), ManIdx, &Manufacturer);
|
||||
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), Manufacturer);
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), L" ");
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), ProductName);
|
||||
StrCatS (Title, 0x60 / sizeof (CHAR16), Manufacturer);
|
||||
StrCatS (Title, 0x60 / sizeof (CHAR16), L" ");
|
||||
StrCatS (Title, 0x60 / sizeof (CHAR16), ProductName);
|
||||
|
||||
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_TITLE);
|
||||
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, Title, NULL);
|
||||
|
||||
VersionIdx = SmbiosTable.Type1->Version;
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), VersionIdx, &ProductVersion);
|
||||
|
||||
StrCatS (Model, 0x60 / sizeof (CHAR16), L"Model: ");
|
||||
StrCatS (Model, 0x60 / sizeof (CHAR16), ProductVersion);
|
||||
|
||||
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);
|
||||
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, TmpBuffer, NULL);
|
||||
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, Model, NULL);
|
||||
|
||||
FreePool (Model);
|
||||
FreePool (Title);
|
||||
FreePool (ProductVersion);
|
||||
FreePool (ProductName);
|
||||
FreePool (Manufacturer);
|
||||
FreePool (DeviceName);
|
||||
FreePool (TmpBuffer);
|
||||
|
||||
}
|
||||
|
||||
SmbiosTable = GetSmbiosTableFromType (EntryPoint, SMBIOS_TYPE_PROCESSOR_INFORMATION , 0);
|
||||
if (SmbiosTable.Raw != NULL) {
|
||||
CHAR16 *ProcessorVersion;
|
||||
CHAR16 *TmpBuffer;
|
||||
UINT8 CpuIdx;
|
||||
|
||||
TmpBuffer = AllocateZeroPool (0x60);
|
||||
|
||||
CpuIdx = SmbiosTable.Type4->ProcessorVersion;
|
||||
|
||||
GetOptionalStringByIndex ((CHAR8*)((UINT8*)SmbiosTable.Raw + SmbiosTable.Hdr->Length), CpuIdx, &ProcessorVersion);
|
||||
StrCatS (TmpBuffer, 0x60 / sizeof (CHAR16), ProcessorVersion);
|
||||
|
||||
// Trim leading spaces
|
||||
while (TmpBuffer[0] == 0x20) {
|
||||
TmpBuffer = &TmpBuffer[1];
|
||||
}
|
||||
|
||||
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);
|
||||
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, TmpBuffer, NULL);
|
||||
|
||||
FreePool (ProcessorVersion);
|
||||
FreePool (TmpBuffer);
|
||||
}
|
||||
|
||||
SmbiosTable = GetSmbiosTableFromType (EntryPoint, SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS , 0);
|
||||
if (SmbiosTable.Raw != NULL) {
|
||||
if (SmbiosTable.Type19->StartingAddress != 0xFFFFFFFF ) {
|
||||
InstalledMemory += RShiftU64(SmbiosTable.Type19->EndingAddress -
|
||||
SmbiosTable.Type19->StartingAddress + 1, 10);
|
||||
} else {
|
||||
InstalledMemory += RShiftU64(SmbiosTable.Type19->ExtendedEndingAddress -
|
||||
SmbiosTable.Type19->ExtendedStartingAddress + 1, 20);
|
||||
}
|
||||
|
||||
// now update the total installed RAM size
|
||||
ConvertMemorySizeToString ((UINT32)InstalledMemory, &MemoryStr );
|
||||
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);
|
||||
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, MemoryStr, NULL);
|
||||
|
||||
FreePool (MemoryStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1029,11 +975,6 @@ UiEntry (
|
||||
|
||||
FreeFrontPage ();
|
||||
|
||||
if (mLanguageString != NULL) {
|
||||
FreePool (mLanguageString);
|
||||
mLanguageString = NULL;
|
||||
}
|
||||
|
||||
//
|
||||
//Will leave browser, check any reset required change is applied? if yes, reset system
|
||||
//
|
||||
@ -1046,10 +987,6 @@ UiEntry (
|
||||
// user change any option setting which needs a reset to be effective, and the reset will be applied according to the user selection.
|
||||
//
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Record the info that a reset is required.
|
||||
A module boolean variable is used to record whether a reset is required.
|
||||
@ -1064,10 +1001,6 @@ EnableResetRequired (
|
||||
mResetRequired = TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
Check if user changed any option setting which needs a system reset to be effective.
|
||||
|
||||
|
@ -32,9 +32,9 @@ extern EFI_FORM_BROWSER2_PROTOCOL *gFormBrowser2;
|
||||
//
|
||||
// These are defined as the same with vfr file
|
||||
//
|
||||
#define FRONT_PAGE_FORM_ID 0x1000
|
||||
#define FRONT_PAGE_FORM_ID 0x7600
|
||||
|
||||
#define LABEL_FRANTPAGE_INFORMATION 0x1000
|
||||
#define LABEL_FRONTPAGE_INFORMATION 0x1000
|
||||
#define LABEL_END 0xffff
|
||||
|
||||
#define FRONT_PAGE_FORMSET_GUID \
|
||||
@ -52,7 +52,6 @@ typedef struct {
|
||||
//
|
||||
EFI_HII_HANDLE HiiHandle;
|
||||
EFI_HANDLE DriverHandle;
|
||||
EFI_STRING_ID *LanguageToken;
|
||||
|
||||
//
|
||||
// Produced protocols
|
||||
@ -210,4 +209,3 @@ ExtractDevicePathFromHiiHandle (
|
||||
);
|
||||
|
||||
#endif // _FRONT_PAGE_H_
|
||||
|
||||
|
@ -29,35 +29,15 @@ UiCustomizeFrontPage (
|
||||
IN VOID *StartOpCodeHandle
|
||||
)
|
||||
{
|
||||
//
|
||||
// Create "Select Language" menu with Oneof opcode.
|
||||
//
|
||||
UiCreateLanguageMenu (HiiHandle, StartOpCodeHandle);
|
||||
|
||||
//
|
||||
// Create empty line.
|
||||
//
|
||||
UiCreateEmptyLine(HiiHandle, StartOpCodeHandle);
|
||||
|
||||
//
|
||||
// Find third party drivers which need to be shown in the front page.
|
||||
//
|
||||
UiListThirdPartyDrivers (HiiHandle, &gEfiIfrFrontPageGuid, NULL, StartOpCodeHandle);
|
||||
|
||||
//
|
||||
// Create empty line.
|
||||
//
|
||||
UiCreateEmptyLine(HiiHandle, StartOpCodeHandle);
|
||||
|
||||
//
|
||||
// Create "Continue" menu.
|
||||
//
|
||||
UiCreateContinueMenu(HiiHandle, StartOpCodeHandle);
|
||||
|
||||
//
|
||||
// Create reset menu.
|
||||
// Find third party drivers which need to be shown in the front page.
|
||||
//
|
||||
UiCreateResetMenu(HiiHandle, StartOpCodeHandle);
|
||||
UiListThirdPartyDrivers (HiiHandle, &gEfiIfrFrontPageGuid, NULL, StartOpCodeHandle);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,44 +76,3 @@ UiFrontPageCallbackHandler (
|
||||
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
/**
|
||||
Update the banner string in the front page.
|
||||
|
||||
Current layout for the banner string like below:
|
||||
PS: Totally only 5 lines of banner supported.
|
||||
|
||||
Line 1: Left BannerStr RightBannerStr
|
||||
Line 2: Left BannerStr RightBannerStr
|
||||
Line 3: Left BannerStr RightBannerStr
|
||||
Line 4: Left BannerStr RightBannerStr
|
||||
Line 5: Left BannerStr RightBannerStr
|
||||
<EmptyLine>
|
||||
First menu in front page.
|
||||
...
|
||||
|
||||
@param LineIndex The line index of the banner need to check.
|
||||
@param LeftOrRight The left or right banner need to check.
|
||||
@param BannerStr Banner string need to update.
|
||||
Input the current string and user can update
|
||||
it and return the new string.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UiCustomizeFrontPageBanner (
|
||||
IN UINTN LineIndex,
|
||||
IN BOOLEAN LeftOrRight,
|
||||
IN OUT EFI_STRING *BannerStr
|
||||
)
|
||||
{
|
||||
if ((LineIndex == 5) && LeftOrRight) {
|
||||
// Update STR_CUSTOMIZE_BANNER_LINE5_LEFT
|
||||
if (PcdGetBool(PcdTestKeyUsed)) {
|
||||
if (BannerStr != NULL) {
|
||||
FreePool(*BannerStr);
|
||||
}
|
||||
*BannerStr = HiiGetString(gFrontPagePrivate.HiiHandle, STRING_TOKEN(STR_TEST_KEY_USED), NULL);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -9,35 +9,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#ifndef __FRONTPAGE_CUSTOMIZED_UI_H__
|
||||
#define __FRONTPAGE_CUSTOMIZED_UI_H__
|
||||
|
||||
/**
|
||||
Update the banner string in the front page.
|
||||
|
||||
Current layout for the banner string like below:
|
||||
PS: Totally only 5 lines of banner supported.
|
||||
|
||||
Line 1: Left BannerStr RightBannerStr
|
||||
Line 2: Left BannerStr RightBannerStr
|
||||
Line 3: Left BannerStr RightBannerStr
|
||||
Line 4: Left BannerStr RightBannerStr
|
||||
Line 5: Left BannerStr RightBannerStr
|
||||
<EmptyLine>
|
||||
First menu in front page.
|
||||
...
|
||||
|
||||
@param LineIndex The line index of the banner need to check.
|
||||
@param LeftOrRight The left or right banner need to check.
|
||||
@param BannerStr Banner string need to update.
|
||||
Input the current string and user can update
|
||||
it and return the new string.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UiCustomizeFrontPageBanner (
|
||||
IN UINTN LineIndex,
|
||||
IN BOOLEAN LeftOrRight,
|
||||
IN OUT EFI_STRING *BannerStr
|
||||
);
|
||||
|
||||
/**
|
||||
Customize menus in the page.
|
||||
|
||||
|
@ -35,8 +35,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
#define UI_HII_DRIVER_LIST_SIZE 0x8
|
||||
|
||||
#define FRONT_PAGE_KEY_CONTINUE 0x1000
|
||||
#define FRONT_PAGE_KEY_RESET 0x1001
|
||||
#define FRONT_PAGE_KEY_LANGUAGE 0x1002
|
||||
#define FRONT_PAGE_KEY_DRIVER 0x2000
|
||||
|
||||
typedef struct {
|
||||
@ -47,112 +45,10 @@ typedef struct {
|
||||
BOOLEAN EmptyLineAfter;
|
||||
} UI_HII_DRIVER_INSTANCE;
|
||||
|
||||
CHAR8 *gLanguageString;
|
||||
EFI_STRING_ID *gLanguageToken;
|
||||
UI_HII_DRIVER_INSTANCE *gHiiDriverList;
|
||||
extern EFI_HII_HANDLE gStringPackHandle;
|
||||
UINT8 gCurrentLanguageIndex;
|
||||
|
||||
|
||||
/**
|
||||
Get next language from language code list (with separator ';').
|
||||
|
||||
If LangCode is NULL, then ASSERT.
|
||||
If Lang is NULL, then ASSERT.
|
||||
|
||||
@param LangCode On input: point to first language in the list. On
|
||||
output: point to next language in the list, or
|
||||
NULL if no more language in the list.
|
||||
@param Lang The first language in the list.
|
||||
|
||||
**/
|
||||
VOID
|
||||
GetNextLanguage (
|
||||
IN OUT CHAR8 **LangCode,
|
||||
OUT CHAR8 *Lang
|
||||
)
|
||||
{
|
||||
UINTN Index;
|
||||
CHAR8 *StringPtr;
|
||||
|
||||
ASSERT (LangCode != NULL);
|
||||
ASSERT (*LangCode != NULL);
|
||||
ASSERT (Lang != NULL);
|
||||
|
||||
Index = 0;
|
||||
StringPtr = *LangCode;
|
||||
while (StringPtr[Index] != 0 && StringPtr[Index] != ';') {
|
||||
Index++;
|
||||
}
|
||||
|
||||
CopyMem (Lang, StringPtr, Index);
|
||||
Lang[Index] = 0;
|
||||
|
||||
if (StringPtr[Index] == ';') {
|
||||
Index++;
|
||||
}
|
||||
*LangCode = StringPtr + Index;
|
||||
}
|
||||
|
||||
/**
|
||||
This function processes the language changes in configuration.
|
||||
|
||||
@param Value A pointer to the data being sent to the original exporting driver.
|
||||
|
||||
|
||||
@retval TRUE The callback successfully handled the action.
|
||||
@retval FALSE The callback not supported in this handler.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
LanguageChangeHandler (
|
||||
IN EFI_IFR_TYPE_VALUE *Value
|
||||
)
|
||||
{
|
||||
CHAR8 *LangCode;
|
||||
CHAR8 *Lang;
|
||||
UINTN Index;
|
||||
EFI_STATUS Status;
|
||||
|
||||
//
|
||||
// Allocate working buffer for RFC 4646 language in supported LanguageString.
|
||||
//
|
||||
Lang = AllocatePool (AsciiStrSize (gLanguageString));
|
||||
ASSERT (Lang != NULL);
|
||||
|
||||
Index = 0;
|
||||
LangCode = gLanguageString;
|
||||
while (*LangCode != 0) {
|
||||
GetNextLanguage (&LangCode, Lang);
|
||||
|
||||
if (Index == Value->u8) {
|
||||
gCurrentLanguageIndex = Value->u8;
|
||||
break;
|
||||
}
|
||||
|
||||
Index++;
|
||||
}
|
||||
|
||||
if (Index == Value->u8) {
|
||||
Status = gRT->SetVariable (
|
||||
L"PlatformLang",
|
||||
&gEfiGlobalVariableGuid,
|
||||
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
AsciiStrSize (Lang),
|
||||
Lang
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
FreePool (Lang);
|
||||
return EFI_DEVICE_ERROR;
|
||||
}
|
||||
} else {
|
||||
ASSERT (FALSE);
|
||||
}
|
||||
FreePool (Lang);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
This function processes the results of changes in configuration.
|
||||
|
||||
@ -181,19 +77,12 @@ UiSupportLibCallbackHandler (
|
||||
OUT EFI_STATUS *Status
|
||||
)
|
||||
{
|
||||
if (QuestionId != FRONT_PAGE_KEY_CONTINUE &&
|
||||
QuestionId != FRONT_PAGE_KEY_RESET &&
|
||||
QuestionId != FRONT_PAGE_KEY_LANGUAGE) {
|
||||
if (QuestionId != FRONT_PAGE_KEY_CONTINUE) {
|
||||
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;
|
||||
}
|
||||
|
||||
@ -220,17 +109,6 @@ UiSupportLibCallbackHandler (
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_EXIT;
|
||||
break;
|
||||
|
||||
case FRONT_PAGE_KEY_LANGUAGE:
|
||||
*Status = LanguageChangeHandler(Value);
|
||||
break;
|
||||
|
||||
case FRONT_PAGE_KEY_RESET:
|
||||
//
|
||||
// Reset
|
||||
//
|
||||
gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);
|
||||
*Status = EFI_UNSUPPORTED;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -239,156 +117,6 @@ UiSupportLibCallbackHandler (
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
Create Select language menu in the front page with oneof opcode.
|
||||
|
||||
@param[in] HiiHandle The hii handle for the Uiapp driver.
|
||||
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UiCreateLanguageMenu (
|
||||
IN EFI_HII_HANDLE HiiHandle,
|
||||
IN VOID *StartOpCodeHandle
|
||||
)
|
||||
{
|
||||
CHAR8 *LangCode;
|
||||
CHAR8 *Lang;
|
||||
UINTN LangSize;
|
||||
CHAR8 *CurrentLang;
|
||||
UINTN OptionCount;
|
||||
CHAR16 *StringBuffer;
|
||||
VOID *OptionsOpCodeHandle;
|
||||
UINTN StringSize;
|
||||
EFI_STATUS Status;
|
||||
EFI_HII_STRING_PROTOCOL *HiiString;
|
||||
|
||||
Lang = NULL;
|
||||
StringBuffer = NULL;
|
||||
|
||||
//
|
||||
// Init OpCode Handle and Allocate space for creation of UpdateData Buffer
|
||||
//
|
||||
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();
|
||||
ASSERT (OptionsOpCodeHandle != NULL);
|
||||
|
||||
GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&CurrentLang, NULL);
|
||||
|
||||
//
|
||||
// Get Support language list from variable.
|
||||
//
|
||||
GetEfiGlobalVariable2 (L"PlatformLangCodes", (VOID**)&gLanguageString, NULL);
|
||||
if (gLanguageString == NULL) {
|
||||
gLanguageString = AllocateCopyPool (
|
||||
AsciiStrSize ((CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)),
|
||||
(CHAR8 *) PcdGetPtr (PcdUefiVariableDefaultPlatformLangCodes)
|
||||
);
|
||||
ASSERT (gLanguageString != NULL);
|
||||
}
|
||||
|
||||
if (gLanguageToken == NULL) {
|
||||
//
|
||||
// Count the language list number.
|
||||
//
|
||||
LangCode = gLanguageString;
|
||||
Lang = AllocatePool (AsciiStrSize (gLanguageString));
|
||||
ASSERT (Lang != NULL);
|
||||
|
||||
OptionCount = 0;
|
||||
while (*LangCode != 0) {
|
||||
GetNextLanguage (&LangCode, Lang);
|
||||
OptionCount ++;
|
||||
}
|
||||
|
||||
//
|
||||
// Allocate extra 1 as the end tag.
|
||||
//
|
||||
gLanguageToken = AllocateZeroPool ((OptionCount + 1) * sizeof (EFI_STRING_ID));
|
||||
ASSERT (gLanguageToken != NULL);
|
||||
|
||||
Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &HiiString);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
LangCode = gLanguageString;
|
||||
OptionCount = 0;
|
||||
while (*LangCode != 0) {
|
||||
GetNextLanguage (&LangCode, Lang);
|
||||
|
||||
StringSize = 0;
|
||||
Status = HiiString->GetString (HiiString, Lang, HiiHandle, PRINTABLE_LANGUAGE_NAME_STRING_ID, StringBuffer, &StringSize, NULL);
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
StringBuffer = AllocateZeroPool (StringSize);
|
||||
ASSERT (StringBuffer != NULL);
|
||||
Status = HiiString->GetString (HiiString, Lang, HiiHandle, PRINTABLE_LANGUAGE_NAME_STRING_ID, StringBuffer, &StringSize, NULL);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
LangSize = AsciiStrSize (Lang);
|
||||
StringBuffer = AllocatePool (LangSize * sizeof (CHAR16));
|
||||
ASSERT (StringBuffer != NULL);
|
||||
AsciiStrToUnicodeStrS (Lang, StringBuffer, LangSize);
|
||||
}
|
||||
|
||||
ASSERT (StringBuffer != NULL);
|
||||
gLanguageToken[OptionCount] = HiiSetString (HiiHandle, 0, StringBuffer, NULL);
|
||||
FreePool (StringBuffer);
|
||||
|
||||
OptionCount++;
|
||||
}
|
||||
}
|
||||
|
||||
ASSERT (gLanguageToken != NULL);
|
||||
LangCode = gLanguageString;
|
||||
OptionCount = 0;
|
||||
if (Lang == NULL) {
|
||||
Lang = AllocatePool (AsciiStrSize (gLanguageString));
|
||||
ASSERT (Lang != NULL);
|
||||
}
|
||||
while (*LangCode != 0) {
|
||||
GetNextLanguage (&LangCode, Lang);
|
||||
|
||||
if (CurrentLang != NULL && AsciiStrCmp (Lang, CurrentLang) == 0) {
|
||||
HiiCreateOneOfOptionOpCode (
|
||||
OptionsOpCodeHandle,
|
||||
gLanguageToken[OptionCount],
|
||||
EFI_IFR_OPTION_DEFAULT,
|
||||
EFI_IFR_NUMERIC_SIZE_1,
|
||||
(UINT8) OptionCount
|
||||
);
|
||||
gCurrentLanguageIndex = (UINT8) OptionCount;
|
||||
} else {
|
||||
HiiCreateOneOfOptionOpCode (
|
||||
OptionsOpCodeHandle,
|
||||
gLanguageToken[OptionCount],
|
||||
0,
|
||||
EFI_IFR_NUMERIC_SIZE_1,
|
||||
(UINT8) OptionCount
|
||||
);
|
||||
}
|
||||
|
||||
OptionCount++;
|
||||
}
|
||||
|
||||
if (CurrentLang != NULL) {
|
||||
FreePool (CurrentLang);
|
||||
}
|
||||
FreePool (Lang);
|
||||
|
||||
HiiCreateOneOfOpCode (
|
||||
StartOpCodeHandle,
|
||||
FRONT_PAGE_KEY_LANGUAGE,
|
||||
0,
|
||||
0,
|
||||
STRING_TOKEN (STR_LANGUAGE_SELECT),
|
||||
STRING_TOKEN (STR_LANGUAGE_SELECT_HELP),
|
||||
EFI_IFR_FLAG_CALLBACK,
|
||||
EFI_IFR_NUMERIC_SIZE_1,
|
||||
OptionsOpCodeHandle,
|
||||
NULL
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
Create continue menu in the front page.
|
||||
|
||||
@ -405,8 +133,8 @@ UiCreateContinueMenu (
|
||||
HiiCreateActionOpCode (
|
||||
StartOpCodeHandle,
|
||||
FRONT_PAGE_KEY_CONTINUE,
|
||||
STRING_TOKEN (STR_CONTINUE_PROMPT),
|
||||
STRING_TOKEN (STR_CONTINUE_PROMPT),
|
||||
STRING_TOKEN (STR_BOOT_DEFAULT_PROMPT),
|
||||
STRING_TOKEN (STR_BOOT_DEFAULT_HELP),
|
||||
EFI_IFR_FLAG_CALLBACK,
|
||||
0
|
||||
);
|
||||
@ -425,30 +153,7 @@ UiCreateEmptyLine (
|
||||
IN VOID *StartOpCodeHandle
|
||||
)
|
||||
{
|
||||
HiiCreateSubTitleOpCode (StartOpCodeHandle, STRING_TOKEN (STR_NULL_STRING), 0, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
Create Reset menu in the front page.
|
||||
|
||||
@param[in] HiiHandle The hii handle for the Uiapp driver.
|
||||
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UiCreateResetMenu (
|
||||
IN EFI_HII_HANDLE HiiHandle,
|
||||
IN VOID *StartOpCodeHandle
|
||||
)
|
||||
{
|
||||
HiiCreateActionOpCode (
|
||||
StartOpCodeHandle,
|
||||
FRONT_PAGE_KEY_RESET,
|
||||
STRING_TOKEN (STR_RESET_STRING),
|
||||
STRING_TOKEN (STR_RESET_STRING),
|
||||
EFI_IFR_FLAG_CALLBACK,
|
||||
0
|
||||
);
|
||||
HiiCreateSubTitleOpCode (StartOpCodeHandle, STRING_TOKEN (STR_EMPTY_STRING), 0, 0, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,32 +35,6 @@ UiCreateEmptyLine (
|
||||
IN VOID *StartOpCodeHandle
|
||||
);
|
||||
|
||||
/**
|
||||
Create Select language menu in the front page with oneof opcode.
|
||||
|
||||
@param[in] HiiHandle The hii handle for the Uiapp driver.
|
||||
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UiCreateLanguageMenu (
|
||||
IN EFI_HII_HANDLE HiiHandle,
|
||||
IN VOID *StartOpCodeHandle
|
||||
);
|
||||
|
||||
/**
|
||||
Create Reset menu.
|
||||
|
||||
@param[in] HiiHandle The hii handle for the Uiapp driver.
|
||||
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
|
||||
|
||||
**/
|
||||
VOID
|
||||
UiCreateResetMenu (
|
||||
IN EFI_HII_HANDLE HiiHandle,
|
||||
IN VOID *StartOpCodeHandle
|
||||
);
|
||||
|
||||
/**
|
||||
Rename the driver name if necessary.
|
||||
|
||||
|
@ -10,59 +10,11 @@
|
||||
/=#
|
||||
|
||||
#langdef en-US "English"
|
||||
#langdef fr-FR "Français"
|
||||
#langdef en "Standard English"
|
||||
#langdef fr "Standard Français"
|
||||
|
||||
#string STR_FRONT_PAGE_TITLE #language en-US "Front Page"
|
||||
#language fr-FR "Front Page"
|
||||
#string STR_FRONT_PAGE_COMPUTER_MODEL #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_FRONT_PAGE_CPU_MODEL #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_FRONT_PAGE_CPU_SPEED #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_FRONT_PAGE_MEMORY_SIZE #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_FRONT_PAGE_BIOS_VERSION #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_FRONT_PAGE_BANNER_0_LEFT #language en-US "Wonder Computer Model 1000Z Manufactured by Intel®"
|
||||
#language fr-FR "Demander le Modèle d'Ordinateur 1000Z A Fabriqué par Intel®"
|
||||
#string STR_FRONT_PAGE_BANNER_0_RIGHT #language en-US "OK"
|
||||
#language fr-FR "Bon"
|
||||
#string STR_FRONT_PAGE_BANNER_1_LEFT #language en-US "2 Pentium® X Xeon processors running at 800Thz"
|
||||
#language fr-FR "2 processeurs Pentium® X Xeon tournants à 800Thz"
|
||||
#string STR_FRONT_PAGE_BANNER_1_RIGHT #language en-US "24 TB System RAM"
|
||||
#language fr-FR "24 TB RAM de Système"
|
||||
#string STR_FRONT_PAGE_BANNER_2_LEFT #language en-US "ACME® EFI BIOS Version 13.5 Release 1039.92"
|
||||
#language fr-FR "ACME® EFI BIOS Version 13.5 Release 1039.92"
|
||||
#string STR_FRONT_PAGE_BANNER_3_LEFT #language en-US "Serial Number: 1Z123456789MARMAR (Need SMBIOS entries)"
|
||||
#language fr-FR "Numéro de série: 1Z123456789MARMAR (Les entrées de SMBIOS de besoin)"
|
||||
#string STR_CONTINUE_PROMPT #language en-US "Continue"
|
||||
#language fr-FR "Continuer"
|
||||
#string STR_CONTINUE_HELP #language en-US "This selection will direct the system to continue to booting process"
|
||||
#language fr-FR "Cette sélection dirigera le système pour continuer au processus d'amorçage"
|
||||
#string STR_LANGUAGE_SELECT #language en-US "Select Language"
|
||||
#language fr-FR "Choisir la Langue"
|
||||
#string STR_LANGUAGE_SELECT_HELP #language en-US "This is the option one adjusts to change the language for the current system"
|
||||
#language fr-FR "Ceci est l'option qu'on ajuste pour changer la langue pour le système actuel"
|
||||
#string STR_FRONT_PAGE_COMPUTER_MODEL #language en-US "<model>"
|
||||
#string STR_FRONT_PAGE_BIOS_VERSION #language en-US "<bios>"
|
||||
#string STR_BOOT_DEFAULT_PROMPT #language en-US "Boot Default"
|
||||
#string STR_BOOT_DEFAULT_HELP #language en-US "Boot the default entry"
|
||||
#string STR_MISSING_STRING #language en-US "Missing String"
|
||||
#language fr-FR "Missing String"
|
||||
#string STR_EMPTY_STRING #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_RESET_STRING #language en-US "Reset"
|
||||
#language fr-FR "Reset"
|
||||
#string STR_RESET_STRING_HELP #language en-US "Reset the current setting."
|
||||
#language fr-FR "Reset the current setting."
|
||||
#string STR_CUSTOMIZE_BANNER_LINE4_LEFT #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_CUSTOMIZE_BANNER_LINE4_RIGHT #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_CUSTOMIZE_BANNER_LINE5_LEFT #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_CUSTOMIZE_BANNER_LINE5_RIGHT #language en-US ""
|
||||
#language fr-FR ""
|
||||
#string STR_TEST_KEY_USED #language en-US "WARNING: Test key detected."
|
||||
#language fr-FR "WARNING: Test key detected."
|
||||
#string STR_NULL_STRING #language en-US " "
|
||||
#language fr-FR " "
|
||||
|
@ -9,9 +9,9 @@
|
||||
|
||||
#define FORMSET_GUID { 0x9e0c30bc, 0x3f06, 0x4ba6, 0x82, 0x88, 0x9, 0x17, 0x9b, 0x85, 0x5d, 0xbe }
|
||||
|
||||
#define FRONT_PAGE_FORM_ID 0x1000
|
||||
#define FRONT_PAGE_FORM_ID 0x7600
|
||||
|
||||
#define LABEL_FRANTPAGE_INFORMATION 0x1000
|
||||
#define LABEL_FRONTPAGE_INFORMATION 0x1000
|
||||
#define LABEL_END 0xffff
|
||||
|
||||
formset
|
||||
@ -23,52 +23,11 @@ formset
|
||||
form formid = FRONT_PAGE_FORM_ID,
|
||||
title = STRING_TOKEN(STR_FRONT_PAGE_TITLE);
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_FRONT_PAGE_COMPUTER_MODEL),
|
||||
line 1,
|
||||
align left;
|
||||
subtitle text = STRING_TOKEN(STR_FRONT_PAGE_COMPUTER_MODEL);
|
||||
subtitle text = STRING_TOKEN(STR_FRONT_PAGE_BIOS_VERSION);
|
||||
subtitle text = STRING_TOKEN(STR_EMPTY_STRING);
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_FRONT_PAGE_CPU_MODEL),
|
||||
line 2,
|
||||
align left;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_FRONT_PAGE_CPU_SPEED),
|
||||
line 2,
|
||||
align right;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_FRONT_PAGE_BIOS_VERSION),
|
||||
line 3,
|
||||
align left;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_FRONT_PAGE_MEMORY_SIZE),
|
||||
line 3,
|
||||
align right;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE4_LEFT),
|
||||
line 4,
|
||||
align left;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE4_RIGHT),
|
||||
line 4,
|
||||
align right;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE5_LEFT),
|
||||
line 5,
|
||||
align left;
|
||||
|
||||
banner
|
||||
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE5_RIGHT),
|
||||
line 5,
|
||||
align right;
|
||||
|
||||
label LABEL_FRANTPAGE_INFORMATION;
|
||||
label LABEL_FRONTPAGE_INFORMATION;
|
||||
//
|
||||
// This is where we will dynamically add a Action type op-code to show
|
||||
// the platform information.
|
||||
|
Reference in New Issue
Block a user