archive_browser_view.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #pragma once
  2. #include <gui/gui_i.h>
  3. #include <gui/view.h>
  4. #include <gui/canvas.h>
  5. #include <gui/elements.h>
  6. #include <furi.h>
  7. #include <storage/storage.h>
  8. #include "../helpers/archive_files.h"
  9. #include "../helpers/archive_favorites.h"
  10. #define MAX_LEN_PX 110
  11. #define MAX_NAME_LEN 255
  12. #define MAX_EXT_LEN 6
  13. #define FRAME_HEIGHT 12
  14. #define MENU_ITEMS 4
  15. #define MOVE_OFFSET 5
  16. typedef enum {
  17. ArchiveTabFavorites,
  18. ArchiveTabSubGhz,
  19. ArchiveTabLFRFID,
  20. ArchiveTabNFC,
  21. ArchiveTabInfrared,
  22. ArchiveTabIButton,
  23. ArchiveTabBadUsb,
  24. ArchiveTabU2f,
  25. ArchiveTabBrowser,
  26. ArchiveTabTotal,
  27. } ArchiveTabEnum;
  28. typedef enum {
  29. ArchiveBrowserEventFileMenuOpen,
  30. ArchiveBrowserEventFileMenuClose,
  31. ArchiveBrowserEventFileMenuRun,
  32. ArchiveBrowserEventFileMenuPin,
  33. ArchiveBrowserEventFileMenuAction,
  34. ArchiveBrowserEventFileMenuDelete,
  35. ArchiveBrowserEventEnterDir,
  36. ArchiveBrowserEventFavMoveUp,
  37. ArchiveBrowserEventFavMoveDown,
  38. ArchiveBrowserEventEnterFavMove,
  39. ArchiveBrowserEventExitFavMove,
  40. ArchiveBrowserEventSaveFavMove,
  41. ArchiveBrowserEventLoadPrevItems,
  42. ArchiveBrowserEventLoadNextItems,
  43. ArchiveBrowserEventLoaderAppExit,
  44. ArchiveBrowserEventExit,
  45. } ArchiveBrowserEvent;
  46. static const uint8_t file_menu_actions[MENU_ITEMS] = {
  47. [0] = ArchiveBrowserEventFileMenuRun,
  48. [1] = ArchiveBrowserEventFileMenuPin,
  49. [2] = ArchiveBrowserEventFileMenuAction,
  50. [3] = ArchiveBrowserEventFileMenuDelete,
  51. };
  52. typedef struct ArchiveBrowserView ArchiveBrowserView;
  53. typedef void (*ArchiveBrowserViewCallback)(ArchiveBrowserEvent event, void* context);
  54. typedef enum {
  55. BrowserActionBrowse,
  56. BrowserActionItemMenu,
  57. BrowserActionTotal,
  58. } BrowserActionEnum;
  59. struct ArchiveBrowserView {
  60. View* view;
  61. ArchiveBrowserViewCallback callback;
  62. void* context;
  63. string_t path;
  64. };
  65. ARRAY_DEF(idx_last_array, int32_t)
  66. typedef struct {
  67. ArchiveTabEnum tab_idx;
  68. ArchiveTabEnum last_tab;
  69. files_array_t files;
  70. idx_last_array_t idx_last;
  71. uint8_t menu_idx;
  72. bool move_fav;
  73. bool menu;
  74. bool list_loading;
  75. uint32_t item_cnt;
  76. int32_t item_idx;
  77. int32_t array_offset;
  78. int32_t list_offset;
  79. } ArchiveBrowserViewModel;
  80. void archive_browser_set_callback(
  81. ArchiveBrowserView* browser,
  82. ArchiveBrowserViewCallback callback,
  83. void* context);
  84. View* archive_browser_get_view(ArchiveBrowserView* browser);
  85. ArchiveBrowserView* browser_alloc();
  86. void browser_free(ArchiveBrowserView* browser);