diff --git a/src/browser.c b/src/browser.c index 6b479a7f4bd37c2a695788c0da29b5a945b1a978..3fd6bb8254732ffed9447949400a57fd0d733ac5 100644 --- a/src/browser.c +++ b/src/browser.c @@ -30,7 +30,7 @@ #include <ncurses.h> -static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0; +static int graph = 1, show_as = 0, info_show = 0, info_page = 0, info_start = 0, show_items = 0; static char *message = NULL; @@ -88,8 +88,8 @@ static void browse_draw_info(struct dir *dr) { static void browse_draw_item(struct dir *n, int row) { - char ct, dt, *size, gr[11]; - int i, o; + char ct, dt, *size, gr[11], *items; + int i, o, x; float pc; if(n->flags & FF_BSEL) @@ -102,6 +102,9 @@ static void browse_draw_item(struct dir *n, int row) { graph == 1 ? 24 : graph == 2 ? 20 : 31 ; + if (show_items) { + o += 7; + } mvaddstr(row, o, "/.."); if(n->flags & FF_BSEL) attroff(A_REVERSE); @@ -137,12 +140,26 @@ static void browse_draw_item(struct dir *n, int row) { } } + x = 0; + + mvprintw(row, x, "%c %8s ", ct, size); + x += 11; + + if (show_items) { + if (n->items > 99999) + items = "> 100k"; + else + items = n->items ? fullsize(n->items) : ""; + mvprintw(row, x, "%6s ", items); + x += 7; + } + /* format and add item to the list */ switch(graph) { - case 0: mvprintw(row, 0, "%c %8s %c%-*s", ct, size, dt, wincols-13, cropstr(n->name, wincols-13)); break; - case 1: mvprintw(row, 0, "%c %8s [%10s] %c%-*s", ct, size, gr, dt, wincols-25, cropstr(n->name, wincols-25)); break; - case 2: mvprintw(row, 0, "%c %8s [%5.1f%%] %c%-*s", ct, size, pc, dt, wincols-21, cropstr(n->name, wincols-21)); break; - case 3: mvprintw(row, 0, "%c %8s [%5.1f%% %10s] %c%-*s", ct, size, pc, gr, dt, wincols-32, cropstr(n->name, wincols-32)); + case 0: mvprintw(row, x, " %c%-*s", dt, wincols- 2-x, cropstr(n->name, wincols- 2-x)); break; + case 1: mvprintw(row, x, "[%10s] %c%-*s", gr, dt, wincols-14-x, cropstr(n->name, wincols-14-x)); break; + case 2: mvprintw(row, x, "[%5.1f%%] %c%-*s", pc, dt, wincols-10-x, cropstr(n->name, wincols-10-x)); break; + case 3: mvprintw(row, x, "[%5.1f%% %10s] %c%-*s", pc, gr, dt, wincols-21-x, cropstr(n->name, wincols-21-x)); } if(n->flags & FF_BSEL) @@ -383,6 +400,9 @@ int browse_key(int ch) { graph = 0; info_show = 0; break; + case 'c': + show_items = !show_items; + break; case 'i': info_show = !info_show; break; diff --git a/src/help.c b/src/help.c index e3c3d825ca125ece4fef20ffbbb800bc9cec83aa..1ba38903f3f271c5c1bfdcbdc81fa2be640f1354 100644 --- a/src/help.c +++ b/src/help.c @@ -32,7 +32,7 @@ int page, start; -#define KEYS 14 +#define KEYS 15 char *keys[KEYS*2] = { /*|----key----| |----------------description----------------|*/ "up, k", "Move cursor up", @@ -45,6 +45,7 @@ char *keys[KEYS*2] = { "t", "Toggle dirs before files when sorting", "g", "Show percentage and/or graph", "a", "Toggle between apparent size and disk usage", + "c", "Toggle display of child item counts", "e", "Show/hide hidden or excluded files", "i", "Show information about selected item", "r", "Recalculate the current directory",