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