flip_store_free.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #ifndef FLIP_STORE_FREE_H
  2. #define FLIP_STORE_FREE_H
  3. // Function to free the resources used by FlipStoreApp
  4. static void flip_store_app_free(FlipStoreApp* app) {
  5. if(!app) {
  6. FURI_LOG_E(TAG, "FlipStoreApp is NULL");
  7. return;
  8. }
  9. // Free View(s)
  10. if(app->view_main) {
  11. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewMain);
  12. view_free(app->view_main);
  13. }
  14. if(app->view_app_info) {
  15. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppInfo);
  16. view_free(app->view_app_info);
  17. }
  18. // Free Submenu(s)
  19. if(app->submenu) {
  20. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSubmenu);
  21. submenu_free(app->submenu);
  22. }
  23. if(app->submenu_app_list) {
  24. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppList);
  25. submenu_free(app->submenu_app_list);
  26. }
  27. if(app->submenu_app_list_bluetooth) {
  28. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListBluetooth);
  29. submenu_free(app->submenu_app_list_bluetooth);
  30. }
  31. if(app->submenu_app_list_games) {
  32. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGames);
  33. submenu_free(app->submenu_app_list_games);
  34. }
  35. if(app->submenu_app_list_gpio) {
  36. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListGPIO);
  37. submenu_free(app->submenu_app_list_gpio);
  38. }
  39. if(app->submenu_app_list_infrared) {
  40. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListInfrared);
  41. submenu_free(app->submenu_app_list_infrared);
  42. }
  43. if(app->submenu_app_list_ibutton) {
  44. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListiButton);
  45. submenu_free(app->submenu_app_list_ibutton);
  46. }
  47. if(app->submenu_app_list_media) {
  48. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListMedia);
  49. submenu_free(app->submenu_app_list_media);
  50. }
  51. if(app->submenu_app_list_nfc) {
  52. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListNFC);
  53. submenu_free(app->submenu_app_list_nfc);
  54. }
  55. if(app->submenu_app_list_rfid) {
  56. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListRFID);
  57. submenu_free(app->submenu_app_list_rfid);
  58. }
  59. if(app->submenu_app_list_subghz) {
  60. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListSubGHz);
  61. submenu_free(app->submenu_app_list_subghz);
  62. }
  63. if(app->submenu_app_list_tools) {
  64. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListTools);
  65. submenu_free(app->submenu_app_list_tools);
  66. }
  67. if(app->submenu_app_list_usb) {
  68. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppListUSB);
  69. submenu_free(app->submenu_app_list_usb);
  70. }
  71. // Free Widget(s)
  72. if(app->widget) {
  73. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAbout);
  74. widget_free(app->widget);
  75. }
  76. // Free Variable Item List(s)
  77. if(app->variable_item_list) {
  78. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewSettings);
  79. variable_item_list_free(app->variable_item_list);
  80. }
  81. // Free Text Input(s)
  82. if(app->uart_text_input_ssid) {
  83. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputSSID);
  84. text_input_free(app->uart_text_input_ssid);
  85. }
  86. if(app->uart_text_input_pass) {
  87. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewTextInputPass);
  88. text_input_free(app->uart_text_input_pass);
  89. }
  90. // Free popup
  91. if(app->popup) {
  92. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewPopup);
  93. popup_free(app->popup);
  94. }
  95. // Free dialog
  96. if(app->dialog_delete) {
  97. view_dispatcher_remove_view(app->view_dispatcher, FlipStoreViewAppDelete);
  98. dialog_ex_free(app->dialog_delete);
  99. }
  100. // Free the flip catalog
  101. flip_catalog_free();
  102. // deinitalize flipper http
  103. flipper_http_deinit();
  104. // free the view dispatcher
  105. view_dispatcher_free(app->view_dispatcher);
  106. // close the gui
  107. furi_record_close(RECORD_GUI);
  108. // free the app
  109. free(app);
  110. }
  111. #endif // FLIP_STORE_FREE_H