archive_browser_view.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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 FRAME_HEIGHT 12
  13. #define MENU_ITEMS 4
  14. #define MAX_DEPTH 32
  15. #define MOVE_OFFSET 5
  16. typedef enum {
  17. ArchiveTabFavorites,
  18. ArchiveTabSubGhz,
  19. ArchiveTabLFRFID,
  20. ArchiveTabNFC,
  21. ArchiveTabIrda,
  22. ArchiveTabIButton,
  23. ArchiveTabBrowser,
  24. ArchiveTabTotal,
  25. } ArchiveTabEnum;
  26. typedef enum {
  27. ArchiveBrowserEventFileMenuOpen,
  28. ArchiveBrowserEventFileMenuClose,
  29. ArchiveBrowserEventFileMenuRun,
  30. ArchiveBrowserEventFileMenuPin,
  31. ArchiveBrowserEventFileMenuAction,
  32. ArchiveBrowserEventFileMenuDelete,
  33. ArchiveBrowserEventEnterDir,
  34. ArchiveBrowserEventFavMoveUp,
  35. ArchiveBrowserEventFavMoveDown,
  36. ArchiveBrowserEventEnterFavMove,
  37. ArchiveBrowserEventExitFavMove,
  38. ArchiveBrowserEventSaveFavMove,
  39. ArchiveBrowserEventExit,
  40. } ArchiveBrowserEvent;
  41. static const uint8_t file_menu_actions[MENU_ITEMS] = {
  42. [0] = ArchiveBrowserEventFileMenuRun,
  43. [1] = ArchiveBrowserEventFileMenuPin,
  44. [2] = ArchiveBrowserEventFileMenuAction,
  45. [3] = ArchiveBrowserEventFileMenuDelete,
  46. };
  47. typedef struct ArchiveBrowserView ArchiveBrowserView;
  48. typedef void (*ArchiveBrowserViewCallback)(ArchiveBrowserEvent event, void* context);
  49. typedef enum {
  50. BrowserActionBrowse,
  51. BrowserActionItemMenu,
  52. BrowserActionTotal,
  53. } BrowserActionEnum;
  54. struct ArchiveBrowserView {
  55. View* view;
  56. ArchiveBrowserViewCallback callback;
  57. void* context;
  58. string_t path;
  59. };
  60. typedef struct {
  61. ArchiveTabEnum tab_idx;
  62. ArchiveTabEnum last_tab;
  63. files_array_t files;
  64. uint8_t menu_idx;
  65. bool move_fav;
  66. bool menu;
  67. uint16_t idx;
  68. uint16_t last_idx;
  69. uint16_t list_offset;
  70. uint16_t last_offset;
  71. uint8_t depth;
  72. } ArchiveBrowserViewModel;
  73. void archive_browser_set_callback(
  74. ArchiveBrowserView* browser,
  75. ArchiveBrowserViewCallback callback,
  76. void* context);
  77. View* archive_browser_get_view(ArchiveBrowserView* browser);
  78. ArchiveBrowserView* browser_alloc();
  79. void browser_free(ArchiveBrowserView* browser);