display free and total disk space Modified: trunk/reactos/subsys/system/winefile/de.rc Modified: trunk/reactos/subsys/system/winefile/en.rc Modified: trunk/reactos/subsys/system/winefile/resource.h Modified: trunk/reactos/subsys/system/winefile/winefile.c _____
Modified: trunk/reactos/subsys/system/winefile/de.rc --- trunk/reactos/subsys/system/winefile/de.rc 2005-05-13 15:35:55 UTC (rev 15264) +++ trunk/reactos/subsys/system/winefile/de.rc 2005-05-13 17:11:16 UTC (rev 15265) @@ -207,4 +207,6 @@
IDS_COL_LINKS "Links" IDS_COL_ATTR "Attribute" IDS_COL_SEC "Sicherheit" + + IDS_FREE_SPACE_FMT "%s von %s frei" } _____
Modified: trunk/reactos/subsys/system/winefile/en.rc --- trunk/reactos/subsys/system/winefile/en.rc 2005-05-13 15:35:55 UTC (rev 15264) +++ trunk/reactos/subsys/system/winefile/en.rc 2005-05-13 17:11:16 UTC (rev 15265) @@ -210,4 +210,6 @@
IDS_COL_LINKS "Links" IDS_COL_ATTR "Attributes" IDS_COL_SEC "Security" + + IDS_FREE_SPACE_FMT "%s of %s free" } _____
Modified: trunk/reactos/subsys/system/winefile/resource.h --- trunk/reactos/subsys/system/winefile/resource.h 2005-05-13 15:35:55 UTC (rev 15264) +++ trunk/reactos/subsys/system/winefile/resource.h 2005-05-13 17:11:16 UTC (rev 15265) @@ -102,6 +102,7 @@
#define IDS_COL_LINKS 1216 #define IDS_COL_ATTR 1217 #define IDS_COL_SEC 1218 +#define IDS_FREE_SPACE_FMT 1219
/* range for drive bar command ids: 0x9000..0x90FF */ _____
Modified: trunk/reactos/subsys/system/winefile/winefile.c --- trunk/reactos/subsys/system/winefile/winefile.c 2005-05-13 15:35:55 UTC (rev 15264) +++ trunk/reactos/subsys/system/winefile/winefile.c 2005-05-13 17:11:16 UTC (rev 15265) @@ -2446,6 +2446,40 @@
}
+static void format_bytes(LPTSTR buffer, LONGLONG bytes) +{ + const static TCHAR sFmtGB[] = {'%', '.', '1', 'f', ' ', 'G', 'B', '\0'}; + const static TCHAR sFmtMB[] = {'%', '.', '1', 'f', ' ', 'M', 'B', '\0'}; + const static TCHAR sFmtkB[] = {'%', '.', '1', 'f', ' ', 'k', 'B', '\0'}; + + float fBytes = (float)bytes; + + if (bytes >= 1073741824) // 1 GB + _stprintf(buffer, sFmtGB, fBytes/1073741824.f+.5f); + else if (bytes >= 1048576) // 1 MB + _stprintf(buffer, sFmtMB, fBytes/1048576.f+.5f); + else if (bytes >= 1024) // 1 kB + _stprintf(buffer, sFmtMB, fBytes/1024.f+.5f); + else + _stprintf(buffer, sLongNumFmt, bytes); +} + +static void set_space_status() +{ + ULARGE_INTEGER ulFreeBytesToCaller, ulTotalBytes, ulFreeBytes; + TCHAR fmt[64], b1[64], b2[64], buffer[BUFFER_LEN]; + + if (GetDiskFreeSpaceEx(NULL, &ulFreeBytesToCaller, &ulTotalBytes, &ulFreeBytes)) { + format_bytes(b1, ulFreeBytesToCaller.QuadPart); + format_bytes(b2, ulTotalBytes.QuadPart); + _stprintf(buffer, RS(fmt,IDS_FREE_SPACE_FMT), b1, b2); + } else + _tcscpy(buffer, sQMarks); + + SendMessage(Globals.hstatusbar, SB_SETTEXT, 0, (LPARAM)buffer); +} + + static WNDPROC g_orgTreeWndProc;
static void create_tree_window(HWND parent, Pane* pane, int id, int id_header) @@ -2755,13 +2789,13 @@ #endif ) LineTo(dis->hDC, x, dis->rcItem.bottom); - +/*@@ if (entry->down && entry->expanded) { x += IMAGE_WIDTH+TREE_LINE_DX; MoveToEx(dis->hDC, x, dis->rcItem.top+IMAGE_HEIGHT, 0); LineTo(dis->hDC, x, dis->rcItem.bottom); } - +*/ SelectClipRgn(dis->hDC, hrgn_org); if (hrgn_org) DeleteObject(hrgn_org); /* SelectObject(dis->hDC, holdPen); */ @@ -3299,7 +3333,8 @@ SetWindowText(child->hwnd, path);
if (path[0]) - SetCurrentDirectory(path); + if (SetCurrentDirectory(path)) + set_space_status(); }
@@ -3728,7 +3763,8 @@ #endif /* _NO_EXTENSIONS */
case WM_SETFOCUS: - SetCurrentDirectory(child->path); + if (SetCurrentDirectory(child->path)) + set_space_status(); SetFocus(child->focus_pane? child->right.hwnd: child->left.hwnd); break;