From 6f79e18e7e722d98ce2a45c558770bd2a5c75d00 Mon Sep 17 00:00:00 2001 From: rdefeo Date: Sun, 8 Sep 2024 15:43:29 -0400 Subject: [PATCH] small cleanup of Import All --- quac.h | 12 ++++++++---- scenes/scene_action_ir_list.c | 28 ++++++++++++++++++---------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/quac.h b/quac.h index 2aa2f538287..1371214322a 100644 --- a/quac.h +++ b/quac.h @@ -16,7 +16,7 @@ #include "views/action_menu.h" #include "item.h" -#define QUAC_NAME "Quac!" +#define QUAC_NAME "Quac!" #define QUAC_VERSION "v0.6.3" #define QUAC_ABOUT \ "Quick Action remote control\n" QUAC_VERSION "\n" \ @@ -25,9 +25,12 @@ // Location of our actions and folders #define QUAC_SETTINGS_FILENAME ".quac.conf" -#define QUAC_SETTINGS_PATH APP_DATA_PATH(QUAC_SETTINGS_FILENAME) +#define QUAC_SETTINGS_PATH APP_DATA_PATH(QUAC_SETTINGS_FILENAME) -typedef enum { QUAC_APP_PORTRAIT, QUAC_APP_LANDSCAPE } QuacAppLayout; +typedef enum { + QUAC_APP_PORTRAIT, + QUAC_APP_LANDSCAPE +} QuacAppLayout; typedef struct App { SceneManager* scene_manager; @@ -49,6 +52,7 @@ typedef struct App { FuriString* temp_str; // used for renames/etc char temp_cstr[MAX_NAME_LEN]; // used for renames/etc + uint32_t temp_u32; struct { QuacAppLayout layout; // Defaults to Portrait @@ -65,4 +69,4 @@ typedef struct App { } App; App* app_alloc(); -void app_free(App* app); \ No newline at end of file +void app_free(App* app); diff --git a/scenes/scene_action_ir_list.c b/scenes/scene_action_ir_list.c index b3d592169fc..4313f5e604e 100644 --- a/scenes/scene_action_ir_list.c +++ b/scenes/scene_action_ir_list.c @@ -13,9 +13,6 @@ #include -// ehhhh -uint32_t num_ir_commands; - void scene_action_ir_list_callback(void* context, uint32_t index) { App* app = context; view_dispatcher_send_custom_event(app->view_dispatcher, index); @@ -46,10 +43,11 @@ void scene_action_ir_list_on_enter(void* context) { index++; } } - num_ir_commands = index - 1; - if(index == 1) { // '1' to account for 'IMPORT ALL' - FURI_LOG_E(TAG, "Failed to get commands from %s", furi_string_get_cstr(app->temp_str)); + // Number of IR Commands in file + app->temp_u32 = index - 1; + if(app->temp_u32 == 0) { + FURI_LOG_E(TAG, "Failed to get ANY commands from %s", furi_string_get_cstr(app->temp_str)); submenu_change_item_label(menu, 0, "No IR cmds!"); } @@ -75,11 +73,12 @@ bool scene_action_ir_list_on_event(void* context, SceneManagerEvent event) { FuriString* file_name = furi_string_alloc(); // new IR file name do { + uint32_t num_imported = 0; uint32_t start = index - 1; uint32_t end = index; if(index == 0) { start = 0; - end = num_ir_commands; + end = app->temp_u32; // Number of IR Commands in file } for(uint32_t ir_index = start; ir_index < end; ir_index++) { if(!flipper_format_file_open_existing( @@ -116,12 +115,21 @@ bool scene_action_ir_list_on_event(void* context, SceneManagerEvent event) { } flipper_format_file_close(fff_data_file); FURI_LOG_I(TAG, "Imported %s", furi_string_get_cstr(name)); + num_imported++; + } + + if(num_imported == (end - start)) { + // Import successful! + notification_message(app->notifications, &sequence_success); + } else { + FURI_LOG_E( + TAG, + "Error importing IR command(s) from %s", + furi_string_get_cstr(app->temp_str)); + notification_message(app->notifications, &sequence_error); } - // Import successful! // Leave the user on this scene, in case they want to import // more commands from this IR file - notification_message(app->notifications, &sequence_success); - } while(false); // cleanup