flip_store.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #ifndef FLIP_STORE_E_H
  2. #define FLIP_STORE_E_H
  3. #include <flipper_http/flipper_http.h>
  4. #include <easy_flipper/easy_flipper.h>
  5. #include <furi.h>
  6. #include <furi_hal.h>
  7. #include <gui/gui.h>
  8. #include <gui/view.h>
  9. #include <gui/modules/submenu.h>
  10. #include <gui/view_dispatcher.h>
  11. #include <notification/notification.h>
  12. #include <dialogs/dialogs.h>
  13. #include <jsmn/jsmn.h>
  14. #include <jsmn/jsmn_furi.h>
  15. #include <flip_store_icons.h>
  16. #define TAG "FlipStore"
  17. #define VERSION_TAG "FlipStore v0.8"
  18. #define FIRMWARE_COUNT 3
  19. #define FIRMWARE_LINKS 3
  20. #define VGM_FIRMWARE_COUNT 1
  21. #define VGM_FIRMWARE_LINKS 1
  22. #define MAX_GITHUB_FILES 30
  23. // Define the submenu items for our FlipStore application
  24. typedef enum {
  25. FlipStoreSubmenuIndexMain, // Click to start downloading the selected app
  26. FlipStoreSubmenuIndexAbout,
  27. FlipStoreSubmenuIndexSettings,
  28. //
  29. FlipStoreSubmenuIndexOptions, // Click to view the options
  30. //
  31. FlipStoreSubmenuIndexAppList, // Click to view the app list
  32. FlipStoreSubmenuIndexFirmwares, // Click to view the ESP32 firmwares
  33. FlipStoreSubmenuIndexVGMFirmwares, // Click to view the VGM firmwares
  34. FlipStoreSubmenuIndexGitHub, // Click to view the GitHub repository view
  35. //
  36. FlipStoreSubmenuIndexAppListBluetooth,
  37. FlipStoreSubmenuIndexAppListGames,
  38. FlipStoreSubmenuIndexAppListGPIO,
  39. FlipStoreSubmenuIndexAppListInfrared,
  40. FlipStoreSubmenuIndexAppListiButton,
  41. FlipStoreSubmenuIndexAppListMedia,
  42. FlipStoreSubmenuIndexAppListNFC,
  43. FlipStoreSubmenuIndexAppListRFID,
  44. FlipStoreSubmenuIndexAppListSubGHz,
  45. FlipStoreSubmenuIndexAppListTools,
  46. FlipStoreSubmenuIndexAppListUSB,
  47. //
  48. FlipStoreSubmenuIndexStartFirmwares = 50,
  49. FlipStoreSubmenuIndexStartVGMFirmwares = 60,
  50. //
  51. FlipStoreSubmenuIndexStartAppList = 100,
  52. } FlipStoreSubmenuIndex;
  53. // Define a single view for our FlipStore application
  54. typedef enum {
  55. //
  56. FlipStoreViewSubmenu, // The submenu
  57. FlipStoreViewSubmenuOptions, // The submenu options
  58. //
  59. FlipStoreViewAbout, // The about screen
  60. FlipStoreViewSettings, // The settings screen
  61. FlipStoreViewTextInput, // The text input screen
  62. //
  63. FlipStoreViewAppList, // The app list screen
  64. FlipStoreViewFirmwares, // The firmwares screen (submenu)
  65. FlipStoreViewVGMFirmwares, // The VGM firmwares screen (submenu)
  66. FlipStoreViewAGithub, // The GitHub repository screen
  67. //
  68. FlipStoreViewFirmwareDialog, // The firmware view (DialogEx) of the selected firmware
  69. //
  70. FlipStoreViewAppInfo, // The app info screen (widget) of the selected app
  71. FlipStoreViewAppDownload, // The app download screen (widget) of the selected app
  72. FlipStoreViewAppDelete, // The app delete screen (DialogEx) of the selected app
  73. //
  74. FlipStoreViewAppListCategory, // the app list screen for each category
  75. //
  76. //
  77. FlipStoreViewWidgetResult, // The text box that displays the random fact
  78. FlipStoreViewLoader, // The loader screen retrieves data from the internet
  79. } FlipStoreView;
  80. // Each screen will have its own view
  81. typedef struct {
  82. View* view_loader;
  83. Widget* widget_result;
  84. //
  85. ViewDispatcher* view_dispatcher; // Switches between our views
  86. View* view_app_info; // The app info screen (view) of the selected app
  87. //
  88. DialogEx* dialog_firmware; // The dialog for installing a firmware
  89. //
  90. Submenu* submenu_main; // The submenu (main)
  91. //
  92. Submenu* submenu_options; // The submenu (options)
  93. Submenu* submenu_app_list; // The submenu (app list) for the selected category
  94. Submenu* submenu_firmwares; // The submenu (firmwares)
  95. Submenu* submenu_vgm_firmwares; // The submenu (VGM firmwares)
  96. Submenu* submenu_app_list_category; // The submenu (app list) for each category
  97. Widget* widget_about; // The widget
  98. VariableItemList* variable_item_list; // The variable item list (settngs)
  99. VariableItem* variable_item_ssid; // The variable item
  100. VariableItem* variable_item_pass; // The variable item
  101. //
  102. TextInput* uart_text_input; // The text input
  103. char* uart_text_input_buffer; // Buffer for the text input
  104. char* uart_text_input_temp_buffer; // Temporary buffer for the text input
  105. uint32_t uart_text_input_buffer_size; // Size of the text input buffer
  106. } FlipStoreApp;
  107. void flip_store_app_free(FlipStoreApp* app);
  108. #endif // FLIP_STORE_E_H