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