120 lines
4.4 KiB
C
120 lines
4.4 KiB
C
// IFolderArchive.h
|
|
|
|
#ifndef __IFOLDER_ARCHIVE_H
|
|
#define __IFOLDER_ARCHIVE_H
|
|
|
|
#include "../../../Common/MyString.h"
|
|
|
|
#include "../../Archive/IArchive.h"
|
|
#include "../../UI/Common/LoadCodecs.h"
|
|
#include "../../UI/FileManager/IFolder.h"
|
|
|
|
#include "../Common/ExtractMode.h"
|
|
#include "../Common/IFileExtractCallback.h"
|
|
|
|
#define FOLDER_ARCHIVE_INTERFACE_SUB(i, base, x) DECL_INTERFACE_SUB(i, base, 0x01, x)
|
|
#define FOLDER_ARCHIVE_INTERFACE(i, x) FOLDER_ARCHIVE_INTERFACE_SUB(i, IUnknown, x)
|
|
|
|
/* ---------- IArchiveFolder ----------
|
|
IArchiveFolder is implemented by CAgentFolder (Agent/Agent.h)
|
|
IArchiveFolder is used by:
|
|
- FileManager/PanelCopy.cpp
|
|
CPanel::CopyTo(), if (options->testMode)
|
|
- FAR/PluginRead.cpp
|
|
CPlugin::ExtractFiles
|
|
*/
|
|
|
|
#define INTERFACE_IArchiveFolder(x) \
|
|
STDMETHOD(Extract)(const UInt32 *indices, UInt32 numItems, \
|
|
Int32 includeAltStreams, \
|
|
Int32 replaceAltStreamCharsMode, \
|
|
NExtract::NPathMode::EEnum pathMode, \
|
|
NExtract::NOverwriteMode::EEnum overwriteMode, \
|
|
const wchar_t *path, Int32 testMode, \
|
|
IFolderArchiveExtractCallback *extractCallback2) x; \
|
|
|
|
FOLDER_ARCHIVE_INTERFACE(IArchiveFolder, 0x0D)
|
|
{
|
|
INTERFACE_IArchiveFolder(PURE)
|
|
};
|
|
|
|
|
|
/* ---------- IInFolderArchive ----------
|
|
IInFolderArchive is implemented by CAgent (Agent/Agent.h)
|
|
IInFolderArchive Is used by FAR/Plugin
|
|
*/
|
|
|
|
#define INTERFACE_IInFolderArchive(x) \
|
|
STDMETHOD(Open)(IInStream *inStream, const wchar_t *filePath, const wchar_t *arcFormat, BSTR *archiveTypeRes, IArchiveOpenCallback *openArchiveCallback) x; \
|
|
STDMETHOD(ReOpen)(IArchiveOpenCallback *openArchiveCallback) x; \
|
|
STDMETHOD(Close)() x; \
|
|
STDMETHOD(GetNumberOfProperties)(UInt32 *numProperties) x; \
|
|
STDMETHOD(GetPropertyInfo)(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType) x; \
|
|
STDMETHOD(BindToRootFolder)(IFolderFolder **resultFolder) x; \
|
|
STDMETHOD(Extract)(NExtract::NPathMode::EEnum pathMode, \
|
|
NExtract::NOverwriteMode::EEnum overwriteMode, const wchar_t *path, \
|
|
Int32 testMode, IFolderArchiveExtractCallback *extractCallback2) x; \
|
|
|
|
FOLDER_ARCHIVE_INTERFACE(IInFolderArchive, 0x0E)
|
|
{
|
|
INTERFACE_IInFolderArchive(PURE)
|
|
};
|
|
|
|
#define INTERFACE_IFolderArchiveUpdateCallback(x) \
|
|
STDMETHOD(CompressOperation)(const wchar_t *name) x; \
|
|
STDMETHOD(DeleteOperation)(const wchar_t *name) x; \
|
|
STDMETHOD(OperationResult)(Int32 opRes) x; \
|
|
STDMETHOD(UpdateErrorMessage)(const wchar_t *message) x; \
|
|
STDMETHOD(SetNumFiles)(UInt64 numFiles) x; \
|
|
|
|
FOLDER_ARCHIVE_INTERFACE_SUB(IFolderArchiveUpdateCallback, IProgress, 0x0B)
|
|
{
|
|
INTERFACE_IFolderArchiveUpdateCallback(PURE)
|
|
};
|
|
|
|
#define INTERFACE_IOutFolderArchive(x) \
|
|
STDMETHOD(SetFolder)(IFolderFolder *folder) x; \
|
|
STDMETHOD(SetFiles)(const wchar_t *folderPrefix, const wchar_t * const *names, UInt32 numNames) x; \
|
|
STDMETHOD(DeleteItems)(ISequentialOutStream *outArchiveStream, \
|
|
const UInt32 *indices, UInt32 numItems, IFolderArchiveUpdateCallback *updateCallback) x; \
|
|
STDMETHOD(DoOperation)( \
|
|
FStringVector *requestedPaths, \
|
|
FStringVector *processedPaths, \
|
|
CCodecs *codecs, int index, \
|
|
ISequentialOutStream *outArchiveStream, const Byte *stateActions, const wchar_t *sfxModule, \
|
|
IFolderArchiveUpdateCallback *updateCallback) x; \
|
|
STDMETHOD(DoOperation2)( \
|
|
FStringVector *requestedPaths, \
|
|
FStringVector *processedPaths, \
|
|
ISequentialOutStream *outArchiveStream, const Byte *stateActions, const wchar_t *sfxModule, \
|
|
IFolderArchiveUpdateCallback *updateCallback) x; \
|
|
|
|
FOLDER_ARCHIVE_INTERFACE(IOutFolderArchive, 0x0F)
|
|
{
|
|
INTERFACE_IOutFolderArchive(PURE)
|
|
};
|
|
|
|
|
|
#define INTERFACE_IFolderArchiveUpdateCallback2(x) \
|
|
STDMETHOD(OpenFileError)(const wchar_t *path, HRESULT errorCode) x; \
|
|
STDMETHOD(ReadingFileError)(const wchar_t *path, HRESULT errorCode) x; \
|
|
STDMETHOD(ReportExtractResult)(Int32 opRes, Int32 isEncrypted, const wchar_t *path) x; \
|
|
STDMETHOD(ReportUpdateOperation)(UInt32 notifyOp, const wchar_t *path, Int32 isDir) x; \
|
|
|
|
FOLDER_ARCHIVE_INTERFACE(IFolderArchiveUpdateCallback2, 0x10)
|
|
{
|
|
INTERFACE_IFolderArchiveUpdateCallback2(PURE)
|
|
};
|
|
|
|
|
|
#define INTERFACE_IFolderScanProgress(x) \
|
|
STDMETHOD(ScanError)(const wchar_t *path, HRESULT errorCode) x; \
|
|
STDMETHOD(ScanProgress)(UInt64 numFolders, UInt64 numFiles, UInt64 totalSize, const wchar_t *path, Int32 isDir) x; \
|
|
|
|
FOLDER_ARCHIVE_INTERFACE(IFolderScanProgress, 0x11)
|
|
{
|
|
INTERFACE_IFolderScanProgress(PURE)
|
|
};
|
|
|
|
#endif
|