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