From 7d79379a954e60ec61c51f46b4734bba41641422 Mon Sep 17 00:00:00 2001 From: nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> Date: Fri, 30 Dec 2022 22:04:06 +0800 Subject: [PATCH] NFC: FeliCa menu select uses new submenu ownership model --- applications/main/nfc/nfc_i.h | 3 --- .../nfc/scenes/nfc_scene_felica_info_select.c | 19 +++++++++---------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/applications/main/nfc/nfc_i.h b/applications/main/nfc/nfc_i.h index a5a389737..7331b9405 100644 --- a/applications/main/nfc/nfc_i.h +++ b/applications/main/nfc/nfc_i.h @@ -43,15 +43,12 @@ #include ARRAY_DEF(FelicaAreaPath, FelicaArea*, M_PTR_OPLIST) -LIST_DEF(FuriStringStack, FuriString*, FURI_STRING_OPLIST) ARRAY_DEF(MfClassicUserKeys, char*, M_PTR_OPLIST) #define NFC_TEXT_STORE_SIZE 128 #define NFC_APP_FOLDER ANY_PATH("nfc") typedef struct { - FuriStringStack_t strings; - FelicaSystem* selected_system; FelicaAreaPath_t selected_areas; diff --git a/applications/main/nfc/scenes/nfc_scene_felica_info_select.c b/applications/main/nfc/scenes/nfc_scene_felica_info_select.c index 6ed7b61a4..3b7c570d7 100644 --- a/applications/main/nfc/scenes/nfc_scene_felica_info_select.c +++ b/applications/main/nfc/scenes/nfc_scene_felica_info_select.c @@ -13,7 +13,6 @@ void nfc_scene_felica_info_select_on_enter(void* context) { FelicaData* data = &nfc->dev->dev_data.felica_data; FelicaSelectState* state = &nfc->felica_select; - FuriStringStack_init(nfc->felica_select.strings); FelicaAreaPath_init(nfc->felica_select.selected_areas); submenu_add_item(submenu, "[Actions]", 0, nfc_scene_felica_info_select_submenu_callback, nfc); @@ -31,7 +30,7 @@ void nfc_scene_felica_info_select_on_enter(void* context) { i++, nfc_scene_felica_info_select_submenu_callback, nfc); - FuriStringStack_push_back(state->strings, system_name); + furi_string_free(system_name); } } else { FelicaSystem* system = state->selected_system; @@ -50,32 +49,33 @@ void nfc_scene_felica_info_select_on_enter(void* context) { furi_string_cat(header, "Areas"); submenu_set_header(submenu, furi_string_get_cstr(header)); - FuriStringStack_push_back(state->strings, header); + furi_string_free(header); FelicaNodeList_it_t it; for(FelicaNodeList_it(it, area->nodes); !FelicaNodeList_end_p(it); FelicaNodeList_next(it)) { FelicaNode* node = *FelicaNodeList_ref(it); + FuriString* node_name = furi_string_alloc(); if(node->type == FelicaNodeTypeArea) { - FuriString* area_name = furi_string_alloc_printf("Area %d", node->area->number); + furi_string_printf(node_name, "Area %d", node->area->number); submenu_add_item( submenu, - furi_string_get_cstr(area_name), + furi_string_get_cstr(node_name), i++, nfc_scene_felica_info_select_submenu_callback, nfc); - FuriStringStack_push_back(state->strings, area_name); } else { uint16_t service_code = node->service->number << 6; - FuriString* service_name = furi_string_alloc_printf("Service %04X", service_code); + furi_string_printf(node_name, "Service %04X", service_code); submenu_add_item( submenu, - furi_string_get_cstr(service_name), + furi_string_get_cstr(node_name), i++, nfc_scene_felica_info_select_submenu_callback, nfc); - FuriStringStack_push_back(state->strings, service_name); } + + furi_string_free(node_name); } } @@ -147,6 +147,5 @@ void nfc_scene_felica_info_select_on_exit(void* context) { // Clear view FelicaAreaPath_clear(nfc->felica_select.selected_areas); - FuriStringStack_clear(nfc->felica_select.strings); submenu_reset(nfc->submenu); }