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