mag_scene_saved_info.c 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "../mag_i.h"
  2. void mag_scene_saved_info_on_enter(void* context) {
  3. Mag* mag = context;
  4. Widget* widget = mag->widget;
  5. FuriString* tmp_str;
  6. tmp_str = furi_string_alloc();
  7. // Use strlcpy instead perhaps, to truncate to screen width, then add ellipses if needed?
  8. furi_string_printf(tmp_str, "%s\r\n", mag->mag_dev->dev_name);
  9. widget_add_icon_element(widget, 1, 1, &I_mag_file_10px);
  10. widget_add_string_element(
  11. widget, 13, 2, AlignLeft, AlignTop, FontPrimary, furi_string_get_cstr(tmp_str));
  12. furi_string_reset(tmp_str);
  13. for(uint8_t i = 0; i < MAG_DEV_TRACKS; i++) {
  14. FuriString* trackstr = mag->mag_dev->dev_data.track[i].str;
  15. furi_string_cat_printf(
  16. tmp_str,
  17. "Track %d:%s%s%s",
  18. (i + 1),
  19. furi_string_empty(trackstr) ? " " : "\n",
  20. furi_string_empty(trackstr) ? "< empty >" : furi_string_get_cstr(trackstr),
  21. (i + 1 == MAG_DEV_TRACKS) ? "" : "\n\n");
  22. }
  23. widget_add_text_scroll_element(widget, 0, 15, 128, 49, furi_string_get_cstr(tmp_str));
  24. view_dispatcher_switch_to_view(mag->view_dispatcher, MagViewWidget);
  25. furi_string_free(tmp_str);
  26. }
  27. bool mag_scene_saved_info_on_event(void* context, SceneManagerEvent event) {
  28. Mag* mag = context;
  29. SceneManager* scene_manager = mag->scene_manager;
  30. bool consumed = false;
  31. UNUSED(event);
  32. UNUSED(scene_manager);
  33. return consumed;
  34. }
  35. void mag_scene_saved_info_on_exit(void* context) {
  36. Mag* mag = context;
  37. widget_reset(mag->widget);
  38. }