ibutton_scene_info.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #include "../ibutton_i.h"
  2. #include <toolbox/path.h>
  3. void ibutton_scene_info_on_enter(void* context) {
  4. iButton* ibutton = context;
  5. Widget* widget = ibutton->widget;
  6. iButtonKey* key = ibutton->key;
  7. const uint8_t* key_data = ibutton_key_get_data_p(key);
  8. string_t key_name;
  9. string_init(key_name);
  10. path_extract_filename(ibutton->file_path, key_name, true);
  11. ibutton_text_store_set(ibutton, "%s", string_get_cstr(key_name));
  12. widget_add_text_box_element(
  13. widget, 0, 0, 128, 28, AlignCenter, AlignCenter, ibutton->text_store, false);
  14. switch(ibutton_key_get_type(key)) {
  15. case iButtonKeyDS1990:
  16. ibutton_text_store_set(
  17. ibutton,
  18. "%02X %02X %02X %02X %02X %02X %02X %02X",
  19. key_data[0],
  20. key_data[1],
  21. key_data[2],
  22. key_data[3],
  23. key_data[4],
  24. key_data[5],
  25. key_data[6],
  26. key_data[7]);
  27. widget_add_string_element(
  28. widget, 64, 51, AlignCenter, AlignBottom, FontSecondary, "Dallas");
  29. break;
  30. case iButtonKeyMetakom:
  31. ibutton_text_store_set(
  32. ibutton, "%02X %02X %02X %02X", key_data[0], key_data[1], key_data[2], key_data[3]);
  33. widget_add_string_element(
  34. widget, 64, 51, AlignCenter, AlignBottom, FontSecondary, "Metakom");
  35. break;
  36. case iButtonKeyCyfral:
  37. ibutton_text_store_set(ibutton, "%02X %02X", key_data[0], key_data[1]);
  38. widget_add_string_element(
  39. widget, 64, 51, AlignCenter, AlignBottom, FontSecondary, "Cyfral");
  40. break;
  41. }
  42. widget_add_string_element(
  43. widget, 64, 35, AlignCenter, AlignBottom, FontPrimary, ibutton->text_store);
  44. view_dispatcher_switch_to_view(ibutton->view_dispatcher, iButtonViewWidget);
  45. string_clear(key_name);
  46. }
  47. bool ibutton_scene_info_on_event(void* context, SceneManagerEvent event) {
  48. UNUSED(context);
  49. UNUSED(event);
  50. return false;
  51. }
  52. void ibutton_scene_info_on_exit(void* context) {
  53. iButton* ibutton = context;
  54. ibutton_text_store_clear(ibutton);
  55. widget_reset(ibutton->widget);
  56. }