From 50a526b4935e2ff0e37aa53f47a71417517ddefa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Mon, 28 Jun 2021 22:33:17 +0200 Subject: [PATCH] feat: add size and date to browser table --- file-browser/src/window_browser.c | 34 +++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/file-browser/src/window_browser.c b/file-browser/src/window_browser.c index 7be3636..341b48f 100644 --- a/file-browser/src/window_browser.c +++ b/file-browser/src/window_browser.c @@ -14,6 +14,8 @@ #include "logger.h" #include "path.h" #include "renderer.h" +#include +#include #define COLUMNS_COUNT 4 #define MAX_COLUMN_CHARS 200 @@ -270,6 +272,11 @@ static void browser_window_job(void *state) { } } +#define KiB 1024LU +#define MiB KiB*KiB +#define GiB KiB*KiB*KiB +#define TiB KiB*KiB*KiB*KiB + static char *browser_get_column_data(file_t *file, uint16_t column, char *out) { switch (column) { case 0: @@ -288,10 +295,33 @@ static char *browser_get_column_data(file_t *file, uint16_t column, char *out) { break; case 2: // get size - return ""; + { + uint64_t size = file->size; + double transformed = size; + char *append = "B"; + + if (size > TiB) { + transformed /= TiB; + append = "TiB"; + } else if (size > GiB) { + transformed /= GiB; + append = "GiB"; + } else if (size > MiB) { + transformed /= MiB; + append = "MiB"; + } else if (size > KiB) { + transformed /= KiB; + append = "KiB"; + } + + sprintf(out, "%.2f %s", transformed, append); + return out; + } case 3: // date modified - return ""; + + strftime(out, MAX_COLUMN_CHARS, "%c", localtime(&file->modify_time)); + return out; } return NULL; -- 2.48.1