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+
920struct 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