archive_views.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #pragma once
  2. #include <gui/gui_i.h>
  3. #include <gui/canvas.h>
  4. #include <gui/elements.h>
  5. #include <furi.h>
  6. #include <filesystem-api.h>
  7. #define MAX_LEN_PX 98
  8. #define FRAME_HEIGHT 12
  9. #define MENU_ITEMS 4
  10. typedef enum {
  11. ArchiveFileTypeIButton,
  12. ArchiveFileTypeNFC,
  13. ArchiveFileTypeSubOne,
  14. ArchiveFileTypeLFRFID,
  15. ArchiveFileTypeIrda,
  16. ArchiveFileTypeFolder,
  17. ArchiveFileTypeUnknown,
  18. AppIdTotal,
  19. } ArchiveFileTypeEnum;
  20. typedef struct {
  21. string_t name;
  22. ArchiveFileTypeEnum type;
  23. } ArchiveFile_t;
  24. static void ArchiveFile_t_init(ArchiveFile_t* obj) {
  25. obj->type = ArchiveFileTypeUnknown;
  26. string_init(obj->name);
  27. }
  28. static void ArchiveFile_t_init_set(ArchiveFile_t* obj, const ArchiveFile_t* src) {
  29. obj->type = src->type;
  30. string_init_set(obj->name, src->name);
  31. }
  32. static void ArchiveFile_t_set(ArchiveFile_t* obj, const ArchiveFile_t* src) {
  33. obj->type = src->type;
  34. string_set(obj->name, src->name);
  35. }
  36. static void ArchiveFile_t_clear(ArchiveFile_t* obj) {
  37. string_clear(obj->name);
  38. }
  39. ARRAY_DEF(
  40. files_array,
  41. ArchiveFile_t,
  42. (INIT(API_2(ArchiveFile_t_init)),
  43. SET(API_6(ArchiveFile_t_set)),
  44. INIT_SET(API_6(ArchiveFile_t_init_set)),
  45. CLEAR(API_2(ArchiveFile_t_clear))))
  46. typedef struct {
  47. uint8_t tab_idx;
  48. uint8_t menu_idx;
  49. uint16_t idx;
  50. uint16_t list_offset;
  51. files_array_t files;
  52. bool menu;
  53. } ArchiveViewModel;
  54. void archive_view_render(Canvas* canvas, void* model);