]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/SetupBrowserDxe/Ui.h
a5b7076be6a360812ef477d41b8993f501c6a459
[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 //@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
43 typedef 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
59 typedef 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
89 typedef 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
124 typedef 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
155 typedef struct {
156 UINTN Signature;
157 LIST_ENTRY MenuLink;
158
159 UINT16 FormId;
160 UINT16 QuestionId;
161 } UI_MENU_LIST;
162
163 typedef 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
172 typedef struct {
173 UINT16 ScanCode;
174 UI_SCREEN_OPERATION ScreenOperation;
175 } SCAN_CODE_TO_SCREEN_OPERATION;
176
177 typedef struct {
178 UI_SCREEN_OPERATION ScreenOperation;
179 UI_CONTROL_FLAG ControlFlag;
180 } SCREEN_OPERATION_T0_CONTROL_FLAG;
181
182
183 extern LIST_ENTRY gMenuList;
184 extern MENU_REFRESH_ENTRY *gMenuRefreshHead;
185 extern UI_MENU_SELECTION *gCurrentSelection;
186
187 //
188 // Global Functions
189 //
190 VOID
191 UiInitMenu (
192 VOID
193 )
194 ;
195
196 VOID
197 UiInitMenuList (
198 VOID
199 )
200 ;
201
202 VOID
203 UiRemoveMenuListEntry (
204 OUT UI_MENU_SELECTION *Selection
205 )
206 ;
207
208 VOID
209 UiFreeMenuList (
210 VOID
211 )
212 ;
213
214 VOID
215 UiAddMenuListEntry (
216 IN UI_MENU_SELECTION *Selection
217 )
218 ;
219
220 VOID
221 UiFreeMenu (
222 VOID
223 )
224 ;
225
226 VOID
227 UiAddMenuOption (
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
236 EFI_STATUS
237 UiDisplayMenu (
238 IN OUT UI_MENU_SELECTION *Selection
239 )
240 ;
241
242 VOID
243 FreeBrowserStrings (
244 VOID
245 )
246 ;
247
248 EFI_STATUS
249 SetupBrowser (
250 IN OUT UI_MENU_SELECTION *Selection
251 )
252 ;
253
254 VOID
255 ValueToString (
256 IN CHAR16 *Buffer,
257 IN BOOLEAN Comma,
258 IN INT64 v
259 )
260 ;
261
262 EFI_STATUS
263 UiIntToString (
264 IN UINTN num,
265 IN OUT CHAR16 *str,
266 IN UINT16 size
267 )
268 ;
269
270 VOID
271 SetUnicodeMem (
272 IN VOID *Buffer,
273 IN UINTN Size,
274 IN CHAR16 Value
275 )
276 ;
277
278 EFI_STATUS
279 UiWaitForSingleEvent (
280 IN EFI_EVENT Event,
281 IN UINT64 Timeout, OPTIONAL
282 IN UINT8 RefreshInterval OPTIONAL
283 )
284 ;
285
286 VOID
287 CreatePopUp (
288 IN UINTN ScreenWidth,
289 IN UINTN NumberOfLines,
290 IN CHAR16 *ArrayOfStrings,
291 ...
292 )
293 ;
294
295 EFI_STATUS
296 ReadString (
297 IN UI_MENU_OPTION *MenuOption,
298 IN CHAR16 *Prompt,
299 OUT CHAR16 *StringPtr
300 )
301 ;
302
303 EFI_STATUS
304 GetSelectionInputPopUp (
305 IN UI_MENU_SELECTION *Selection,
306 IN UI_MENU_OPTION *MenuOption
307 )
308 ;
309
310 EFI_STATUS
311 GetNumericInput (
312 IN UI_MENU_SELECTION *Selection,
313 IN UI_MENU_OPTION *MenuOption
314 )
315 ;
316
317 VOID
318 UpdateStatusBar (
319 IN UINTN MessageType,
320 IN UINT8 Flags,
321 IN BOOLEAN State
322 )
323 ;
324
325 EFI_STATUS
326 ProcessQuestionConfig (
327 IN UI_MENU_SELECTION *Selection,
328 IN FORM_BROWSER_STATEMENT *Question
329 )
330 ;
331
332 EFI_STATUS
333 PrintFormattedNumber (
334 IN FORM_BROWSER_STATEMENT *Question,
335 IN OUT CHAR16 *FormattedNumber,
336 IN UINTN BufferSize
337 )
338 ;
339
340 QUESTION_OPTION *
341 ValueToOption (
342 IN FORM_BROWSER_STATEMENT *Question,
343 IN EFI_HII_VALUE *OptionValue
344 )
345 ;
346
347 EFI_STATUS
348 ProcessOptions (
349 IN UI_MENU_SELECTION *Selection,
350 IN UI_MENU_OPTION *MenuOption,
351 IN BOOLEAN Selected,
352 OUT CHAR16 **OptionString
353 )
354 ;
355
356 VOID
357 ProcessHelpString (
358 IN CHAR16 *StringPtr,
359 OUT CHAR16 **FormattedString,
360 IN UINTN RowCount
361 )
362 ;
363
364 VOID
365 UpdateKeyHelp (
366 IN UI_MENU_OPTION *MenuOption,
367 IN BOOLEAN Selected
368 )
369 ;
370
371 VOID
372 ClearLines (
373 UINTN LeftColumn,
374 UINTN RightColumn,
375 UINTN TopRow,
376 UINTN BottomRow,
377 UINTN TextAttribute
378 )
379 ;
380
381 UINTN
382 GetStringWidth (
383 CHAR16 *String
384 )
385 ;
386
387 UINT16
388 GetLineByWidth (
389 IN CHAR16 *InputString,
390 IN UINT16 LineWidth,
391 IN OUT UINTN *Index,
392 OUT CHAR16 **OutputString
393 )
394 ;
395
396 UINT16
397 GetWidth (
398 IN FORM_BROWSER_STATEMENT *Statement,
399 IN EFI_HII_HANDLE Handle
400 )
401 ;
402
403 VOID
404 NewStrCat (
405 CHAR16 *Destination,
406 CHAR16 *Source
407 )
408 ;
409
410 EFI_STATUS
411 WaitForKeyStroke (
412 OUT EFI_INPUT_KEY *Key
413 )
414 ;
415
416 VOID
417 ResetScopeStack (
418 VOID
419 )
420 ;
421
422 EFI_STATUS
423 PushScope (
424 IN UINT8 Operand
425 )
426 ;
427
428 EFI_STATUS
429 PopScope (
430 OUT UINT8 *Operand
431 )
432 ;
433
434 FORM_BROWSER_FORM *
435 IdToForm (
436 IN FORM_BROWSER_FORMSET *FormSet,
437 IN UINT16 FormId
438 )
439 ;
440
441 FORM_BROWSER_STATEMENT *
442 IdToQuestion (
443 IN FORM_BROWSER_FORMSET *FormSet,
444 IN FORM_BROWSER_FORM *Form,
445 IN UINT16 QuestionId
446 )
447 ;
448
449 FORM_EXPRESSION *
450 IdToExpression (
451 IN FORM_BROWSER_FORM *Form,
452 IN UINT8 RuleId
453 )
454 ;
455
456 VOID
457 ExtendValueToU64 (
458 IN EFI_HII_VALUE *Value
459 )
460 ;
461
462 INTN
463 CompareHiiValue (
464 IN EFI_HII_VALUE *Value1,
465 IN EFI_HII_VALUE *Value2,
466 IN EFI_HII_HANDLE HiiHandle OPTIONAL
467 )
468 ;
469
470 EFI_STATUS
471 EvaluateExpression (
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