archive_browser.h 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #pragma once
  2. #include "../archive_i.h"
  3. #include <storage/storage.h>
  4. #define TAB_RIGHT InputKeyRight // Default tab switch direction
  5. #define TAB_DEFAULT ArchiveTabFavorites // Start tab
  6. #define FILE_LIST_BUF_LEN 50
  7. static const char* tab_default_paths[] = {
  8. [ArchiveTabFavorites] = "/app:favorites",
  9. [ArchiveTabIButton] = ANY_PATH("ibutton"),
  10. [ArchiveTabNFC] = ANY_PATH("nfc"),
  11. [ArchiveTabSubGhz] = ANY_PATH("subghz"),
  12. [ArchiveTabLFRFID] = ANY_PATH("lfrfid"),
  13. [ArchiveTabInfrared] = ANY_PATH("infrared"),
  14. [ArchiveTabBadUsb] = ANY_PATH("badusb"),
  15. [ArchiveTabU2f] = "/app:u2f",
  16. [ArchiveTabApplications] = ANY_PATH("apps"),
  17. [ArchiveTabBrowser] = STORAGE_ANY_PATH_PREFIX,
  18. };
  19. static const char* known_ext[] = {
  20. [ArchiveFileTypeIButton] = ".ibtn",
  21. [ArchiveFileTypeNFC] = ".nfc",
  22. [ArchiveFileTypeSubGhz] = ".sub",
  23. [ArchiveFileTypeLFRFID] = ".rfid",
  24. [ArchiveFileTypeInfrared] = ".ir",
  25. [ArchiveFileTypeBadUsb] = ".txt",
  26. [ArchiveFileTypeU2f] = "?",
  27. [ArchiveFileTypeApplication] = ".fap",
  28. [ArchiveFileTypeUpdateManifest] = ".fuf",
  29. [ArchiveFileTypeFolder] = "?",
  30. [ArchiveFileTypeUnknown] = "*",
  31. };
  32. static const ArchiveFileTypeEnum known_type[] = {
  33. [ArchiveTabFavorites] = ArchiveFileTypeUnknown,
  34. [ArchiveTabIButton] = ArchiveFileTypeIButton,
  35. [ArchiveTabNFC] = ArchiveFileTypeNFC,
  36. [ArchiveTabSubGhz] = ArchiveFileTypeSubGhz,
  37. [ArchiveTabLFRFID] = ArchiveFileTypeLFRFID,
  38. [ArchiveTabInfrared] = ArchiveFileTypeInfrared,
  39. [ArchiveTabBadUsb] = ArchiveFileTypeBadUsb,
  40. [ArchiveTabU2f] = ArchiveFileTypeU2f,
  41. [ArchiveTabApplications] = ArchiveFileTypeApplication,
  42. [ArchiveTabBrowser] = ArchiveFileTypeUnknown,
  43. };
  44. static inline ArchiveFileTypeEnum archive_get_tab_filetype(ArchiveTabEnum tab) {
  45. return known_type[tab];
  46. }
  47. static inline const char* archive_get_tab_ext(ArchiveTabEnum tab) {
  48. return known_ext[archive_get_tab_filetype(tab)];
  49. }
  50. static inline const char* archive_get_default_path(ArchiveTabEnum tab) {
  51. return tab_default_paths[tab];
  52. }
  53. inline bool archive_is_known_app(ArchiveFileTypeEnum type) {
  54. return (type != ArchiveFileTypeFolder && type != ArchiveFileTypeUnknown);
  55. }
  56. bool archive_is_item_in_array(ArchiveBrowserViewModel* model, uint32_t idx);
  57. void archive_update_offset(ArchiveBrowserView* browser);
  58. void archive_update_focus(ArchiveBrowserView* browser, const char* target);
  59. void archive_file_array_load(ArchiveBrowserView* browser, int8_t dir);
  60. size_t archive_file_get_array_size(ArchiveBrowserView* browser);
  61. void archive_file_array_rm_selected(ArchiveBrowserView* browser);
  62. void archive_file_array_swap(ArchiveBrowserView* browser, int8_t dir);
  63. void archive_file_array_rm_all(ArchiveBrowserView* browser);
  64. void archive_set_item_count(ArchiveBrowserView* browser, uint32_t count);
  65. ArchiveFile_t* archive_get_current_file(ArchiveBrowserView* browser);
  66. ArchiveFile_t* archive_get_file_at(ArchiveBrowserView* browser, size_t idx);
  67. ArchiveTabEnum archive_get_tab(ArchiveBrowserView* browser);
  68. bool archive_is_home(ArchiveBrowserView* browser);
  69. const char* archive_get_name(ArchiveBrowserView* browser);
  70. void archive_add_app_item(ArchiveBrowserView* browser, const char* name);
  71. void archive_add_file_item(ArchiveBrowserView* browser, bool is_folder, const char* name);
  72. void archive_show_file_menu(ArchiveBrowserView* browser, bool show);
  73. void archive_favorites_move_mode(ArchiveBrowserView* browser, bool active);
  74. void archive_switch_tab(ArchiveBrowserView* browser, InputKey key);
  75. void archive_enter_dir(ArchiveBrowserView* browser, FuriString* name);
  76. void archive_leave_dir(ArchiveBrowserView* browser);
  77. void archive_refresh_dir(ArchiveBrowserView* browser);