3 #ifndef __IFOLDER_ARCHIVE_H
\r
4 #define __IFOLDER_ARCHIVE_H
\r
6 #include "../../IDecl.h"
\r
7 #include "../../Archive/IArchive.h"
\r
8 #include "../../UI/Common/LoadCodecs.h"
\r
9 #include "../../UI/FileManager/IFolder.h"
\r
11 #include "../Common/ExtractMode.h"
\r
12 #include "../Common/IFileExtractCallback.h"
\r
14 #define FOLDER_ARCHIVE_INTERFACE_SUB(i, base, x) DECL_INTERFACE_SUB(i, base, 0x01, x)
\r
15 #define FOLDER_ARCHIVE_INTERFACE(i, x) FOLDER_ARCHIVE_INTERFACE_SUB(i, IUnknown, x)
\r
17 #define INTERFACE_IArchiveFolder(x) \
\r
18 STDMETHOD(Extract)(const UInt32 *indices, UInt32 numItems, \
\r
19 NExtract::NPathMode::EEnum pathMode, \
\r
20 NExtract::NOverwriteMode::EEnum overwriteMode, \
\r
21 const wchar_t *path, Int32 testMode, \
\r
22 IFolderArchiveExtractCallback *extractCallback2) x; \
\r
24 FOLDER_ARCHIVE_INTERFACE(IArchiveFolder, 0x05)
\r
26 INTERFACE_IArchiveFolder(PURE)
\r
29 #define INTERFACE_IInFolderArchive(x) \
\r
30 STDMETHOD(Open)(IInStream *inStream, const wchar_t *filePath, const wchar_t *arcFormat, BSTR *archiveTypeRes, IArchiveOpenCallback *openArchiveCallback) x; \
\r
31 STDMETHOD(ReOpen)(IArchiveOpenCallback *openArchiveCallback) x; \
\r
32 STDMETHOD(Close)() x; \
\r
33 STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties) x; \
\r
34 STDMETHOD(GetPropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) x; \
\r
35 STDMETHOD(BindToRootFolder)(IFolderFolder **resultFolder) x; \
\r
36 STDMETHOD(Extract)(NExtract::NPathMode::EEnum pathMode, \
\r
37 NExtract::NOverwriteMode::EEnum overwriteMode, const wchar_t *path, \
\r
38 Int32 testMode, IFolderArchiveExtractCallback *extractCallback2) x; \
\r
40 FOLDER_ARCHIVE_INTERFACE(IInFolderArchive, 0x0E)
\r
42 INTERFACE_IInFolderArchive(PURE)
\r
45 #define INTERFACE_IFolderArchiveUpdateCallback(x) \
\r
46 STDMETHOD(CompressOperation)(const wchar_t *name) x; \
\r
47 STDMETHOD(DeleteOperation)(const wchar_t *name) x; \
\r
48 STDMETHOD(OperationResult)(Int32 operationResult) x; \
\r
49 STDMETHOD(UpdateErrorMessage)(const wchar_t *message) x; \
\r
50 STDMETHOD(SetNumFiles)(UInt64 numFiles) x; \
\r
52 FOLDER_ARCHIVE_INTERFACE_SUB(IFolderArchiveUpdateCallback, IProgress, 0x0B)
\r
54 INTERFACE_IFolderArchiveUpdateCallback(PURE)
\r
57 #define INTERFACE_IOutFolderArchive(x) \
\r
58 STDMETHOD(SetFolder)(IFolderFolder *folder) x; \
\r
59 STDMETHOD(SetFiles)(const wchar_t *folderPrefix, const wchar_t **names, UInt32 numNames) x; \
\r
60 STDMETHOD(DeleteItems)(const wchar_t *newArchiveName, \
\r
61 const UInt32 *indices, UInt32 numItems, IFolderArchiveUpdateCallback *updateCallback) x; \
\r
62 STDMETHOD(DoOperation)(CCodecs *codecs, int index, \
\r
63 const wchar_t *newArchiveName, const Byte *stateActions, const wchar_t *sfxModule, \
\r
64 IFolderArchiveUpdateCallback *updateCallback) x; \
\r
65 STDMETHOD(DoOperation2)(const wchar_t *newArchiveName, const Byte *stateActions, \
\r
66 const wchar_t *sfxModule, IFolderArchiveUpdateCallback *updateCallback) x; \
\r
68 FOLDER_ARCHIVE_INTERFACE(IOutFolderArchive, 0x0A)
\r
70 INTERFACE_IOutFolderArchive(PURE)
\r