archive_browser_view.h 2.2 KB

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