bad_usb_scene_error.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "../bad_usb_app_i.h"
  2. typedef enum {
  3. BadUsbCustomEventErrorBack,
  4. } BadUsbCustomEvent;
  5. static void
  6. bad_usb_scene_error_event_callback(GuiButtonType result, InputType type, void* context) {
  7. furi_assert(context);
  8. BadUsbApp* app = context;
  9. if((result == GuiButtonTypeLeft) && (type == InputTypeShort)) {
  10. view_dispatcher_send_custom_event(app->view_dispatcher, BadUsbCustomEventErrorBack);
  11. }
  12. }
  13. void bad_usb_scene_error_on_enter(void* context) {
  14. BadUsbApp* app = context;
  15. if(app->error == BadUsbAppErrorNoFiles) {
  16. widget_add_icon_element(app->widget, 0, 0, &I_SDQuestion_35x43);
  17. widget_add_string_multiline_element(
  18. app->widget,
  19. 81,
  20. 4,
  21. AlignCenter,
  22. AlignTop,
  23. FontSecondary,
  24. "No SD card or\napp data found.\nThis app will not\nwork without\nrequired files.");
  25. widget_add_button_element(
  26. app->widget, GuiButtonTypeLeft, "Back", bad_usb_scene_error_event_callback, app);
  27. } else if(app->error == BadUsbAppErrorCloseRpc) {
  28. widget_add_icon_element(app->widget, 78, 0, &I_ActiveConnection_50x64);
  29. widget_add_string_multiline_element(
  30. app->widget, 3, 2, AlignLeft, AlignTop, FontPrimary, "Connection\nis active!");
  31. widget_add_string_multiline_element(
  32. app->widget,
  33. 3,
  34. 30,
  35. AlignLeft,
  36. AlignTop,
  37. FontSecondary,
  38. "Disconnect from\nPC or phone to\nuse this function.");
  39. }
  40. view_dispatcher_switch_to_view(app->view_dispatcher, BadUsbAppViewError);
  41. }
  42. bool bad_usb_scene_error_on_event(void* context, SceneManagerEvent event) {
  43. BadUsbApp* app = context;
  44. bool consumed = false;
  45. if(event.type == SceneManagerEventTypeCustom) {
  46. if(event.event == BadUsbCustomEventErrorBack) {
  47. view_dispatcher_stop(app->view_dispatcher);
  48. consumed = true;
  49. }
  50. }
  51. return consumed;
  52. }
  53. void bad_usb_scene_error_on_exit(void* context) {
  54. BadUsbApp* app = context;
  55. widget_reset(app->widget);
  56. }