]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/SetupBrowserDxe/Ui.h
1) Add BufToHexString, HexStringToBuf and IsHexDigit to BaseLib.
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Ui.h
1 /** @file
2
3 Copyright (c) 2004 - 2007, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
8
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11
12 Module Name:
13
14 Ui.h
15
16 Abstract:
17
18 Head file UI
19
20 Revision History
21
22
23 **/
24
25 #ifndef _UI_H
26 #define _UI_H
27
28 #include "Setup.h"
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
39 typedef 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
55 typedef 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
85 typedef 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
120 typedef 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
151 typedef struct {
152 UINTN Signature;
153 LIST_ENTRY MenuLink;
154
155 UINT16 FormId;
156 UINT16 QuestionId;
157 } UI_MENU_LIST;
158
159 typedef 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
168 typedef struct {
169 UINT16 ScanCode;
170 UI_SCREEN_OPERATION ScreenOperation;
171 } SCAN_CODE_TO_SCREEN_OPERATION;
172
173 typedef struct {
174 UI_SCREEN_OPERATION ScreenOperation;
175 UI_CONTROL_FLAG ControlFlag;
176 } SCREEN_OPERATION_T0_CONTROL_FLAG;
177
178
179 extern LIST_ENTRY gMenuList;
180 extern MENU_REFRESH_ENTRY *gMenuRefreshHead;
181 extern UI_MENU_SELECTION *gCurrentSelection;
182
183 //
184 // Global Functions
185 //
186 VOID
187 UiInitMenu (
188 VOID
189 )
190 ;
191
192 VOID
193 UiInitMenuList (
194 VOID
195 )
196 ;
197
198 VOID
199 UiRemoveMenuListEntry (
200 OUT UI_MENU_SELECTION *Selection
201 )
202 ;
203
204 VOID
205 UiFreeMenuList (
206 VOID
207 )
208 ;
209
210 VOID
211 UiAddMenuListEntry (
212 IN UI_MENU_SELECTION *Selection
213 )
214 ;
215
216 VOID
217 UiFreeMenu (
218 VOID
219 )
220 ;
221
222 VOID
223 UiAddMenuOption (
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
232 EFI_STATUS
233 UiDisplayMenu (
234 IN OUT UI_MENU_SELECTION *Selection
235 )
236 ;
237
238 VOID
239 FreeBrowserStrings (
240 VOID
241 )
242 ;
243
244 EFI_STATUS
245 SetupBrowser (
246 IN OUT UI_MENU_SELECTION *Selection
247 )
248 ;
249
250 VOID
251 ValueToString (
252 IN CHAR16 *Buffer,
253 IN BOOLEAN Comma,
254 IN INT64 v
255 )
256 ;
257
258 EFI_STATUS
259 UiIntToString (
260 IN UINTN num,
261 IN OUT CHAR16 *str,
262 IN UINT16 size
263 )
264 ;
265
266 VOID
267 SetUnicodeMem (
268 IN VOID *Buffer,
269 IN UINTN Size,
270 IN CHAR16 Value
271 )
272 ;
273
274 EFI_STATUS
275 UiWaitForSingleEvent (
276 IN EFI_EVENT Event,
277 IN UINT64 Timeout, OPTIONAL
278 IN UINT8 RefreshInterval OPTIONAL
279 )
280 ;
281
282 VOID
283 CreatePopUp (
284 IN UINTN ScreenWidth,
285 IN UINTN NumberOfLines,
286 IN CHAR16 *ArrayOfStrings,
287 ...
288 )
289 ;
290
291 EFI_STATUS
292 ReadString (
293 IN UI_MENU_OPTION *MenuOption,
294 IN CHAR16 *Prompt,
295 OUT CHAR16 *StringPtr
296 )
297 ;
298
299 EFI_STATUS
300 GetSelectionInputPopUp (
301 IN UI_MENU_SELECTION *Selection,
302 IN UI_MENU_OPTION *MenuOption
303 )
304 ;
305
306 EFI_STATUS
307 GetNumericInput (
308 IN UI_MENU_SELECTION *Selection,
309 IN UI_MENU_OPTION *MenuOption
310 )
311 ;
312
313 VOID
314 UpdateStatusBar (
315 IN UINTN MessageType,
316 IN UINT8 Flags,
317 IN BOOLEAN State
318 )
319 ;
320
321 EFI_STATUS
322 ProcessQuestionConfig (
323 IN UI_MENU_SELECTION *Selection,
324 IN FORM_BROWSER_STATEMENT *Question
325 )
326 ;
327
328 EFI_STATUS
329 PrintFormattedNumber (
330 IN FORM_BROWSER_STATEMENT *Question,
331 IN OUT CHAR16 *FormattedNumber,
332 IN UINTN BufferSize
333 )
334 ;
335
336 QUESTION_OPTION *
337 ValueToOption (
338 IN FORM_BROWSER_STATEMENT *Question,
339 IN EFI_HII_VALUE *OptionValue
340 )
341 ;
342
343 EFI_STATUS
344 ProcessOptions (
345 IN UI_MENU_SELECTION *Selection,
346 IN UI_MENU_OPTION *MenuOption,
347 IN BOOLEAN Selected,
348 OUT CHAR16 **OptionString
349 )
350 ;
351
352 VOID
353 ProcessHelpString (
354 IN CHAR16 *StringPtr,
355 OUT CHAR16 **FormattedString,
356 IN UINTN RowCount
357 )
358 ;
359
360 VOID
361 UpdateKeyHelp (
362 IN UI_MENU_OPTION *MenuOption,
363 IN BOOLEAN Selected
364 )
365 ;
366
367 VOID
368 ClearLines (
369 UINTN LeftColumn,
370 UINTN RightColumn,
371 UINTN TopRow,
372 UINTN BottomRow,
373 UINTN TextAttribute
374 )
375 ;
376
377 UINTN
378 GetStringWidth (
379 CHAR16 *String
380 )
381 ;
382
383 UINT16
384 GetLineByWidth (
385 IN CHAR16 *InputString,
386 IN UINT16 LineWidth,
387 IN OUT UINTN *Index,
388 OUT CHAR16 **OutputString
389 )
390 ;
391
392 UINT16
393 GetWidth (
394 IN FORM_BROWSER_STATEMENT *Statement,
395 IN EFI_HII_HANDLE Handle
396 )
397 ;
398
399 VOID
400 NewStrCat (
401 CHAR16 *Destination,
402 CHAR16 *Source
403 )
404 ;
405
406 EFI_STATUS
407 WaitForKeyStroke (
408 OUT EFI_INPUT_KEY *Key
409 )
410 ;
411
412 VOID
413 ResetScopeStack (
414 VOID
415 )
416 ;
417
418 EFI_STATUS
419 PushScope (
420 IN UINT8 Operand
421 )
422 ;
423
424 EFI_STATUS
425 PopScope (
426 OUT UINT8 *Operand
427 )
428 ;
429
430 FORM_BROWSER_FORM *
431 IdToForm (
432 IN FORM_BROWSER_FORMSET *FormSet,
433 IN UINT16 FormId
434 )
435 ;
436
437 FORM_BROWSER_STATEMENT *
438 IdToQuestion (
439 IN FORM_BROWSER_FORMSET *FormSet,
440 IN FORM_BROWSER_FORM *Form,
441 IN UINT16 QuestionId
442 )
443 ;
444
445 FORM_EXPRESSION *
446 IdToExpression (
447 IN FORM_BROWSER_FORM *Form,
448 IN UINT8 RuleId
449 )
450 ;
451
452 VOID
453 ExtendValueToU64 (
454 IN EFI_HII_VALUE *Value
455 )
456 ;
457
458 INTN
459 CompareHiiValue (
460 IN EFI_HII_VALUE *Value1,
461 IN EFI_HII_VALUE *Value2,
462 IN EFI_HII_HANDLE HiiHandle OPTIONAL
463 )
464 ;
465
466 EFI_STATUS
467 EvaluateExpression (
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