archive_files.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma once
  2. #include "file_worker.h"
  3. #include <m-array.h>
  4. typedef enum {
  5. ArchiveFileTypeIButton,
  6. ArchiveFileTypeNFC,
  7. ArchiveFileTypeSubGhz,
  8. ArchiveFileTypeLFRFID,
  9. ArchiveFileTypeInfrared,
  10. ArchiveFileTypeBadUsb,
  11. ArchiveFileTypeU2f,
  12. ArchiveFileTypeFolder,
  13. ArchiveFileTypeUnknown,
  14. ArchiveFileTypeLoading,
  15. } ArchiveFileTypeEnum;
  16. typedef struct {
  17. string_t name;
  18. ArchiveFileTypeEnum type;
  19. bool fav;
  20. bool is_app;
  21. } ArchiveFile_t;
  22. static void ArchiveFile_t_init(ArchiveFile_t* obj) {
  23. obj->type = ArchiveFileTypeUnknown;
  24. obj->is_app = false;
  25. obj->fav = false;
  26. string_init(obj->name);
  27. }
  28. static void ArchiveFile_t_init_set(ArchiveFile_t* obj, const ArchiveFile_t* src) {
  29. obj->type = src->type;
  30. obj->is_app = src->is_app;
  31. obj->fav = src->fav;
  32. string_init_set(obj->name, src->name);
  33. }
  34. static void ArchiveFile_t_set(ArchiveFile_t* obj, const ArchiveFile_t* src) {
  35. obj->type = src->type;
  36. obj->is_app = src->is_app;
  37. obj->fav = src->fav;
  38. string_set(obj->name, src->name);
  39. }
  40. static void ArchiveFile_t_clear(ArchiveFile_t* obj) {
  41. string_clear(obj->name);
  42. }
  43. ARRAY_DEF(
  44. files_array,
  45. ArchiveFile_t,
  46. (INIT(API_2(ArchiveFile_t_init)),
  47. SET(API_6(ArchiveFile_t_set)),
  48. INIT_SET(API_6(ArchiveFile_t_init_set)),
  49. CLEAR(API_2(ArchiveFile_t_clear))))
  50. bool archive_filter_by_extension(FileInfo* file_info, const char* tab_ext, const char* name);
  51. void archive_set_file_type(ArchiveFile_t* file, FileInfo* file_info, const char* path, bool is_app);
  52. void archive_trim_file_path(char* name, bool ext);
  53. void archive_get_file_extension(char* name, char* ext);
  54. bool archive_get_filenames(void* context, const char* path);
  55. uint32_t archive_dir_count_items(void* context, const char* path);
  56. uint32_t archive_dir_read_items(void* context, const char* path, uint32_t offset, uint32_t count);
  57. void archive_file_append(const char* path, const char* format, ...);
  58. void archive_delete_file(void* context, const char* format, ...);