diff --git a/applications/storage_settings/scenes/storage_settings_scene_sd_info.c b/applications/storage_settings/scenes/storage_settings_scene_sd_info.c index cfb4f310dc5..3dd03e4a22d 100644 --- a/applications/storage_settings/scenes/storage_settings_scene_sd_info.c +++ b/applications/storage_settings/scenes/storage_settings_scene_sd_info.c @@ -24,13 +24,44 @@ void storage_settings_scene_sd_info_on_enter(void* context) { dialog_ex, "Try to reinsert\nor format SD\ncard.", 3, 19, AlignLeft, AlignTop); dialog_ex_set_center_button_text(dialog_ex, "Ok"); } else { + char unit_kb[] = "KB"; + char unit_mb[] = "MB"; + char unit_gb[] = "GB"; + + double sd_total_val = (double)sd_info.kb_total; + char* sd_total_unit = unit_kb; + double sd_free_val = (double)sd_info.kb_free; + char* sd_free_unit = unit_kb; + + if(sd_total_val > 1024) { + sd_total_val /= 1024; + sd_total_unit = unit_mb; + } + if(sd_total_val > 1024) { + sd_total_val /= 1024; + sd_total_unit = unit_gb; + } + + if(sd_free_val > 1024) { + sd_free_val /= 1024; + sd_free_unit = unit_mb; + } + if(sd_free_val > 1024) { + sd_free_val /= 1024; + sd_free_unit = unit_gb; + } + string_printf( app->text_string, - "Label: %s\nType: %s\n%lu KB total\n%lu KB free", + "Label: %s\nType: %s\n%.2f %s total\n%.2f %s free\n%lu%% free", sd_info.label, sd_api_get_fs_type_text(sd_info.fs_type), - sd_info.kb_total, - sd_info.kb_free); + sd_total_val, + sd_total_unit, + sd_free_val, + sd_free_unit, + (sd_info.kb_free * 100) / sd_info.kb_total); + dialog_ex_set_text( dialog_ex, string_get_cstr(app->text_string), 4, 4, AlignLeft, AlignTop); }