flip_weather.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #include "flip_weather.h"
  2. char lat_data[32];
  3. char lon_data[32];
  4. char *total_data = NULL;
  5. char *weather_data = NULL;
  6. FlipWeatherApp *app_instance = NULL;
  7. void flip_weather_loader_free_model(View *view);
  8. // Function to free the resources used by FlipWeatherApp
  9. void flip_weather_app_free(FlipWeatherApp *app)
  10. {
  11. if (!app)
  12. {
  13. FURI_LOG_E(TAG, "FlipWeatherApp is NULL");
  14. return;
  15. }
  16. // Free View(s)
  17. if (app->view_loader)
  18. {
  19. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewLoader);
  20. flip_weather_loader_free_model(app->view_loader);
  21. view_free(app->view_loader);
  22. }
  23. // Free Submenu(s)
  24. if (app->submenu)
  25. {
  26. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewSubmenu);
  27. submenu_free(app->submenu);
  28. }
  29. // Free Widget(s)
  30. if (app->widget)
  31. {
  32. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewAbout);
  33. widget_free(app->widget);
  34. }
  35. if (app->widget_result)
  36. {
  37. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewWidgetResult);
  38. widget_free(app->widget_result);
  39. }
  40. // Free Variable Item List(s)
  41. if (app->variable_item_list)
  42. {
  43. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewSettings);
  44. variable_item_list_free(app->variable_item_list);
  45. }
  46. // Free Text Input(s)
  47. if (app->uart_text_input_ssid)
  48. {
  49. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewTextInputSSID);
  50. text_input_free(app->uart_text_input_ssid);
  51. }
  52. if (app->uart_text_input_password)
  53. {
  54. view_dispatcher_remove_view(app->view_dispatcher, FlipWeatherViewTextInputPassword);
  55. text_input_free(app->uart_text_input_password);
  56. }
  57. // Free the text input buffer
  58. if (app->uart_text_input_buffer_ssid)
  59. free(app->uart_text_input_buffer_ssid);
  60. if (app->uart_text_input_temp_buffer_ssid)
  61. free(app->uart_text_input_temp_buffer_ssid);
  62. if (app->uart_text_input_buffer_password)
  63. free(app->uart_text_input_buffer_password);
  64. if (app->uart_text_input_temp_buffer_password)
  65. free(app->uart_text_input_temp_buffer_password);
  66. // deinitalize flipper http
  67. flipper_http_deinit();
  68. // free the view dispatcher
  69. if (app->view_dispatcher)
  70. view_dispatcher_free(app->view_dispatcher);
  71. // close the gui
  72. furi_record_close(RECORD_GUI);
  73. if (total_data)
  74. free(total_data);
  75. // free the app
  76. if (app)
  77. free(app);
  78. }