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