Files
Momentum-Firmware/applications/main/subghz/scenes/subghz_scene_saved_menu.c
2023-10-05 23:14:58 +02:00

96 lines
3.1 KiB
C

#include "../subghz_i.h"
enum SubmenuIndex {
SubmenuIndexEmulate,
SubmenuIndexEdit,
SubmenuIndexDelete,
SubmenuIndexGeo,
};
void subghz_scene_saved_menu_submenu_callback(void* context, uint32_t index) {
SubGhz* subghz = context;
view_dispatcher_send_custom_event(subghz->view_dispatcher, index);
}
void subghz_scene_saved_menu_on_enter(void* context) {
SubGhz* subghz = context;
submenu_add_item(
subghz->submenu,
"Emulate",
SubmenuIndexEmulate,
subghz_scene_saved_menu_submenu_callback,
subghz);
submenu_add_item(
subghz->submenu,
"Rename",
SubmenuIndexEdit,
subghz_scene_saved_menu_submenu_callback,
subghz);
submenu_add_item(
subghz->submenu,
"Delete",
SubmenuIndexDelete,
subghz_scene_saved_menu_submenu_callback,
subghz);
FuriString* lat_str = furi_string_alloc();
FuriString* lon_str = furi_string_alloc();
subghz_txrx_get_latitude_and_longitude(subghz->txrx, lat_str, lon_str);
if(strcmp(furi_string_get_cstr(lat_str), "nan") != 0 &&
strcmp(furi_string_get_cstr(lon_str), "nan") != 0) {
submenu_add_item(
subghz->submenu,
"Geographic info",
SubmenuIndexGeo,
subghz_scene_saved_menu_submenu_callback,
subghz);
}
furi_string_free(lon_str);
furi_string_free(lat_str);
submenu_set_selected_item(
subghz->submenu,
scene_manager_get_scene_state(subghz->scene_manager, SubGhzSceneSavedMenu));
view_dispatcher_switch_to_view(subghz->view_dispatcher, SubGhzViewIdMenu);
}
bool subghz_scene_saved_menu_on_event(void* context, SceneManagerEvent event) {
SubGhz* subghz = context;
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == SubmenuIndexEmulate) {
scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneSavedMenu, SubmenuIndexEmulate);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneTransmitter);
return true;
} else if(event.event == SubmenuIndexDelete) {
scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneSavedMenu, SubmenuIndexDelete);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneDelete);
return true;
} else if(event.event == SubmenuIndexEdit) {
scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneSavedMenu, SubmenuIndexEdit);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName);
return true;
} else if(event.event == SubmenuIndexGeo) {
scene_manager_set_scene_state(
subghz->scene_manager, SubGhzSceneSavedMenu, SubmenuIndexGeo);
scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSavedShowGps);
return true;
}
}
return false;
}
void subghz_scene_saved_menu_on_exit(void* context) {
SubGhz* subghz = context;
submenu_reset(subghz->submenu);
}