| 2233 | } |
| 2234 | |
| 2235 | VOID CreateMenuProps(REFIT_MENU_SCREEN *SubScreen, DEV_PROPERTY *Prop) |
| 2236 | { |
| 2237 | REFIT_INPUT_DIALOG *InputBootArgs; |
| 2238 | |
| 2239 | InputBootArgs = new REFIT_INPUT_DIALOG; |
| 2240 | InputBootArgs->Title.SWPrintf(" key: %s", Prop->Key); |
| 2241 | InputBootArgs->Row = 0xFFFF; //cursor |
| 2242 | InputBootArgs->Item = &Prop->MenuItem; |
| 2243 | InputBootArgs->AtClick = ActionEnter; |
| 2244 | InputBootArgs->AtRightClick = ActionDetails; |
| 2245 | SubScreen->AddMenuEntry(InputBootArgs, true); |
| 2246 | switch (Prop->ValueType) { |
| 2247 | case kTagTypeInteger: |
| 2248 | SubScreen->AddMenuInfo_f(" value: 0x%08llx", *(UINT64*)Prop->Value); |
| 2249 | break; |
| 2250 | case kTagTypeString: |
| 2251 | SubScreen->AddMenuInfo_f(" value: %90s", Prop->Value); |
| 2252 | break; |
| 2253 | case kTagTypeFalse: |
| 2254 | SubScreen->AddMenuInfo_f((" value: false")); |
| 2255 | break; |
| 2256 | case kTagTypeTrue: |
| 2257 | SubScreen->AddMenuInfo_f((" value: true")); |
| 2258 | break; |
| 2259 | case kTagTypeFloat: |
| 2260 | SubScreen->AddMenuInfo_f(" value: %f", *(float*)Prop->Value); |
| 2261 | break; |
| 2262 | default: //type data, print first 24 bytes |
| 2263 | //CHAR8* Bytes2HexStr(UINT8 *data, UINTN len) |
| 2264 | SubScreen->AddMenuInfo_f(" value[%llu]: %24s", Prop->ValueLen, Bytes2HexStr((UINT8*)Prop->Value, MIN(24, Prop->ValueLen)).c_str()); |
| 2265 | break; |
| 2266 | } |
| 2267 | |
| 2268 | } |
| 2269 | |
| 2270 | REFIT_ABSTRACT_MENU_ENTRY* SubMenuCustomDevices() |
| 2271 | { |
no test coverage detected