implement switching of file sort order Modified: trunk/reactos/subsys/system/winefile/Sv.rc Modified: trunk/reactos/subsys/system/winefile/cz.rc Modified: trunk/reactos/subsys/system/winefile/de.rc Modified: trunk/reactos/subsys/system/winefile/en.rc Modified: trunk/reactos/subsys/system/winefile/es.rc Modified: trunk/reactos/subsys/system/winefile/fr.rc Modified: trunk/reactos/subsys/system/winefile/hu.rc Modified: trunk/reactos/subsys/system/winefile/it.rc Modified: trunk/reactos/subsys/system/winefile/nl.rc Modified: trunk/reactos/subsys/system/winefile/pt.rc Modified: trunk/reactos/subsys/system/winefile/resource.h Modified: trunk/reactos/subsys/system/winefile/ru.rc Modified: trunk/reactos/subsys/system/winefile/si.rc Modified: trunk/reactos/subsys/system/winefile/winefile.c Modified: trunk/reactos/subsys/system/winefile/zh.rc _____
Modified: trunk/reactos/subsys/system/winefile/Sv.rc --- trunk/reactos/subsys/system/winefile/Sv.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/Sv.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -93,10 +93,10 @@
MENUITEM "&Alla Fildetaljer" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Vissa detaljer..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Sortera efter namn", 404 - MENUITEM "Sortera efter t&yp", 405 - MENUITEM "Sortera efter st&orlek", 406 - MENUITEM "Sortera efter &datum", 407 + MENUITEM "&Sortera efter namn", ID_VIEW_SORT_NAME + MENUITEM "Sortera efter t&yp", ID_VIEW_SORT_TYPE + MENUITEM "Sortera efter st&orlek", ID_VIEW_SORT_SIZE + MENUITEM "Sortera efter &datum", ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Sortera efter &...", 409 } _____
Modified: trunk/reactos/subsys/system/winefile/cz.rc --- trunk/reactos/subsys/system/winefile/cz.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/cz.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -92,10 +92,10 @@
MENUITEM "&Detaily vÜech soubor¨" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "?ß&steÞnÚ detaily..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&T°Ýdit podle jmÚna" , 404 - MENUITEM "T°Ýdit &podle typu" , 405 - MENUITEM "T°Ýdit podle &velikosti" , 406 - MENUITEM "T°Ýdit podle &data" , 407 + MENUITEM "&T°Ýdit podle jmÚna" , ID_VIEW_SORT_NAME + MENUITEM "T°Ýdit &podle typu" , ID_VIEW_SORT_TYPE + MENUITEM "T°Ýdit podle &velikosti" , ID_VIEW_SORT_SIZE + MENUITEM "T°Ýdit podle &data" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "T°Ýdit podle &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/de.rc --- trunk/reactos/subsys/system/winefile/de.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/de.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -91,10 +91,10 @@
MENUITEM "A&lle Dateiangaben" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Bestimmte Dateiangaben..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "Nach N&ame" , 404 - MENUITEM "Nach T&yp" , 405 - MENUITEM "Nach &Gr÷?e" , 406 - MENUITEM "Nach &Datum" , 407 + MENUITEM "Nach N&ame" , ID_VIEW_SORT_NAME + MENUITEM "Nach T&yp" , ID_VIEW_SORT_TYPE + MENUITEM "Nach &Gr÷?e" , ID_VIEW_SORT_SIZE + MENUITEM "Nach &Datum" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Angaben ausw&õhlen..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/en.rc --- trunk/reactos/subsys/system/winefile/en.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/en.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -94,12 +94,12 @@
MENUITEM "&All File Details" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Partial Details..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Sort by Name" , 404 - MENUITEM "Sort &by Type" , 405 - MENUITEM "Sort by Si&ze" , 406 - MENUITEM "Sort by &Date" , 407 + MENUITEM "&Sort by Name" , ID_VIEW_SORT_NAME + MENUITEM "Sort &by Type" , ID_VIEW_SORT_TYPE + MENUITEM "Sort by Si&ze" , ID_VIEW_SORT_SIZE + MENUITEM "Sort by &Date" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR - MENUITEM "Sort by &..." , 409 + MENUITEM "Filter by &..." , 409 }
POPUP "&Options" { _____
Modified: trunk/reactos/subsys/system/winefile/es.rc --- trunk/reactos/subsys/system/winefile/es.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/es.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -90,10 +90,10 @@
MENUITEM "T&odos los detalles" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "Detalles &parciales..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "Ordenar por &nombre" , 404 - MENUITEM "Ordenar por &tipo" , 405 - MENUITEM "Ordenar por t&ama±o" , 406 - MENUITEM "Ordenar por &fecha" , 407 + MENUITEM "Ordenar por &nombre" , ID_VIEW_SORT_NAME + MENUITEM "Ordenar por &tipo" , ID_VIEW_SORT_TYPE + MENUITEM "Ordenar por t&ama±o" , ID_VIEW_SORT_SIZE + MENUITEM "Ordenar por &fecha" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Ordenar por &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/fr.rc --- trunk/reactos/subsys/system/winefile/fr.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/fr.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -93,10 +93,10 @@
MENUITEM "Tous &les DÚtails" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&DÚtails..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "Trier par N&om" , 404 - MENUITEM "Trier par &Type" , 405 - MENUITEM "Trier par Ta&ille" , 406 - MENUITEM "Trier par Dat&e" , 407 + MENUITEM "Trier par N&om" , ID_VIEW_SORT_NAME + MENUITEM "Trier par &Type" , ID_VIEW_SORT_TYPE + MENUITEM "Trier par Ta&ille" , ID_VIEW_SORT_SIZE + MENUITEM "Trier par Dat&e" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Trier par &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/hu.rc --- trunk/reactos/subsys/system/winefile/hu.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/hu.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -93,10 +93,10 @@
MENUITEM "&Minden rÚszlet" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Egyedi..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&RendezÚs nÚv szerint" , 404 - MENUITEM "RendezÚs k&iterjesztÚs szerint" , 405 - MENUITEM "RendezÚs &mÚret szerint" , 406 - MENUITEM "RendezÚs &dßtum szerint" , 407 + MENUITEM "&RendezÚs nÚv szerint" , ID_VIEW_SORT_NAME + MENUITEM "RendezÚs k&iterjesztÚs szerint" , ID_VIEW_SORT_TYPE + MENUITEM "RendezÚs &mÚret szerint" , ID_VIEW_SORT_SIZE + MENUITEM "RendezÚs &dßtum szerint" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Egyedi rendezÚs &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/it.rc --- trunk/reactos/subsys/system/winefile/it.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/it.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -93,10 +93,10 @@
MENUITEM "&Mostra tutti i dettagli sui file" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Mostra dettagli parziali..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Ordina per Nome" , 404 - MENUITEM "&Ordina per Tipo" , 405 - MENUITEM "&Ordina per Dimensione" , 406 - MENUITEM "&Ordina per Data" , 407 + MENUITEM "&Ordina per Nome" , ID_VIEW_SORT_NAME + MENUITEM "&Ordina per Tipo" , ID_VIEW_SORT_TYPE + MENUITEM "&Ordina per Dimensione" , ID_VIEW_SORT_SIZE + MENUITEM "&Ordina per Data" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Ordina per &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/nl.rc --- trunk/reactos/subsys/system/winefile/nl.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/nl.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -89,10 +89,10 @@
MENUITEM "&Alle details" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Gedeeltelijke details..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "Sorteer op &naam" , 404 - MENUITEM "Sorteer op &type" , 405 - MENUITEM "Sorteer op &grootte" , 406 - MENUITEM "Sorteer op &datum" , 407 + MENUITEM "Sorteer op &naam" , ID_VIEW_SORT_NAME + MENUITEM "Sorteer op &type" , ID_VIEW_SORT_TYPE + MENUITEM "Sorteer op &grootte" , ID_VIEW_SORT_SIZE + MENUITEM "Sorteer op &datum" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Sorteer op &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/pt.rc --- trunk/reactos/subsys/system/winefile/pt.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/pt.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -92,10 +92,10 @@
MENUITEM "&Todos os delalhes" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "D&etalhes parciais..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Classificar por nome" , 404 - MENUITEM "C&lassificar por tipo" , 405 - MENUITEM "Cl&assificar por tamanho" , 406 - MENUITEM "Cla&ssificar por &data" , 407 + MENUITEM "&Classificar por nome" , ID_VIEW_SORT_NAME + MENUITEM "C&lassificar por tipo" , ID_VIEW_SORT_TYPE + MENUITEM "Cl&assificar por tamanho" , ID_VIEW_SORT_SIZE + MENUITEM "Cla&ssificar por &data" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Classificar &por..." , 409 } @@ -220,10 +220,10 @@ MENUITEM "&Todos os delalhes" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "D&etalhes parciais..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Classificar por nome" , 404 - MENUITEM "C&lassificar por tipo" , 405 - MENUITEM "Cl&assificar por tamanho" , 406 - MENUITEM "Cla&ssificar por &data" , 407 + MENUITEM "&Classificar por nome" , ID_VIEW_SORT_NAME + MENUITEM "C&lassificar por tipo" , ID_VIEW_SORT_TYPE + MENUITEM "Cl&assificar por tamanho" , ID_VIEW_SORT_SIZE + MENUITEM "Cla&ssificar por &data" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Classificar &por..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/resource.h --- trunk/reactos/subsys/system/winefile/resource.h 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/resource.h 2005-05-14 18:57:07 UTC (rev 15283) @@ -49,6 +49,10 @@
#define ID_VIEW_NAME 401 #define ID_VIEW_ALL_ATTRIBUTES 402 #define ID_VIEW_SELECTED_ATTRIBUTES 403 +#define ID_VIEW_SORT_NAME 404 +#define ID_VIEW_SORT_TYPE 405 +#define ID_VIEW_SORT_SIZE 406 +#define ID_VIEW_SORT_DATE 407 #define ID_SELECT_FONT 510 #define ID_VIEW_TOOL_BAR 508 #define ID_VIEW_DRIVE_BAR 507 _____
Modified: trunk/reactos/subsys/system/winefile/ru.rc --- trunk/reactos/subsys/system/winefile/ru.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/ru.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -89,10 +89,10 @@
MENUITEM "?&±Õ ´¯õ¯ßݯ±?Þ ¯ ¶ÓÚÙÕ" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&?¹ß¯¯¸Ý¯ ¯ ¶ÓÚÙÕ..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Я?Þ¯ÔÓ?³ ´¯ ÞýÕÝÞ" , 404 - MENUITEM "Я?Þ¯ÔÓ?³ ´¯ &?Þ´¾" , 405 - MENUITEM "Я?Þ¯ÔÓ?³ ´¯ &ÓþýÕ¾" , 406 - MENUITEM "Я?Þ¯ÔÓ?³ ´¯ õ&Ó?Õ" , 407 + MENUITEM "&Я?Þ¯ÔÓ?³ ´¯ ÞýÕÝÞ" , ID_VIEW_SORT_NAME + MENUITEM "Я?Þ¯ÔÓ?³ ´¯ &?Þ´¾" , ID_VIEW_SORT_TYPE + MENUITEM "Я?Þ¯ÔÓ?³ ´¯ &ÓþýÕ¾" , ID_VIEW_SORT_SIZE + MENUITEM "Я?Þ¯ÔÓ?³ ´¯ õ&Ó?Õ" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "Я?Þ¯ÔÓ?³ ´¯ &..." , 409 } _____
Modified: trunk/reactos/subsys/system/winefile/si.rc --- trunk/reactos/subsys/system/winefile/si.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/si.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -90,12 +90,12 @@
MENUITEM "&All File Details" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "&Partial Details..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "&Sort by Name" , 404 - MENUITEM "Sort &by Type" , 405 - MENUITEM "Sort by Si&ze" , 406 - MENUITEM "Sort by &Date" , 407 + MENUITEM "&Sort by Name" , ID_VIEW_SORT_NAME + MENUITEM "Sort &by Type" , ID_VIEW_SORT_TYPE + MENUITEM "Sort by Si&ze" , ID_VIEW_SORT_SIZE + MENUITEM "Sort by &Date" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR - MENUITEM "Sort by &..." , 409 + MENUITEM "Filter by &..." , 409 }
POPUP "&Options" { _____
Modified: trunk/reactos/subsys/system/winefile/winefile.c --- trunk/reactos/subsys/system/winefile/winefile.c 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/winefile.c 2005-05-14 18:57:07 UTC (rev 15283) @@ -200,7 +200,8 @@
static void read_directory(Entry* dir, LPCTSTR path, SORT_ORDER sortOrder, HWND hwnd); -static void set_curdir(ChildWnd* child, Entry* entry, HWND hwnd); +static void set_curdir(ChildWnd* child, Entry* entry, int idx, HWND hwnd); +static void refresh_child(ChildWnd* child); static void get_path(Entry* dir, PTSTR path);
LRESULT CALLBACK FrameWndProc(HWND hwnd, UINT nmsg, WPARAM wparam, LPARAM lparam); @@ -1319,10 +1320,57 @@ }
-static ChildWnd* alloc_child_window(LPCTSTR path, LPITEMIDLIST pidl, HWND hwnd) +static Entry* read_tree(Root* root, LPCTSTR path, LPITEMIDLIST pidl, LPTSTR drv, SORT_ORDER sortOrder, HWND hwnd) { const static TCHAR sBackslash[] = {'\', '\0'}; + +#ifdef _SHELL_FOLDERS + if (pidl) + { + /* read shell namespace tree */ + root->drive_type = DRIVE_UNKNOWN; + drv[0] = '\'; + drv[1] = '\0'; + load_string(root->volname, IDS_DESKTOP); + root->fs_flags = 0; + load_string(root->fs, IDS_SHELL); + + return read_tree_shell(root, pidl, sortOrder, hwnd); + } + else +#endif #if !defined(_NO_EXTENSIONS) && defined(__WINE__) + if (*path == '/') + { + /* read unix file system tree */ + root->drive_type = GetDriveType(path); + + lstrcat(drv, sSlash); + load_string(root->volname, IDS_ROOT_FS); + root->fs_flags = 0; + load_string(root->fs, IDS_UNIXFS); + + lstrcpy(root->path, sSlash); + + return read_tree_unix(root, path, sortOrder, hwnd); + } +#endif + + /* read WIN32 file system tree */ + root->drive_type = GetDriveType(path); + + lstrcat(drv, sBackslash); + GetVolumeInformation(drv, root->volname, _MAX_FNAME, 0, 0, &root->fs_flags, root->fs, _MAX_DIR); + + lstrcpy(root->path, drv); + + return read_tree_win(root, path, sortOrder, hwnd); +} + + +static ChildWnd* alloc_child_window(LPCTSTR path, LPITEMIDLIST pidl, HWND hwnd) +{ +#if !defined(_NO_EXTENSIONS) && defined(__WINE__) const static TCHAR sSlash[] = {'/', '\0'}; #endif
@@ -1367,45 +1415,8 @@
root->entry.level = 0;
-#ifdef _SHELL_FOLDERS - if (pidl) - { - root->drive_type = DRIVE_UNKNOWN; - drv[0] = '\'; - drv[1] = '\0'; - load_string(root->volname, IDS_DESKTOP); - root->fs_flags = 0; - load_string(root->fs, IDS_SHELL); + entry = read_tree(root, path, pidl, drv, child->sortOrder, hwnd);
- entry = read_tree_shell(root, pidl, child->sortOrder, hwnd); - } - else -#endif -#if !defined(_NO_EXTENSIONS) && defined(__WINE__) - if (*path == '/') - { - root->drive_type = GetDriveType(path); - - lstrcat(drv, sSlash); - load_string(root->volname, IDS_ROOT_FS); - root->fs_flags = 0; - load_string(root->fs, IDS_UNIXFS); - - lstrcpy(root->path, sSlash); - entry = read_tree_unix(root, path, child->sortOrder, hwnd); - } - else -#endif - { - root->drive_type = GetDriveType(path); - - lstrcat(drv, sBackslash); - GetVolumeInformation(drv, root->volname, _MAX_FNAME, 0, 0, &root->fs_flags, root->fs, _MAX_DIR); - - lstrcpy(root->path, drv); - entry = read_tree_win(root, path, child->sortOrder, hwnd); - } - #ifdef _SHELL_FOLDERS if (root->entry.etype == ET_SHELL) load_string(root->entry.data.cFileName, IDS_DESKTOP); @@ -1418,7 +1429,7 @@ child->left.root = &root->entry; child->right.root = NULL;
- set_curdir(child, entry, hwnd); + set_curdir(child, entry, 0, hwnd);
return child; } @@ -1610,7 +1621,8 @@
ListBox_SetItemHeight(child->left.hwnd, 1, max(Globals.spaceSize.cy,IMAGE_HEIGHT+3)); ListBox_SetItemHeight(child->right.hwnd, 1, max(Globals.spaceSize.cy,IMAGE_HEIGHT+3)); - idx = ListBox_FindItemData(child->left.hwnd, ListBox_GetCurSel(child->left.hwnd), child->left.cur); + + idx = ListBox_FindItemData(child->left.hwnd, 0, child->left.cur); ListBox_SetCurSel(child->left.hwnd, idx);
return child->hwnd; @@ -1873,6 +1885,13 @@ PostQuitMessage(0); break;
+ case WM_INITMENUPOPUP: { + HWND hwndClient = (HWND) SendMessage(Globals.hmdiclient, WM_MDIGETACTIVE, 0, 0); + + if (!SendMessage(hwndClient, WM_INITMENUPOPUP, wparam, lparam)) + return 0; + break;} + case WM_COMMAND: { UINT cmd = LOWORD(wparam); HWND hwndClient = (HWND) SendMessage(Globals.hmdiclient, WM_MDIGETACTIVE, 0, 0); @@ -3188,10 +3207,9 @@ #endif /* _NO_EXTENSIONS */
-static void scan_entry(ChildWnd* child, Entry* entry, HWND hwnd) +static void scan_entry(ChildWnd* child, Entry* entry, int idx, HWND hwnd) { TCHAR path[MAX_PATH]; - int idx = ListBox_GetCurSel(child->left.hwnd); HCURSOR old_cursor = SetCursor(LoadCursor(0, IDC_WAIT));
/* delete sub entries in left pane */ @@ -3305,7 +3323,7 @@ }
-static void set_curdir(ChildWnd* child, Entry* entry, HWND hwnd) +static void set_curdir(ChildWnd* child, Entry* entry, int idx, HWND hwnd) { TCHAR path[MAX_PATH];
@@ -3316,7 +3334,7 @@ child->right.cur = entry;
if (!entry->scanned) - scan_entry(child, entry, hwnd); + scan_entry(child, entry, idx, hwnd); else { ListBox_ResetContent(child->right.hwnd); insert_entries(&child->right, entry->down, -1); @@ -3338,6 +3356,30 @@ }
+static void refresh_child(ChildWnd* child) +{ + TCHAR path[MAX_PATH], drv[_MAX_DRIVE+1]; + Entry* entry; + int idx; + + get_path(child->left.cur, path); + _tsplitpath(path, drv, NULL, NULL, NULL); + + child->right.root = NULL; + + scan_entry(child, &child->root.entry, 0, child->hwnd); + + entry = read_tree(&child->root, path, NULL, drv, child->sortOrder, child->hwnd); + + insert_entries(&child->left, child->root.entry.down, 0); + + set_curdir(child, entry, 0, child->hwnd); + + idx = ListBox_FindItemData(child->left.hwnd, 0, child->left.cur); + ListBox_SetCurSel(child->left.hwnd, idx); +} + + BOOL launch_file(HWND hwnd, LPCTSTR cmd, UINT nCmdShow) { HINSTANCE hinst = ShellExecute(hwnd, NULL/*operation*/, cmd, NULL/*parameters*/, NULL/*dir*/, nCmdShow); @@ -3415,7 +3457,7 @@ int scanned_old = entry->scanned;
if (!scanned_old) - scan_entry(child, entry, hwnd); + scan_entry(child, entry, ListBox_GetCurSel(child->left.hwnd), hwnd);
#ifndef _NO_EXTENSIONS if (entry->data.cFileName[0]=='.' && entry->data.cFileName[1]=='\0') @@ -3434,7 +3476,7 @@ if (!pane->treePane) focus_entry: { int idx = ListBox_FindItemData(child->left.hwnd, ListBox_GetCurSel(child->left.hwnd), entry); ListBox_SetCurSel(child->left.hwnd, idx); - set_curdir(child, entry, hwnd); + set_curdir(child, entry, idx, hwnd); } }
@@ -3500,6 +3542,23 @@ }
+static void set_sort_order(ChildWnd* child, SORT_ORDER sortOrder) +{ + if (child->sortOrder != sortOrder) { + child->sortOrder = sortOrder; + refresh_child(child); + } +} + +static void update_view_menu(ChildWnd* child) +{ + CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_NAME, child->sortOrder==SORT_NAME? MF_CHECKED: MF_UNCHECKED); + CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_TYPE, child->sortOrder==SORT_EXT? MF_CHECKED: MF_UNCHECKED); + CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_SIZE, child->sortOrder==SORT_SIZE? MF_CHECKED: MF_UNCHECKED); + CheckMenuItem(Globals.hMenuView, ID_VIEW_SORT_DATE, child->sortOrder==SORT_DATE? MF_CHECKED: MF_UNCHECKED); +} + + static IContextMenu2* s_pctxmenu2 = NULL;
#ifndef __MINGW32__ /* IContextMenu3 missing in MinGW (as of 6.2.2005) */ @@ -3781,7 +3840,7 @@ break;}
case ID_REFRESH: - scan_entry(child, pane->cur, hwnd); + refresh_child(child); break;
case ID_ACTIVATE: @@ -3818,12 +3877,28 @@
activate_entry(child, pane, hwnd); } else - scan_entry(child, pane->root, hwnd); + refresh_child(child); } else display_error(hwnd, GetLastError()); break;}
+ case ID_VIEW_SORT_NAME: + set_sort_order(child, SORT_NAME); + break; + + case ID_VIEW_SORT_TYPE: + set_sort_order(child, SORT_EXT); + break; + + case ID_VIEW_SORT_SIZE: + set_sort_order(child, SORT_SIZE); + break; + + case ID_VIEW_SORT_DATE: + set_sort_order(child, SORT_DATE); + break; + default: return pane_command(pane, LOWORD(wparam)); } @@ -3839,7 +3914,7 @@ Entry* entry = (Entry*) ListBox_GetItemData(pane->hwnd, idx);
if (pane == &child->left) - set_curdir(child, entry, hwnd); + set_curdir(child, entry, idx, hwnd); else pane->cur = entry; break;} @@ -3909,6 +3984,7 @@ if (CtxMenu_HandleMenuMsg(nmsg, wparam, lparam)) return 0;
+ update_view_menu(child); break;
#ifndef __MINGW32__ /* IContextMenu3 missing in MinGW (as of 6.2.2005) */ _____
Modified: trunk/reactos/subsys/system/winefile/zh.rc --- trunk/reactos/subsys/system/winefile/zh.rc 2005-05-14 18:04:53 UTC (rev 15282) +++ trunk/reactos/subsys/system/winefile/zh.rc 2005-05-14 18:57:07 UTC (rev 15283) @@ -90,10 +90,10 @@
MENUITEM "????¤Û¤ñ?ð?Ýú¿&Aú®" , ID_VIEW_ALL_ATTRIBUTES, CHECKED MENUITEM "??ÀÍ?¶ðÈú¿&Pú®..." , ID_VIEW_SELECTED_ATTRIBUTES MENUITEM SEPARATOR - MENUITEM "???????¹??ð?ú¿&Sú®" , 404 - MENUITEM "???Óð???ð?ú¿&Bú®" , 405 - MENUITEM "???¾ðí??ð?ú¿&Zú®" , 406 - MENUITEM "???iã???ð?ú¿&Dú®" , 407 + MENUITEM "???????¹??ð?ú¿&Sú®" , ID_VIEW_SORT_NAME + MENUITEM "???Óð???ð?ú¿&Bú®" , ID_VIEW_SORT_TYPE + MENUITEM "???¾ðí??ð?ú¿&Zú®" , ID_VIEW_SORT_SIZE + MENUITEM "???iã???ð?ú¿&Dú®" , ID_VIEW_SORT_DATE MENUITEM SEPARATOR MENUITEM "¿Íã??ð?..." , 409 }