https://git.reactos.org/?p=reactos.git;a=commitdiff;h=4a0f0ddbd71d66f8ee5adf21db326e8be8ef0510
commit 4a0f0ddbd71d66f8ee5adf21db326e8be8ef0510 Author: Whindmar Saksit <whinds...@proton.me> AuthorDate: Wed Mar 5 13:40:10 2025 +0100 Commit: GitHub <nore...@github.com> CommitDate: Wed Mar 5 13:40:10 2025 +0100 Implement GetDefaultColumn and GetClassID (#7750) --- dll/shellext/zipfldr/CZipFolder.hpp | 38 +++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/dll/shellext/zipfldr/CZipFolder.hpp b/dll/shellext/zipfldr/CZipFolder.hpp index cb98f68deb5..8e5f86693d8 100644 --- a/dll/shellext/zipfldr/CZipFolder.hpp +++ b/dll/shellext/zipfldr/CZipFolder.hpp @@ -6,6 +6,17 @@ * Copyright 2023 Katayama Hirofumi MZ (katayama.hirofumi...@gmail.com) */ +enum FOLDERCOLUMN +{ + COL_NAME = 0, + COL_TYPE, + COL_COMPRSIZE, + COL_PASSWORD, + COL_SIZE, + COL_RATIO, + COL_DATE_MOD, +}; + struct FolderViewColumns { int iResource; @@ -84,8 +95,11 @@ public: } STDMETHODIMP GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay) { - UNIMPLEMENTED; - return E_NOTIMPL; + if (pSort) + *pSort = COL_NAME; + if (pDisplay) + *pDisplay = COL_NAME; + return S_OK; } STDMETHODIMP GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags) { @@ -155,9 +169,9 @@ public: bool isDir = zipEntry->ZipType == ZIP_PIDL_DIRECTORY; switch (iColumn) { - case 0: /* Name, ReactOS specific? */ + case COL_NAME: return GetDisplayNameOf(pidl, 0, &psd->str); - case 1: /* Type */ + case COL_TYPE: { SHFILEINFOW shfi; DWORD dwAttributes = isDir ? FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_NORMAL; @@ -166,22 +180,22 @@ public: return E_FAIL; return SHSetStrRet(&psd->str, shfi.szTypeName); } - case 2: /* Compressed size */ - case 4: /* Size */ + case COL_COMPRSIZE: + case COL_SIZE: { if (isDir) return SHSetStrRet(&psd->str, L""); - ULONG64 Size = iColumn == 2 ? zipEntry->CompressedSize : zipEntry->UncompressedSize; + ULONG64 Size = iColumn == COL_COMPRSIZE ? zipEntry->CompressedSize : zipEntry->UncompressedSize; if (!StrFormatByteSizeW(Size, Buffer, _countof(Buffer))) return E_FAIL; return SHSetStrRet(&psd->str, Buffer); } - case 3: /* Password */ + case COL_PASSWORD: if (isDir) return SHSetStrRet(&psd->str, L""); return SHSetStrRet(&psd->str, _AtlBaseModule.GetResourceInstance(), zipEntry->Password ? IDS_YES : IDS_NO); - case 5: /* Ratio */ + case COL_RATIO: { if (isDir) return SHSetStrRet(&psd->str, L""); @@ -192,7 +206,7 @@ public: StringCchPrintfW(Buffer, _countof(Buffer), L"%d%%", ratio); return SHSetStrRet(&psd->str, Buffer); } - case 6: /* Date */ + case COL_DATE_MOD: { if (isDir) return SHSetStrRet(&psd->str, L""); @@ -610,8 +624,8 @@ public: // *** IPersist methods *** STDMETHODIMP GetClassID(CLSID *lpClassId) { - DbgPrint("%s\n", __FUNCTION__); - return E_NOTIMPL; + *lpClassId = CLSID_ZipFolderStorageHandler; + return S_OK; }