ui: show file sizes in human-friendly
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ncurses.h>
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@ void upload_dialogue_modal_cb(callback_args_t *args) {
|
||||
dialogue_t *init_upload_dialogue_modal(app_t *app) {
|
||||
if (app == NULL)
|
||||
return NULL;
|
||||
group_el_init_t content[] = {{.type = w_input,
|
||||
.label = "File description",
|
||||
.length = 30}, /* length is ignored */
|
||||
group_el_init_t content[] = {
|
||||
{.type = w_input, .label = "File description", .length = 30},
|
||||
{.type = w_input, .label = "File path", .length = 30},
|
||||
{.type = w_end}};
|
||||
|
||||
group_el_init_t actions[] = {
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "progress_bar.h"
|
||||
#include <ncurses.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@@ -11,6 +12,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
void reset_file_list(ui_file_list_t *fl_ui);
|
||||
void size_to_text(size_t size, char *text);
|
||||
|
||||
void file_list_cb(callback_args_t *args) {
|
||||
app_t *app = args->app;
|
||||
@@ -134,15 +136,45 @@ void draw_file_list(ui_file_list_t *fl_ui) {
|
||||
mvwprintw(win, p_y, p_x, "%*s%s%*s", l_pad, "", p_info, l_pad, "");
|
||||
wattroff(win, A_BOLD);
|
||||
|
||||
|
||||
/* draw file info */
|
||||
p_y = 1;
|
||||
p_x = 1;
|
||||
WINDOW *i_win = *fl_ui->info_win;
|
||||
wclear(i_win);
|
||||
|
||||
mvwprintw(i_win, p_y++, p_x, "Size: %zu", active_el->size);
|
||||
char size_text[64];
|
||||
size_to_text(active_el->size, size_text);
|
||||
|
||||
mvwprintw(i_win, p_y++, p_x, "Size: %s", size_text);
|
||||
mvwprintw(i_win, p_y++, p_x, "Owner: %s", active_el->owner);
|
||||
mvwprintw(i_win, p_y++, p_x, "Description: ");
|
||||
print_multiline_text(i_win, active_el->description, sz_x, p_y, p_x, 0);
|
||||
}
|
||||
|
||||
#define BYTES_IN_GB 1073741824
|
||||
#define BYTES_IN_MB 1048576
|
||||
#define BYTES_IN_KB 1024
|
||||
|
||||
void size_to_text(size_t size, char *text) {
|
||||
size_t kb = 0;
|
||||
size_t mb = 0;
|
||||
size_t gb = 0;
|
||||
|
||||
gb = size / BYTES_IN_GB;
|
||||
mb = size / BYTES_IN_MB;
|
||||
kb = size / BYTES_IN_KB;
|
||||
if (gb > 0) {
|
||||
size = size % BYTES_IN_GB;
|
||||
mb = size / BYTES_IN_MB;
|
||||
sprintf(text, "%zu,%zu GB", gb, mb);
|
||||
} else if (mb > 0) {
|
||||
size = size % BYTES_IN_MB;
|
||||
kb = size / BYTES_IN_KB;
|
||||
sprintf(text, "%zu,%zu MB", mb, kb);
|
||||
} else if (kb > 0) {
|
||||
size = size % BYTES_IN_KB;
|
||||
sprintf(text, "%zu,%zu KB", kb, size);
|
||||
} else {
|
||||
sprintf(text, "%zu B", size);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user