archive_browser_view.h 2.0 KB

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