flip_store_free.h 4.3 KB

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