archive_files.h 1.7 KB

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