show size

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@397 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
Nishi 2025-10-17 13:12:49 +00:00
commit 89228ae102
17 changed files with 511 additions and 485 deletions

View file

@ -77,7 +77,6 @@ MWDECL char* MwIconUp[];
*/ */
MWDECL char* MwIconWarning[]; MWDECL char* MwIconWarning[];
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View file

@ -156,6 +156,7 @@ struct _MwSizeHints {
struct _MwDirectoryEntry { struct _MwDirectoryEntry {
char* name; char* name;
int type; int type;
MwOffset size;
}; };
#define MwCursorDataHeight 16 #define MwCursorDataHeight 16

View file

@ -71,6 +71,12 @@ MwDirectoryEntry* MwDirectoryRead(void* handle) {
} else { } else {
entry->type = MwDIRECTORY_FILE; entry->type = MwDIRECTORY_FILE;
} }
entry->size = 0;
entry->size = entry->size << 32;
entry->size |= dir->ffd.nFileSizeHigh;
entry->size = entry->size << 32;
entry->size |= dir->ffd.nFileSizeLow;
#else #else
struct dirent* d; struct dirent* d;
struct stat s; struct stat s;
@ -92,6 +98,7 @@ MwDirectoryEntry* MwDirectoryRead(void* handle) {
} else { } else {
entry->type = MwDIRECTORY_FILE; entry->type = MwDIRECTORY_FILE;
} }
entry->size = s.st_size;
free(p); free(p);
#endif #endif

View file

@ -249,6 +249,8 @@ static void scan(MwWidget handle, const char* path) {
MwDirectoryEntry** entries = NULL; MwDirectoryEntry** entries = NULL;
int i; int i;
char** names = NULL; char** names = NULL;
char** dates = NULL;
char** sizes = NULL;
MwLLPixmap* icons = NULL; MwLLPixmap* icons = NULL;
if(dir != NULL) { if(dir != NULL) {
MwDirectoryEntry* entry; MwDirectoryEntry* entry;
@ -264,26 +266,56 @@ static void scan(MwWidget handle, const char* path) {
MwListBoxReset(fc->files); MwListBoxReset(fc->files);
MwListBoxInsert(fc->files, -1, NULL, "Name", "Date modified", "Size", NULL); MwListBoxInsert(fc->files, -1, NULL, "Name", "Date modified", "Size", NULL);
MwListBoxSetWidth(fc->files, 0, -128 - 64); MwListBoxSetWidth(fc->files, 0, -128 - 96);
MwListBoxSetWidth(fc->files, 1, 128); MwListBoxSetWidth(fc->files, 1, 128);
MwListBoxSetWidth(fc->files, 2, 0); MwListBoxSetWidth(fc->files, 2, 0);
icons = NULL; icons = NULL;
names = NULL; names = NULL;
dates = NULL;
sizes = NULL;
for(i = 0; i < arrlen(entries); i++) { for(i = 0; i < arrlen(entries); i++) {
if(strcmp(entries[i]->name, ".") == 0 || strcmp(entries[i]->name, "..") == 0) continue; if(strcmp(entries[i]->name, ".") == 0 || strcmp(entries[i]->name, "..") == 0) continue;
if(entries[i]->type == MwDIRECTORY_DIRECTORY) { if(entries[i]->type == MwDIRECTORY_DIRECTORY) {
arrput(names, entries[i]->name); arrput(names, entries[i]->name);
arrput(dates, NULL);
arrput(sizes, NULL);
arrput(icons, fc->dir); arrput(icons, fc->dir);
} }
} }
for(i = 0; i < arrlen(entries); i++) { for(i = 0; i < arrlen(entries); i++) {
if(entries[i]->type == MwDIRECTORY_FILE) { if(entries[i]->type == MwDIRECTORY_FILE) {
char* date = malloc(128);
char* size = malloc(128);
memset(date, 0, 128);
memset(size, 0, 128);
if(entries[i]->size / 1024 == 0) {
sprintf(size, "%d", (int)entries[i]->size);
} else if(entries[i]->size / 1024 / 1024 == 0) {
sprintf(size, "%.1fK", (double)entries[i]->size / 1024);
} else if(entries[i]->size / 1024 / 1024 / 1024 == 0) {
sprintf(size, "%.1fM", (double)entries[i]->size / 1024 / 1024);
} else {
sprintf(size, "%.1fG", (double)entries[i]->size / 1024 / 1024 / 1024);
}
arrput(names, entries[i]->name); arrput(names, entries[i]->name);
arrput(dates, date);
arrput(sizes, size);
arrput(icons, fc->file); arrput(icons, fc->file);
} }
} }
MwListBoxInsertMultiple(fc->files, -1, arrlen(names), icons, names, NULL); MwListBoxInsertMultiple(fc->files, -1, arrlen(names), icons, names, dates, sizes, NULL);
for(i = 0; i < arrlen(dates); i++) {
if(dates[i] != NULL) free(dates[i]);
}
for(i = 0; i < arrlen(sizes); i++) {
if(sizes[i] != NULL) free(sizes[i]);
}
arrfree(sizes);
arrfree(dates);
arrfree(names); arrfree(names);
arrfree(icons); arrfree(icons);

View file

@ -32,5 +32,4 @@ char *MwIconBack[] = {
"OOO .oOOOOOOOOO", "OOO .oOOOOOOOOO",
"OOOO OOOOOOOOOOOOOO", "OOOO OOOOOOOOOOOOOO",
"OOOOO OOOOOOOOOOOOOO", "OOOOO OOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOO" "OOOOOOOOOOOOOOOOOOOO"};
};

View file

@ -29,5 +29,4 @@ char *MwIconComputer[] = {
"#o+++XXXXXXX+###", "#o+++XXXXXXX+###",
"+X+++++++++.X###", "+X+++++++++.X###",
" +XXXXXXXXX+ +##", " +XXXXXXXXX+ +##",
"X ......... X###" "X ......... X###"};
};

View file

@ -28,5 +28,4 @@ char *MwIconDirectory[] = {
"@@@ XoOOo X .@@", "@@@ XoOOo X .@@",
"@@@@@ Xoo X ..@", "@@@@@ Xoo X ..@",
"@@@@@@@ X X ..@", "@@@@@@@ X X ..@",
"@@@@@@@@@ ..@@" "@@@@@@@@@ ..@@"};
};

View file

@ -45,5 +45,4 @@ char *MwIconError[] = {
" ooo ..## @ o ....### ..#", " ooo ..## @ o ....### ..#",
"## oo .### @@@@ooo ...#####...##", "## oo .### @@@@ooo ...#####...##",
"## ..#### ooooo ...###########", "## ..#### ooooo ...###########",
"###....##### ..#############" "###....##### ..#############"};
};

View file

@ -28,5 +28,4 @@ char *MwIconFile[] = {
"o++++++++++.@@@@", "o++++++++++.@@@@",
"o++++++++++.@@@@", "o++++++++++.@@@@",
"o++++++++++.@@@@", "o++++++++++.@@@@",
"@X......... @@@@" "@X......... @@@@"};
};

View file

@ -32,5 +32,4 @@ char *MwIconForward[] = {
"OOOOOOOOOo. OOO", "OOOOOOOOOo. OOO",
"OOOOOOOOOOOOOO OOOO", "OOOOOOOOOOOOOO OOOO",
"OOOOOOOOOOOOOO OOOOO", "OOOOOOOOOOOOOO OOOOO",
"OOOOOOOOOOOOOOOOOOOO" "OOOOOOOOOOOOOOOOOOOO"};
};

View file

@ -40,5 +40,4 @@ char *MwIconInfo[] = {
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"};
};

View file

@ -42,5 +42,4 @@ char *MwIconNews[] = {
"OOOOOOOOOOOOOOOOO OOOOOOOOOO", "OOOOOOOOOOOOOOOOO OOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO", "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"};
};

View file

@ -44,5 +44,4 @@ char *MwIconNote[] = {
"@@@@@@@@ X+X+X+ @@@@@@@@@", "@@@@@@@@ X+X+X+ @@@@@@@@@",
"@@@@@@@@@ X++ X+X @@@@@@@@@@@", "@@@@@@@@@ X++ X+X @@@@@@@@@@@",
"@@@@@@@@@@ X @@@@@@@@@@@@@", "@@@@@@@@@@ X @@@@@@@@@@@@@",
"@@@@@@@@@@@@ @@@@@@@@@@@@@@@" "@@@@@@@@@@@@ @@@@@@@@@@@@@@@"};
};

View file

@ -42,5 +42,4 @@ char *MwIconQuestion[] = {
"OOOOOOOOOOOO.... oooOOOOOOOOOOO", "OOOOOOOOOOOO.... oooOOOOOOOOOOO",
"OOOOOOOOOOOOO. ooooOOOOOOOOOOO", "OOOOOOOOOOOOO. ooooOOOOOOOOOOO",
"OOOOOOOOOOOOOOooooooOOOOOOOOOOOO", "OOOOOOOOOOOOOOooooooOOOOOOOOOOOO",
"OOOOOOOOOOOOOOOooooOOOOOOOOOOOOO" "OOOOOOOOOOOOOOOooooOOOOOOOOOOOOO"};
};

View file

@ -33,5 +33,4 @@ char *MwIconSearch[] = {
".OOOOOooooOOOOOOo ++", ".OOOOOooooOOOOOOo ++",
".OOOOOOOOOOOOOOOo ++", ".OOOOOOOOOOOOOOOo ++",
"..oooooooooooooo. ++", "..oooooooooooooo. ++",
"++ ++" "++ ++"};
};

View file

@ -29,5 +29,4 @@ char *MwIconUp[] = {
"....................", "....................",
"....................", "....................",
"....................", "....................",
"...................." "...................."};
};

View file

@ -42,5 +42,4 @@ char *MwIconWarning[] = {
"OXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..", "OXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..",
"OOXXXXXXXXXXXXXXXXXXXXXXXXXXX...", "OOXXXXXXXXXXXXXXXXXXXXXXXXXXX...",
"OOOO...........................O", "OOOO...........................O",
"OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO" "OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO"};
};