]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/SetupBrowserDxe/Ui.h
1) Add BufToHexString, HexStringToBuf and IsHexDigit to BaseLib.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Ui.h
CommitLineData
93e3992d 1/** @file
2
3Copyright (c) 2004 - 2007, Intel Corporation
4All rights reserved. This program and the accompanying materials
5are licensed and made available under the terms and conditions of the BSD License
6which accompanies this distribution. The full text of the license may be found at
7http://opensource.org/licenses/bsd-license.php
8
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12Module Name:
13
14 Ui.h
15
16Abstract:
17
18 Head file UI
19
20Revision History
21
22
23**/
24
25#ifndef _UI_H
26#define _UI_H
27
93e3992d 28#include "Setup.h"
93e3992d 29
30//
31// Globals
32//
33#define REGULAR_NUMERIC 0
34#define TIME_NUMERIC 1
35#define DATE_NUMERIC 2
36
37#define SUBTITLE_INDENT 2
38
39typedef enum {
40 UiNoOperation,
41 UiDefault,
42 UiSelect,
43 UiUp,
44 UiDown,
45 UiLeft,
46 UiRight,
47 UiReset,
48 UiSave,
49 UiPrevious,
50 UiPageUp,
51 UiPageDown,
52 UiMaxOperation
53} UI_SCREEN_OPERATION;
54
55typedef enum {
56 CfInitialization,
57 CfCheckSelection,
58 CfRepaint,
59 CfRefreshHighLight,
60 CfUpdateHelpString,
61 CfPrepareToReadKey,
62 CfReadKey,
63 CfScreenOperation,
64 CfUiPrevious,
65 CfUiSelect,
66 CfUiReset,
67 CfUiLeft,
68 CfUiRight,
69 CfUiUp,
70 CfUiPageUp,
71 CfUiPageDown,
72 CfUiDown,
73 CfUiSave,
74 CfUiDefault,
75 CfUiNoOperation,
76 CfExit,
77 CfMaxControlFlag
78} UI_CONTROL_FLAG;
79
80#define UI_ACTION_NONE 0
81#define UI_ACTION_REFRESH_FORM 1
82#define UI_ACTION_REFRESH_FORMSET 2
83#define UI_ACTION_EXIT 3
84
85typedef struct {
86 EFI_HII_HANDLE Handle;
87
88 //
89 // Target formset/form/Question information
90 //
91 EFI_GUID FormSetGuid;
92 UINT16 FormId;
93 UINT16 QuestionId;
94
95 UINTN TopRow;
96 UINTN BottomRow;
97 UINTN PromptCol;
98 UINTN OptionCol;
99 UINTN CurrentRow;
100
101 //
102 // Ation for Browser to taken:
103 // UI_ACTION_NONE - navigation inside a form
104 // UI_ACTION_REFRESH_FORM - re-evaluate expressions and repaint form
105 // UI_ACTION_REFRESH_FORMSET - re-parse formset IFR binary
106 //
107 UINTN Action;
108
109 //
110 // Current selected fomset/form/Question
111 //
112 FORM_BROWSER_FORMSET *FormSet;
113 FORM_BROWSER_FORM *Form;
114 FORM_BROWSER_STATEMENT *Statement;
115} UI_MENU_SELECTION;
116
117#define UI_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'm')
118#define UI_MENU_LIST_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'l')
119
120typedef struct {
121 UINTN Signature;
122 LIST_ENTRY Link;
123
124 EFI_HII_HANDLE Handle;
125 FORM_BROWSER_STATEMENT *ThisTag;
126 UINT16 EntryNumber;
127
128 UINTN Row;
129 UINTN Col;
130 UINTN OptCol;
131 CHAR16 *Description;
132 UINTN Skip; // Number of lines
133
134 //
135 // Display item sequence for date/time
136 // Date: Month/Day/Year
137 // Sequence: 0 1 2
138 //
139 // Time: Hour : Minute : Second
140 // Sequence: 0 1 2
141 //
142 //
143 UINTN Sequence;
144
145 BOOLEAN GrayOut;
146 BOOLEAN ReadOnly;
147} UI_MENU_OPTION;
148
149#define MENU_OPTION_FROM_LINK(a) CR (a, UI_MENU_OPTION, Link, UI_MENU_OPTION_SIGNATURE)
150
151typedef struct {
152 UINTN Signature;
153 LIST_ENTRY MenuLink;
154
155 UINT16 FormId;
156 UINT16 QuestionId;
157} UI_MENU_LIST;
158
159typedef struct _MENU_REFRESH_ENTRY {
160 struct _MENU_REFRESH_ENTRY *Next;
161 UI_MENU_OPTION *MenuOption; // Describes the entry needing an update
162 UI_MENU_SELECTION *Selection;
163 UINTN CurrentColumn;
164 UINTN CurrentRow;
165 UINTN CurrentAttribute;
166} MENU_REFRESH_ENTRY;
167
168typedef struct {
169 UINT16 ScanCode;
170 UI_SCREEN_OPERATION ScreenOperation;
171} SCAN_CODE_TO_SCREEN_OPERATION;
172
173typedef struct {
174 UI_SCREEN_OPERATION ScreenOperation;
175 UI_CONTROL_FLAG ControlFlag;
176} SCREEN_OPERATION_T0_CONTROL_FLAG;
177
178
179extern LIST_ENTRY gMenuList;
180extern MENU_REFRESH_ENTRY *gMenuRefreshHead;
181extern UI_MENU_SELECTION *gCurrentSelection;
182
183//
184// Global Functions
185//
186VOID
187UiInitMenu (
188 VOID
189 )
190;
191
192VOID
193UiInitMenuList (
194 VOID
195 )
196;
197
198VOID
199UiRemoveMenuListEntry (
200 OUT UI_MENU_SELECTION *Selection
201 )
202;
203
204VOID
205UiFreeMenuList (
206 VOID
207 )
208;
209
210VOID
211UiAddMenuListEntry (
212 IN UI_MENU_SELECTION *Selection
213 )
214;
215
216VOID
217UiFreeMenu (
218 VOID
219 )
220;
221
222VOID
223UiAddMenuOption (
224 IN CHAR16 *String,
225 IN EFI_HII_HANDLE Handle,
226 IN FORM_BROWSER_STATEMENT *Statement,
227 IN UINT16 NumberOfLines,
228 IN UINT16 MenuItemCount
229 )
230;
231
232EFI_STATUS
233UiDisplayMenu (
234 IN OUT UI_MENU_SELECTION *Selection
235 )
236;
237
238VOID
239FreeBrowserStrings (
240 VOID
241 )
242;
243
244EFI_STATUS
245SetupBrowser (
246 IN OUT UI_MENU_SELECTION *Selection
247 )
248;
249
250VOID
251ValueToString (
252 IN CHAR16 *Buffer,
253 IN BOOLEAN Comma,
254 IN INT64 v
255 )
256;
257
258EFI_STATUS
259UiIntToString (
260 IN UINTN num,
261 IN OUT CHAR16 *str,
262 IN UINT16 size
263 )
264;
265
266VOID
267SetUnicodeMem (
268 IN VOID *Buffer,
269 IN UINTN Size,
270 IN CHAR16 Value
271 )
272;
273
274EFI_STATUS
275UiWaitForSingleEvent (
276 IN EFI_EVENT Event,
277 IN UINT64 Timeout, OPTIONAL
278 IN UINT8 RefreshInterval OPTIONAL
279 )
280;
281
282VOID
283CreatePopUp (
284 IN UINTN ScreenWidth,
285 IN UINTN NumberOfLines,
286 IN CHAR16 *ArrayOfStrings,
287 ...
288 )
289;
290
291EFI_STATUS
292ReadString (
293 IN UI_MENU_OPTION *MenuOption,
294 IN CHAR16 *Prompt,
295 OUT CHAR16 *StringPtr
296 )
297;
298
299EFI_STATUS
300GetSelectionInputPopUp (
301 IN UI_MENU_SELECTION *Selection,
302 IN UI_MENU_OPTION *MenuOption
303 )
304;
305
306EFI_STATUS
307GetNumericInput (
308 IN UI_MENU_SELECTION *Selection,
309 IN UI_MENU_OPTION *MenuOption
310 )
311;
312
313VOID
314UpdateStatusBar (
315 IN UINTN MessageType,
316 IN UINT8 Flags,
317 IN BOOLEAN State
318 )
319;
320
321EFI_STATUS
322ProcessQuestionConfig (
323 IN UI_MENU_SELECTION *Selection,
324 IN FORM_BROWSER_STATEMENT *Question
325 )
326;
327
328EFI_STATUS
329PrintFormattedNumber (
330 IN FORM_BROWSER_STATEMENT *Question,
331 IN OUT CHAR16 *FormattedNumber,
332 IN UINTN BufferSize
333 )
334;
335
336QUESTION_OPTION *
337ValueToOption (
338 IN FORM_BROWSER_STATEMENT *Question,
339 IN EFI_HII_VALUE *OptionValue
340 )
341;
342
343EFI_STATUS
344ProcessOptions (
345 IN UI_MENU_SELECTION *Selection,
346 IN UI_MENU_OPTION *MenuOption,
347 IN BOOLEAN Selected,
348 OUT CHAR16 **OptionString
349 )
350;
351
352VOID
353ProcessHelpString (
354 IN CHAR16 *StringPtr,
355 OUT CHAR16 **FormattedString,
356 IN UINTN RowCount
357 )
358;
359
360VOID
361UpdateKeyHelp (
362 IN UI_MENU_OPTION *MenuOption,
363 IN BOOLEAN Selected
364 )
365;
366
367VOID
368ClearLines (
369 UINTN LeftColumn,
370 UINTN RightColumn,
371 UINTN TopRow,
372 UINTN BottomRow,
373 UINTN TextAttribute
374 )
375;
376
377UINTN
378GetStringWidth (
379 CHAR16 *String
380 )
381;
382
383UINT16
384GetLineByWidth (
385 IN CHAR16 *InputString,
386 IN UINT16 LineWidth,
387 IN OUT UINTN *Index,
388 OUT CHAR16 **OutputString
389 )
390;
391
392UINT16
393GetWidth (
394 IN FORM_BROWSER_STATEMENT *Statement,
395 IN EFI_HII_HANDLE Handle
396 )
397;
398
399VOID
400NewStrCat (
401 CHAR16 *Destination,
402 CHAR16 *Source
403 )
404;
405
406EFI_STATUS
407WaitForKeyStroke (
408 OUT EFI_INPUT_KEY *Key
409 )
410;
411
412VOID
413ResetScopeStack (
414 VOID
415 )
416;
417
418EFI_STATUS
419PushScope (
420 IN UINT8 Operand
421 )
422;
423
424EFI_STATUS
425PopScope (
426 OUT UINT8 *Operand
427 )
428;
429
430FORM_BROWSER_FORM *
431IdToForm (
432 IN FORM_BROWSER_FORMSET *FormSet,
433 IN UINT16 FormId
434)
435;
436
437FORM_BROWSER_STATEMENT *
438IdToQuestion (
439 IN FORM_BROWSER_FORMSET *FormSet,
440 IN FORM_BROWSER_FORM *Form,
441 IN UINT16 QuestionId
442 )
443;
444
445FORM_EXPRESSION *
446IdToExpression (
447 IN FORM_BROWSER_FORM *Form,
448 IN UINT8 RuleId
449 )
450;
451
452VOID
453ExtendValueToU64 (
454 IN EFI_HII_VALUE *Value
455 )
456;
457
458INTN
459CompareHiiValue (
460 IN EFI_HII_VALUE *Value1,
461 IN EFI_HII_VALUE *Value2,
462 IN EFI_HII_HANDLE HiiHandle OPTIONAL
463 )
464;
465
466EFI_STATUS
467EvaluateExpression (
468 IN FORM_BROWSER_FORMSET *FormSet,
469 IN FORM_BROWSER_FORM *Form,
470 IN OUT FORM_EXPRESSION *Expression
471 )
472;
473
474#endif // _UI_H