Skip to content

Commit 7bb369c

Browse files
committed
MdeModulePkg/Application/UiApp: Customize front page
Signed-off-by: Michał Żygowski <[email protected]>
1 parent 1174634 commit 7bb369c

8 files changed

+185
-79
lines changed

MdeModulePkg/Application/UiApp/FrontPage.c

Lines changed: 51 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -436,21 +436,24 @@ ConvertMemoryInfoToString (
436436
)
437437
{
438438
CHAR16 *StringBuffer;
439+
CHAR16 RamBuffer[16];
439440
CHAR16 SpeedBuffer[8];
440441

441-
StringBuffer = AllocateZeroPool (0x34);
442+
StringBuffer = AllocateZeroPool (0x44);
442443
ASSERT (StringBuffer != NULL);
443-
UnicodeValueToStringS (StringBuffer, 0x34, LEFT_JUSTIFY, MemorySize, 10);
444-
StrCatS (StringBuffer, 0x34 / sizeof (CHAR16), L" MB RAM");
444+
UnicodeValueToStringS (RamBuffer, 16 * sizeof (CHAR16), LEFT_JUSTIFY, MemorySize, 10);
445+
StrCatS (StringBuffer, 0x44 / sizeof (CHAR16), L"Memory: ");
446+
StrCatS (StringBuffer, 0x44 / sizeof (CHAR16), RamBuffer);
447+
StrCatS (StringBuffer, 0x44 / sizeof (CHAR16), L" MB");
445448

446449
//
447450
// Some FSPs don't report speed in the memory HOB properly.
448451
//
449452
if (MemorySpeed != 0) {
450453
UnicodeValueToStringS (SpeedBuffer, 8 * sizeof (CHAR16), LEFT_JUSTIFY, MemorySpeed, 10);
451-
StrCatS (StringBuffer, 0x34 / sizeof (CHAR16), L" @ ");
452-
StrCatS (StringBuffer, 0x34 / sizeof (CHAR16), SpeedBuffer);
453-
StrCatS (StringBuffer, 0x34 / sizeof (CHAR16), L" MHz");
454+
StrCatS (StringBuffer, 0x44 / sizeof (CHAR16), L" @ ");
455+
StrCatS (StringBuffer, 0x44 / sizeof (CHAR16), SpeedBuffer);
456+
StrCatS (StringBuffer, 0x44 / sizeof (CHAR16), L" MHz");
454457
}
455458

456459
*String = (CHAR16 *) StringBuffer;
@@ -517,7 +520,9 @@ UpdateFrontPageBannerStrings (
517520
)
518521
{
519522
UINT8 StrIndex;
523+
UINTN StringSize;
520524
CHAR16 *NewString;
525+
CHAR16 *FinalString;
521526
CHAR16 *FirmwareVersionString;
522527
EFI_STATUS Status;
523528
EFI_SMBIOS_HANDLE SmbiosHandle;
@@ -536,29 +541,6 @@ UpdateFrontPageBannerStrings (
536541
MemorySpeed = 0;
537542
FoundCpu = 0;
538543

539-
//
540-
// Update default banner string.
541-
//
542-
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_LEFT), NULL);
543-
UiCustomizeFrontPageBanner (4, TRUE, &NewString);
544-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_LEFT), NewString, NULL);
545-
FreePool (NewString);
546-
547-
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_RIGHT), NULL);
548-
UiCustomizeFrontPageBanner (4, FALSE, &NewString);
549-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE4_RIGHT), NewString, NULL);
550-
FreePool (NewString);
551-
552-
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_LEFT), NULL);
553-
UiCustomizeFrontPageBanner (5, TRUE, &NewString);
554-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_LEFT), NewString, NULL);
555-
FreePool (NewString);
556-
557-
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_RIGHT), NULL);
558-
UiCustomizeFrontPageBanner (5, FALSE, &NewString);
559-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_CUSTOMIZE_BANNER_LINE5_RIGHT), NewString, NULL);
560-
FreePool (NewString);
561-
562544
//
563545
// Update Front Page banner strings base on SmBios Table.
564546
//
@@ -568,27 +550,22 @@ UpdateFrontPageBannerStrings (
568550
// Smbios protocol not found, get the default value.
569551
//
570552
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NULL);
571-
UiCustomizeFrontPageBanner (1, TRUE, &NewString);
572553
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NewString, NULL);
573554
FreePool (NewString);
574555

575556
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NULL);
576-
UiCustomizeFrontPageBanner (2, TRUE, &NewString);
577557
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NewString, NULL);
578558
FreePool (NewString);
579559

580560
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NULL);
581-
UiCustomizeFrontPageBanner (2, FALSE, &NewString);
582561
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NewString, NULL);
583562
FreePool (NewString);
584563

585564
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NULL);
586-
UiCustomizeFrontPageBanner (3, TRUE, &NewString);
587565
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);
588566
FreePool (NewString);
589567

590568
NewString = HiiGetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE), NULL);
591-
UiCustomizeFrontPageBanner (3, FALSE, &NewString);
592569
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE), NewString, NULL);
593570
FreePool (NewString);
594571

@@ -607,11 +584,18 @@ UpdateFrontPageBannerStrings (
607584
if (*FirmwareVersionString != 0x0000 ) {
608585
FreePool (NewString);
609586
NewString = (CHAR16 *) PcdGetPtr (PcdFirmwareVersionString);
610-
UiCustomizeFrontPageBanner (3, TRUE, &NewString);
611587
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);
612588
} else {
613-
UiCustomizeFrontPageBanner (3, TRUE, &NewString);
614-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);
589+
StringSize = StrLen(NewString) * sizeof(CHAR16) + StrLen(L"Version: ") * sizeof(CHAR16) + 2;
590+
FinalString = AllocateZeroPool(StringSize);
591+
if (FinalString) {
592+
StrCatS(FinalString, StringSize, L"Version: ");
593+
StrCatS(FinalString, StringSize, NewString);
594+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), FinalString, NULL);
595+
FreePool (FinalString);
596+
} else {
597+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION), NewString, NULL);
598+
}
615599
FreePool (NewString);
616600
}
617601
}
@@ -620,8 +604,16 @@ UpdateFrontPageBannerStrings (
620604
Type1Record = (SMBIOS_TABLE_TYPE1 *) Record;
621605
StrIndex = Type1Record->ProductName;
622606
GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type1Record + Type1Record->Hdr.Length), StrIndex, &NewString);
623-
UiCustomizeFrontPageBanner (1, TRUE, &NewString);
624-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NewString, NULL);
607+
StringSize = StrLen(NewString) * sizeof(CHAR16) + StrLen(L"System: ") * sizeof(CHAR16) + 2;
608+
FinalString = AllocateZeroPool(StringSize);
609+
if (FinalString) {
610+
StrCatS(FinalString, StringSize, L"System: ");
611+
StrCatS(FinalString, StringSize, NewString);
612+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), FinalString, NULL);
613+
FreePool (FinalString);
614+
} else {
615+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL), NewString, NULL);
616+
}
625617
FreePool (NewString);
626618
}
627619

@@ -633,13 +625,29 @@ UpdateFrontPageBannerStrings (
633625
if ((Type4Record->Status & SMBIOS_TYPE4_CPU_SOCKET_POPULATED) == SMBIOS_TYPE4_CPU_SOCKET_POPULATED) {
634626
StrIndex = Type4Record->ProcessorVersion;
635627
GetOptionalStringByIndex ((CHAR8*)((UINT8*)Type4Record + Type4Record->Hdr.Length), StrIndex, &NewString);
636-
UiCustomizeFrontPageBanner (2, TRUE, &NewString);
637-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NewString, NULL);
628+
StringSize = StrLen(NewString) * sizeof(CHAR16) + StrLen(L"CPU: ") * sizeof(CHAR16) + 2;
629+
FinalString = AllocateZeroPool(StringSize);
630+
if (FinalString) {
631+
StrCatS(FinalString, StringSize, L"CPU: ");
632+
StrCatS(FinalString, StringSize, NewString);
633+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), FinalString, NULL);
634+
FreePool (FinalString);
635+
} else {
636+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL), NewString, NULL);
637+
}
638638
FreePool (NewString);
639639

640640
ConvertProcessorToString(Type4Record->CurrentSpeed, 6, &NewString);
641-
UiCustomizeFrontPageBanner (2, FALSE, &NewString);
642-
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NewString, NULL);
641+
StringSize = StrLen(NewString) * sizeof(CHAR16) + StrLen(L"CPU Speed: ") * sizeof(CHAR16) + 2;
642+
FinalString = AllocateZeroPool(StringSize);
643+
if (FinalString) {
644+
StrCatS(FinalString, StringSize, L"CPU Speed: ");
645+
StrCatS(FinalString, StringSize, NewString);
646+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), FinalString, NULL);
647+
FreePool (FinalString);
648+
} else {
649+
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED), NewString, NULL);
650+
}
643651
FreePool (NewString);
644652

645653
FoundCpu = TRUE;
@@ -671,7 +679,6 @@ UpdateFrontPageBannerStrings (
671679
// Now update the total installed RAM size
672680
//
673681
ConvertMemoryInfoToString ((UINT32)InstalledMemory, MemorySpeed, &NewString);
674-
UiCustomizeFrontPageBanner (3, FALSE, &NewString);
675682
HiiSetString (gFrontPagePrivate.HiiHandle, STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE), NewString, NULL);
676683
FreePool (NewString);
677684
}

MdeModulePkg/Application/UiApp/FrontPageCustomizedUi.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ UiCustomizeFrontPage (
3434
//
3535
UiCreateLanguageMenu (HiiHandle, StartOpCodeHandle);
3636

37+
//
38+
// Create "System Date" menu with date opcode.
39+
//
40+
UiCreateDateMenu (HiiHandle, StartOpCodeHandle);
41+
42+
//
43+
// Create "System Time" menu with time opcode.
44+
//
45+
UiCreateTimeMenu (HiiHandle, StartOpCodeHandle);
46+
3747
//
3848
// Create empty line.
3949
//
@@ -126,14 +136,5 @@ UiCustomizeFrontPageBanner (
126136
IN OUT EFI_STRING *BannerStr
127137
)
128138
{
129-
if ((LineIndex == 5) && LeftOrRight) {
130-
// Update STR_CUSTOMIZE_BANNER_LINE5_LEFT
131-
if (PcdGetBool(PcdTestKeyUsed)) {
132-
if (BannerStr != NULL) {
133-
FreePool(*BannerStr);
134-
}
135-
*BannerStr = HiiGetString(gFrontPagePrivate.HiiHandle, STRING_TOKEN(STR_TEST_KEY_USED), NULL);
136-
}
137-
}
138139
return;
139140
}

MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
3939
#define FRONT_PAGE_KEY_RESET 0x1001
4040
#define FRONT_PAGE_KEY_LANGUAGE 0x1002
4141
#define FRONT_PAGE_KEY_DRIVER 0x2000
42+
#define FRONT_PAGE_KEY_DATE 0x8000
43+
#define FRONT_PAGE_KEY_TIME 0x8001
4244

4345
typedef struct {
4446
EFI_STRING_ID PromptId;
@@ -395,6 +397,58 @@ UiCreateLanguageMenu (
395397
);
396398
}
397399

400+
/**
401+
Create date menu in the front page.
402+
403+
@param[in] HiiHandle The hii handle for the Uiapp driver.
404+
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
405+
406+
**/
407+
VOID
408+
UiCreateDateMenu (
409+
IN EFI_HII_HANDLE HiiHandle,
410+
IN VOID *StartOpCodeHandle
411+
)
412+
{
413+
HiiCreateDateOpCode (
414+
StartOpCodeHandle,
415+
FRONT_PAGE_KEY_DATE,
416+
0,
417+
0,
418+
STRING_TOKEN(STR_DATE_PROMPT),
419+
STRING_TOKEN(STR_DATE_HELP),
420+
0,
421+
QF_DATE_STORAGE_TIME,
422+
NULL
423+
);
424+
}
425+
426+
/**
427+
Create time menu in the front page.
428+
429+
@param[in] HiiHandle The hii handle for the Uiapp driver.
430+
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
431+
432+
**/
433+
VOID
434+
UiCreateTimeMenu (
435+
IN EFI_HII_HANDLE HiiHandle,
436+
IN VOID *StartOpCodeHandle
437+
)
438+
{
439+
HiiCreateTimeOpCode (
440+
StartOpCodeHandle,
441+
FRONT_PAGE_KEY_TIME,
442+
0x0,
443+
0x0,
444+
STRING_TOKEN(STR_TIME_PROMPT),
445+
STRING_TOKEN(STR_TIME_HELP),
446+
0,
447+
QF_TIME_STORAGE_TIME,
448+
NULL
449+
);
450+
}
451+
398452
/**
399453
Create continue menu in the front page.
400454

MdeModulePkg/Application/UiApp/FrontPageCustomizedUiSupport.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,34 @@ UiCreateLanguageMenu (
4848
IN VOID *StartOpCodeHandle
4949
);
5050

51+
52+
/**
53+
Create System Date menu in the front page with date opcode.
54+
55+
@param[in] HiiHandle The hii handle for the Uiapp driver.
56+
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
57+
58+
**/
59+
VOID
60+
UiCreateDateMenu (
61+
IN EFI_HII_HANDLE HiiHandle,
62+
IN VOID *StartOpCodeHandle
63+
);
64+
65+
66+
/**
67+
Create System Time menu in the front page with time opcode.
68+
69+
@param[in] HiiHandle The hii handle for the Uiapp driver.
70+
@param[in] StartOpCodeHandle The opcode handle to save the new opcode.
71+
72+
**/
73+
VOID
74+
UiCreateTimeMenu (
75+
IN EFI_HII_HANDLE HiiHandle,
76+
IN VOID *StartOpCodeHandle
77+
);
78+
5179
/**
5280
Create Reset menu.
5381

MdeModulePkg/Application/UiApp/FrontPageStrings.uni

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
#string STR_FRONT_PAGE_TITLE #language en-US "Front Page"
1818
#language fr-FR "Front Page"
19+
#string STR_FRONT_PAGE_BANNER_TITLE #language en-US "DASHARO SETUP"
20+
#language fr-FR "DASHARO SETUP"
1921
#string STR_FRONT_PAGE_COMPUTER_MODEL #language en-US ""
2022
#language fr-FR ""
2123
#string STR_FRONT_PAGE_CPU_MODEL #language en-US ""
@@ -46,6 +48,14 @@
4648
#language fr-FR "Choisir la Langue"
4749
#string STR_LANGUAGE_SELECT_HELP #language en-US "This is the option one adjusts to change the language for the current system"
4850
#language fr-FR "Ceci est l'option qu'on ajuste pour changer la langue pour le système actuel"
51+
#string STR_DATE_PROMPT #language en-US "System Date"
52+
#language fr-FR "Date du système"
53+
#string STR_DATE_HELP #language en-US "This is the help for the Date (month/day/year)."
54+
#language fr-FR "C'est l'aide pour la Date (mois/jour/année)."
55+
#string STR_TIME_PROMPT #language en-US "System Time"
56+
#language fr-FR "Le temps du système"
57+
#string STR_TIME_HELP #language en-US "This is the help for the Time (hour/minute/second). Time is represented in local time zone."
58+
#language fr-FR "C'est l'aide pour l'heure (heure/minute/seconde). L'heure est représentée dans le fuseau horaire local."
4959
#string STR_MISSING_STRING #language en-US "Missing String"
5060
#language fr-FR "Missing String"
5161
#string STR_EMPTY_STRING #language en-US ""

MdeModulePkg/Application/UiApp/FrontPageVfr.Vfr

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ formset
2323
form formid = FRONT_PAGE_FORM_ID,
2424
title = STRING_TOKEN(STR_FRONT_PAGE_TITLE);
2525

26+
banner
27+
title = STRING_TOKEN(STR_FRONT_PAGE_BANNER_TITLE),
28+
line 0,
29+
align center;
30+
2631
banner
2732
title = STRING_TOKEN(STR_FRONT_PAGE_COMPUTER_MODEL),
2833
line 1,
@@ -48,26 +53,6 @@ formset
4853
line 3,
4954
align right;
5055

51-
banner
52-
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE4_LEFT),
53-
line 4,
54-
align left;
55-
56-
banner
57-
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE4_RIGHT),
58-
line 4,
59-
align right;
60-
61-
banner
62-
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE5_LEFT),
63-
line 5,
64-
align left;
65-
66-
banner
67-
title = STRING_TOKEN(STR_CUSTOMIZE_BANNER_LINE5_RIGHT),
68-
line 5,
69-
align right;
70-
7156
label LABEL_FRANTPAGE_INFORMATION;
7257
//
7358
// This is where we will dynamically add a Action type op-code to show

0 commit comments

Comments
 (0)