xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/IFolder.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1 // IFolder.h
2 
3 #ifndef ZIP7_INC_IFOLDER_H
4 #define ZIP7_INC_IFOLDER_H
5 
6 #include "../../IProgress.h"
7 #include "../../IStream.h"
8 
9 Z7_PURE_INTERFACES_BEGIN
10 
11 #define Z7_IFACE_CONSTR_FOLDER_SUB(i, base, n) \
12   Z7_DECL_IFACE_7ZIP_SUB(i, base, 8, n) \
13   { Z7_IFACE_COM7_PURE(i) };
14 
15 #define Z7_IFACE_CONSTR_FOLDER(i, n) \
16         Z7_IFACE_CONSTR_FOLDER_SUB(i, IUnknown, n)
17 
18 namespace NPlugin
19 {
20   enum
21   {
22     kName = 0,
23     kType,
24     kClassID,
25     kOptionsClassID
26   };
27 }
28 
29 #define Z7_IFACEM_IFolderFolder(x) \
30   x(LoadItems()) \
31   x(GetNumberOfItems(UInt32 *numItems)) \
32   x(GetProperty(UInt32 itemIndex, PROPID propID, PROPVARIANT *value)) \
33   x(BindToFolder(UInt32 index, IFolderFolder **resultFolder)) \
34   x(BindToFolder(const wchar_t *name, IFolderFolder **resultFolder)) \
35   x(BindToParentFolder(IFolderFolder **resultFolder)) \
36   x(GetNumberOfProperties(UInt32 *numProperties)) \
37   x(GetPropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
38   x(GetFolderProperty(PROPID propID, PROPVARIANT *value)) \
39 
40 Z7_IFACE_CONSTR_FOLDER(IFolderFolder, 0x00)
41 
42 /*
43   IFolderAltStreams::
44     BindToAltStreams((UInt32)(Int32)-1, ... ) means alt streams of that folder
45 */
46 
47 #define Z7_IFACEM_IFolderAltStreams(x) \
48   x(BindToAltStreams(UInt32 index, IFolderFolder **resultFolder)) \
49   x(BindToAltStreams(const wchar_t *name, IFolderFolder **resultFolder)) \
50   x(AreAltStreamsSupported(UInt32 index, Int32 *isSupported)) \
51 
52 Z7_IFACE_CONSTR_FOLDER(IFolderAltStreams, 0x17)
53 
54 #define Z7_IFACEM_IFolderWasChanged(x) \
55   x(WasChanged(Int32 *wasChanged))
56 Z7_IFACE_CONSTR_FOLDER(IFolderWasChanged, 0x04)
57 
58   /* x(SetTotalFiles(UInt64 total)) */ \
59   /* x(SetCompletedFiles(const UInt64 *completedValue)) */ \
60 #define Z7_IFACEM_IFolderOperationsExtractCallback(x) \
61   x(AskWrite( \
62       const wchar_t *srcPath, \
63       Int32 srcIsFolder, \
64       const FILETIME *srcTime, \
65       const UInt64 *srcSize, \
66       const wchar_t *destPathRequest, \
67       BSTR *destPathResult, \
68       Int32 *writeAnswer)) \
69   x(ShowMessage(const wchar_t *message)) \
70   x(SetCurrentFilePath(const wchar_t *filePath)) \
71   x(SetNumFiles(UInt64 numFiles)) \
72 
73 Z7_IFACE_CONSTR_FOLDER_SUB(IFolderOperationsExtractCallback, IProgress, 0x0B)
74 
75 
76 #define Z7_IFACEM_IFolderOperations(x) \
77   x(CreateFolder(const wchar_t *name, IProgress *progress)) \
78   x(CreateFile(const wchar_t *name, IProgress *progress)) \
79   x(Rename(UInt32 index, const wchar_t *newName, IProgress *progress)) \
80   x(Delete(const UInt32 *indices, UInt32 numItems, IProgress *progress)) \
81   x(CopyTo(Int32 moveMode, const UInt32 *indices, UInt32 numItems, \
82       Int32 includeAltStreams, Int32 replaceAltStreamCharsMode, \
83       const wchar_t *path, IFolderOperationsExtractCallback *callback)) \
84   x(CopyFrom(Int32 moveMode, const wchar_t *fromFolderPath, \
85       const wchar_t * const *itemsPaths, UInt32 numItems, IProgress *progress)) \
86   x(SetProperty(UInt32 index, PROPID propID, const PROPVARIANT *value, IProgress *progress)) \
87   x(CopyFromFile(UInt32 index, const wchar_t *fullFilePath, IProgress *progress)) \
88 
89 Z7_IFACE_CONSTR_FOLDER(IFolderOperations, 0x13)
90 
91 /*
92 FOLDER_INTERFACE2(IFolderOperationsDeleteToRecycleBin, 0x06, 0x03)
93 {
94   x(DeleteToRecycleBin(const UInt32 *indices, UInt32 numItems, IProgress *progress)) \
95 };
96 */
97 
98 #define Z7_IFACEM_IFolderGetSystemIconIndex(x) \
99   x(GetSystemIconIndex(UInt32 index, Int32 *iconIndex))
100 Z7_IFACE_CONSTR_FOLDER(IFolderGetSystemIconIndex, 0x07)
101 
102 #define Z7_IFACEM_IFolderGetItemFullSize(x) \
103   x(GetItemFullSize(UInt32 index, PROPVARIANT *value, IProgress *progress))
104 Z7_IFACE_CONSTR_FOLDER(IFolderGetItemFullSize, 0x08)
105 
106 #define Z7_IFACEM_IFolderCalcItemFullSize(x) \
107   x(CalcItemFullSize(UInt32 index, IProgress *progress))
108 Z7_IFACE_CONSTR_FOLDER(IFolderCalcItemFullSize, 0x14)
109 
110 #define Z7_IFACEM_IFolderClone(x) \
111   x(Clone(IFolderFolder **resultFolder))
112 Z7_IFACE_CONSTR_FOLDER(IFolderClone, 0x09)
113 
114 #define Z7_IFACEM_IFolderSetFlatMode(x) \
115   x(SetFlatMode(Int32 flatMode))
116 Z7_IFACE_CONSTR_FOLDER(IFolderSetFlatMode, 0x0A)
117 
118 /*
119 #define Z7_IFACEM_IFolderSetShowNtfsStreamsMode(x) \
120   x(SetShowNtfsStreamsMode(Int32 showStreamsMode))
121 Z7_IFACE_CONSTR_FOLDER(IFolderSetShowNtfsStreamsMode, 0xFA)
122 */
123 
124 #define Z7_IFACEM_IFolderProperties(x) \
125   x(GetNumberOfFolderProperties(UInt32 *numProperties)) \
126   x(GetFolderPropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
127 
128 Z7_IFACE_CONSTR_FOLDER(IFolderProperties, 0x0E)
129 
130 #define Z7_IFACEM_IFolderArcProps(x) \
131   x(GetArcNumLevels(UInt32 *numLevels)) \
132   x(GetArcProp(UInt32 level, PROPID propID, PROPVARIANT *value)) \
133   x(GetArcNumProps(UInt32 level, UInt32 *numProps)) \
134   x(GetArcPropInfo(UInt32 level, UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
135   x(GetArcProp2(UInt32 level, PROPID propID, PROPVARIANT *value)) \
136   x(GetArcNumProps2(UInt32 level, UInt32 *numProps)) \
137   x(GetArcPropInfo2(UInt32 level, UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
138 
139 Z7_IFACE_CONSTR_FOLDER(IFolderArcProps, 0x10)
140 
141 #define Z7_IFACEM_IGetFolderArcProps(x) \
142   x(GetFolderArcProps(IFolderArcProps **object))
143 Z7_IFACE_CONSTR_FOLDER(IGetFolderArcProps, 0x11)
144 
145 #define Z7_IFACEM_IFolderCompare(x) \
146   x##2(Int32, CompareItems(UInt32 index1, UInt32 index2, PROPID propID, Int32 propIsRaw))
147 Z7_IFACE_CONSTR_FOLDER(IFolderCompare, 0x15)
148 
149 #define Z7_IFACEM_IFolderGetItemName(x) \
150   x(GetItemName(UInt32 index, const wchar_t **name, unsigned *len)) \
151   x(GetItemPrefix(UInt32 index, const wchar_t **name, unsigned *len)) \
152   x##2(UInt64, GetItemSize(UInt32 index)) \
153 
154 Z7_IFACE_CONSTR_FOLDER(IFolderGetItemName, 0x16)
155 
156 
157 #define Z7_IFACEM_IFolderManager(x) \
158   x(OpenFolderFile(IInStream *inStream, const wchar_t *filePath, const wchar_t *arcFormat, IFolderFolder **resultFolder, IProgress *progress)) \
159   x(GetExtensions(BSTR *extensions)) \
160   x(GetIconPath(const wchar_t *ext, BSTR *iconPath, Int32 *iconIndex)) \
161 
162   // x(GetTypes(BSTR *types))
163   // x(CreateFolderFile(const wchar_t *type, const wchar_t *filePath, IProgress *progress))
164 
165 Z7_DECL_IFACE_7ZIP(IFolderManager, 9, 5)
166   { Z7_IFACE_COM7_PURE(IFolderManager) };
167 
168 /*
169     const CMy_STATPROPSTG_2 &srcItem = k[index]; \
170     *propID = srcItem.propid; *varType = srcItem.vt; *name = 0; return S_OK; } \
171 */
172 #define IMP_IFolderFolder_GetProp(fn, k) \
173   Z7_COM7F_IMF(fn(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \
174     { if (index >= Z7_ARRAY_SIZE(k)) return E_INVALIDARG; \
175     *propID = k[index]; *varType = k7z_PROPID_To_VARTYPE[(unsigned)*propID]; *name = NULL; return S_OK; } \
176 
177 #define IMP_IFolderFolder_Props(c) \
178   Z7_COM7F_IMF(c::GetNumberOfProperties(UInt32 *numProperties)) \
179     { *numProperties = Z7_ARRAY_SIZE(kProps); return S_OK; } \
180   IMP_IFolderFolder_GetProp(c::GetPropertyInfo, kProps)
181 
182 
183 int CompareFileNames_ForFolderList(const wchar_t *s1, const wchar_t *s2);
184 // int CompareFileNames_ForFolderList(const FChar *s1, const FChar *s2);
185 
186 Z7_PURE_INTERFACES_END
187 #endif
188