flip_weather_free.h 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #ifndef FLIP_WEATHER_FREE_H
  2. #define FLIP_WEATHER_FREE_H
  3. // Function to free the resources used by FlipWeatherApp
  4. static void flip_weather_app_free(FlipWeatherApp *app)
  5. {
  6. if (!app)
  7. {
  8. FURI_LOG_E(TAG, "FlipWeatherApp is NULL");
  9. return;
  10. }
  11. if (!flipper_http_disconnect_wifi())
  12. {
  13. FURI_LOG_E(TAG, "Failed to disconnect from wifi");
  14. }
  15. // Free View(s)
  16. if (app->view_weather)
  17. {
  18. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewWeather);
  19. view_free(app->view_weather);
  20. }
  21. if (app->view_gps)
  22. {
  23. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewGPS);
  24. view_free(app->view_gps);
  25. }
  26. // Free Submenu(s)
  27. if (app->submenu)
  28. {
  29. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewSubmenu);
  30. submenu_free(app->submenu);
  31. }
  32. // Free Widget(s)
  33. if (app->widget)
  34. {
  35. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewAbout);
  36. widget_free(app->widget);
  37. }
  38. // Free Variable Item List(s)
  39. if (app->variable_item_list)
  40. {
  41. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewSettings);
  42. variable_item_list_free(app->variable_item_list);
  43. }
  44. // Free Text Input(s)
  45. if (app->uart_text_input_ssid)
  46. {
  47. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewTextInputSSID);
  48. uart_text_input_free(app->uart_text_input_ssid);
  49. }
  50. if (app->uart_text_input_password)
  51. {
  52. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewTextInputPassword);
  53. uart_text_input_free(app->uart_text_input_password);
  54. }
  55. // Free the text input buffer
  56. if (app->uart_text_input_buffer_ssid)
  57. free(app->uart_text_input_buffer_ssid);
  58. if (app->uart_text_input_temp_buffer_ssid)
  59. free(app->uart_text_input_temp_buffer_ssid);
  60. if (app->uart_text_input_buffer_password)
  61. free(app->uart_text_input_buffer_password);
  62. if (app->uart_text_input_temp_buffer_password)
  63. free(app->uart_text_input_temp_buffer_password);
  64. // deinitalize flipper http
  65. flipper_http_deinit();
  66. // free the view dispatcher
  67. if (app->view_dispatcher)
  68. view_dispatcher_free(app->view_dispatcher);
  69. // close the gui
  70. furi_record_close(RECORD_GUI);
  71. // free the app
  72. if (app)
  73. free(app);
  74. }
  75. #endif // FLIP_WEATHER_FREE_H