Skip to content

Commit 4a0f0dd

Browse files
authored
Implement GetDefaultColumn and GetClassID (reactos#7750)
1 parent a8cd1ea commit 4a0f0dd

File tree

1 file changed

+26
-12
lines changed

1 file changed

+26
-12
lines changed

dll/shellext/zipfldr/CZipFolder.hpp

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@
66
* Copyright 2023 Katayama Hirofumi MZ ([email protected])
77
*/
88

9+
enum FOLDERCOLUMN
10+
{
11+
COL_NAME = 0,
12+
COL_TYPE,
13+
COL_COMPRSIZE,
14+
COL_PASSWORD,
15+
COL_SIZE,
16+
COL_RATIO,
17+
COL_DATE_MOD,
18+
};
19+
920
struct FolderViewColumns
1021
{
1122
int iResource;
@@ -84,8 +95,11 @@ class CZipFolder :
8495
}
8596
STDMETHODIMP GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay)
8697
{
87-
UNIMPLEMENTED;
88-
return E_NOTIMPL;
98+
if (pSort)
99+
*pSort = COL_NAME;
100+
if (pDisplay)
101+
*pDisplay = COL_NAME;
102+
return S_OK;
89103
}
90104
STDMETHODIMP GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags)
91105
{
@@ -155,9 +169,9 @@ class CZipFolder :
155169
bool isDir = zipEntry->ZipType == ZIP_PIDL_DIRECTORY;
156170
switch (iColumn)
157171
{
158-
case 0: /* Name, ReactOS specific? */
172+
case COL_NAME:
159173
return GetDisplayNameOf(pidl, 0, &psd->str);
160-
case 1: /* Type */
174+
case COL_TYPE:
161175
{
162176
SHFILEINFOW shfi;
163177
DWORD dwAttributes = isDir ? FILE_ATTRIBUTE_DIRECTORY : FILE_ATTRIBUTE_NORMAL;
@@ -166,22 +180,22 @@ class CZipFolder :
166180
return E_FAIL;
167181
return SHSetStrRet(&psd->str, shfi.szTypeName);
168182
}
169-
case 2: /* Compressed size */
170-
case 4: /* Size */
183+
case COL_COMPRSIZE:
184+
case COL_SIZE:
171185
{
172186
if (isDir)
173187
return SHSetStrRet(&psd->str, L"");
174188

175-
ULONG64 Size = iColumn == 2 ? zipEntry->CompressedSize : zipEntry->UncompressedSize;
189+
ULONG64 Size = iColumn == COL_COMPRSIZE ? zipEntry->CompressedSize : zipEntry->UncompressedSize;
176190
if (!StrFormatByteSizeW(Size, Buffer, _countof(Buffer)))
177191
return E_FAIL;
178192
return SHSetStrRet(&psd->str, Buffer);
179193
}
180-
case 3: /* Password */
194+
case COL_PASSWORD:
181195
if (isDir)
182196
return SHSetStrRet(&psd->str, L"");
183197
return SHSetStrRet(&psd->str, _AtlBaseModule.GetResourceInstance(), zipEntry->Password ? IDS_YES : IDS_NO);
184-
case 5: /* Ratio */
198+
case COL_RATIO:
185199
{
186200
if (isDir)
187201
return SHSetStrRet(&psd->str, L"");
@@ -192,7 +206,7 @@ class CZipFolder :
192206
StringCchPrintfW(Buffer, _countof(Buffer), L"%d%%", ratio);
193207
return SHSetStrRet(&psd->str, Buffer);
194208
}
195-
case 6: /* Date */
209+
case COL_DATE_MOD:
196210
{
197211
if (isDir)
198212
return SHSetStrRet(&psd->str, L"");
@@ -610,8 +624,8 @@ class CZipFolder :
610624
// *** IPersist methods ***
611625
STDMETHODIMP GetClassID(CLSID *lpClassId)
612626
{
613-
DbgPrint("%s\n", __FUNCTION__);
614-
return E_NOTIMPL;
627+
*lpClassId = CLSID_ZipFolderStorageHandler;
628+
return S_OK;
615629
}
616630

617631

0 commit comments

Comments
 (0)