From 31bb486c913795c8b67d1c4dbaae2bdec4943fc9 Mon Sep 17 00:00:00 2001 From: raywu Date: Thu, 13 Sep 2018 16:11:56 +0800 Subject: SLP1.0 / SLP2.0 / Default Password / Logo / Fix Boot Order --- EDK/MiniSetup/Legacy/Legacy.cif | 14 + EDK/MiniSetup/Legacy/Legacy.mak | 131 +++ EDK/MiniSetup/Legacy/Legacy.sdl | 445 ++++++++++ EDK/MiniSetup/Legacy/legacy.c | 1622 ++++++++++++++++++++++++++++++++++++ EDK/MiniSetup/Legacy/legacy.h | 160 ++++ EDK/MiniSetup/Legacy/style.c | 725 ++++++++++++++++ EDK/MiniSetup/Legacy/style.h | 259 ++++++ EDK/MiniSetup/Legacy/stylecommon.c | 1362 ++++++++++++++++++++++++++++++ 8 files changed, 4718 insertions(+) create mode 100644 EDK/MiniSetup/Legacy/Legacy.cif create mode 100644 EDK/MiniSetup/Legacy/Legacy.mak create mode 100644 EDK/MiniSetup/Legacy/Legacy.sdl create mode 100644 EDK/MiniSetup/Legacy/legacy.c create mode 100644 EDK/MiniSetup/Legacy/legacy.h create mode 100644 EDK/MiniSetup/Legacy/style.c create mode 100644 EDK/MiniSetup/Legacy/style.h create mode 100644 EDK/MiniSetup/Legacy/stylecommon.c (limited to 'EDK/MiniSetup/Legacy') diff --git a/EDK/MiniSetup/Legacy/Legacy.cif b/EDK/MiniSetup/Legacy/Legacy.cif new file mode 100644 index 0000000..7da244b --- /dev/null +++ b/EDK/MiniSetup/Legacy/Legacy.cif @@ -0,0 +1,14 @@ + + name = "TSE Sources - Style - Legacy" + category = ModulePart + LocalRoot = "EDK\MiniSetup\Legacy" + RefName = "Legacy" +[files] +"Legacy.sdl" +"Legacy.mak" +"legacy.c" +"legacy.h" +"stylecommon.c" +"style.h" +"style.c" + diff --git a/EDK/MiniSetup/Legacy/Legacy.mak b/EDK/MiniSetup/Legacy/Legacy.mak new file mode 100644 index 0000000..04fcd6f --- /dev/null +++ b/EDK/MiniSetup/Legacy/Legacy.mak @@ -0,0 +1,131 @@ +##*****************************************************************## +##*****************************************************************## +##*****************************************************************## +##** **## +##** (C)Copyright 1985-2010, American Megatrends, Inc. **## +##** **## +##** All Rights Reserved. **## +##** **## +##** 5555 Oakbrook Pkwy , Norcross, GA 30071 **## +##** **## +##** Phone (770)-246-8600 **## +##** **## +##*****************************************************************## +##*****************************************************************## +##*****************************************************************## +## $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/Legacy.mak $ +## +## $Author: Arunsb $ +## +## $Revision: 2 $ +## +## $Date: 10/18/12 6:06a $ +## +##*****************************************************************## +##*****************************************************************## +## Revision History +## ---------------- +## $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/Legacy.mak $ +# +# 2 10/18/12 6:06a Arunsb +# Updated for 2.16.1235 QA submission +## +## 2 10/10/12 12:42p Arunsb +## Synched the source for v2.16.1232, backup with Aptio +# +# 1 3/28/11 11:52p Madhans +# [TAG] EIP54968 +# [Category] Improvement +# [Description] To Support different style modules in TSE generically +# [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +# added. +## +## 1 9/16/10 6:37p Blaines +## +## 1 9/16/10 6:32p Blaines +## +## 5 2/19/10 8:15a Mallikarjunanv +## updated year in copyright message +## +## 4 8/17/09 12:23p Presannar +## Removed Include path to Core directory +## +## 3 6/24/09 6:10p Madhans +## Made TSE_USE_EDK_LIBRARY=OFF to not to refer EDK module. +## +## 2 6/12/09 2:36p Blaines +## Update coding standard +## +## 1 6/04/09 8:05p Madhans +# +# 1 4/28/09 11:15p Madhans +# Tse 2.0 Code complete Checkin. +## +## 3 4/28/09 9:39p Madhans +## Tse 2.0 Code complete Checkin. +## +## 2 4/24/09 9:35p Blaines +## +## 1 12/18/08 7:59p Madhans +## Intial version of TSE Lite sources +## +## +##*****************************************************************## +##*****************************************************************## + +# MAK file for the eModule:TseLite + +TSE_STYLE_INCLUDES = \ + -I $(TSE_STYLE_DIR) \ +!if "$(UEFI_SOURCES_SUPPORT)" == "1" + -I $(UEFISRC_DIR) \ +!endif + -I $(TSESRC_DIR) \ + -I $(TSESRC_DIR)\AMILOGO \ + -I $(TSELITESRC_DIR) \ + -I $(TSEBIN_DIR) \ + -I $(TSEBIN_DIR)\Inc \ +!if "$(TSE_BOARD_SOURCE_SUPPORT)" == "1" + -I $(TSE_BOARD_DIR)\ +!endif + -I $(PROJECT_DIR)\Include\Protocol \ + -I $(PROJECT_DIR) \ + -I $(PROJECT_DIR)\Include \ + -I $(BUILD_DIR) \ + +$(BUILD_DIR)\TseStyleLegacy.lib : TseStyleLib + +TseStyleLib : $(BUILD_DIR)\Legacy.mak TseStyleLibBinLegacy + +$(BUILD_DIR)\Legacy.mak : $(TSE_STYLE_DIR)\$(@B).cif $(TSE_STYLE_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(TSE_STYLE_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +!if "$(TSE_USE_EDK_LIBRARY)" == "1" +TSE_DEFAULTS = $(EDK_DEFAULTS) +!else +TSE_DEFAULTS = $(BUILD_DEFAULTS) +!endif + +TseStyleLibBinLegacy : + $(MAKE) /$(MAKEFLAGS) $(TSE_DEFAULTS)\ + /f $(BUILD_DIR)\Legacy.mak all\ + "MY_INCLUDES=$(TSE_STYLE_INCLUDES)"\ + "UNI_INCLUDE_PATH=$(TSEBIN_DIR)"\ + TYPE=LIBRARY \ + "EXT_HEADERS=$(BUILD_DIR)\token.h"\ + LIBRARY_NAME=$(BUILD_DIR)\TseStyleLegacy.lib\ + "CFLAGS=$(CFLAGS) /DTSE_FOR_APTIO_4_50" + +##*****************************************************************## +##*****************************************************************## +##** **## +##** (C)Copyright 1985-2010, American Megatrends, Inc. **## +##** **## +##** All Rights Reserved. **## +##** **## +##** 5555 Oakbrook Pkwy , Norcross, GA 30071 **## +##** **## +##** Phone (770)-246-8600 **## +##** **## +##*****************************************************************## +##*****************************************************************## diff --git a/EDK/MiniSetup/Legacy/Legacy.sdl b/EDK/MiniSetup/Legacy/Legacy.sdl new file mode 100644 index 0000000..f83ca13 --- /dev/null +++ b/EDK/MiniSetup/Legacy/Legacy.sdl @@ -0,0 +1,445 @@ +TOKEN + Name = "TSE_STYLE_LEGACY_SUPPORT" + Value = "0" + Help = "Main switch to enable Legacy Style in TSE" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +TOKEN + Name = "SETUP_STYLE_LEGACY" + Value = "1" + Help = "Condition to support Legacy Style Sources" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "TSE_STYLE_SOURCES_SUPPORT" + Value = "1" + Help = "Don't Edit." + TokenType = Boolean + TargetMAK = Yes + TargetH = Yes +End + +TOKEN + Name = "SETUP_STYLE_FULL_SCREEN" + Value = "1" + Help = "Condition to support full screen layout" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "STYLE_FULL_MAX_ROWS" + Value = "31" + Help = "Maximum rows in full screen mode" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "STYLE_FULL_MAX_COLS" + Value = "100" + Help = "Maximum columns in full screen mode" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "STYLE_STD_MAX_ROWS" + Value = "24" + Help = "Maximum rows in standard mode" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "STYLE_STD_MAX_COLS" + Value = "80" + Help = "Maximum columns in Standard mode" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "PAGE_BGCOLOR" + Value = "EFI_BACKGROUND_BLUE" + Help = "Background Color of the main area (Main, Help, and Navigation Frames) in a page." + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "PAGE_FGCOLOR" + Value = "EFI_WHITE" + Help = "Foreground and Border Color of main area in a page (Default EFI_BLUE)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "TITLE_BGCOLOR" + Value = "PAGE_BGCOLOR" + Help = "Background Color of the Title bar frame." + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "TITLE_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Title bar frame" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "MENU_BGCOLOR" + Value = "PAGE_BGCOLOR" + Help = "Background color of the Menu bar frame" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "MENU_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Menu bar frame" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "HELP_FGCOLOR" + Value = "EFI_YELLOW" + Help = "Foreground Color of the Help Frame (Default PAGE_FGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "HELPTITLE_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Help Title Frame" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "NAV_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Navigation Frame" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "SCROLLBAR_BGCOLOR" + Value = "PAGE_BGCOLOR" + Help = "Background color of the Scroll bar (Default PAGE_BGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "SCROLLBAR_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Scroll bar (Default PAGE_FGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "SCROLLBAR_UPARROW_BGCOLOR" + Value = "PAGE_BGCOLOR" + Help = "Background color of the Scroll bar Up-Arrow (Default PAGE_BGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "SCROLLBAR_UPARROW_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Scroll bar Up-Arrow (Default PAGE_FGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "SCROLLBAR_DOWNARROW_BGCOLOR" + Value = "PAGE_BGCOLOR" + Help = "Background color of the Scroll bar Down-Arrow (Default PAGE_BGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "SCROLLBAR_DOWNARROW_FGCOLOR" + Value = "PAGE_FGCOLOR" + Help = "Foreground Color of the Scroll bar Down-Arrow (Default PAGE_FGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "POPUP_BGCOLOR" + Value = "EFI_BACKGROUND_RED" + Help = "Background Color of Popup Windows, and Message Boxes (Default EFI_BACKGROUND_BLUE)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "POPUP_FGCOLOR" + Value = "EFI_WHITE" + Help = "Foreground Color of Popup Windows, and Message Boxes (Default EFI_WHITE)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "FOCUS_COLOR" + Value = "EFI_YELLOW" + Help = "Focused label and control text color (Default EFI_WHITE)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "LABEL_FOCUS_COLOR" + Value = "EFI_WHITE" + Help = "Focused label text color (Default same as FOCUS_COLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "CONTROL_FOCUS_COLOR" + Value = "EFI_WHITE" + Help = "Focused control text color (Default same as FOCUS_COLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "CONTROL_FOCUS_BGCOLOR" + Value = "EFI_BACKGROUND_RED" + Help = "Focused control background color (Default same as PAGE_BGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "NON_FOCUS_COLOR" + Value = "EFI_WHITE" + Help = "Non Focused label and control text color (Default PAGE_FGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "LABEL_NON_FOCUS_COLOR" + Value = "NON_FOCUS_COLOR" + Help = "Non Focused label text color (Default same as NON_FOCUS_COLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "CONTROL_NON_FOCUS_COLOR" + Value = "EFI_YELLOW" + Help = "Non Focused control text color (Default same as NON_FOCUS_COLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "PAGE_LINK_COLOR" + Value = "NON_FOCUS_COLOR" + Help = "Submenu text color (Default PAGE_FGCOLOR)" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "EDIT_BGCOLOR" + Value = "EFI_BACKGROUND_BLUE" + Help = "Background color of focused edit controls" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "EDIT_FGCOLOR" + Value = "EFI_WHITE" + Help = "Foreground color of focused edit controls" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "TEXT_COLOR" + Value = "EFI_LIGHTGRAY" + Help = "Foreround color of text controls" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "MEMO_COLOR" + Value = "TEXT_COLOR" + Help = "Foreground color of Memo controls" + TokenType = Expression + TargetH = Yes + Range = "0x0-0x0f" +End + +TOKEN + Name = "FULL_STYLE_CONTROL_LEFT_MARGIN" + Value = "30" + Help = "Control column left margin in full screen mode" + TokenType = Integer + TargetH = Yes +End + +TOKEN + Name = "FULL_STYLE_CONTROL_LEFT_PAD" + Value = "2" + Help = "Control left padding in full screen mode" + TokenType = Integer + TargetH = Yes + +End + +TOKEN + Name = "STYLE_CONTROL_LEFT_MARGIN" + Value = "24" + Help = "Control column left margin" + TokenType = Integer + TargetH = Yes + +End + +TOKEN + Name = "STYLE_CONTROL_LEFT_PAD" + Value = "2" + Help = "Control left padding" + TokenType = Integer + TargetH = Yes + +End + +TOKEN + Name = "FULL_STYLE_LABEL_LEFT_MARGIN" + Value = "2" + Help = "Label column left margin in full screen mode" + TokenType = Expression + TargetH = Yes + +End + +TOKEN + Name = "STYLE_LABEL_LEFT_MARGIN" + Value = "2" + Help = "Label column left margin in normal screen mode" + TokenType = Expression + TargetH = Yes + +End + +TOKEN + Name = "STYLE_SCROLLBAR_ROLLOVER" + Value = "1" + Help = "Support rollover when the scroll limit has been reached" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "STYLE_PAGE_FIRSTITEM_FOCUS" + Value = "0" + Help = "Reset focus to the first item when navigating to a new page. (Default 0 => Set focus to previously selected item)" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "STYLE_SUBPAGE_FIRSTITEM_FOCUS" + Value = "0" + Help = "Reset focus to the first item when navigating back from submenu. (Default 0 => Set focus to previously selected item)" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "STYLE_HOTKEY_FAILSAFE" + Value = "SCAN_F6" + Help = " Hot Key to load fail safe values" + TokenType = Expression + TargetH = Yes +End + +TOKEN + Name = "STYLE_SHADOW_SUPPORT" + Value = "1" + Help = " To enable/disable shadow support" + TokenType = Boolean + TargetH = Yes +End + +TOKEN + Name = "STYLE_SPACEKEY_INCREMENT" + Value = "1" + Help = " < need to add help >" + TokenType = Integer + TargetH = Yes +End + +PATH + Name = "TSE_STYLE_DIR" +End + +MODULE + Help = "Includes Legacy.mak to Project" + File = "Legacy.mak" +End + +ELINK + Name = "$(BUILD_DIR)\TSEStyleLegacy.lib" + Parent = "$(TSE_STYLE_DIR)\TSEStyleLegacy$(ARCH).lib" + InvokeOrder = ReplaceParent +End + + diff --git a/EDK/MiniSetup/Legacy/legacy.c b/EDK/MiniSetup/Legacy/legacy.c new file mode 100644 index 0000000..6c34aa1 --- /dev/null +++ b/EDK/MiniSetup/Legacy/legacy.c @@ -0,0 +1,1622 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.c $ +// +// $Author: Premkumara $ +// +// $Revision: 10 $ +// +// $Date: 8/28/14 11:19a $ +// +//*****************************************************************// +//*****************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.c $ +// +// 10 8/28/14 11:19a Premkumara +// [TAG] EIP174031 +// [Category] Improvement +// [Description] Removed TODO comments and added proper comments in those +// places +// [Files] commonoem.c, commonhelper.c, special.c, submenu.c, +// minisetupext.c, uefi21wapper.c and legacy.c +// +// 9 2/11/13 6:01a Premkumara +// [TAG] EIP112628 +// [Category] Bug Fix +// [Severity] Important +// [Symptom] (JP000E)SETUP_GO_TO_EXIT_PAGE_ON_EXIT_KEY does not work on +// 4.6.2_TSE_2_15_1234 +// [RootCause] The Exit FormID value will change if any form is +// generated before Exit page +// [Solution] Handled Exit FormID from Binary and handling Exit FormID +// from binary +// [Files] Ezport.c, Ezport.sdl, Legacy.c, Legacy.sdl, EzportPlus.c, +// EzportPlus.sdl +// +// 8 10/18/12 6:06a Arunsb +// Updated for 2.16.1235 QA submission +// +// 2 10/10/12 12:42p Arunsb +// Synched the source for v2.16.1232, backup with Aptio +// +// 7 12/01/11 5:40a Rajashakerg +// [TAG] EIP74963 +// [Category] Improvement +// [Description] MAX_MSGBOX_WIDTH cannot be overridden +// [Files] AMITSE.sdl, CommonHelper.c, minisetup.h, legacy.c, +// MessageBox.c, MessageBox.h, FormBrowser.c +// +// 6 11/21/11 10:39a Premkumara +// [TAG] EIP72610 +// [Category] Improvement +// [Description] Moving TSE_MULTILINE_CONTROLS to Binary +// [Files] AMITSE-CommonHelper.c, AMITSE.sdl, +// TSELITE-UefiAction.c, TseLite.sdl, Time.h, Text.c, +// SubMenu.c, ResetButton.c, PopupString.c, PopupSel.h, PopupSel.c, +// PopupPassword.c, OrderListBox.c, Numeric.c, Label.c, Frame.c, Edit.c, +// Date.h, Date.c, +// LEGACY-Legacy.c, +// BOOTONLY- Minisetup.h +// +// 5 11/14/11 6:55p Blaines +// [TAG] - EIP 75486 +// [Category]- Function Request +// [Synopsis]- Support grayout condition for readonly controls. +// [Description] - Display readonly controls as grayout, non-selectable. +// [Files] +// AMITSE.sdl, CommonHelper.c, Minisetupext.h, stylecommon.c, Legacy.c, +// date.c, edit.c, label.c, memo.c, menu.c,, numeric.c, ordlistbox.c, +// PopupPassword.c, +// PopupSel.c, PopupString.c, ResetButton.c, SubMenu.c, Text.c, Time.c, +// UefiAction.c, ctrlcond.c, +// +// 4 6/29/11 12:43p Rajashakerg +// [TAG] EIP47086 +// [Category] New Feature +// [Description] Right clicking from the Main page is not exiting from +// BIOS setup. +// +// [Files] minisetup.h, Ezport\style.h,Ezport\EzportBin.sdl, +// Ezport\EzportBin.mak, Ezport\ezport.c, Ezport\EzportBin.cif, +// EzportPlus\style.h, EzportPlus\EzportPlusBin.sdl, EzportPlusBin.mak, +// EzportPlus\EzportPlusBin.cif, EzportPlus\ezportplus.c, Legacy\style.h, +// Legacy\EzportPlusBin.sdl, Legacy\LegacyBin.mak, Legacy\LegacyBin.cif, +// Legacy\legacy.c, TseLiteBin.sdl, TseLite.cif, Memo.c, frame.c, +// application.h, application.c, commonoem.h, CommonHelper.c +// +// 3 6/23/11 3:49p Rajashakerg +// [TAG] EIP55762, 58925, 59971 +// [Category] New Feature +// [Description] Support REF2,REF3 and REF4 in AMITSE +// Support direct form navigation path +// Improper layout of controls in the root page when Dynamic pages are +// added using the Legacy Setup Style +// +// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c, +// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c, +// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c, +// Uefi21Wrapper.c, Parse.c Hii.c +// +// 2 3/29/11 12:13a Madhans +// [TAG] EIP54968 +// [Category] Improvement +// [Description] To Support different style modules in TSE generically +// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +// added. +// +// 1 3/28/11 11:51p Madhans +// [TAG] EIP54968 +// [Category] Improvement +// [Description] To Support different style modules in TSE generically +// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +// added. +// +// 1 9/16/10 6:37p Blaines +// +// 1 9/16/10 6:32p Blaines +// +// 12 6/14/10 7:07p Madhans +// to avoid warnings +// +// 11 3/26/10 6:52p Madhans +// Support to Map the do the Control Mapping from gTseControlMap Table. So +// no changes need in Frame.c, With this feature gTseControlMap Can be +// customized to add/customize the TSE controls. +// +// 10 2/19/10 8:15a Mallikarjunanv +// updated year in copyright message +// +// 9 2/15/10 10:12p Madhans +// To avoid warnings +// +// 8 1/09/10 6:11a Mallikarjunanv +// Updated TSE2.01 Release sources with coding standards +// +// 7 8/24/09 5:15p Blaines +// Fix issue setting title and helptitle background color after clear +// screen +// +// 6 8/13/09 1:22p Blaines +// Support BgColor for MAIN_FRAME, NAV_FRAME, and HELP_FRAME +// +// 5 8/04/09 6:57p Blaines +// Add Support for Exit Page SDL tokens +// +// 3 6/23/09 6:54p Blaines +// Coding standard update, +// Remove spaces from file header to allow proper chm function list +// creation. +// +// 2 6/12/09 2:36p Blaines +// Update coding standard +// +// 1 6/04/09 8:05p Madhans +// +// 3 5/07/09 10:35a Madhans +// Changes after Bin module +// +// 9 5/05/09 3:20p Blaines +// +// 8 5/04/09 6:52p Blaines +// Support customizable Help and Nav frame text Foreground color +// +// 7 5/01/09 9:25p Blaines +// +// 6 4/30/09 9:54p Blaines +// +// 4 4/28/09 9:39p Madhans +// Tse 2.0 Code complete Checkin. +// +// 3 4/24/09 9:35p Blaines +// +// 1 12/18/08 7:59p Madhans +// Intial version of TSE Lite sources +//*****************************************************************// +//*****************************************************************// +// +// +// Name: alternate1.c +// +// Description: Main file for alternate1 style module. +// +// +//********************************************************************** +#include "minisetup.h" +#include "Legacy.h" + +extern STYLECOLORS Colors ; +extern AMI_IFR_MENU gMenuData ; + +extern UINTN gLabelLeftMargin ; +extern UINTN gControlLeftMargin ; +extern UINTN gControlLeftPad ; +extern UINTN gControlRightAreaWidth ; +static CALLBACK_SUBMENU gMenuCallbackData = { { CALLBACK_TYPE_MENU, sizeof(CALLBACK_MENU) }, 0 }; +static CALLBACK_SUBMENU gSubmenuCallbackData = { { CALLBACK_TYPE_SUBMENU, sizeof(CALLBACK_SUBMENU) }, 0 }; +static CALLBACK_VARIABLE gVariableCallbackData = { { CALLBACK_TYPE_VARIABLE, sizeof(CALLBACK_VARIABLE) }, 0, 0, 0, NULL }; +static CALLBACK_PASSWORD gPasswordCallbackData = { { CALLBACK_TYPE_PASSWORD, sizeof(CALLBACK_PASSWORD) }, 0, 0, 0, NULL, TRUE }; + +VOID _FrameSubmenuCallback( FRAME_DATA *frame, SUBMENU_DATA *submenu, VOID *cookie ); +VOID _FrameMenuCallback( FRAME_DATA *frame, MENU_DATA *menu, VOID *cookie ); + +BOOLEAN gotoExitOnEscKey(EFI_GUID *exitFormGuid, UINT16 *pageClass, UINT16 *pageSubclass, UINT16 *pageFormID);//EIP-112628 GotoExitPageOnEscKey + +#if SETUP_STYLE_LEGACY + +static FRAME_INFO _gStyleLegacyMainFrames[] = +{ +// {FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor } + { TITLE_FRAME, TRUE, FALSE, 0, 80, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR }, // Title + { MAIN_FRAME, TRUE, FALSE, 0, 78, 15, 2, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main + { HELP_FRAME, TRUE, FALSE, 0, 76, 1, 21, 1, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text + { NAV_FRAME, TRUE, FALSE, 0, 76, 2, 18, 2, NAV_FGCOLOR, PAGE_BGCOLOR } // Navigation +}; + +static FRAME_INFO _gStyleLegacySubFrames[] = +{ +// { FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor } + + { TITLE_FRAME, TRUE, FALSE, 0, 80, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR}, // Title + { SUBTITLE_FRAME, TRUE, FALSE, 0, 80, 1, 1, 0, MENU_FGCOLOR, MENU_BGCOLOR }, // Subtitle + { MAIN_FRAME, TRUE, FALSE, 0, 50, 19, 3, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main + { HELPTITLE_FRAME, TRUE, FALSE, 0, 23, 1, 3, 56, HELPTITLE_FGCOLOR, PAGE_BGCOLOR }, // Help title + { HELP_FRAME, TRUE, FALSE, 0, 23, 16, 5, 56, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text + { NAV_FRAME, TRUE, FALSE, 0, 80, 2, 22, 0, NAV_FGCOLOR, PAGE_BGCOLOR }, // Navigation +}; + +#if SETUP_STYLE_FULL_SCREEN +static FRAME_INFO _gStyleLegacyFullMainFrames[] = +{ +// {FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor } + { TITLE_FRAME, TRUE, FALSE, 0, 100, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR }, // Title + { MAIN_FRAME, TRUE, FALSE, 0, 98, 19, 2, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main + { HELP_FRAME, TRUE, FALSE, 0, 95, 1, 28, 1, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text + { NAV_FRAME, TRUE, FALSE, 0, 95, 2, 25, 2, NAV_FGCOLOR, PAGE_BGCOLOR } // Navigation +}; + +static FRAME_INFO _gStyleLegacyFullSubFrames[] = +{ +// { FrameType Drawable Border, BorderType, Width, Height, Top, Left, FGColor, BGColor } + { TITLE_FRAME, TRUE, FALSE, 0, 100, 1, 0, 0, TITLE_FGCOLOR, TITLE_BGCOLOR}, // Title + { SUBTITLE_FRAME, TRUE, FALSE, 0, 100, 1, 1, 0, MENU_FGCOLOR, MENU_BGCOLOR }, // Subtitle + { MAIN_FRAME, TRUE, FALSE, 0, 63, 25, 3, 1, PAGE_FGCOLOR, PAGE_BGCOLOR }, // Main + { HELPTITLE_FRAME, TRUE, FALSE, 0, 29, 1, 3, 70, HELPTITLE_FGCOLOR, PAGE_BGCOLOR }, // Help title + { HELP_FRAME, TRUE, FALSE, 0, 29, 21, 5, 70, HELP_FGCOLOR, PAGE_BGCOLOR }, // Help text + { NAV_FRAME, TRUE, FALSE, 0, 100, 2, 29, 0, NAV_FGCOLOR, PAGE_BGCOLOR }, // Navigation +}; +#endif + +FRAME_INFO *_gStyleMainFrames = _gStyleLegacyMainFrames ; +FRAME_INFO *_gStyleSubFrames = _gStyleLegacySubFrames ; + +INT16 gTabIndex = 0 ; + +AMITSE_CONTROL_MAP gTseControlMap[] = +{ +// ControlType ControlMethods CallbackSuppored CallbackFunction CallbackContext + { CONTROL_TYPE_MENU, (CONTROL_METHODS*)&gMenu, TRUE, (VOID*)(UINTN)&_FrameMenuCallback, (VOID*)(UINTN)&gMenuCallbackData}, + { CONTROL_TYPE_SUBMENU, (CONTROL_METHODS*)&gSubMenu,TRUE, (VOID*)(UINTN)&_FrameSubmenuCallback, (VOID*) &gSubmenuCallbackData}, + { CONTROL_TYPE_LABEL, (CONTROL_METHODS*)&gLabel, TRUE, (VOID*)(UINTN)&StyleLabelCallback, (VOID*) NULL}, + { CONTROL_TYPE_TEXT, (CONTROL_METHODS*)&gText, FALSE,(VOID*)NULL, (VOID*) NULL}, + { CONTROL_TYPE_POPUP_STRING, (CONTROL_METHODS*)&gPopupString, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData}, + { CONTROL_TYPE_DATE, (CONTROL_METHODS*)&gDate, FALSE, (VOID*)NULL, (VOID*) NULL}, + { CONTROL_TYPE_TIME, (CONTROL_METHODS*)&gTime, FALSE, (VOID*)NULL, (VOID*) NULL}, + { CONTROL_TYPE_POPUPSEL, (CONTROL_METHODS*)&gPopupSel, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData}, + // Checkbox is just popup sel + { CONTROL_TYPE_CHECKBOX, (CONTROL_METHODS*)&gPopupSel, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData}, + { CONTROL_TYPE_MEMO, (CONTROL_METHODS*)&gMemo, FALSE, (VOID*)NULL, (VOID*)NULL}, + { CONTROL_TYPE_NUMERIC, (CONTROL_METHODS*)&gNumeric, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData}, + { CONTROL_TYPE_ORDERED_LIST, (CONTROL_METHODS*)&gOrdListBox, TRUE, (VOID*)(UINTN)&_FrameVariableCallback, (VOID*) &gVariableCallbackData}, + { CONTROL_TYPE_PASSWORD, (CONTROL_METHODS*)&gPopupPassword, TRUE, (VOID*)(UINTN)&_FramePasswordCallback, (VOID*)&gPasswordCallbackData}, + { CONTROL_TYPE_ACTION, (CONTROL_METHODS*)&gUefiAction, TRUE, (VOID*)(UINTN) &StyleLabelCallback, (VOID*) NULL}, + { CONTROL_TYPE_RESET, (CONTROL_METHODS*)&gResetButton, TRUE, (VOID*)(UINTN) &StyleLabelCallback, (VOID*) NULL},//EIP:56413 Updated the Reset Button Control information + // CONTROL_TYPE_NULL need to be last member + { CONTROL_TYPE_NULL, (CONTROL_METHODS*)NULL, FALSE, (VOID*)NULL, (VOID*) NULL} +}; + + + +// +//---------------------------------------------------------------------------- +// Procedure: LegacyPageHandleAction +// +// Description: function to handle the page actions +// +// Input: PAGE_DATA *page, ACTION_DATA *action +// +// Output: status +// +//---------------------------------------------------------------------------- +// +EFI_STATUS LegacyPageHandleAction( PAGE_DATA *page, ACTION_DATA *action ) +{ + UINT32 i; + EFI_STATUS Status = EFI_UNSUPPORTED; + +//EIP# 58925 + UINT32 stackIndex = 0xFFFFFFFF; + UINT16 parentPgID = 0; +//EIP# 58925 + // On printScreen HotKey, Just return Unsupported and It will handed by Application Hotkey Handler. + if( ( action->Input.Type == ACTION_TYPE_KEY ) && + (TsePrintScreenEventSupport(action->Input.Data.AmiKey.Key.ScanCode) ) ) + { + Status = EFI_UNSUPPORTED; + goto DONE; + + } +/* +#if TSE_PRN_SCRN_EVENT_SUPPORT + if (( action->Input.Type == ACTION_TYPE_KEY ) && ( action->Input.Data.AmiKey.Key.ScanCode == TSE_PRN_SCRN_KEY_SCAN )) + return EFI_UNSUPPORTED; +#endif +*/ + for ( i = 0; i < page->FrameCount; i++ ) + { + if ( gFrame.HandleAction( page->FrameList[StyleFrameIndexOf(i)], action ) == EFI_SUCCESS ) + { + Status = EFI_SUCCESS; + goto DONE; + } + } + + for ( i = 0; i < page->HotKeyCount; i++ ) + { + if ( gHotKey.HandleAction( page->HotKeyList[i], action ) == EFI_SUCCESS ) + { + Status = EFI_SUCCESS; + goto DONE; + } + } + + if( + (( action->Input.Type == ACTION_TYPE_KEY ) && (ControlActionAbort == MapControlKeysHook(action->Input.Data.AmiKey))) + || ((action->Input.Type == ACTION_TYPE_MOUSE) && (ControlActionAbort == MapControlMouseActionHook(&(action->Input.Data.MouseInfo))) /*(TSEMOUSE_RIGHT_CLICK == action->Input.Data.MouseInfo.ButtonStatus)*/) + ) + { + + //Commented for Legacy Style 07/07/10 + //if ( page->PageData.PageParentID == 0 ) + // return EFI_UNSUPPORTED; + + + if ( page->PageData.PageID != page->PageData.PageParentID ) + { + // check for inconsistency here too. + if (CheckInconsistence((PAGE_INFO*)((UINTN)gApplicationData + gPages->PageList[page->PageData.PageID]))!= TRUE ) + { + // reset focus to first control + FRAME_DATA *frame = page->FrameList[StyleFrameIndexOf(MAIN_FRAME)]; + UINT32 i; + + for ( i = 0; i < frame->ControlCount; i++ ) + { + if ( _FrameSetControlFocus( frame, i ) ) + { + frame->FirstVisibleCtrl = 0; + break; + } + } +//EIP# 58925 + if(IsLinkHistorySupport()) + { + // tell application that we need to change pages + Status = GetParentFormID((UINT16)gApp->CurrentPage, &parentPgID, &stackIndex); //Gets the parent page of the current page + if(Status != EFI_SUCCESS) + gApp->CurrentPage = page->PageData.PageParentID; + else + gApp->CurrentPage = parentPgID; //Else set the current page to the parent page + } + else + { + gApp->CurrentPage = page->PageData.PageParentID; + } +//EIP# 58925 + gApp->CompleteRedraw = TRUE; + gApp->OnRedraw = SUBMENU_COMPLETE_REDRAW; + } + + Status = EFI_SUCCESS; + } + } +DONE: +//EIP# 58925 + if(IsLinkHistorySupport()) + { + if(Status == EFI_SUCCESS){ + SetParentFormID(page->PageData.PageID, (UINT16)gApp->CurrentPage); + } + } +//EIP# 58925 + return Status ; + +} +// +//-------------------------------------------------------------------------- +// +// Name: LegacyFrameAddControl +// +// Description: Adds controls to the frame +// +// Input: FRAME_DATA *frame - Pointer to the frame data +// CONTROL_INFO *controlData - Control date to be added +// +// Output: EFI_STATUS Status - EFI_SUCCESS if successful, else +// EFI_UNSUPPORTED +// +//-------------------------------------------------------------------------- +// +EFI_STATUS LegacyFrameAddControl( FRAME_DATA *frame, CONTROL_INFO *controlData ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED; + CONTROL_DATA **control; + POSITION_INFO *pos; + UINT16 count = (UINT16)frame->ControlCount; + UINT16 i; + BOOLEAN IsValidControl = FALSE; + PAGE_INFO *pageInfo=NULL; + + gActiveFrame = frame; + + + if(controlData->ControlType == CONTROL_TYPE_SUBMENU) + { + pageInfo = (PAGE_INFO *)((UINTN)gApplicationData + gPages->PageList[controlData->ControlDestPageID]); + + if(pageInfo->PageHandle == NULL) + { + frame->NullCount--; + return EFI_OUT_OF_RESOURCES; + } + } + + control = MemReallocateZeroPool( frame->ControlList, count * sizeof(CONTROL_INFO *), (count + 1) * sizeof(CONTROL_INFO *) ); + + if ( control == NULL ) + return EFI_OUT_OF_RESOURCES; + + frame->ControlList = control; + control = &frame->ControlList[ count ]; + + for(i=0;gTseControlMap[i].ControlType != CONTROL_TYPE_NULL;i++) + { + if(gTseControlMap[i].ControlType == controlData->ControlType) + { + Status = gTseControlMap[i].ControlMethods->Create(control); + if ( ! EFI_ERROR(Status) ) + { + if(gTseControlMap[i].CallbackSuppored ) + gTseControlMap[i].ControlMethods->SetCallback(*control, frame, + (OBJECT_CALLBACK)(UINTN)gTseControlMap[i].CallbackFunction, + (VOID*)gTseControlMap[i].CallbackContext); + } + IsValidControl = TRUE; + } + } + + if(!IsValidControl) + { + if(controlData->ControlType == CONTROL_TYPE_NULL ) + frame->NullCount++; + return Status; + } + + if ( ! EFI_ERROR( Status ) ) + { + Status = (*control)->Methods->Initialize( *control, controlData ); + + if ( ! EFI_ERROR( Status ) ) + { + UINT16 height = 1; + //EIP-72610 TSE_MULTILINE_CONTROLS moved to binary + if(IsTSEMultilineControlSupported()) + { + Status = (*control)->Methods->GetControlHeight( *control, (VOID*)frame,&height); + height = height ? height:1; + } + + if(frame->FrameData.FrameType == SUBTITLE_FRAME) + (*control)->Methods->SetDimensions( *control, frame->FrameData.Width , height ); + else + (*control)->Methods->SetDimensions( *control, frame->FrameData.Width - (UINT8)gLabelLeftMargin - 2 , height ); + + (*control)->ParentFrameType = frame->FrameData.FrameType ; + + frame->ControlCount++; + count++; + + (*control)->Methods->SetPosition( *control, frame->FrameData.Left + (UINT8)gLabelLeftMargin, frame->FrameData.Top + count -1 ); + + + if( EFI_ERROR( StyleHandleControlOverflow( frame, frame->ControlList[ count -1 ], (UINT16)frame->ControlCount )) ) + { + frame->LastVisibleCtrl = frame->ControlCount-1; + } + + // set position information + pos = MemReallocateZeroPool( frame->OrigPosition, (count-1) * sizeof(POSITION_INFO), (count ) * sizeof(POSITION_INFO) ); + if ( pos != NULL ) + { + pos[count-1].Left = (*control)->Left; + pos[count-1].Top = (*control)->Top; + frame->OrigPosition = pos; + } + + MemFreePointer( (VOID **)&frame->CurrPosition ); + frame->CurrPosition = EfiLibAllocateZeroPool( count * sizeof(POSITION_INFO) ); + + } + + } + return Status; +} +// +//-------------------------------------------------------------------------- +// +// Name: LegacyFrameDrawScrollBar +// +// Description: Draws the scrollbar controls for the frame.. +// +// Input: FRAME_DATA *frame - Pointer to the current frame +// UINT32 FirstLine - FirstLine of the scrollbar +// UINT32 LastLine - LastLine +// UINT32 modVal - modVal +// UINT32 sizeOfBar - Size of the Scrollbar +// UINT32 numOfBlocks - Number of blocks +// BOOLEAN bEraseScrollBar - flag to erase the scrollbar +// +// Output: EFI_STATUS status - +// EFI_SUCCESS - If there exists a next page and the +// function successfully loads it +// EFI_OUT_PF_RESOURCES - If there are know previous page +// +//-------------------------------------------------------------------------- +// +EFI_STATUS LegacyFrameDrawScrollBar (FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar) +{ + UINT32 i, j ; //,FirstLine=0,LastLine=0, count,visibleControlCount = 0, modVal=0, sizeOfBar, numOfBlocks = 0; + CHAR16 ArrUp[2]={{GEOMETRICSHAPE_UP_TRIANGLE},{0x0000}},ArrDown[2]={{GEOMETRICSHAPE_DOWN_TRIANGLE},{0x0000}},ScrlSel[2]={{BLOCKELEMENT_FULL_BLOCK/*L'N'*/},{0x0000}},ScrlNSel[2]={{BLOCKELEMENT_LIGHT_SHADE/*L'S'*/},{0x0000}}; + + + // draw scrollbar if necessary + if ( frame->BlankLine != NULL ) + { + j = frame->FrameData.Top; + for ( i = 1; i < frame->FrameData.Height; i++, j++ ) + { + // use this loop to draw the scrollbar + if(frame->UseScrollbar) + { + if(i==1) + DrawStringWithAttribute( frame->FrameData.Left + frame->FrameData.Width+2 , j, ArrUp, + StyleGetScrollBarUpArrowColor() ); + else if(i==(UINT16)(frame->FrameData.Height - 1)) + DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, ArrDown, + StyleGetScrollBarDownArrowColor() ); + else + { + if( (j > FirstLine) && (j < LastLine) && ((sizeOfBar + modVal) != 0)) + { + DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, ScrlSel, + StyleGetScrollBarColor() ); + sizeOfBar--; + } + else + { + DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, ScrlNSel, + StyleGetScrollBarColor() ); + } + } + } + else if (bEraseScrollBar == TRUE) + DrawStringWithAttribute( frame->FrameData.Left+ frame->FrameData.Width+2, j, L" ", + StyleGetScrollBarColor() ); + + } + bEraseScrollBar = FALSE; + } + + + return EFI_SUCCESS; +} +// +//-------------------------------------------------------------------------- +// +// Name: LegacyFrameDraw +// +// Description: Draws the controls for the given frame +// +// Input: FRAME_DATA *frame - Frame information to draw controls +// +// Output: EFI_STATUS - EFI_SUCCESS if successful, else EFI_ERROR +// +//-------------------------------------------------------------------------- +// +EFI_STATUS LegacyFrameDraw( FRAME_DATA *frame ) +{ + CONTROL_DATA **control; + UINT32 i, j,FirstLine=0,LastLine=0, count,visibleControlCount = 0, modVal=0, sizeOfBar, numOfBlocks = 0; + UINT16 CurrHeight, ControlTop; + UINT8 u8ChkResult; + EFI_STATUS Status = EFI_UNSUPPORTED; + + BOOLEAN bCurrNotFocused = FALSE,bEraseScrollBar=FALSE; + + if((frame->FrameData.FrameType != MAIN_FRAME) || ( frame->PageID != 0 )) + { + Status = FrameDraw(frame ); + return Status; + } + + + if(StyleFrameDrawable(frame)) + return EFI_UNSUPPORTED; + + if ( frame->ControlCount == 0 ) + return EFI_UNSUPPORTED; + + //If there is an active control send draw only for that + if(frame->CurrentControl == FRAME_NONE_FOCUSED) + { + control = NULL; + bCurrNotFocused = TRUE; // Non is focused + } + else + control = &frame->ControlList[frame->CurrentControl]; + + if ( control != NULL ) + { + //If a control is active only draw that + if( (*control)->ControlActive == TRUE ) + { + (*control)->Methods->Draw( *control ); + return EFI_SUCCESS; + } + + if(COND_NONE == CheckControlCondition( &((*control)->ControlData) )) + { + // Set the Focus to current control + if((*control)->Methods->SetFocus(*control,TRUE) != EFI_SUCCESS) + { + frame->CurrentControl = FRAME_NONE_FOCUSED; + bCurrNotFocused = TRUE; // Non is focused + } + } + } + + //There is no active control we have to draw all in the view. + + // First, clear the frame. + if ( frame->BlankLine != NULL ) + { + j = frame->FrameData.Top; + for ( i = 1; i < frame->FrameData.Height; i++, j++ ) + { + DrawStringWithAttribute( frame->FrameData.Left, j, frame->BlankLine, frame->FrameData.FGColor | frame->FrameData.BGColor ); + } + } + + //Set position for all controls begining from FirstVisibleControl. + //In the process calculate the correct LastVisibleControl. + control = frame->ControlList; + + control = control+ frame->FirstVisibleCtrl; + CurrHeight = frame->FrameData.Top; + frame->LastVisibleCtrl = frame->FirstVisibleCtrl; + + for ( i = frame->FirstVisibleCtrl; i < frame->ControlCount; i++, control++ ) + { + ControlTop = CurrHeight; + + //Check conditional + u8ChkResult = CheckControlCondition( &((*control)->ControlData) ); + + if(u8ChkResult == COND_NONE || u8ChkResult == COND_GRAYOUT) + { + //Control is drawn increament height + CurrHeight = CurrHeight + (*control)->Height; + if((frame->ControlCount > 1) && ((frame->FrameData.Top +frame->FrameData.Height) < CurrHeight+1 )) + { + break; + } + else + { + frame->LastVisibleCtrl = i; + } + } + + if(u8ChkResult != COND_NONE) + { + //Control grayed out or suppressed + if(frame->CurrentControl == i) + { + //Current control cant be focused + (*control)->Methods->SetFocus(*control,FALSE); + bCurrNotFocused = TRUE; + } + } + + //(*control)->Methods->SetPosition( *control, (*control)->Left, ControlTop); + } + + //Current control can not be focused? Find another one to focus. + if(bCurrNotFocused) + { + control = frame->ControlList; + control = control+ frame->FirstVisibleCtrl; + + for ( i = frame->FirstVisibleCtrl; i <= frame->LastVisibleCtrl; i++, control++ ) + { + if ( (*control)->Methods->SetFocus( *control, TRUE ) == EFI_SUCCESS ) + { + frame->CurrentControl = i; + break; + } + } + + if(i > frame->LastVisibleCtrl) + frame->CurrentControl = FRAME_NONE_FOCUSED; + } + + //Draw controls in the set positions + control = frame->ControlList; + control = control+ frame->FirstVisibleCtrl; + for ( i = frame->FirstVisibleCtrl; i <= frame->LastVisibleCtrl; i++, control++ ) + { + (*control)->Methods->Draw( *control ); + } + + CurrHeight = frame->FrameData.Top; + for (count = 0; count < frame->ControlCount; count++) + { + u8ChkResult = COND_NONE; + + //EIP 75486 Support grayout condition for readonly controls + u8ChkResult = CheckControlCondition( &(frame->ControlList[count]->ControlData) ); + + if((COND_NONE == u8ChkResult) || (COND_GRAYOUT == u8ChkResult)) + { + visibleControlCount++ ; + CurrHeight = CurrHeight + frame->ControlList[count]->Height; + } + } + + // if already have a Scroll bar and due some changes (some controls may bedisabled) we don't need a scroll bar in this frame. + if((frame->UseScrollbar) && ((frame->FrameData.Top + frame->FrameData.Height) >= CurrHeight+1)) + { + bEraseScrollBar = TRUE; + frame->UseScrollbar = FALSE; + } + + // if we don't have a Scroll bar and due some changes (some controls may be enabled) we need a scroll bar in this frame. + if((frame->ControlCount > 1) && (!frame->UseScrollbar) && ((frame->FrameData.Top + frame->FrameData.Height) < CurrHeight+1)) + { + frame->UseScrollbar = TRUE; + } + + if(visibleControlCount==0)visibleControlCount=1; + FirstLine = (frame->FrameData.Height* frame->FirstVisibleCtrl/visibleControlCount )+ frame->FrameData.Top; + LastLine = (frame->FrameData.Height* frame->LastVisibleCtrl/visibleControlCount )+ frame->FrameData.Top; + + numOfBlocks = frame->FrameData.Height - 2; + sizeOfBar = ((frame->FrameData.Height -1) * numOfBlocks) / visibleControlCount; + modVal = ((((frame->FrameData.Height -1) * numOfBlocks) % visibleControlCount)* numOfBlocks) > (numOfBlocks/2) ? 1 : 0; + + // draw scrollbar if necessary + StyleDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar); + + FlushLines( frame->FrameData.Top, frame->FrameData.Top + frame->FrameData.Height ); + + return EFI_SUCCESS; +} +// +//---------------------------------------------------------------------------- +// Procedure: LegacyMsgBoxInitialize +// +// Description: Function to Initialize Message Box, which uses the Popup functions. +// +// Input: MSGBOX_DATA *msgbox, VOID *data +// +// Output: status +// +//---------------------------------------------------------------------------- +// +EFI_STATUS LegacyMsgBoxInitialize( MSGBOX_DATA *msgbox, VOID *data ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED; + UINT16 Length =0 ; + VOID *buff; + CONTROL_INFO MemoCtrlData; + MEMO_DATA *memo; + UINT8 Color ; + + UINT16 titleToken; + VOID* TextHandle =((AMI_IFR_MSGBOX*)(((CONTROL_INFO*)data)->ControlPtr))->TextHandle; + + // initializes the heigth and width + Status = gPopup.Initialize( msgbox, data ); + if (EFI_ERROR(Status)) + return Status; + + Status = StyleGetMessageboxColor(msgbox->MsgBoxCatagory, &Color) ; + + if ( EFI_ERROR( Status ) == EFI_SUCCESS) + { + msgbox->FGColor = Color & 0x0f ; + msgbox->BGColor = Color & 0xf0 ; + }else + // add extra initialization here... + SetControlColorsHook( NULL, NULL, NULL , NULL, NULL , NULL, NULL , + NULL , NULL, NULL,NULL , + NULL,NULL ,&(msgbox->FGColor),&(msgbox->BGColor) ); + + msgbox->FGColor = Colors.PopupFGColor ; + msgbox->BGColor = Colors.PopupBGColor ; + + msgbox->Container = NULL; + + msgbox->Border =TRUE; + + titleToken = (UINT16)(((AMI_IFR_MSGBOX*)(msgbox->ControlData.ControlPtr))->Title); + if ( titleToken != 0 ) { + msgbox->Title = HiiGetString(msgbox->ControlData.ControlHandle, titleToken); + if ( msgbox->Title == NULL ) + return EFI_OUT_OF_RESOURCES; + } + + Length = (UINT16)HiiMyGetMultiLineStringLength(msgbox->ControlData.ControlHandle, (UINT16)(((AMI_IFR_MSGBOX*)(msgbox->ControlData.ControlPtr))->Text)); + + if ( ( msgbox->Title != NULL) && ( Length < (TestPrintLength( msgbox->Title )/ (NG_SIZE)) ) ) + Length = (UINT16)(TestPrintLength( msgbox->Title ) / (NG_SIZE)); + + msgbox->Width = (UINT16)(Length + 4); + + if(( msgbox->MsgBoxType == MSGBOX_TYPE_NULL ) && ( msgbox->Legend != NULL )) + { + if ( msgbox->Width < (UINT16)(TestPrintLength( msgbox->Legend )/ (NG_SIZE)) ) + msgbox->Width = (UINT16)(TestPrintLength( msgbox->Legend ) / (NG_SIZE)) + 8; + } +//EIP74963 : MAX_MSGBOX_WIDTH macro changed as token and handled from binary + if ( msgbox->Width > GetMsgboxWidth()) + msgbox->Width = GetMsgboxWidth(); + + msgbox->ScreenBuf = SaveScreen(); + + // initialize memo control + memo = msgbox->Memo; + + buff = UefiCreateSubTitleTemplate(((AMI_IFR_MSGBOX*)(msgbox->ControlData.ControlPtr))->Text ); + + + MemSet( &MemoCtrlData, sizeof(MemoCtrlData), 0 ); + MemoCtrlData.ControlPtr = (VOID*)buff; + MemoCtrlData.ControlHandle = TextHandle; + MemoCtrlData.ControlFlags.ControlVisible = TRUE; + gMemo.Initialize(memo,(VOID *)&(MemoCtrlData)); + memo->Width = msgbox->Width - 2; + gMemo.GetControlHeight( memo, NULL, &msgbox->Height ); + msgbox->Height += 4; + + gMemo.SetAttributes(memo,msgbox->FGColor ,msgbox->BGColor); + gMemo.SetDimensions( memo, msgbox->Width-2 , msgbox->Height-3 ); + gMemo.SetJustify( memo, JUSTIFY_CENTER ); + + return Status; +} +// +//---------------------------------------------------------------------------- +// Procedure: LegacySubMenuInitialize +// +// Description: this function uses the initialize function of control +// and initializes the submenu. +// +// Input: SUBMENU_DATA *submenu, VOID *data +// +// Output: status +// +//---------------------------------------------------------------------------- +// +EFI_STATUS LegacySubMenuInitialize( SUBMENU_DATA *submenu, VOID *data ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED; + //PAGE_INFO *pageInfo=NULL; + //PAGE_DATA *Page ; + + Status = gControl.Initialize( submenu, data ); + if (EFI_ERROR(Status)) + return Status; + + + + // add extra initialization here... + submenu->ControlData.ControlHelp = UefiGetHelpField((VOID *)submenu->ControlData.ControlPtr); //refPtr->Help; + submenu->ControlFocus = FALSE; + submenu->LabelMargin = (UINT8)gControlLeftMargin; + + // initialize default colors + SetControlColorsHook(&(submenu->BGColor), &(submenu->FGColor), + NULL, NULL, + &(submenu->SelBGColor), &(submenu->SelFGColor), + &(submenu->NSelBGColor), &(submenu->NSelFGColor), + NULL,&(submenu->LabelFGColor) , + &(submenu->NSelLabelFGColor), + NULL,NULL, + NULL,NULL ); + + + //if((submenu->SubMenuType==0) && (submenu->ControlData.ControlPageID!=0)) + // submenu->SelFGColor = FOCUS_COLOR ; + + + +/* + + if(submenu->SubMenuType==0) + { + Page = gApp->PageList[gApp->CurrentPage]; + + if(Page->PageData.PageTitle == STRING_TOKEN(STR_EXIT)) + { + submenu->SelFGColor = FOCUS_COLOR ; + + } + } +*/ + +/* + if((submenu->SubMenuType==0) && (submenu->ControlData.ControlPageID!=0)) + { + pageInfo = (PAGE_INFO *)((UINTN)gApplicationData + gPages->PageList[submenu->ControlData.ControlPageID]); + + if(pageInfo->PageTitle == STRING_TOKEN(STR_EXIT)) + { + submenu->SelFGColor = FOCUS_COLOR ; + + } + } +*/ + + + +#if SETUP_STYLE_LEGACY + submenu->SubMenuType = (UINT8)(submenu->ControlData.ControlPageID != 0); +#endif + + return Status; +} +// +//---------------------------------------------------------------------------- +// Procedure: LegacySubMenuDraw +// +// Description: function to draw a sub-menu. +// +// Input: SUBMENU_DATA *submenu +// +// Output: status +// +//---------------------------------------------------------------------------- +// +EFI_STATUS LegacySubMenuDraw( SUBMENU_DATA *submenu ) +{ + CHAR16 *text=NULL,*text1; + UINTN length; + EFI_STATUS Status = EFI_SUCCESS; +// UINT8 ColorSubMenu = submenu->NSelFGColor; + UINT8 ColorLabel = (submenu->ControlFocus) ? submenu->LabelFGColor : submenu->NSelLabelFGColor ; + UINT32 PageNum ; + + PageNum = gApp->CurrentPage ; + + // check conditional ptr if necessary + //EIP 75486 Support grayout condition for readonly controls + //if( submenu->ControlData.ControlConditionalPtr != 0x0) + //{ + switch( CheckControlCondition( &submenu->ControlData ) ) + { + case COND_NONE: + break; + case COND_GRAYOUT: + Status = EFI_WARN_WRITE_FAILURE; + ColorLabel = CONTROL_GRAYOUT_COLOR; + break; + default: + return EFI_UNSUPPORTED; + break; + } + //} + + text1 = HiiGetString( submenu->ControlData.ControlHandle, UefiGetPromptField((VOID *)(submenu->ControlData.ControlPtr))); + if ( text1 == NULL ) + return EFI_OUT_OF_RESOURCES; + // XXX check to see if text1 is not NULL + length = (3 + (TestPrintLength( text1 ) / (NG_SIZE))) * sizeof(CHAR16); + text = EfiLibAllocateZeroPool( length ); + if ( text == NULL ) + return EFI_OUT_OF_RESOURCES; + + if((submenu->SubMenuType == 0)&&( PageNum == 0 )) + SPrint( text, length, L"%s", text1 ); + else if(submenu->SubMenuType == 2) + SPrint( text, length, L"%s", text1 ); + else + SPrint( text, length, L"%c %s", GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 ); + + + //SPrint( text, length, L"%c %s", (submenu->SubMenuType == 2)?L' ':GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 ); + + //SPrint( text, length, ((submenu->SubMenuType == 0)&&( PageNum == 0 ))?L"%c%s":L"%c %s", ((submenu->SubMenuType == 2)||( PageNum == 0 ))?L' ':GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 ); + + //SPrint( text, length, ((submenu->SubMenuType == 0)&&( PageNum == 0 ))?L"%c%s":L"%c %s", ((submenu->SubMenuType == 2)||( PageNum == 0 ))?L' ':GEOMETRICSHAPE_RIGHT_TRIANGLE, text1 ); + MemFreePointer( (VOID **)&text1 ); + + if ( submenu->SubMenuType != 1 ) + { + //EIP-72610 TSE_MULTILINE_CONTROLS moved to binary + if(submenu->Height>1 && IsTSEMultilineControlSupported()) + { + DrawMultiLineStringWithAttribute( submenu->Left , submenu->Top, + (UINTN)(submenu->Width-2),(UINTN) submenu->Height, + &text[2], (UINT8)( (submenu->ControlFocus) ? + submenu->SelBGColor | ColorLabel /*submenu->SelFGColor*/ : + submenu->NSelBGColor | ColorLabel /*ColorSubMenu*/ ) ); + if(submenu->SubMenuType != 2) + { + text[2]=0; + DrawStringWithAttribute( submenu->Left - 2, submenu->Top, (CHAR16*)text, + (UINT8)( (submenu->ControlFocus) ? + submenu->SelBGColor | ColorLabel /*submenu->SelFGColor*/ : + submenu->NSelBGColor | ColorLabel /*ColorSubMenu*/ ) ); + } + } + else + { + + if(submenu->SubMenuType==0 && !submenu->ControlFocus && ColorLabel != CONTROL_GRAYOUT_COLOR) + ColorLabel = StyleGetPageLinkColor(); + + + if( PageNum == 0 ) + { + if((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)((submenu->Width/2)-2)) + EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)((submenu->Width/2)-5))],L"..."); + + }else{ + + + if((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)(submenu->Width-2)) + EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)(submenu->Width-5))],L"..."); + + } + + DrawStringWithAttribute( submenu->Left, submenu->Top, (CHAR16*)text, + (UINT8)( (submenu->ControlFocus) ? + submenu->SelBGColor | submenu->SelFGColor : + submenu->NSelBGColor | ColorLabel ) ); + } + } + else + { + if((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)(submenu->Width-2)) + EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)(submenu->Width-5))],L"..."); + + text1 = HiiGetString( gHiiHandle, STRING_TOKEN(STR_SUBMENU_OPTION) ); + if ( text1 != NULL ) + { + DrawStringWithAttribute( submenu->Left - 2, submenu->Top, (CHAR16*)text, + EFI_BACKGROUND_BLUE | EFI_WHITE ); + MemFreePointer( (VOID **)&text ); + + length = (3 + (TestPrintLength( text1 ) / (NG_SIZE))) * sizeof(CHAR16); + text = EfiLibAllocatePool( length ); + if ( text != NULL ) + { + SPrint( text, length, L"[%s]", text1 ); + + if ((TestPrintLength( text ) / (NG_SIZE)) > (UINTN)(submenu->Width-2)) + EfiStrCpy( &text[HiiFindStrPrintBoundary(text,(UINTN)(submenu->Width-5))],L"..."); + + DrawStringWithAttribute( submenu->Left + submenu->LabelMargin , submenu->Top, text, + (UINT8)( (submenu->ControlFocus) ? + submenu->SelBGColor | submenu->SelFGColor : + submenu->NSelBGColor | submenu->NSelFGColor ) ); + + //if ( submenu->ControlFocus ) + // DrawStringWithAttribute( submenu->Left + submenu->LabelMargin + 1, + // submenu->Top, text1, (UINT8)(submenu->SelBGColor | submenu->SelFGColor) ); + } + } + } + + MemFreePointer( (VOID **)&text ); + MemFreePointer( (VOID **)&text1 ); + + FlushLines( submenu->Top, submenu->Top ); + + return Status; +} + +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleInit +// +// Description: Function to initialize style +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID OverRideStyleInit( VOID ) +{ + VOID *data = NULL ; + data = (UINT8 *)gApplicationData + gPages->PageList[0] ; + + if( ((PAGE_INFO*)data)->PageHandle == 0) + ((PAGE_INFO*)data)->PageHandle = gHiiHandle ; + + + gLabelLeftMargin = STYLE_LABEL_LEFT_MARGIN ; + gControlLeftMargin = STYLE_CONTROL_LEFT_MARGIN ; + gControlLeftPad = STYLE_CONTROL_LEFT_PAD ; + + + #if SETUP_STYLE_FULL_SCREEN + if ( gMaxCols == STYLE_FULL_MAX_COLS ) + { + _gStyleMainFrames = _gStyleLegacyFullMainFrames ; + _gStyleSubFrames = _gStyleLegacyFullSubFrames ; + + gLabelLeftMargin = FULL_STYLE_LABEL_LEFT_MARGIN ; + gControlLeftMargin = FULL_STYLE_CONTROL_LEFT_MARGIN ; + gControlLeftPad = FULL_STYLE_CONTROL_LEFT_PAD ; + + } + #endif + + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameIndexOf +// +// Description: Function to get frame index +// +// Input: UINT32 frameType +// +// Output: UINT32 index +// +//---------------------------------------------------------------------------- +// +UINT32 StyleFrameIndexOf( UINT32 frameType ) +{ + UINT32 FrameCount ; + UINT32 i, PageNum ; + + PageNum = gApp->CurrentPage ; + + + if ( PageNum == 0 ) + FrameCount = sizeof(_gStyleLegacyMainFrames) / sizeof(FRAME_INFO); + else + FrameCount = sizeof(_gStyleLegacySubFrames) / sizeof(FRAME_INFO); + + + for ( i = 0; i < FrameCount; i++ ) + { + if ( PageNum == 0 ) + { + if( _gStyleMainFrames[i].FrameType == frameType ) + { + return i ; + break ; + } + }else{ + + if( _gStyleSubFrames[i].FrameType == frameType ) + { + return i ; + break ; + } + + } + + } + + return i ; + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetPageFrames +// +// Description: Function to number of frames +// +// Input: UINT32 page +// +// Output: UINT32 number of frames +// +//---------------------------------------------------------------------------- +// +UINT32 StyleGetPageFrames( UINT32 page ) +{ + if ( page == 0 ) + return sizeof(_gStyleLegacyMainFrames) / sizeof(FRAME_INFO); + + return sizeof(_gStyleLegacySubFrames) / sizeof(FRAME_INFO); +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleDrawPageBorder +// +// Description: Function to draw page border +// +// Input: UINT32 page +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID OverRideStyleDrawPageBorder( UINT32 page ) +{ + CHAR16 *line; + UINT8 lineNumber; + + UINT8 start, end, col; + + PAGE_DATA *Page=NULL ; + FRAME_DATA *fHelptitle=NULL, *fHelp=NULL ; + + Page = gApp->PageList[page]; + + fHelptitle = Page->FrameList[StyleFrameIndexOf(HELPTITLE_FRAME)]; + fHelp = Page->FrameList[StyleFrameIndexOf(HELP_FRAME)]; + + + + + + line = EfiLibAllocateZeroPool( (gMaxCols + 1) * sizeof(CHAR16) ); + if ( line == NULL ) + return; + + ClearScreenWithoutFlush( EFI_BACKGROUND_BLUE | EFI_WHITE ); + + MemFillUINT16Buffer( &line[1], gMaxCols - 2, L' ' ); + line[0] = line[gMaxCols - 1] = BOXDRAW_DOUBLE_VERTICAL; + + if ( page == 0 ) + { + start = 2; + end = (UINT8)(gMaxRows - 2); + } + else + { + start = 3; + end = (UINT8)(gMaxRows - 3); + } + + for ( lineNumber = start; lineNumber < end; lineNumber++ ) + DrawString( 0, lineNumber, line ); + + MemFillUINT16Buffer( &line[1], gMaxCols - 2, BOXDRAW_DOUBLE_HORIZONTAL ); + // top line + line[0] = BOXDRAW_DOUBLE_DOWN_RIGHT; + line[gMaxCols - 1] = BOXDRAW_DOUBLE_DOWN_LEFT; + DrawString( 0, start - 1, line ); + + // bottom line + line[0] = BOXDRAW_DOUBLE_UP_RIGHT; + line[gMaxCols - 1] = BOXDRAW_DOUBLE_UP_LEFT; + DrawString( 0, end, line ); + + MemFillUINT16Buffer( &line[1], gMaxCols - 2, BOXDRAW_HORIZONTAL ); + + if ( page == 0 ) + { + line[0] = BOXDRAW_VERTICAL_DOUBLE_RIGHT; + line[gMaxCols - 1] = BOXDRAW_VERTICAL_DOUBLE_LEFT; + DrawString( 0, gMaxRows - 4, line ); + line[gMaxCols / 2] = BOXDRAW_UP_HORIZONTAL; + DrawString( 0, gMaxRows - 7, line ); + + line[0] = BOXDRAW_DOWN_HORIZONTAL_DOUBLE; + line[1] = L'\0'; + DrawString( gMaxCols / 2, 1, line ); + } + else + { + // dividing line + line[0] = BOXDRAW_VERTICAL_RIGHT; + line[fHelp->FrameData.Width + 2] = BOXDRAW_VERTICAL_DOUBLE_LEFT; + line[fHelp->FrameData.Width + 3] = L'\0'; + DrawString( fHelp->FrameData.Left - 2, 4, line ); + line[0] = BOXDRAW_DOWN_HORIZONTAL_DOUBLE; + line[1] = L'\0'; + DrawString( fHelp->FrameData.Left - 2, 2, line ); + line[0] = BOXDRAW_UP_HORIZONTAL_DOUBLE; + DrawString( fHelp->FrameData.Left - 2, gMaxRows - 3, line ); + + } + + // center divider + line[0] = BOXDRAW_VERTICAL; + + if ( page == 0 ) + { + start = 2; + end = (UINT8)(gMaxRows - 7); + col = (UINT8)(gMaxCols / 2); + } + else + { + start = 5; + end = (UINT8)(gMaxRows - 3); + col = fHelp->FrameData.Left - 2; + } + for ( lineNumber = start; lineNumber < end; lineNumber++ ) + DrawString( col, lineNumber, line ); + + if ( page != 0 ) + DrawString( fHelp->FrameData.Left - 2, 3, line ); + + FlushLines( 0, gMaxRows - 1 ); + + gBS->FreePool( line ); + +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleGetFrameInitData +// +// Description: Function to get frame initialization data +// +// Input: UINT32 page, UINT32 frame +// +// Output: VOID* +// +//---------------------------------------------------------------------------- +// +VOID *OverRideStyleGetFrameInitData( UINT32 page, UINT32 frame ) +{ + if ( page == 0 ) + return &_gStyleMainFrames[frame]; + + return &_gStyleSubFrames[frame]; + +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideComponent +// +// Description: Function to override component or control functionality +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID OverRideComponent(VOID) +{ + gMsgBox.Initialize = LegacyMsgBoxInitialize ; + gSubMenu.Initialize = LegacySubMenuInitialize ; + gSubMenu.Draw = LegacySubMenuDraw ; + gFrame.Draw = LegacyFrameDraw ; // Override framedraw + gFrame.AddControl = LegacyFrameAddControl ; // Override FrameAddControl + gPage.HandleAction = LegacyPageHandleAction ; // Override FrameAddControl + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameAddTitle +// +// Description: Function to add frame title +// +// Input: FRAME_DATA *frame, UINT32 frameType, CONTROL_INFO * dummy +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleFrameAddTitle( FRAME_DATA *frame, UINT32 frameType,CONTROL_INFO * dummy ) +{ + return EFI_UNSUPPORTED; +} + +#endif /* SETUP_STYLE_LEGACY */ + +// +//---------------------------------------------------------------------------- +// Procedure: HandleEscKey +// +// Description: Function to handle ESC Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandleEscKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + UINT16 pageClass = 0, pageSubclass = 0, pageFormID = 0; + EFI_GUID ExitPageGuid; + + + if(FormBrowserHandleValid()) + app->Quit = TRUE; + + else if ( gotoExitOnEscKey (&ExitPageGuid, &pageClass, &pageSubclass, &pageFormID) )//EIP-112628 GotoExitPageOnEscKey + { + UINT32 i=0; + PAGE_INFO *pageInfo; + + for ( i = 0; i < gPages->PageCount; i++ ) + { + pageInfo = (PAGE_INFO *)((UINTN)gApplicationData + gPages->PageList[i]); + if ( + ( EfiCompareGuid(&ExitPageGuid,&(gPageIdInfo[pageInfo->PageIdIndex].PageGuid)) ) && + ( pageClass == gPageIdInfo[pageInfo->PageIdIndex].PageClass ) && + ( pageSubclass == gPageIdInfo[pageInfo->PageIdIndex].PageSubClass ) && + ( pageFormID == pageInfo->PageFormID ) + ) + { + gApp->CurrentPage = i; // Page found go to exit page + gApp->CompleteRedraw = TRUE; + gApp->Fixed = FALSE; + break; + } + } + if(i >= gPages->PageCount) //Page not found exit application + app->Quit = ExitApplication(); + } + + else + app->Quit = ExitApplication(); +} +// +//---------------------------------------------------------------------------- +// Procedure: HandleSaveExitKey +// +// Description: Function to handle Save and Exit Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandleSaveExitKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + app->Quit = SaveAndExit(); +} +// +//---------------------------------------------------------------------------- +// Procedure: HandlePrevValuesKey +// +// Description: Function to handle Load Previous value Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandlePrevValuesKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + //if ( app->CurrentPage != 0 ) + LoadPreviousValues( TRUE ); +} +// +//---------------------------------------------------------------------------- +// Procedure: HandleFailsafeKey +// +// Description: Function to handle Load Failsafe values Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandleFailsafeKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + //if ( app->CurrentPage != 0 ) + LoadFailsafeDefaults(); +} +// +//---------------------------------------------------------------------------- +// Procedure: HandleOptimalKey +// +// Description: Function to handle Load Optimal values Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandleOptimalKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + //if ( app->CurrentPage != 0 ) + LoadOptimalDefaults(); +} +// +//---------------------------------------------------------------------------- +// Procedure: HandleHelpKey +// +// Description: Function to handle Help Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandleHelpKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + //if ( app->CurrentPage != 0 ) + ShowHelpMessageBox(); +} +// +//---------------------------------------------------------------------------- +// Procedure: HandlePrnScrnKey +// +// Description: Function to handle print screen Hotkey action +// +// Input: APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHandlePrnScrnKey( APPLICATION_DATA *app, HOTKEY_DATA *hotkey, VOID *cookie ) +{ + TseHotkeyPrintScreenSupport(); +} + +//EIP:47086 - Right clicking from the Main page is not exiting from BIOS setup. +//EIP:47086 START +// +//---------------------------------------------------------------------------- +// Procedure: LegacyMainFrameHandlewithMouse +// +// Description: Function to handle Main Frame with Mouse +// +// Input: APPLICATION_DATA *app, HOTCLICK_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyMainFrameHandlewithMouse( APPLICATION_DATA *app, HOTCLICK_DATA *hotclick, VOID *cookie ) +{ + if(app->Action->Input.Data.MouseInfo.ButtonStatus == TSEMOUSE_RIGHT_CLICK) + app->Quit = ExitApplication(); +} + +// +//---------------------------------------------------------------------------- +// Procedure: LegacyHelpFrameHandlewithMouse +// +// Description: Function to handle Help Frame with Mouse +// +// Input: APPLICATION_DATA *app, HOTCLICK_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyHelpFrameHandlewithMouse( APPLICATION_DATA *app, HOTCLICK_DATA *hotclick, VOID *cookie ) +{ + +} + +// +//---------------------------------------------------------------------------- +// Procedure: LegacyNavFrameHandlewithMouse +// +// Description: Function to handle Navigation Frame with Mouse +// +// Input: APPLICATION_DATA *app, HOTCLICK_DATA *hotkey, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID LegacyNavFrameHandlewithMouse( APPLICATION_DATA *app, HOTCLICK_DATA *hotclick, VOID *cookie ) +{ + +} +//EIP:47086 END + + +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// diff --git a/EDK/MiniSetup/Legacy/legacy.h b/EDK/MiniSetup/Legacy/legacy.h new file mode 100644 index 0000000..b615152 --- /dev/null +++ b/EDK/MiniSetup/Legacy/legacy.h @@ -0,0 +1,160 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2010, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.h $ +// +// $Author: Arunsb $ +// +// $Revision: 2 $ +// +// $Date: 10/18/12 6:06a $ +// +//*****************************************************************// +//*****************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/legacy.h $ +// +// 2 10/18/12 6:06a Arunsb +// Updated for 2.16.1235 QA submission +// +// 2 10/10/12 12:42p Arunsb +// Synched the source for v2.16.1232, backup with Aptio +// +// 1 3/28/11 11:52p Madhans +// [TAG] EIP54968 +// [Category] Improvement +// [Description] To Support different style modules in TSE generically +// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +// added. +// +// 1 9/16/10 6:37p Blaines +// +// 1 9/16/10 6:32p Blaines +// +// 6 2/19/10 8:15a Mallikarjunanv +// updated year in copyright message +// +// 5 1/09/10 6:12a Mallikarjunanv +// Updated TSE2.01 Release sources with coding standards +// +// 4 8/24/09 5:15p Blaines +// Fix issue setting title and helptitle background color after clear +// screen +// +// 3 8/18/09 6:34p Blaines +// Support additional date styles +// +// 2 6/12/09 2:36p Blaines +// Update coding standard +// +// 1 6/04/09 8:05p Madhans +// +// 3 5/07/09 10:35a Madhans +// Changes after Bin module +// +// 2 4/29/09 9:02p Madhans +// Bug Fixes after unit Testing.. +// +// 1 4/28/09 11:14p Madhans +// Tse 2.0 Code complete Checkin. +// +// 3 4/28/09 9:39p Madhans +// Tse 2.0 Code complete Checkin. +// +// 2 4/24/09 9:35p Blaines +// +// 1 12/18/08 7:59p Madhans +// Intial version of TSE Lite sources +//*****************************************************************// +//*****************************************************************// +// +// +// Name: alternate1.h +// +// Description: Main header file for alternate1 style module. +// +// +//********************************************************************** +#ifndef _LEGACY_H_ +#define _LEGACY_H_ + +#if SETUP_STYLE_LEGACY + +VOID OverRideStyleInit( VOID ); +VOID OverRideStyleDrawPageBorder( UINT32 page ); +VOID *OverRideStyleGetFrameInitData( UINT32 page, UINT32 frame ); + +#if SETUP_STYLE_FULL_SCREEN + #define STYLE_MAX_COLS STYLE_FULL_MAX_COLS + #define STYLE_MAX_ROWS STYLE_FULL_MAX_ROWS +#else + #define STYLE_MAX_COLS STYLE_STD_MAX_COLS + #define STYLE_MAX_ROWS STYLE_STD_MAX_ROWS +#endif + +#define MAIN_FULL_Y 3 +#define MAIN_Y 3 +#define MAIN_FULL_W 98 +#define MAIN_W 78 + + +//#define STYLE_CONTROL_LEFT_PAD ((UINT8)4) +//#define STYLE_CONTROL_RIGHT_AREA_WIDTH 28 +//#define STYLE_CONTROL_LEFT_MARGIN ((UINT8)28) +#define STYLE_CLEAR_SCREEN_COLOR (EFI_BACKGROUND_BLUE | EFI_WHITE) +//#define FULL_STYLE_CONTROL_LEFT_MARGIN 37 +//#define FULL_STYLE_CONTROL_LEFT_PAD 2 +#define FULL_STYLE_CONTROL_RIGHT_AREA_WIDTH ((UINT8)FULL_VERTICAL_MAIN_DIVIDER - FULL_STYLE_CONTROL_LEFT_MARGIN - FULL_STYLE_CONTROL_LEFT_PAD) +#define FULL_STYLE_LABEL_LEFT_MARGIN 2 +#define STYLE_LABEL_LEFT_MARGIN 2 +#define EFI_BACKGROUND_WHITE (EFI_WHITE << 4) +//#define STYLE_CLEAR_SCREEN_COLOR (HELPTITLE_BGCOLOR | EFI_WHITE) + + +// Style Overrides... +#define STYLE_OVERRIDE_INIT +#define STYLE_OVERRIDE_PAGE_BORDER +#define STYLE_OVERRIDE_FRAME_INIT_DATA +#define STYLE_OVERRIDE_CONTROL_OVERFLOW +#define STYLE_OVERRIDE_INITIALIZE_FRAME +#define STYLE_OVERRIDE_INITIALIZE_OEM_FRAME +#define STYLE_OVERRIDE_NAV_TOKEN +#define STYLE_OVERRIDE_ADD_CONTROLS +#define STYLE_OVERRIDE_FIRST_PAGE +#define STYLE_OVERRIDE_VERSION_STRING +#define STYLE_OVERRIDE_FRAME_DRAWABLE +#define STYLE_COMPONENT_OVERRIDE +#define STYLE_OVERRIDE_HANDLE_KEY +#define STYLE_OVERRIDE_LABEL_CALLBACK +#define MENU_COMPLETE_REDRAW 1 +#define SUBMENU_COMPLETE_REDRAW 2 +#define STYLE_OVERRIDE_SCROLLBAR +#endif /* SETUP_STYLE_LEGACY */ + +#endif /* _LEGACY_H_ */ +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2010, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// diff --git a/EDK/MiniSetup/Legacy/style.c b/EDK/MiniSetup/Legacy/style.c new file mode 100644 index 0000000..293e836 --- /dev/null +++ b/EDK/MiniSetup/Legacy/style.c @@ -0,0 +1,725 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.c $ +// +// $Author: Premkumara $ +// +// $Revision: 5 $ +// +// $Date: 5/02/14 4:04a $ +// +//*****************************************************************// +//*****************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.c $ +// +// 5 5/02/14 4:04a Premkumara +// [TAG] EIP151966 +// [Category] Improvement +// [Description] Added the implementation for getting the BIOS build +// year dynamically +// from TimeStamp.h file and updated the Build year in copyright message +// in both Setup and POST. +// [Files] style.c,style.c,style.c,notify.c,minisetupext.c,CommonHelper +// .c, +// AmiTSEStr.uni,AMITSE.mak +// +// 4 10/18/12 6:06a Arunsb +// Updated for 2.16.1235 QA submission +// +// 2 10/10/12 12:42p Arunsb +// Synched the source for v2.16.1232, backup with Aptio +// +// 3 6/23/11 3:48p Rajashakerg +// [TAG] EIP55762, 58925, 59971 +// [Category] New Feature +// [Description] Support REF2,REF3 and REF4 in AMITSE +// Support direct form navigation path +// Improper layout of controls in the root page when Dynamic pages are +// added using the Legacy Setup Style +// +// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c, +// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c, +// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c, +// Uefi21Wrapper.c, Parse.c Hii.c +// +// 2 6/23/11 5:44a Rajashakerg +// [TAG] EIP63073 +// [Category] New Feature +// [Description] Source modules in TSE should get the version details +// from binary in run time not at build time +// [Files] CommonHelper.c, minisetupext.c, notify.c, Ezport\style.c, +// EzportPlus\style.c, Legacy\style.c +// +// 1 3/28/11 11:52p Madhans +// [TAG] EIP54968 +// [Category] Improvement +// [Description] To Support different style modules in TSE generically +// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +// added. +// +// 1 9/16/10 6:37p Blaines +// +// 1 9/16/10 6:32p Blaines +// +// 6 2/19/10 8:15a Mallikarjunanv +// updated year in copyright message +// +// 5 2/04/10 11:16p Madhans +// Navgation help for Mouse Added +// +// 4 1/09/10 6:13a Mallikarjunanv +// Updated TSE2.01 Release sources with coding standards +// +// 3 6/23/09 6:54p Blaines +// Coding standard update, +// Remove spaces from file header to allow proper chm function list +// creation. +// +// 2 6/12/09 2:36p Blaines +// Update coding standard +// +// 1 6/04/09 8:05p Madhans +// +// 3 5/07/09 10:35a Madhans +// Changes after Bin module +// +// 2 4/29/09 9:02p Madhans +// Bug Fixes after unit Testing.. +// +// 1 4/28/09 11:15p Madhans +// Tse 2.0 Code complete Checkin. +// +// 1 4/28/09 9:39p Madhans +// Tse 2.0 Code complete Checkin. +// +// 1 12/18/08 7:59p Madhans +// Intial version of TSE Lite sources +//*****************************************************************// +//*****************************************************************// +// +// +// Name: style.c +// +// Description: Contains style override functions. +// +// +//********************************************************************** +#include "minisetup.h" + +extern UINT8 gVerticalMainDivider ; +extern UINT8 gHorizontalHelpDivider ; +extern UINT16 gStrNavToken; + +VOID _StyleAddSpacing( FRAME_DATA *frame ); +VOID GetTseBuildVersion(UINTN *TseMajor, UINTN *TseMinor, UINTN *TseBuild); +VOID GetTseBuildYear(UINT16 *TseBuildYear);//EIP 151966 : Use BIOS build year for copyright message + +#if SETUP_STYLE_LEGACY + + + +STYLECOLORS Colors = +{ + TEXT_COLOR, //EFI_WHITE, //FGColor + PAGE_BGCOLOR, //BGColor + NON_FOCUS_COLOR, //EFI_BLUE, //secondary FGcolor + PAGE_BGCOLOR, //secondary BGColor + CONTROL_FOCUS_COLOR, //EFI_WHITE, //SelFGColor + PAGE_BGCOLOR, //SelBGColor + CONTROL_NON_FOCUS_COLOR, //EFI_BLUE, //NSelFGColor + PAGE_BGCOLOR, //NSelBGColor + PAGE_BGCOLOR, //LabelBGColor + LABEL_FOCUS_COLOR, //EFI_WHITE, //LabelFGColor + LABEL_NON_FOCUS_COLOR, //EFI_BLUE, //NSelLabelFGColor + EDIT_BGCOLOR, //EditBGColor + EDIT_FGCOLOR, //EFI_WHITE, //EditFGColor + POPUP_FGCOLOR, //popupFGColor + POPUP_BGCOLOR //popupBGColor +}; +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleLabelCallback +// +// Description: Function to set label callback +// +// Input: FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID OverRideStyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie ) +{ + UINT16 token = 0 ; + + if ( frame->PageID != 0 ) + return ; + + token = ((AMI_IFR_LABEL *)label->ControlData.ControlPtr)->Text; + + switch(token) + { + case STRING_TOKEN(STR_LOAD_FAILSAFE): + LoadFailsafeDefaults(); + break; + + case STRING_TOKEN(STR_LOAD_OPTIMAL): + _SubMenuAmiCallback( RESTORE_DEFAULTS_VALUE ); + //LoadOptimalDefaults(); + break; + + case STRING_TOKEN(STR_SAVE_EXIT): + _SubMenuAmiCallback( SAVE_AND_EXIT_VALUE ); + //HandleSaveAndExit(); + break; + + case STRING_TOKEN(STR_EXIT): + _SubMenuAmiCallback( DISCARD_AND_EXIT_VALUE ); + //HandleExitApplication(); + break; + + case STRING_TOKEN(STR_SAVE_RESET): + _SubMenuAmiCallback( SAVE_AND_RESET_VALUE ); + //HandleSaveAndReset(); + break; + + case STRING_TOKEN(STR_RESET): + _SubMenuAmiCallback( DISCARD_AND_RESET_VALUE ); + //HandleResetSys(); + break; + } +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleFrameHandleKey +// +// Description: Function to handle action key +// +// Input: FRAME_DATA *frame, EFI_INPUT_KEY Key +// +// Output: STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS OverRideStyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED; + INT32 prevControl = frame->CurrentControl; + + INT32 thisControl = prevControl; + INT32 lastControl = frame->ControlCount - 1; + CONTROL_DATA *control; + + if ( frame->PageID != 0 ) + return Status; + + if ( frame->ControlCount == 0 ) + return Status; + + switch ( Key.ScanCode ) + { + case SCAN_LEFT: + if ( thisControl - gTabIndex >= 0 ) + thisControl -= gTabIndex; + else if ( thisControl + gTabIndex <= lastControl ) + thisControl += gTabIndex; + break; + case SCAN_RIGHT: + if ( thisControl + gTabIndex <= lastControl ) + thisControl += gTabIndex; + else if ( thisControl - gTabIndex >= 0 ) + thisControl -= gTabIndex; + break; + default: + return Status; + } + + control = frame->ControlList[prevControl]; + control->Methods->SetFocus( control, FALSE ); + + if ( _FrameSetControlFocus( frame, thisControl ) ) + { + Status = EFI_SUCCESS; + frame->CurrentControl = thisControl; + } + + return Status; + +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleHandleControlOverflow +// +// Description: Function to handle contro overflow +// +// Input: FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +EFI_STATUS OverRideStyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED; + UINT8 top, left; + CONTROL_DATA *tempcontrol; + UINT16 i=0,Height=0; + + if ( frame->PageID != 0 ) + { + // Add scrollbar if not present linking it with the frame 0 thorugh a callback + for(i = 0; i < count; i++) + { + tempcontrol = (CONTROL_DATA*)(frame->ControlList[i]); + if( (Height + tempcontrol->Height ) < frame->FrameData.Height ) + { + Height = Height + tempcontrol->Height; + frame->LastVisibleCtrl = i; + } + else + { +// frame->UseScrollbar = TRUE; + Status = EFI_SUCCESS; + break; + } + } + return Status; + } + + frame->UseScrollbar = FALSE; + Status = EFI_SUCCESS; + + //_StyleAddSpacing( frame ); + + //Double Space layout + count = count*2 ;// + (UINT16)(frame->NullCount) ; + left = frame->FrameData.Left + (UINT8)gLabelLeftMargin; + top = frame->FrameData.Top + (UINT8)(count - 2) ; + + if(count > frame->FrameData.Height) + { + left = frame->FrameData.Left + (UINT8)gControlLeftPad + (UINT8)(gMaxCols / 2); + top = frame->FrameData.Top + (UINT8)(count - 1 - frame->FrameData.Height) ; + }else + gTabIndex = frame->ControlCount ; + + control->Methods->SetPosition( control, left, top ); +//EIP# 59971 Start + count = frame->ControlCount ; + + //If the double spaced layout exceeds the left + right columns, + //reflow the layout using single spacing. + if((count*2) > (frame->FrameData.Height*2)) + { + CONTROL_DATA **Control=NULL; + Control = frame->ControlList; + top = frame->FrameData.Top ; + left = frame->FrameData.Left + (UINT8)gLabelLeftMargin; + + //Update the column tab index + gTabIndex = (UINT32)((frame->ControlCount)/2) ; + + //Update using single space layout + for(i = 0; i< frame->ControlCount; i++, Control++ ) + { + (*Control)->Methods->SetPosition( *Control, left, top ); + frame->LastVisibleCtrl = i ; + top++; + + if( top > (frame->FrameData.Top + gTabIndex)) + { + left = frame->FrameData.Left + (UINT8)gControlLeftPad +(UINT8)(gMaxCols / 2); + top = frame->FrameData.Top ; + } + } + } +//EIP# 59971 End + frame->LastVisibleCtrl = frame->ControlCount -1; + Status = EFI_SUCCESS; + return Status; + +} + +static AMI_IFR_MENU gMenuData = {CONTROL_TYPE_MENU,2}; +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleInitializeFrame +// +// Description: Function to initialize frame +// +// Input: FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +EFI_STATUS OverRideStyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data ) +{ + EFI_STATUS Status = EFI_INVALID_PARAMETER; + UINT8 justify = JUSTIFY_LEFT /*, BORDER=(frame->FrameData.Border==TRUE)?1:0*/ ; + STYLECOLORS saveColors ; + + //CONTROL_INFO dummy; + + UINT32 FrameType = frame->FrameData.FrameType ; + + saveColors = Colors ; + + //Allows controls to match the Background Color of the Frame + Colors.BGColor = frame->FrameData.BGColor ; + Colors.SecBGColor = frame->FrameData.BGColor ; + Colors.SelBGColor = frame->FrameData.BGColor ; + Colors.NSelBGColor = frame->FrameData.BGColor ; + Colors.LabelBGColor = frame->FrameData.BGColor ; + //Colors.EditBGColor = frame->FrameData.BGColor ; + Colors.PopupBGColor = frame->FrameData.BGColor ; + + switch ( FrameType ) + { + case MAIN_FRAME: + + if ( frame->PageID == 0 ) + { + Colors.SelFGColor = EFI_WHITE ; + Colors.SelBGColor = EFI_BACKGROUND_RED ; + Colors.NSelFGColor = EFI_YELLOW ; + Colors.NSelLabelFGColor = EFI_YELLOW ; + Colors.LabelFGColor = EFI_WHITE ; + Colors.PopupFGColor = POPUP_FGCOLOR ; + Colors.PopupBGColor = POPUP_BGCOLOR ; + }else{ + + if(LABEL_FOCUS_COLOR != FOCUS_COLOR) + Colors.LabelFGColor = LABEL_FOCUS_COLOR ; + + if(CONTROL_FOCUS_COLOR != FOCUS_COLOR) + Colors.SelFGColor = CONTROL_FOCUS_COLOR; + + if(LABEL_NON_FOCUS_COLOR != NON_FOCUS_COLOR) + Colors.NSelLabelFGColor = LABEL_NON_FOCUS_COLOR ; + + if(CONTROL_NON_FOCUS_COLOR != NON_FOCUS_COLOR) + Colors.NSelFGColor = CONTROL_NON_FOCUS_COLOR ; + + Colors.SelBGColor = CONTROL_FOCUS_BGCOLOR ; + Colors.EditBGColor = CONTROL_FOCUS_BGCOLOR ; + } + + Status = _FrameAddControls( frame, data ); + break; + + case TITLE_FRAME: + case SUBTITLE_FRAME: + case HELPTITLE_FRAME: + justify = JUSTIFY_CENTER; + case HELP_FRAME: + if ( frame->PageID == 0 ) + justify = JUSTIFY_CENTER; + case NAV_FRAME: + if ( FrameType == NAV_FRAME) + justify = JUSTIFY_CENTER; + Status = _FrameAddTitle( frame, FrameType, data ); + if ( ! EFI_ERROR( Status ) ) + { + MEMO_DATA *memo = (MEMO_DATA *)frame->ControlList[0]; + gMemo.SetJustify( memo, justify ); + } + break; + case SCROLLBAR_FRAME: + // not implemented at this time + Status = EFI_SUCCESS; + break; + default: + break; + } + + // initialize frame scroll colors + frame->FrameData.ScrlFGColor = (frame->FrameData.FGColor == 0) ? Colors.SecFGColor:frame->FrameData.FGColor ; + frame->FrameData.ScrlBGColor = (frame->FrameData.BGColor == 0) ? Colors.SecBGColor : frame->FrameData.BGColor ; + + + + Colors = saveColors; + + // initialize frame scroll colors + frame->FrameData.ScrlFGColor = SCROLLBAR_FGCOLOR ; + frame->FrameData.ScrlBGColor = SCROLLBAR_BGCOLOR ; + frame->FrameData.ScrlUpFGColor = SCROLLBAR_UPARROW_FGCOLOR ; + frame->FrameData.ScrlUpBGColor = SCROLLBAR_UPARROW_BGCOLOR ; + frame->FrameData.ScrlDnFGColor = SCROLLBAR_DOWNARROW_FGCOLOR ; + frame->FrameData.ScrlDnBGColor = SCROLLBAR_DOWNARROW_BGCOLOR ; + + return Status; + +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleGetNavToken +// +// Description: Function to get navigation frame token +// +// Input: UINT32 page number +// +// Output: UINT16 token +// +//---------------------------------------------------------------------------- +// +UINT16 OverRideStyleGetNavToken( UINT32 page ) +{ + return gStrNavToken; +} + + + +static AMI_IFR_LABEL gFailSafeLabel = { 0, 0, STRING_TOKEN(STR_LOAD_FAILSAFE), STRING_TOKEN(STR_LOAD_FAILSAFE_HELP) }; +static AMI_IFR_LABEL gOptimalLabel = { 0, 0, STRING_TOKEN(STR_LOAD_OPTIMAL), STRING_TOKEN(STR_LOAD_OPTIMAL_HELP) }; +static AMI_IFR_LABEL gSaveExitLabel = { 0, 0, STRING_TOKEN(STR_SAVE_EXIT), STRING_TOKEN(STR_SAVE_EXIT_HELP) }; +static AMI_IFR_LABEL gExitLabel = { 0, 0, STRING_TOKEN(STR_EXIT), STRING_TOKEN(STR_EXIT_HELP) }; +static AMI_IFR_LABEL gSaveResetLabel = { 0, 0, STRING_TOKEN(STR_SAVE_RESET), STRING_TOKEN(STR_SAVE_RESET_HELP) }; +static AMI_IFR_LABEL gResetLabel = { 0, 0, STRING_TOKEN(STR_RESET), STRING_TOKEN(STR_RESET_HELP) }; + +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleAddAdditionalControls +// +// Description: Function to add additional controls +// +// Input: FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS OverRideStyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus ) +{ + EFI_STATUS Status = EFI_SUCCESS; + CONTROL_DATA **control; + UINT8 top=0, left=0; + UINT16 i=0, count = 0; + + + if ( frame->PageID != 0 ) + return Status; + + +// _StyleAddSpacing( frame ); + Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gFailSafeLabel, &controlNumber, &focus ); + if ( EFI_ERROR( Status ) ) + return Status; + + _StyleAddSpacing( frame ); + Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gOptimalLabel, &controlNumber, &focus ); + if ( EFI_ERROR( Status ) ) + return Status; + + _StyleAddSpacing( frame ); + Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gSaveExitLabel, &controlNumber, &focus ); + if ( EFI_ERROR( Status ) ) + return Status; + + _StyleAddSpacing( frame ); + Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gExitLabel, &controlNumber, &focus ); + if ( EFI_ERROR( Status ) ) + return Status; + + _StyleAddSpacing( frame ); + Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gSaveResetLabel, &controlNumber, &focus ); + if ( EFI_ERROR( Status ) ) + return Status; + + _StyleAddSpacing( frame ); + Status = _StyleAddControl( frame, CONTROL_TYPE_LABEL, &gResetLabel, &controlNumber, &focus ); + + control = frame->ControlList; + count = frame->ControlCount ; + + //Note: Initially, the root page layout of controls is from top->bottom left->right column with single spacing. + //If the initial layout spans more than the left and right column, update the layout using no spacing. + + return Status; + +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleSelectFirstDisplayPage +// +// Description: Function to set first page display +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID OverRideStyleSelectFirstDisplayPage( VOID ) +{ + gApp->CurrentPage = 0; +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleUpdateVersionString +// +// Description: Function to update version string +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID OverRideStyleUpdateVersionString( VOID ) +{ + CHAR16 *string = NULL, *newString = NULL; + UINTN length, TseMajor,TseMinor, TseBuild; + UINT16 TseBuildYear=0; + UINTN i; + + for ( i = 0; i < gLangCount; i++ ) + { + string = HiiGetStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_COPYRIGHT), gLanguages[i].Unicode ); + if ( string == NULL ) + return; + + length = EfiStrLen(string) + 10; + newString = EfiLibAllocateZeroPool( length * sizeof(CHAR16) ); + if ( newString != NULL ) + { + //EIP 63073 : Source modules in TSE should get the version details from binary in run time not at build time + GetTseBuildVersion(&TseMajor,&TseMinor,&TseBuild); + //EIP 151966 : Use BIOS build year for copyright message + GetTseBuildYear(&TseBuildYear); + SPrint( newString, length * sizeof(CHAR16), string, TseMajor, TseMinor, TseBuild,TseBuildYear ); + HiiChangeStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_COPYRIGHT), gLanguages[i].Unicode, newString ); + } + + MemFreePointer( (VOID **)&newString ); + MemFreePointer( (VOID **)&string ); + //EIP 151966 : Use BIOS build year for copyright message + string = HiiGetStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_TITLE), gLanguages[i].Unicode ); + if ( string == NULL ) + return; + length = EfiStrLen(string) + 10; + newString = EfiLibAllocateZeroPool( length * sizeof(CHAR16) ); + if ( newString != NULL ) + { + //EIP 151966 : Use BIOS build year for copyright message + GetTseBuildYear(&TseBuildYear); + SPrint( newString, length * sizeof(CHAR16), string, TseBuildYear ); + HiiChangeStringLanguage( gHiiHandle, STRING_TOKEN(STR_MAIN_TITLE), gLanguages[i].Unicode, newString ); + } + MemFreePointer( (VOID **)&newString ); + MemFreePointer( (VOID **)&string ); + } +} +// +//---------------------------------------------------------------------------- +// Procedure: OverRideStyleFrameDrawable +// +// Description: Function to determine if frame is drawable +// +// Input: FRAME_DATA *frame +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS OverRideStyleFrameDrawable( FRAME_DATA *frame ) +{ + EFI_STATUS Status = EFI_SUCCESS; + + if(!frame->FrameData.Drawable){ + Status = EFI_UNSUPPORTED; + } + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: _StyleAddSpacing +// +// Description: Function to add spacing +// +// Input: FRAME_DATA *frame +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID _StyleAddSpacing( FRAME_DATA *frame ) +{ + _StyleAddControl( frame, CONTROL_TYPE_NULL, NULL, NULL, NULL ); + //if ( frame->ControlCount == 7 ) + // _StyleAddControl( frame, CONTROL_TYPE_NULL, NULL, NULL, NULL ); +} +// +//---------------------------------------------------------------------------- +// Procedure: _StyleAddControl +// +// Description: Function to add controls +// +// Input: FRAME_DATA *frame, UINT16 type, VOID *data, UINT32 *controlNumber, BOOLEAN *focus +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS _StyleAddControl( FRAME_DATA *frame, UINT16 type, VOID *data, UINT32 *controlNumber, BOOLEAN *focus ) +{ + EFI_STATUS Status; + CONTROL_INFO dummy; + + MemSet( &dummy, sizeof(dummy), 0 ); + dummy.ControlHandle = (VOID*)(UINTN)INVALID_HANDLE; + + dummy.ControlType = type; + dummy.ControlPtr = (VOID*)data; + dummy.ControlFlags.ControlVisible = TRUE; + + Status = gFrame.AddControl( frame, &dummy ); + if ( EFI_ERROR( Status ) ) + return Status; + + if ( type != CONTROL_TYPE_NULL ) + { + if ( ! *focus ) + { + if ( _FrameSetControlFocus( frame, *controlNumber ) ) + { + frame->CurrentControl = *controlNumber; + *focus = TRUE; + } + } + + (*controlNumber)++; + } + + return Status; +} +#endif +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// diff --git a/EDK/MiniSetup/Legacy/style.h b/EDK/MiniSetup/Legacy/style.h new file mode 100644 index 0000000..bef8e19 --- /dev/null +++ b/EDK/MiniSetup/Legacy/style.h @@ -0,0 +1,259 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.h $ +// +// $Author: Arunsb $ +// +// $Revision: 4 $ +// +// $Date: 10/18/12 6:06a $ +// +//*****************************************************************// +//*****************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/style.h $ +// +// 4 10/18/12 6:06a Arunsb +// Updated for 2.16.1235 QA submission +// +// 2 10/10/12 12:42p Arunsb +// Synched the source for v2.16.1232, backup with Aptio +// +// 3 6/29/11 12:41p Rajashakerg +// [TAG] EIP47086 +// [Category] New Feature +// [Description] Right clicking from the Main page is not exiting from +// BIOS setup. +// +// [Files] minisetup.h, Ezport\style.h,Ezport\EzportBin.sdl, +// Ezport\EzportBin.mak, Ezport\ezport.c, Ezport\EzportBin.cif, +// EzportPlus\style.h, EzportPlus\EzportPlusBin.sdl, EzportPlusBin.mak, +// EzportPlus\EzportPlusBin.cif, EzportPlus\ezportplus.c, Legacy\style.h, +// Legacy\EzportPlusBin.sdl, Legacy\LegacyBin.mak, Legacy\LegacyBin.cif, +// Legacy\legacy.c, TseLiteBin.sdl, TseLite.cif, Memo.c, frame.c, +// application.h, application.c, commonoem.h, CommonHelper.c +// +// 2 6/23/11 3:47p Rajashakerg +// [TAG] EIP55762, 58925, 59971 +// [Category] New Feature +// [Description] Support REF2,REF3 and REF4 in AMITSE +// Support direct form navigation path +// Improper layout of controls in the root page when Dynamic pages are +// added using the Legacy Setup Style +// [Files] setupdata.h, CommonHelper.c, AMITSE.sdl, Legacy\Legacy.c, +// Legacy\style.h, Legacy\style.h, frame.c, minisetupext.c, +// minisetupext.h, numeric.c, page.c Popupstring.c, Hii.c, +// Uefi21Wrapper.c, Parse.c Hii.c +// +// 1 3/28/11 11:52p Madhans +// [TAG] EIP54968 +// [Category] Improvement +// [Description] To Support different style modules in TSE generically +// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +// added. +// +// 1 9/16/10 6:37p Blaines +// +// 1 9/16/10 6:32p Blaines +// +// 10 3/31/10 11:40a Blaines +// Remove the hook StyleFrameAddControl +// +// 9 3/23/10 5:10p Blaines +// Add new style module hooks +// +// 8 2/26/10 1:30p Madhans +// To avoid build issues with EDK. +// +// 7 2/19/10 8:15a Mallikarjunanv +// updated year in copyright message +// +// 6 2/05/10 6:04p Madhans +// Mouse action override from Style Module. +// +// 5 8/19/09 11:13a Blaines +// Update OEM Override prototypes +// +// 4 8/18/09 6:35p Blaines +// Support additional date styles +// +// 3 8/17/09 12:23p Presannar +// Removed References to Tiano.h +// +// 2 6/12/09 2:36p Blaines +// Update coding standard +// +// 1 6/04/09 8:05p Madhans +// +// 4 5/20/09 3:37p Blaines +// Add functions to access date format and Scroll behavior +// +// 3 5/18/09 12:18p Blaines +// Fix Help Frame text scroll +// Add OEM Style override prototype declarations +// +// 2 5/07/09 10:35a Madhans +// Changes after Bin module +// +// 1 4/28/09 11:15p Madhans +// Tse 2.0 Code complete Checkin. +// +// 3 4/24/09 9:35p Blaines +// +// 1 12/18/08 7:58p Madhans +// Intial version of TSE Lite sources +//*****************************************************************// +//*****************************************************************// +// +// +// Name: style.h +// +// Description: Style override prototypes. +// +// +//********************************************************************** +//#define SETUP_STYLE_FULL_SCREEN 1 +//#define SETUP_GO_TO_EXIT_PAGE_ON_EXIT_KEY 0 + +#ifndef _STYLE_H_ +#define _STYLE_H_ + +#if TSE_USE_EDK_LIBRARY +#include "Tiano.h" +#else +#include "Efi.h" +#endif + +//#define SETUP_STYLE_LEGACY 1 +#include "legacy.h" +#include "page.h" +#include "frame.h" + +extern INT16 gTabIndex ; +EFI_STATUS LegacyFrameDrawScrollBar (FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar); +EFI_STATUS StyleGetMessageboxColor( UINT8 MessageBoxType, UINT8 *Color); +EFI_STATUS StyleControlColor(FRAME_DATA *frame, STYLECOLORS *Colors); +EFI_STATUS OverRideControlColor(FRAME_DATA *frame, STYLECOLORS *Colors); +VOID StyleInit( VOID ); +VOID StyleExit( VOID ); +VOID StyleDrawPageBorder( UINT32 page ); +UINT32 StyleGetPageFrames( UINT32 page ); +UINT32 StyleFrameIndexOf( UINT32 frameType ); +VOID StyleBeforeFrame( FRAME_DATA *frame ) ; +EFI_STATUS StyleFrameDrawable( FRAME_DATA *frame ); +VOID StyleUpdateFrameStrings(PAGE_DATA *page); +VOID * StyleGetFrameInitData( UINT32 page, UINT32 frame ); + +EFI_STATUS StyleFrameHandleMouse( FRAME_DATA *frame, MOUSE_INFO MouseInfo); +EFI_STATUS StyleFrameHandleTimer( FRAME_DATA *frame, ACTION_DATA *action ); +EFI_STATUS StyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key ); +EFI_STATUS StyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count ); +EFI_STATUS StyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data ); +UINT16 StyleGetNavToken( UINT32 page ); +EFI_STATUS StyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus ); + +//EFI_STATUS StyleMenuCallback( FRAME_DATA *frame, MENU_DATA *menu, CALLBACK_MENU *data ); +VOID StyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie ); + +EFI_STATUS _StyleAddControl( FRAME_DATA *frame, UINT16 type, VOID *data, UINT32 *number, BOOLEAN *focus ); +UINT16 StyleLanguagePage( SUBMENU_DATA *submenu ); +UINT16 StyleBootManagerPage( SUBMENU_DATA *submenu ); +BOOLEAN StyleHelpAreaScrollable(VOID); +VOID StylePageItemFocus(PAGE_DATA *page, FRAME_DATA *frame ); +VOID StyleSubPageItemFocus(PAGE_DATA *page, FRAME_DATA *frame ); +BOOLEAN StyleGetShadowSupport(VOID); +VOID StyleDrawScrollBar(FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, + UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar); + +VOID StyleDrawHelpScrollBar( MEMO_DATA *memo, UINT16 height); + + +VOID StyleSelectFirstDisplayPage( VOID ); +VOID StyleAddExtraPagesData( VOID ); +EFI_STATUS StyleGetSpecialColor( UINT16 ControlType, UINT8 *Color); +UINTN StyleGetDateFormat(VOID); +BOOLEAN StyleShowDay(VOID); +BOOLEAN StyleGetScrollBehavior(VOID) ; + +VOID StyleFrameSetControlPositions(FRAME_DATA *frame, UINT32 *pOtherEnd); +extern HOTKEY_TEMPLATE gHotKeyInfo[]; +extern HOTCLICK_TEMPLATE gHotClickInfo[];//EIP:47086 - Right clicking from the Main page is not exiting from BIOS setup. +extern UINT32 gHotKeyCount; +extern UINT32 gHotClickCount;//EIP:47086 - Right clicking from the Main page is not exiting from BIOS setup. +//extern UINT8 gLabelLeftMargin ; +//extern UINT8 gControlLeftMargin ; +//extern FRAME_INFO _gStyleStandardSubFrames[] ; +extern UINT32 gSubFrameCount ; +extern EFI_STATUS FrameDrawScrollBar (FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar); +EFI_STATUS StyleFrameAddTitle( FRAME_DATA *frame, UINT32 frameType,CONTROL_INFO * dummy ); + + +//Common Overrides +VOID OverRideStyleLabelCallback(FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie ); +EFI_STATUS OverRideStyleFrameHandleKey(FRAME_DATA *frame, EFI_INPUT_KEY Key); +EFI_STATUS OverRideStyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count ); +EFI_STATUS OverRideStyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data ); +UINT16 OverRideStyleGetNavToken( UINT32 page ); +EFI_STATUS OverRideStyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus ); +VOID OverRideStyleSelectFirstDisplayPage( VOID ); +VOID OverRideStyleUpdateVersionString( VOID ); +EFI_STATUS OverRideStyleFrameDrawable( FRAME_DATA *frame ); +VOID OverRideComponent(VOID); + +//Oem Overrides +UINTN OEMStyleGetDateFormat(VOID); +EFI_STATUS OEMGetSpecialColor(UINT16 ControlType, UINT8 *Color); +VOID OEMStyleBeforeFrame( FRAME_DATA *frame ); +VOID OEMStyleUpdateFrameStrings( PAGE_DATA *page ); +EFI_STATUS OEMStyleFrameDrawable( FRAME_DATA *frame ); +VOID OEMStyleInit( VOID ); +VOID OEMStyleExit( VOID ); +VOID OEMStyleDrawPageBorder( UINT32 page ); +VOID OEMDrawScrollBar(FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar); +VOID OEMDrawHelpScrollBar( MEMO_DATA *memo, UINT16 height); +VOID *OEMStyleGetFrameInitData( UINT32 page, UINT32 frame ); +EFI_STATUS OEMStyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key ); +EFI_STATUS OEMStyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count ); +EFI_STATUS OEMStyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data ); +UINT16 OEMStyleGetNavToken( UINT32 page ); +EFI_STATUS OEMStyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus ); +UINT16 OEMStyleLanguagePage( SUBMENU_DATA *submenu ); +UINT16 OEMStyleBootManagerPage( SUBMENU_DATA *submenu ); +VOID OEMStyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie ); +VOID OEMStyleSelectFirstDisplayPage( VOID ); +VOID OEMStyleAddExtraPagesData(VOID); +UINTN OEMStyleGetTextMode( UINTN Rows, UINTN Cols ); +VOID OEMStyleUpdateVersionString( VOID ); +VOID OEMStyleFrameSetControlPositions(FRAME_DATA *frame, UINT32 *pOtherEnd); +VOID OEMOverRideComponent(VOID); +VOID OEMStylePageItemFocus(PAGE_DATA *page, FRAME_DATA *frame ); +VOID OEMStyleSubPageItemFocus(PAGE_DATA *page, FRAME_DATA *frame ); + +#endif /* _STYLE_H_ */ +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2011, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// diff --git a/EDK/MiniSetup/Legacy/stylecommon.c b/EDK/MiniSetup/Legacy/stylecommon.c new file mode 100644 index 0000000..86f0d3d --- /dev/null +++ b/EDK/MiniSetup/Legacy/stylecommon.c @@ -0,0 +1,1362 @@ +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2013, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// +//*****************************************************************// +// $Archive: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/stylecommon.c $ +// +// $Author: Rajashakerg $ +// +// $Revision: 12 $ +// +// $Date: 3/16/13 2:20a $ +// +//*****************************************************************// +//*****************************************************************// +// Revision History +// ---------------- +// $Log: /Alaska/SOURCE/Modules/AMITSE2_0/AMITSE/Legacy/stylecommon.c $ +// +// 12 3/16/13 2:20a Rajashakerg +// [TAG] EIP111479 +// [Category] Bug Fix +// [Severity] Normal +// [Symptom] BIOS dialog box is crashed with special +// monitor(160,53,1280*1024) +// [RootCause] DesiredTextMode was not set properly. +// [Solution] Provided proper mode number while setting text mode. +// [Files] postmgmtext.c, Ezport\stylecommon.c, +// EzportPlus\stylecommon.c, Legacy\stylecommon.c +// +// 11 2/10/13 11:55p Rajashakerg +// [TAG] EIP104521 +// [Category] Improvement +// [Description] Customer needs AMITSE modification to popup boxes so +// highlighted choices can be seen via VT100 console redirection +// [Files] AMITSE.sdl, CommonHelper.c, Ezport\stylecommon.c, +// EzportPlus\stylecommon.c, Legacy\stylecommon.c +// +// 10 10/18/12 6:06a Arunsb +// Updated for 2.16.1235 QA submission +// +// 3 10/10/12 12:42p Arunsb +// Synched the source for v2.16.1232, backup with Aptio +// +// 8 9/17/12 6:26a Rajashakerg +// Updated EIP changes for 2.16 release. +// +// 6 8/29/12 4:27p Arunsb +// [TAG] EIP94702 +// [Description] Support for Native Resolution in POST/BOOT +// [Files] amitse.sdl, commonhelper.c, commonoem.c, boot.c, logo.c, +// notify.c, postmgmt.c, tselite\minisetupext.c, ezport/stylecommon.c, +// ezportplus/stylecommon.c andlegacy/stylecommon.c +// +// 5 4/03/12 3:03a Premkumara +// [TAG] EIP84150 +// [Category] Bug Fix +// [Severity] Normal +// [Symptom] All the timers for mouse drivers before exiting from setup +// is not stopped +// [RootCause] MouseDestroy() is not called StopPointingDevice() +// function to stop Mouse device +// [Solution] StopPointingDevice() function is called in MouseDestroy() +// function +// [Files] Mouse.c, Protocol.c, Ezport/StyleCommon.c, +// EzportPlus/StyleCommon.c, Legacy/StyleCommon.c, Minisetupext.c +// +// 4 11/28/11 1:34a Premkumara +// [TAG] EIP75384 +// [Category] Improvement +// [Description] Suppress the warnings from static code analyzer +// [Files] UefiWapper.c, Hii.c, Expression.c, CtrlCond.c, PopupSel.c, +// Minisetupext.c, Menu.c, Date.c, Ezport\Stylecommon.c, +// EzportPlus\StyleCommon.c, +// +// 3 11/14/11 6:55p Blaines +// [TAG] - EIP 75486 +// [Category]- Function Request +// [Synopsis]- Support grayout condition for readonly controls. +// [Description] - Display readonly controls as grayout, non-selectable. +// [Files] +// AMITSE.sdl, CommonHelper.c, Minisetupext.h, stylecommon.c, Legacy.c, +// date.c, edit.c, label.c, memo.c, menu.c,, numeric.c, ordlistbox.c, +// PopupPassword.c, +// PopupSel.c, PopupString.c, ResetButton.c, SubMenu.c, Text.c, Time.c, +// UefiAction.c, ctrlcond.c, +// +// 2 11/09/11 10:04a Premkumara +// [TAG] EIP74375 +// [Category] Improvement +// [Description] Control STYLE_HELP_AREA_SCROLLBAR from binary +// [Files] CommonHelper.c, AMITSE.sdl, StyleHook.h, +// Legacy\StyleCommon.c, Legacy.sdl, +// EzportPlus\StyleCommon.c, EzportPlus.sdl, Ezport\StyleCommon.c, +// Ezport.sdl +// +// 1 3/28/11 11:52p Madhans +// [TAG] EIP54968 +// [Category] Improvement +// [Description] To Support different style modules in TSE generically +// [Files] Ezport module updated. EzportPlus and Legacy Styles Modules +// added. +// +// 1 9/16/10 6:37p Blaines +// +// 1 9/16/10 6:32p Blaines +// +// 10 3/31/10 11:40a Blaines +// Remove the hook StyleFrameAddControl +// +// 9 3/23/10 5:10p Blaines +// Add new style module hooks +// +// 8 2/19/10 8:15a Mallikarjunanv +// updated year in copyright message +// +// 7 2/05/10 6:04p Madhans +// Mouse action override from Style Module. +// +// 6 11/09/09 4:44a Mallikarjunanv +// Eip-30111 : fixed the issue to update the help if +// STYLE_PAGE_FIRSTITEM_FOCUS token enabled. +// +// 5 8/18/09 6:35p Blaines +// Support additional date styles +// +// 4 8/13/09 1:24p Blaines +// EIP #24980 Fix to properly display right area text; +// +// +// 3 6/23/09 6:54p Blaines +// Coding standard update, +// Remove spaces from file header to allow proper chm function list +// creation. +// +// 2 6/12/09 2:36p Blaines +// Update coding standard +// +// 1 6/04/09 8:05p Madhans +// +// 4 5/20/09 3:37p Blaines +// Add functions to access date format and Scroll behavior +// +// 3 5/18/09 12:18p Blaines +// Fix Help Frame text scroll +// Add OEM Style override prototype declarations +// +// 2 5/07/09 10:35a Madhans +// Changes after Bin module +// +// 1 4/28/09 11:15p Madhans +// Tse 2.0 Code complete Checkin. +// +// 4 4/28/09 9:39p Madhans +// Tse 2.0 Code complete Checkin. +// +// 3 4/24/09 9:35p Blaines +// +// 1 12/18/08 7:59p Madhans +// Intial version of TSE Lite sources +//*****************************************************************// +//*****************************************************************// +// +// +// Name: stylecommon.c +// +// Description: Contains generic or default style functions. +// +// +//********************************************************************** +#include "minisetup.h" + +#if SETUP_STYLE_LEGACY + + +VOID _StyleControlSubmenu( CONTROL_INFO *control, UINT16 pageID, VOID *ref ); +VOID UpdatePageFocusedItemHelp(PAGE_DATA *page); +// +//-------------------------------------------------------------------------- +// +// Name: StyleControlColor +// +// Description: Adds controls to the frame +// +// Input: FRAME_DATA *frame - Pointer to the frame data +// STYLECOLORS Colors - Color scheme +// +// Output: EFI_STATUS Status - EFI_SUCCESS if successful, else +// EFI_UNSUPPORTED +// +//-------------------------------------------------------------------------- +// +EFI_STATUS StyleControlColor(FRAME_DATA *frame, STYLECOLORS *Colors) +{ + //The goal here is to allow controls to match the BGColor of their frame. + //Normally this is handled in StyleInitializeFrame(), before controls are added to the frame. + //But this function is called dynamically during runtime (after pages/frames/controls are styled) + //Since controls derive their colors from [STYLECOLORS Colors], + //we'll temporarly modify it before controls are added to this frame, then restore it. + + EFI_STATUS Status = EFI_SUCCESS; + + #ifdef STYLE_OEM_CONTROL_COLOR + Status = OEMControlColor(frame, Colors); + #else + #ifdef STYLE_CONTROL_COLOR + Status = OverRideControlColor(frame, Colors); + #else + + + if(LABEL_FOCUS_COLOR != FOCUS_COLOR) + Colors->LabelFGColor = LABEL_FOCUS_COLOR ; + + if(CONTROL_FOCUS_COLOR != FOCUS_COLOR) + Colors->SelFGColor = CONTROL_FOCUS_COLOR; + + if(LABEL_NON_FOCUS_COLOR != NON_FOCUS_COLOR) + Colors->NSelLabelFGColor = LABEL_NON_FOCUS_COLOR ; + + if(CONTROL_NON_FOCUS_COLOR != NON_FOCUS_COLOR) + Colors->NSelFGColor = CONTROL_NON_FOCUS_COLOR ; + + Colors->SelBGColor = CONTROL_FOCUS_BGCOLOR ; + Colors->EditBGColor = CONTROL_FOCUS_BGCOLOR ; + + + #endif + + #endif + + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetSpecialColor +// +// Description: Function to get control special color +// +// Input: UINT16 ControlType, UINT8 *Color +// +// Output: status +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleGetSpecialColor( UINT16 ControlType, UINT8 *Color) +{ + EFI_STATUS Status = EFI_SUCCESS;; + + #ifdef STYLE_OEM_CONTROL_COLOR + Status = OEMGetSpecialColor(ControlType, Color); + #else + + + switch ( ControlType ) + { + case CONTROL_TYPE_MEMO: + if (Color !=NULL) *Color = MEMO_COLOR ; + break; + + case CONTROL_TYPE_TEXT: + if (Color !=NULL) *Color = TEXT_COLOR ; + break; + + default: + Status = EFI_UNSUPPORTED;; + break; + } + #endif + + return Status ; +} + +VOID GetMessageboxColorHook(UINT8 **Color); +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetMessageboxColor +// +// Description: Function to get control Messagebox color +// +// Input: UINT16 ControlType, UINT8 *Color +// +// Output: status +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleGetMessageboxColor( UINT8 MessageBoxType, UINT8 *Color) +{ + EFI_STATUS Status = EFI_SUCCESS;; + + if(Color == NULL) + return Status ; + + + switch ( MessageBoxType ) + { + case MSGBOX_EX_CATAGORY_HELP: + *Color = POPUP_BGCOLOR | POPUP_FGCOLOR ; + break; + + case MSGBOX_EX_CATAGORY_QUERY: + *Color = EFI_BACKGROUND_BLUE | EFI_WHITE ; + break; + + case MSGBOX_EX_CATAGORY_SUCCESS: + *Color = EFI_BACKGROUND_GREEN | EFI_WHITE ; + break; + + case MSGBOX_EX_CATAGORY_WARNING: + *Color = EFI_BACKGROUND_RED | EFI_WHITE ; + break; + + case MSGBOX_EX_CATAGORY_ERROR: + *Color = EFI_BACKGROUND_RED | EFI_WHITE ; + break; + + case MSGBOX_EX_CATAGORY_PROGRESS: + *Color = EFI_BACKGROUND_LIGHTGRAY | EFI_WHITE ; + break; + + case MSGBOX_EX_CATAGORY_HALT: + *Color = EFI_BACKGROUND_LIGHTGRAY | EFI_WHITE ; + break; + + case MSGBOX_EX_CATAGORY_NORMAL: + + default: + *Color = EFI_BACKGROUND_BLUE | EFI_WHITE ; + + break; + } + + GetMessageboxColorHook(&Color); + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleBeforeFrame +// +// Description: Function to alter frame styling before frame is drawn +// +// Input: FRAME_DATA *frame +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleBeforeFrame( FRAME_DATA *frame ) +{ + #ifdef STYLE_OEM_BEFORE_FRAME + OEMStyleBeforeFrame(frame); + #else + #ifdef STYLE_OVERRIDE_BEFORE_FRAME // from alternate1.h + OverRideStyleBeforeFrame(frame ); // From alternate1.c + #endif + + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleUpdateFrameStrings +// +// Description: Function to update frame strings +// +// Input: PAGE_DATA *page +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleUpdateFrameStrings( PAGE_DATA *page ) +{ + #ifdef STYLE_OEM_FRAME_TOKEN // SDL + OEMStyleUpdateFrameStrings(page); // OEM + #else + #ifdef STYLE_OVERRIDE_FRAME_TOKEN // from Ezport.h + OverRideStyleUpdateFrameStrings(page ); // From ezport.c + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameDrawable +// +// Description: Function to determine if frame is drawable +// +// Input: FRAME_DATA *frame +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleFrameDrawable( FRAME_DATA *frame ) +{ + EFI_STATUS Status = EFI_SUCCESS; + + #ifdef STYLE_OEM_FRAME_DRAWABLE // SDL + Status = OEMStyleFrameDrawable(frame); // OEM + #else + #ifdef STYLE_OVERRIDE_FRAME_DRAWABLE // from Ezport.h + Status = OverRideStyleFrameDrawable(frame ); // From ezport.c + #endif + #endif + + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleInit +// +// Description: Function to initialize style +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleInit( VOID ) +{ + SetDesiredTextMode(); + OverRideStyleInit(); // From ezport.c + +#ifdef STYLE_OEM_INIT // SDL + OEMStyleInit(); // OEM +#endif + MouseInit(); //EIP-84150 +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleExit +// +// Description: Function to do style initialization on exit +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleExit( VOID ) +{ + #ifdef STYLE_OEM_STYLE_EXIT // SDL + OEMStyleExit(); // OEM + #else + #ifdef STYLE_OVERRIDE_EXIT // from Ezport.h + OverRideStyleExit(); // From ezport.c + #endif + #endif + MouseDestroy(); //EIP-84150 +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleDrawPageBorder +// +// Description: Function to draw the page border +// +// Input: UINT32 page number +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleDrawPageBorder( UINT32 page ) +{ + #ifdef STYLE_OEM_PAGE_BORDER // SDL + OEMStyleDrawPageBorder(page); // OEM + #else + #ifdef STYLE_OVERRIDE_PAGE_BORDER // from Ezport.h + OverRideStyleDrawPageBorder(page); // From ezport.c + #else + ClearScreen( EFI_BACKGROUND_BLUE | EFI_WHITE ); + #endif + #endif + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleDrawScrollBar +// +// Description: Function to draw the frame scrollbar +// +// Input: FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleDrawScrollBar(FRAME_DATA *frame, UINT32 FirstLine, UINT32 LastLine, UINT32 modVal, + UINT32 sizeOfBar, UINT32 numOfBlocks, BOOLEAN bEraseScrollBar) +{ + #ifdef STYLE_OEM_SCROLLBAR + OEMDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar); + #else + #ifdef STYLE_OVERRIDE_SCROLLBAR + LegacyFrameDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar); + #else + FrameDrawScrollBar(frame, FirstLine, LastLine, modVal, sizeOfBar, numOfBlocks, bEraseScrollBar); + #endif + #endif + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleDrawHelpScrollBar +// +// Description: Function to draw the help frame scrollbar +// +// Input: MEMO_DATA *memo, UINT16 height +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleDrawHelpScrollBar( MEMO_DATA *memo, UINT16 height) +{ + #ifdef STYLE_OEM_DRAW_HELP_SCROLLBAR + OEMDrawHelpScrollBar(memo, height); + #else + #ifdef STYLE_OVERRIDE_HELP_SCROLLBAR + OverRideDrawHelpScrollBar(memo, height); + #else + if(IsHelpAreaScrollBarSupport()) + MemoDrawScrollBar(memo, height); + #endif + #endif + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetFrameInitData +// +// Description: Function to get frame initialization data +// +// Input: UINT32 page number, UINT32 frame number +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID *StyleGetFrameInitData( UINT32 page, UINT32 frame ) +{ + #ifdef STYLE_OEM_FRAME_INIT_DATA + return OEMStyleGetFrameInitData(page, frame); + #else + #ifdef STYLE_OVERRIDE_FRAME_INIT_DATA // from Ezport.h + return OverRideStyleGetFrameInitData(page, frame); // From ezport.c + #else + return NULL; + #endif + #endif + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameHandleKey +// +// Description: Function to handle frame action keys +// +// Input: FRAME_DATA *frame, EFI_INPUT_KEY Key +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleFrameHandleKey( FRAME_DATA *frame, EFI_INPUT_KEY Key ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED;; + + #ifdef STYLE_OEM_HANDLE_KEY // SDL + Status = OEMStyleFrameHandleKey(frame, Key); // OEM + #else + #ifdef STYLE_OVERRIDE_HANDLE_KEY // from Ezport.h + Status = OverRideStyleFrameHandleKey(frame, Key); // From ezport.c + #endif + #endif + + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameHandleMouse +// +// Description: Function to handle frame using mouse +// +// Input: FRAME_DATA *frame, +// MOUSE_INFO MouseInfo +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleFrameHandleMouse( FRAME_DATA *frame, MOUSE_INFO MouseInfo) +{ + EFI_STATUS Status = EFI_UNSUPPORTED;; + + #ifdef STYLE_OEM_HANDLE_MOUSE + Status = OEMStyleFrameHandleMouse(frame, MouseInfo); + #else + #ifdef STYLE_OVERRIDE_HANDLE_MOUSE + Status = OverRideStyleFrameHandleMouse(frame, MouseInfo); + #endif + #endif + + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameHandleTimer +// +// Description: Function to handle frame timer action +// +// Input: FRAME_DATA *frame, ACTION_DATA *action +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleFrameHandleTimer( FRAME_DATA *frame, ACTION_DATA *action ) +{ + EFI_STATUS Status = EFI_UNSUPPORTED;; + + #ifdef STYLE_OEM_HANDLE_TIMER + Status = OEMStyleFrameHandleTimer(frame, action); + #else + #ifdef STYLE_OVERRIDE_HANDLE_TIMER + Status = OverRideStyleFrameHandleTimer(frame, action); + #endif + #endif + + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleHandleControlOverflow +// +// Description: Function to handle control overflow +// +// Input: FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleHandleControlOverflow( FRAME_DATA *frame, CONTROL_DATA *control, UINT16 count ) +{ + EFI_STATUS Status = EFI_OUT_OF_RESOURCES; + + #ifdef STYLE_OEM_CONTROL_OVERFLOW + Status = OEMStyleHandleControlOverflow(frame, control, count ); + #else + #ifdef STYLE_OVERRIDE_CONTROL_OVERFLOW + Status = OverRideStyleHandleControlOverflow(frame, control, count ); + #endif + #endif + + return Status ; + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleInitializeFrame +// +// Description: Function to Initialize frame +// +// Input: FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleInitializeFrame( FRAME_DATA *frame, UINT32 frameType, PAGE_INFO *data ) +{ + EFI_STATUS Status = EFI_SUCCESS;; + + #ifdef STYLE_OEM_INITIALIZE_FRAME + Status = OEMStyleInitializeFrame(frame, frameType, data ); + #else + #ifdef STYLE_OVERRIDE_INITIALIZE_FRAME + Status = OverRideStyleInitializeFrame(frame, frameType, data); //style.c + #endif + #endif + + return Status ; + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetNavToken +// +// Description: Function to get navigation token +// +// Input: UINT32 page +// +// Output: UINT16 token number +// +//---------------------------------------------------------------------------- +// +UINT16 StyleGetNavToken( UINT32 page ) +{ + UINT16 i=0 ; + + #ifdef STYLE_OEM_NAV_TOKEN + i = OEMStyleGetNavToken(page ); + #else + #ifdef STYLE_OVERRIDE_NAV_TOKEN + i = OverRideStyleGetNavToken(page); + #endif + #endif + + return i ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleAddAdditionalControls +// +// Description: Function to add additinal controls +// +// Input: FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus +// +// Output: EFI_STATUS +// +//---------------------------------------------------------------------------- +// +EFI_STATUS StyleAddAdditionalControls( FRAME_DATA *frame, UINT32 controlNumber, BOOLEAN focus ) +{ + EFI_STATUS Status = EFI_SUCCESS; + + #ifdef STYLE_OEM_ADD_CONTROLS + Status = OEMStyleAddAdditionalControls(frame, controlNumber, focus ); + #else + #ifdef STYLE_OVERRIDE_ADD_CONTROLS + Status = OverRideStyleAddAdditionalControls(frame, controlNumber, focus); + #endif + #endif + + return Status ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleLanguagePage +// +// Description: Function to set Language page +// +// Input: SUBMENU_DATA *submenu +// +// Output: UINT16 page number +// +//---------------------------------------------------------------------------- +// +UINT16 StyleLanguagePage( SUBMENU_DATA *submenu ) +{ + UINT16 i = 0 ; + + #ifdef STYLE_OEM_LANGUAGE_PAGE + i = OEMStyleLanguagePage(submenu ); + #else + #ifdef STYLE_OVERRIDE_LANGUAGE_PAGE + i = OverRideStyleLanguagePage(submenu); + #endif + #endif + + return i ; +} + + + +static UINT16 _gBootManagerPageID = 0; +/*static*/ UINT16 _gHDOrderPageID = 0; +/*static*/ UINT16 _gCDOrderPageID = 0; +/*static*/ UINT16 _gFDOrderPageID = 0; +/*static*/ UINT16 _gNetOrderPageID = 0; +/*static*/ UINT16 _gBevOrderPageID = 0; + +// +//---------------------------------------------------------------------------- +// Procedure: StyleBootManagerPage +// +// Description: Function to set boot manager page +// +// Input: SUBMENU_DATA *submenu +// +// Output: UINT16 page number +// +//---------------------------------------------------------------------------- +// +UINT16 StyleBootManagerPage( SUBMENU_DATA *submenu ) +{ + UINT16 i = 0 ; + + #ifdef STYLE_OEM_BM_PAGE + i = OEMStyleBootManagerPage(submenu ); + #else + #ifdef STYLE_OVERRIDE_BM_PAGE + i = OverRideStyleBootManagerPage(submenu); + #endif + #endif + + return i ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleLabelCallback +// +// Description: Function to set label callback +// +// Input: FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleLabelCallback( FRAME_DATA *frame, LABEL_DATA *label, VOID *cookie ) +{ + #ifdef STYLE_OEM_LABEL_CALLBACK + OEMStyleLabelCallback(frame, label, cookie ); + #else + #ifdef STYLE_OVERRIDE_LABEL_CALLBACK + OverRideStyleLabelCallback(frame, label, cookie ); + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleSelectFirstDisplayPage +// +// Description: Function to set the first display page +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleSelectFirstDisplayPage( VOID ) +{ + #ifdef STYLE_OEM_FIRST_PAGE + OEMStyleSelectFirstDisplayPage(); + #else + #ifdef STYLE_OVERRIDE_FIRST_PAGE + OverRideStyleSelectFirstDisplayPage(); + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleAddExtraPagesData +// +// Description: Function to add extra pages +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleAddExtraPagesData(VOID) +{ + #ifdef STYLE_OEM_ADD_EXTRA_PAGES + OEMStyleAddExtraPagesData(); + #else + #ifdef STYLE_OVERRIDE_ADD_EXTRA_PAGES + OverRideStyleAddExtraPagesData(); + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetTextMode +// +// Description: Function to get text mode +// +// Input: UINTN Rows, UINTN Cols +// +// Output: UNNTN mode +// +//---------------------------------------------------------------------------- +// +UINTN StyleGetTextMode( UINTN Rows, UINTN Cols ) +{ + EFI_STATUS Status; + INT32 i; + UINTN ModeRows, ModeCols; + + #ifdef STYLE_OEM_GET_TEXT_MODE + i = OEMStyleGetTextMode( Rows, Cols ); + #else + #ifdef STYLE_OVERRIDE_GET_TEXT_MODE + i = OverRideStyleGetTextMode( Rows, Cols); + #else + // Default Implementation + for ( i = 0; i < gST->ConOut->Mode->MaxMode; i++ ) + { + Status = gST->ConOut->QueryMode( gST->ConOut, i, &ModeCols, &ModeRows ); + if ( EFI_ERROR( Status ) ) + continue; + + if ( ( Cols == ModeCols ) && ( Rows == ModeRows ) ) + return i; + } + + // return MaxMode if the mode wasn't found + #endif + #endif + + return i; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleUpdateVersionString +// +// Description: Function to set the version string +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleUpdateVersionString( VOID ) +{ + #ifdef STYLE_OEM_VERSION_STRING + OEMStyleUpdateVersionString(); + #else + #ifdef STYLE_OVERRIDE_VERSION_STRING + OverRideStyleUpdateVersionString(); + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleFrameSetControlPositions +// +// Description: Function to set control positioning in a frame +// +// Input: FRAME_DATA *frame, UINT32 *pOtherEnd +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleFrameSetControlPositions(FRAME_DATA *frame, UINT32 *pOtherEnd) +{ + UINT32 u32Height = 0; + UINT32 i; + CONTROL_DATA *control; + UINT8 u8ChkResult; + + #ifdef STYLE_OEM_FRAME_CONTROL_POSITION + OEMStyleFrameSetControlPositions(frame, pOtherEnd); + #else + #ifdef STYLE_OVERRIDE_FRAME_CONTROL_POSITION + OverRideStyleFrameSetControlPositions(frame, pOtherEnd); + #else + if(frame->PageID != 0 ) + { + //Move reference end variable based on action + if(pOtherEnd == &(frame->LastVisibleCtrl)) + { + i = frame->FirstVisibleCtrl; + } + else + { + i = frame->LastVisibleCtrl; + } + + //Calculate other end variable + while( (pOtherEnd == &(frame->LastVisibleCtrl)) ? (i < frame->ControlCount) : TRUE ) + { + control = frame->ControlList[i]; + + //EIP 75486 Support grayout condition for readonly controls + u8ChkResult = CheckControlCondition( &(control->ControlData) ); + + if((COND_NONE == u8ChkResult) || (COND_GRAYOUT == u8ChkResult)) + { + if( (u32Height + control->Height) < frame->FrameData.Height ) + { + *pOtherEnd = i; + u32Height += control->Height; + } + else + break; //We cant accommodate + } + + if(pOtherEnd == &(frame->LastVisibleCtrl)) + i++; + else + { + // i>=0 in while loop will result in infinite loop + // break statement should be introduced inside + if (i == 0) + break; + i--; + } + } + } + else + { + // frame is double sided in alternate1, let it be drawn + frame->FirstVisibleCtrl=0; + frame->LastVisibleCtrl = frame->ControlCount -1; + } + + #endif + #endif + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleOverRideComponent +// +// Description: Function to override component or control functionality +// +// Input: VOID +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleOverRideComponent(VOID) +{ + #ifdef STYLE_OEM_COMPONENT_OVERRIDE // SDL + OEMOverRideComponent(); // OEM + #else + #ifdef STYLE_COMPONENT_OVERRIDE // from Ezport.h + OverRideComponent(); // From ezport.c + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: _StyleControlSubmenu +// +// Description: Function to initialize submenu control +// +// Input: CONTROL_INFO control, UINT16 pageID, VOID *ref +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID _StyleControlSubmenu( CONTROL_INFO *control, UINT16 pageID, VOID *ref ) +{ + control->ControlHandle = gHiiHandle; + control->ControlType = CONTROL_TYPE_SUBMENU; + control->ControlFlags.ControlVisible = TRUE; + control->ControlPtr = (VOID*)ref; + control->ControlPageID = pageID; + control->ControlDestPageID = 0; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleHelpAreaScrollable +// +// Description: Function to get Help area scroll support +// +// Input: VOID +// +// Output: BOOLEAN +// +//---------------------------------------------------------------------------- +// +BOOLEAN StyleHelpAreaScrollable(VOID) +{ + if(IsHelpAreaScrollBarSupport()) + return TRUE ; + else + return FALSE; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetShadowSupport +// +// Description: Function to get shadow support +// +// Input: VOID +// +// Output: BOOLEAN +// +//---------------------------------------------------------------------------- +// +BOOLEAN StyleGetShadowSupport(VOID) +{ + if(STYLE_SHADOW_SUPPORT) + return TRUE ; + else + return FALSE; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetScrollBehavior +// +// Description: Function to get scroll behavior +// +// Input: VOID +// +// Output: BOOLEAN +// +//---------------------------------------------------------------------------- +// +BOOLEAN StyleGetScrollBehavior(VOID) +{ + return STYLE_SCROLLBAR_ROLLOVER ; // 0 - Item Limit, 1 - Rollover + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetDateFormat +// +// Description: Function to get date format +// +// Input: VOID +// +// Output: BOOLEAN +// +//---------------------------------------------------------------------------- +// +UINTN StyleGetDateFormat(VOID) +{ + #ifdef STYLE_OEM_DATE_FOMAT + return OEMStyleGetDateFormat(); + #else + return STYLE_DATE_FORMAT; + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleShowDay +// +// Description: Function to show day in date format +// +// Input: VOID +// +// Output: BOOLEAN +// +//---------------------------------------------------------------------------- +// +BOOLEAN StyleShowDay(VOID) +{ + return STYLE_SHOW_DAY ; + +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetStdMaxRows +// +// Description: Function to max number of columns +// +// Input: VOID +// +// Output: STYLE_STD_MAX_ROWS +// +//---------------------------------------------------------------------------- +// +UINTN StyleGetStdMaxRows(VOID) +{ + return STYLE_STD_MAX_ROWS; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetStdMaxCols +// +// Description: Function to get max number of rows +// +// Input: VOID +// +// Output: STYLE_STD_MAX_COLS +// +//---------------------------------------------------------------------------- +// +UINTN StyleGetStdMaxCols(VOID) +{ + return STYLE_STD_MAX_COLS; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetClearScreenColor +// +// Description: Function to Get Clear Screen Color +// +// Input: VOID +// +// Output: STYLE_CLEAR_SCREEN_COLOR +// +//---------------------------------------------------------------------------- +// +UINTN StyleGetClearScreenColor(VOID) +{ + return STYLE_CLEAR_SCREEN_COLOR; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetPageLinkColor +// +// Description: Function to PageLink (Submenu) color +// +// Input: VOID +// +// Output: PAGE_LINK_FGCOLOR +// +//---------------------------------------------------------------------------- +// +UINT8 StyleGetPageLinkColor(VOID) +{ + UINT32 PageNum = gApp->CurrentPage ; + + if( PageNum == 0 ) + return EFI_YELLOW; + else + return PAGE_LINK_COLOR; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetScrollBarColor +// +// Description: Function to get scrollbar color +// +// Input: VOID +// +// Output: FGCOLOR|BGCOLOR +// +//---------------------------------------------------------------------------- +// +UINT8 StyleGetScrollBarColor(VOID) +{ + return (SCROLLBAR_FGCOLOR | SCROLLBAR_BGCOLOR) ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetScrollBarUpArrowColor +// +// Description: Function to get scrollbar UpArrow Color +// +// Input: VOID +// +// Output: FGCOLOR|BGCOLOR +// +//---------------------------------------------------------------------------- +// +UINT8 StyleGetScrollBarUpArrowColor(VOID) +{ + return (SCROLLBAR_UPARROW_FGCOLOR | SCROLLBAR_UPARROW_BGCOLOR) ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleGetScrollBarDownArrowColor +// +// Description: Function to get scrollbar downarrow color +// +// Input: VOID +// +// Output: FGCOLOR|BGCOLOR +// +//---------------------------------------------------------------------------- +// +UINT8 StyleGetScrollBarDownArrowColor(VOID) +{ + return (SCROLLBAR_DOWNARROW_FGCOLOR | SCROLLBAR_DOWNARROW_BGCOLOR) ; +} +// +//---------------------------------------------------------------------------- +// Procedure: StylePageItemFocus +// +// Description: This function is called whenever a user navigates to a new page. +// OEMs may use this hook to set item focus. +// The default behavior sets focus to the previously focused page item. +// +// Input: PAGE_DATA *page, FRAME_DATA *frame +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StylePageItemFocus(PAGE_DATA *page, FRAME_DATA *frame ) +{ + + #ifdef STYLE_OEM_PAGE_ITEM_FOCUS + OEMStylePageItemFocus(page, frame); + #else + #ifdef STYLE_OVERRIDE_PAGE_ITEM_FOCUS + OverRideStylePageItemFocus(page, frame); + #else + if(STYLE_PAGE_FIRSTITEM_FOCUS) + { + UINT32 i; + for ( i = 0; i < frame->ControlCount; i++ ) + { + + if ( _FrameSetControlFocus( frame, i ) ) + { + frame->FirstVisibleCtrl = 0; + break; + } + } + ///Eip:30111 fix - Update the Help based on the Focussed Item + UpdatePageFocusedItemHelp(page); + } + #endif + #endif +} +// +//---------------------------------------------------------------------------- +// Procedure: StyleSubPageItemFocus +// +// Description: This function is called whenever a user returns (or navigates back) +// from a submenu page causing a complete page redraw. OEMs may use this hook to set item focus. +// The default behavior sets focus to the previously focused page item. +// +// Input: PAGE_DATA *page, FRAME_DATA *frame +// +// Output: VOID +// +//---------------------------------------------------------------------------- +// +VOID StyleSubPageItemFocus(PAGE_DATA *page, FRAME_DATA *frame ) +{ + #ifdef STYLE_OEM_SUBPAGE_ITEM_FOCUS // SDL + OEMStyleSubPageItemFocus(page, frame); // OEM + #else + #ifdef STYLE_OVERRIDE_SUBPAGE_ITEM_FOCUS // from Ezport.h + OverRideStyleSubPageItemFocus(page, frame); // From ezport.c + #else + if(STYLE_SUBPAGE_FIRSTITEM_FOCUS) + { + UINT32 i; + + for ( i = 0; i < frame->ControlCount; i++ ) + { + if ( _FrameSetControlFocus( frame, i ) ) + { + frame->FirstVisibleCtrl = 0; + break; + } + } + } + #endif + #endif +} +#endif +//*****************************************************************// +//*****************************************************************// +//** **// +//** (C)Copyright 1985-2013, American Megatrends, Inc. **// +//** **// +//** All Rights Reserved. **// +//** **// +//** 5555 Oakbrook Pkwy , Norcross, GA 30071 **// +//** **// +//** Phone: (770)-246-8600 **// +//** **// +//*****************************************************************// +//*****************************************************************// -- cgit v1.2.3