archive_views.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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 <storage/storage.h>
  7. #define MAX_LEN_PX 100
  8. #define MAX_NAME_LEN 255
  9. #define FRAME_HEIGHT 12
  10. #define MENU_ITEMS 4
  11. typedef enum {
  12. ArchiveFileTypeIButton,
  13. ArchiveFileTypeNFC,
  14. ArchiveFileTypeSubOne,
  15. ArchiveFileTypeLFRFID,
  16. ArchiveFileTypeIrda,
  17. ArchiveFileTypeFolder,
  18. ArchiveFileTypeUnknown,
  19. AppIdTotal,
  20. } ArchiveFileTypeEnum;
  21. typedef enum {
  22. ArchiveTabFavorites,
  23. ArchiveTabLFRFID,
  24. ArchiveTabSubOne,
  25. ArchiveTabNFC,
  26. ArchiveTabIButton,
  27. ArchiveTabIrda,
  28. ArchiveTabBrowser,
  29. ArchiveTabTotal,
  30. } ArchiveTabEnum;
  31. typedef struct {
  32. string_t name;
  33. ArchiveFileTypeEnum type;
  34. bool fav;
  35. } ArchiveFile_t;
  36. static void ArchiveFile_t_init(ArchiveFile_t* obj) {
  37. obj->type = ArchiveFileTypeUnknown;
  38. string_init(obj->name);
  39. }
  40. static void ArchiveFile_t_init_set(ArchiveFile_t* obj, const ArchiveFile_t* src) {
  41. obj->type = src->type;
  42. string_init_set(obj->name, src->name);
  43. }
  44. static void ArchiveFile_t_set(ArchiveFile_t* obj, const ArchiveFile_t* src) {
  45. obj->type = src->type;
  46. string_set(obj->name, src->name);
  47. }
  48. static void ArchiveFile_t_clear(ArchiveFile_t* obj) {
  49. string_clear(obj->name);
  50. }
  51. ARRAY_DEF(
  52. files_array,
  53. ArchiveFile_t,
  54. (INIT(API_2(ArchiveFile_t_init)),
  55. SET(API_6(ArchiveFile_t_set)),
  56. INIT_SET(API_6(ArchiveFile_t_init_set)),
  57. CLEAR(API_2(ArchiveFile_t_clear))))
  58. typedef struct {
  59. uint8_t tab_idx;
  60. uint8_t menu_idx;
  61. uint16_t idx;
  62. uint16_t list_offset;
  63. files_array_t files;
  64. bool menu;
  65. } ArchiveViewModel;
  66. void archive_view_render(Canvas* canvas, void* model);
  67. void archive_trim_file_ext(char* name);
  68. static inline bool is_known_app(ArchiveFileTypeEnum type) {
  69. return (type != ArchiveFileTypeFolder && type != ArchiveFileTypeUnknown);
  70. }