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