@@ -120,6 +120,23 @@ int32_t ghost_esp_app(void* p) {
120120 state -> ir_remotes_menu = submenu_alloc ();
121121 state -> ir_buttons_menu = submenu_alloc ();
122122 state -> ir_universals_menu = submenu_alloc ();
123+ // Sub-category submenus
124+ state -> wifi_settings_led_menu = submenu_alloc ();
125+ state -> wifi_settings_sd_menu = submenu_alloc ();
126+ state -> wifi_settings_mgmt_menu = submenu_alloc ();
127+ state -> wifi_settings_device_menu = submenu_alloc ();
128+ state -> wifi_settings_misc_menu = submenu_alloc ();
129+ state -> wifi_network_portal_menu = submenu_alloc ();
130+ state -> wifi_network_conn_menu = submenu_alloc ();
131+ state -> wifi_network_scan_menu = submenu_alloc ();
132+ state -> wifi_network_iot_menu = submenu_alloc ();
133+ state -> wifi_network_webui_menu = submenu_alloc ();
134+ state -> ble_scan_detect_menu = submenu_alloc ();
135+ state -> ble_scan_airtag_menu = submenu_alloc ();
136+ state -> ble_scan_gatt_menu = submenu_alloc ();
137+ state -> ble_scan_adv_menu = submenu_alloc ();
138+ state -> gps_config_menu = submenu_alloc ();
139+ state -> gps_wardrive_menu = submenu_alloc ();
123140 state -> text_box = text_box_alloc ();
124141 state -> settings_menu = variable_item_list_alloc ();
125142 state -> text_input = text_input_alloc ();
@@ -271,6 +288,39 @@ int32_t ghost_esp_app(void* p) {
271288 state -> view_dispatcher ,
272289 VIEW_IR_UNIVERSALS ,
273290 submenu_get_view (state -> ir_universals_menu ));
291+ // Sub-category views
292+ if (state -> wifi_settings_led_menu )
293+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_LED , submenu_get_view (state -> wifi_settings_led_menu ));
294+ if (state -> wifi_settings_sd_menu )
295+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_SD , submenu_get_view (state -> wifi_settings_sd_menu ));
296+ if (state -> wifi_settings_mgmt_menu )
297+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_MGMT , submenu_get_view (state -> wifi_settings_mgmt_menu ));
298+ if (state -> wifi_settings_device_menu )
299+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_DEVICE , submenu_get_view (state -> wifi_settings_device_menu ));
300+ if (state -> wifi_settings_misc_menu )
301+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_MISC , submenu_get_view (state -> wifi_settings_misc_menu ));
302+ if (state -> wifi_network_portal_menu )
303+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_PORTAL , submenu_get_view (state -> wifi_network_portal_menu ));
304+ if (state -> wifi_network_conn_menu )
305+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_CONN , submenu_get_view (state -> wifi_network_conn_menu ));
306+ if (state -> wifi_network_scan_menu )
307+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_SCAN , submenu_get_view (state -> wifi_network_scan_menu ));
308+ if (state -> wifi_network_iot_menu )
309+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_IOT , submenu_get_view (state -> wifi_network_iot_menu ));
310+ if (state -> wifi_network_webui_menu )
311+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_WEBUI , submenu_get_view (state -> wifi_network_webui_menu ));
312+ if (state -> ble_scan_detect_menu )
313+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_BLE_SCAN_DETECT , submenu_get_view (state -> ble_scan_detect_menu ));
314+ if (state -> ble_scan_airtag_menu )
315+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_BLE_SCAN_AIRTAG , submenu_get_view (state -> ble_scan_airtag_menu ));
316+ if (state -> ble_scan_gatt_menu )
317+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_BLE_SCAN_GATT , submenu_get_view (state -> ble_scan_gatt_menu ));
318+ if (state -> ble_scan_adv_menu )
319+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_BLE_SCAN_ADV , submenu_get_view (state -> ble_scan_adv_menu ));
320+ if (state -> gps_config_menu )
321+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_GPS_CONFIG , submenu_get_view (state -> gps_config_menu ));
322+ if (state -> gps_wardrive_menu )
323+ view_dispatcher_add_view (state -> view_dispatcher , VIEW_GPS_WARDRIVE , submenu_get_view (state -> gps_wardrive_menu ));
274324
275325 view_dispatcher_set_custom_event_callback (
276326 state -> view_dispatcher , settings_custom_event_callback );
@@ -369,6 +419,23 @@ int32_t ghost_esp_app(void* p) {
369419 view_dispatcher_remove_view (state -> view_dispatcher , VIEW_IR_BUTTONS );
370420 if (state -> ir_universals_menu )
371421 view_dispatcher_remove_view (state -> view_dispatcher , VIEW_IR_UNIVERSALS );
422+ // Sub-category views
423+ if (state -> wifi_settings_led_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_LED );
424+ if (state -> wifi_settings_sd_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_SD );
425+ if (state -> wifi_settings_mgmt_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_MGMT );
426+ if (state -> wifi_settings_device_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_DEVICE );
427+ if (state -> wifi_settings_misc_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_SETTINGS_MISC );
428+ if (state -> wifi_network_portal_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_PORTAL );
429+ if (state -> wifi_network_conn_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_CONN );
430+ if (state -> wifi_network_scan_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_SCAN );
431+ if (state -> wifi_network_iot_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_IOT );
432+ if (state -> wifi_network_webui_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_WIFI_NETWORK_WEBUI );
433+ if (state -> ble_scan_detect_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_BLE_SCAN_DETECT );
434+ if (state -> ble_scan_airtag_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_BLE_SCAN_AIRTAG );
435+ if (state -> ble_scan_gatt_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_BLE_SCAN_GATT );
436+ if (state -> ble_scan_adv_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_BLE_SCAN_ADV );
437+ if (state -> gps_config_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_GPS_CONFIG );
438+ if (state -> gps_wardrive_menu ) view_dispatcher_remove_view (state -> view_dispatcher , VIEW_GPS_WARDRIVE );
372439 FURI_LOG_I ("Ghost_ESP" , "Views removed." );
373440 view_dispatcher_free (state -> view_dispatcher );
374441 state -> view_dispatcher = NULL ;
@@ -404,6 +471,23 @@ int32_t ghost_esp_app(void* p) {
404471 if (state && state -> ir_remotes_menu ) submenu_free (state -> ir_remotes_menu );
405472 if (state && state -> ir_buttons_menu ) submenu_free (state -> ir_buttons_menu );
406473 if (state && state -> ir_universals_menu ) submenu_free (state -> ir_universals_menu );
474+ // Sub-category submenus
475+ if (state && state -> wifi_settings_led_menu ) submenu_free (state -> wifi_settings_led_menu );
476+ if (state && state -> wifi_settings_sd_menu ) submenu_free (state -> wifi_settings_sd_menu );
477+ if (state && state -> wifi_settings_mgmt_menu ) submenu_free (state -> wifi_settings_mgmt_menu );
478+ if (state && state -> wifi_settings_device_menu ) submenu_free (state -> wifi_settings_device_menu );
479+ if (state && state -> wifi_settings_misc_menu ) submenu_free (state -> wifi_settings_misc_menu );
480+ if (state && state -> wifi_network_portal_menu ) submenu_free (state -> wifi_network_portal_menu );
481+ if (state && state -> wifi_network_conn_menu ) submenu_free (state -> wifi_network_conn_menu );
482+ if (state && state -> wifi_network_scan_menu ) submenu_free (state -> wifi_network_scan_menu );
483+ if (state && state -> wifi_network_iot_menu ) submenu_free (state -> wifi_network_iot_menu );
484+ if (state && state -> wifi_network_webui_menu ) submenu_free (state -> wifi_network_webui_menu );
485+ if (state && state -> ble_scan_detect_menu ) submenu_free (state -> ble_scan_detect_menu );
486+ if (state && state -> ble_scan_airtag_menu ) submenu_free (state -> ble_scan_airtag_menu );
487+ if (state && state -> ble_scan_gatt_menu ) submenu_free (state -> ble_scan_gatt_menu );
488+ if (state && state -> ble_scan_adv_menu ) submenu_free (state -> ble_scan_adv_menu );
489+ if (state && state -> gps_config_menu ) submenu_free (state -> gps_config_menu );
490+ if (state && state -> gps_wardrive_menu ) submenu_free (state -> gps_wardrive_menu );
407491 if (state && state -> main_menu ) main_menu_free (state -> main_menu );
408492 FURI_LOG_I ("Ghost_ESP" , "UI components freed." );
409493 // Close GUI record after all GUI-related components are freed
0 commit comments