]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/UserInterface/SetupBrowser/Dxe/Ui.h
Initial import.
[mirror_edk2.git] / EdkModulePkg / Universal / UserInterface / SetupBrowser / Dxe / Ui.h
CommitLineData
878ddf1f 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 Ui.h \r
15\r
16Abstract:\r
17\r
18 Head file UI\r
19\r
20Revision History\r
21\r
22--*/\r
23\r
24#ifndef _UI_H\r
25#define _UI_H\r
26\r
27//\r
28// Globals\r
29//\r
30#define REGULAR_NUMERIC 0\r
31#define TIME_NUMERIC 1\r
32#define DATE_NUMERIC 2\r
33\r
34typedef enum {\r
35 UiNoOperation,\r
36 UiDefault,\r
37 UiSelect,\r
38 UiUp,\r
39 UiDown,\r
40 UiLeft,\r
41 UiRight,\r
42 UiReset,\r
43 UiSave,\r
44 UiPrevious,\r
45 UiPageUp,\r
46 UiPageDown,\r
47 UiMaxOperation\r
48} UI_SCREEN_OPERATION;\r
49\r
50typedef enum {\r
51 CfInitialization,\r
52 CfCheckSelection,\r
53 CfRepaint,\r
54 CfRefreshHighLight,\r
55 CfUpdateHelpString,\r
56 CfPrepareToReadKey,\r
57 CfReadKey,\r
58 CfScreenOperation,\r
59 CfUiPrevious,\r
60 CfUiSelect,\r
61 CfUiReset,\r
62 CfUiLeft,\r
63 CfUiRight,\r
64 CfUiUp,\r
65 CfUiPageUp,\r
66 CfUiPageDown,\r
67 CfUiDown,\r
68 CfUiSave,\r
69 CfUiDefault,\r
70 CfUiNoOperation,\r
71 CfExit,\r
72 CfMaxControlFlag\r
73} UI_CONTROL_FLAG;\r
74\r
75#define UI_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'm')\r
76#define UI_MENU_LIST_SIGNATURE EFI_SIGNATURE_32 ('u', 'i', 'm', 'l')\r
77\r
78typedef struct {\r
79 UINTN Signature;\r
80 LIST_ENTRY Link;\r
81\r
82 UINTN Row;\r
83 UINTN Col;\r
84 UINTN OptCol;\r
85 CHAR16 *Description;\r
86 UINTN Skip;\r
87\r
88 UINTN IfrNumber;\r
89 VOID *FormBinary;\r
90 EFI_HII_HANDLE Handle;\r
91 EFI_TAG *Tags;\r
92 UINTN TagIndex;\r
93 EFI_TAG *ThisTag;\r
94 UINT16 FormId;\r
95 BOOLEAN Previous;\r
96 UINT16 EntryNumber;\r
97 UINT16 Consistency;\r
98 BOOLEAN GrayOut;\r
99} UI_MENU_OPTION;\r
100\r
101typedef struct {\r
102 UINTN Signature;\r
103 LIST_ENTRY MenuLink;\r
104\r
105 UI_MENU_OPTION Selection;\r
106 UINTN FormerEntryNumber;\r
107} UI_MENU_LIST;\r
108\r
109typedef struct _MENU_REFRESH_ENTRY {\r
110 struct _MENU_REFRESH_ENTRY *Next;\r
111 EFI_FILE_FORM_TAGS *FileFormTagsHead;\r
112 UINTN CurrentColumn;\r
113 UINTN CurrentRow;\r
114 UINTN CurrentAttribute;\r
115 UI_MENU_OPTION *MenuOption; // Describes the entry needing an update\r
116} MENU_REFRESH_ENTRY;\r
117\r
118typedef struct {\r
119 UINT16 ScanCode;\r
120 UI_SCREEN_OPERATION ScreenOperation;\r
121} SCAN_CODE_TO_SCREEN_OPERATION;\r
122\r
123typedef struct {\r
124 UI_SCREEN_OPERATION ScreenOperation;\r
125 UI_CONTROL_FLAG ControlFlag;\r
126} SCREEN_OPERATION_T0_CONTROL_FLAG;\r
127\r
128LIST_ENTRY Menu;\r
129LIST_ENTRY gMenuList;\r
130MENU_REFRESH_ENTRY *gMenuRefreshHead;\r
131\r
132INTN gEntryNumber;\r
133BOOLEAN gLastOpr;\r
134//\r
135// Global Functions\r
136//\r
137VOID\r
138UiInitMenu (\r
139 VOID\r
140 )\r
141;\r
142\r
143VOID\r
144UiInitMenuList (\r
145 VOID\r
146 )\r
147;\r
148\r
149VOID\r
150UiRemoveMenuListEntry (\r
151 IN UI_MENU_OPTION *Selection,\r
152 OUT UI_MENU_OPTION **PreviousSelection\r
153 )\r
154;\r
155\r
156VOID\r
157UiFreeMenuList (\r
158 VOID\r
159 )\r
160;\r
161\r
162VOID\r
163UiAddMenuListEntry (\r
164 IN UI_MENU_OPTION *Selection\r
165 )\r
166;\r
167\r
168VOID\r
169UiFreeMenu (\r
170 VOID\r
171 )\r
172;\r
173\r
174VOID\r
175UiAddMenuOption (\r
176 IN CHAR16 *String,\r
177 IN EFI_HII_HANDLE Handle,\r
178 IN EFI_TAG *Tag,\r
179 IN VOID *FormBinary,\r
180 IN UINTN IfrNumber\r
181 )\r
182;\r
183\r
184VOID\r
185UiAddSubMenuOption (\r
186 IN CHAR16 *String,\r
187 IN EFI_HII_HANDLE Handle,\r
188 IN EFI_TAG *Tag,\r
189 IN UINTN TagIndex,\r
190 IN UINT16 FormId,\r
191 IN UINT16 MenuItemCount\r
192 )\r
193;\r
194\r
195UI_MENU_OPTION *\r
196UiDisplayMenu (\r
197 IN BOOLEAN SubMenu,\r
198 IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
199 OUT EFI_IFR_DATA_ARRAY *PageData\r
200 )\r
201;\r
202\r
203VOID\r
204InitPage (\r
205 VOID\r
206 )\r
207;\r
208\r
209UI_MENU_OPTION *\r
210SetupBrowser (\r
211 IN UI_MENU_OPTION *Selection,\r
212 IN BOOLEAN Callback,\r
213 IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
214 IN UINT8 *CallbackData\r
215 )\r
216;\r
217\r
218\r
219VOID\r
220SetUnicodeMem (\r
221 IN VOID *Buffer,\r
222 IN UINTN Size,\r
223 IN CHAR16 Value\r
224 )\r
225;\r
226\r
227EFI_STATUS\r
228UiWaitForSingleEvent (\r
229 IN EFI_EVENT Event,\r
230 IN UINT64 Timeout OPTIONAL\r
231 )\r
232;\r
233\r
234VOID\r
235CreatePopUp (\r
236 IN UINTN ScreenWidth,\r
237 IN UINTN NumberOfLines,\r
238 IN CHAR16 *ArrayOfStrings,\r
239 ...\r
240 )\r
241;\r
242\r
243EFI_STATUS\r
244ReadString (\r
245 IN UI_MENU_OPTION *MenuOption,\r
246 OUT CHAR16 *StringPtr\r
247 )\r
248;\r
249\r
250EFI_STATUS\r
251ReadPassword (\r
252 IN UI_MENU_OPTION *MenuOption,\r
253 IN BOOLEAN PromptForPassword,\r
254 IN EFI_TAG *Tag,\r
255 IN EFI_IFR_DATA_ARRAY *PageData,\r
256 IN BOOLEAN SecondEntry,\r
257 IN EFI_FILE_FORM_TAGS *FileFormTags,\r
258 OUT CHAR16 *StringPtr\r
259 )\r
260;\r
261\r
262VOID\r
263EncodePassword (\r
264 IN CHAR16 *Password,\r
265 IN UINT8 MaxSize\r
266 )\r
267;\r
268\r
269EFI_STATUS\r
270GetSelectionInputPopUp (\r
271 IN UI_MENU_OPTION *MenuOption,\r
272 IN EFI_TAG *Tag,\r
273 IN UINTN ValueCount,\r
274 OUT UINT16 *Value,\r
275 OUT UINT16 *KeyValue\r
276 )\r
277;\r
278\r
279EFI_STATUS\r
280GetSelectionInputLeftRight (\r
281 IN UI_MENU_OPTION *MenuOption,\r
282 IN EFI_TAG *Tag,\r
283 IN UINTN ValueCount,\r
284 OUT UINT16 *Value\r
285 )\r
286;\r
287\r
288EFI_STATUS\r
289GetNumericInput (\r
290 IN UI_MENU_OPTION *MenuOption,\r
291 IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
292 IN BOOLEAN ManualInput,\r
293 IN EFI_TAG *Tag,\r
294 IN UINTN NumericType,\r
295 OUT UINT16 *Value\r
296 )\r
297;\r
298\r
299VOID\r
300UpdateStatusBar (\r
301 IN UINTN MessageType,\r
302 IN UINT8 Flags,\r
303 IN BOOLEAN State\r
304 )\r
305;\r
306\r
307EFI_STATUS\r
308ProcessOptions (\r
309 IN UI_MENU_OPTION *MenuOption,\r
310 IN BOOLEAN Selected,\r
311 IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
312 IN EFI_IFR_DATA_ARRAY *PageData,\r
313 OUT CHAR16 **OptionString\r
314 )\r
315;\r
316\r
317VOID\r
318ProcessHelpString (\r
319 IN CHAR16 *StringPtr,\r
320 OUT CHAR16 **FormattedString,\r
321 IN UINTN RowCount\r
322 )\r
323;\r
324\r
325VOID\r
326UpdateKeyHelp (\r
327 IN UI_MENU_OPTION *Selection,\r
328 IN BOOLEAN Selected\r
329 )\r
330;\r
331\r
332BOOLEAN\r
333ValueIsNotValid (\r
334 IN BOOLEAN Complex,\r
335 IN UINT16 Value,\r
336 IN EFI_TAG *Tag,\r
337 IN EFI_FILE_FORM_TAGS *FileFormTags,\r
338 IN STRING_REF *PopUp\r
339 )\r
340;\r
341\r
342VOID\r
343FreeData (\r
344 IN EFI_FILE_FORM_TAGS *FileFormTagsHead,\r
345 IN CHAR16 *FormattedString,\r
346 IN CHAR16 *OptionString\r
347 )\r
348;\r
349\r
350VOID\r
351ClearLines (\r
352 UINTN LeftColumn,\r
353 UINTN RightColumn,\r
354 UINTN TopRow,\r
355 UINTN BottomRow,\r
356 UINTN TextAttribute\r
357 )\r
358;\r
359\r
360UINTN\r
361GetStringWidth (\r
362 CHAR16 *String\r
363 )\r
364;\r
365\r
366UINT16\r
367GetLineByWidth (\r
368 IN CHAR16 *InputString,\r
369 IN UINT16 LineWidth,\r
370 IN OUT UINTN *Index,\r
371 OUT CHAR16 **OutputString\r
372 )\r
373;\r
374\r
375UINT16\r
376GetWidth (\r
377 IN EFI_TAG *Tag,\r
378 IN EFI_HII_HANDLE Handle\r
379 )\r
380;\r
381\r
382VOID\r
383NewStrCat (\r
384 CHAR16 *Destination,\r
385 CHAR16 *Source\r
386 )\r
387;\r
388\r
389VOID\r
390IfrToFormTag (\r
391 IN UINT8 OpCode,\r
392 IN EFI_TAG *TargetTag,\r
393 IN VOID *FormData,\r
394 EFI_VARIABLE_DEFINITION *VariableDefinitionsHead\r
395 )\r
396;\r
397\r
398EFI_STATUS\r
399ExtractNvValue (\r
400 IN EFI_FILE_FORM_TAGS *FileFormTags,\r
401 IN UINT16 VariableId,\r
402 IN UINT16 VariableSize,\r
403 IN UINT16 OffsetValue,\r
404 OUT VOID **Buffer\r
405 )\r
406;\r
407\r
408EFI_STATUS\r
409ExtractRequestedNvMap (\r
410 IN EFI_FILE_FORM_TAGS *FileFormTags,\r
411 IN UINT16 VariableId,\r
412 OUT EFI_VARIABLE_DEFINITION **VariableDefinition\r
413 )\r
414;\r
415\r
416BOOLEAN\r
417ValueIsScroll (\r
418 IN BOOLEAN Direction,\r
419 IN LIST_ENTRY *CurrentPos\r
420 )\r
421;\r
422\r
423UINTN\r
424AdjustDateAndTimePosition (\r
425 IN BOOLEAN DirectionUp,\r
426 IN LIST_ENTRY **CurrentPosition\r
427 )\r
428;\r
429\r
430EFI_STATUS\r
431WaitForKeyStroke (\r
432 OUT EFI_INPUT_KEY *Key\r
433 )\r
434;\r
435#endif // _UI_H\r