3 #ifndef __OPENARCHIVE_H
4 #define __OPENARCHIVE_H
6 #include "Common/MyString.h"
7 #include "Windows/FileFind.h"
9 #include "../../Archive/IArchive.h"
10 #include "LoadCodecs.h"
11 #include "ArchiveOpenCallback.h"
13 HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, UString &result);
14 HRESULT GetArchiveItemPath(IInArchive *archive, UInt32 index, const UString &defaultName, UString &result);
15 HRESULT GetArchiveItemFileTime(IInArchive *archive, UInt32 index,
16 const FILETIME &defaultFileTime, FILETIME &fileTime);
17 HRESULT IsArchiveItemProp(IInArchive *archive, UInt32 index, PROPID propID, bool &result);
18 HRESULT IsArchiveItemFolder(IInArchive *archive, UInt32 index, bool &result);
19 HRESULT IsArchiveItemAnti(IInArchive *archive, UInt32 index, bool &result);
21 struct ISetSubArchiveName
23 virtual void SetSubArchiveName(const wchar_t *name) = 0;
29 const UString &fileName,
30 IInArchive **archiveResult,
32 UString &defaultItemName,
33 IArchiveOpenCallback *openArchiveCallback);
37 const UString &filePath,
40 UString &defaultItemName,
41 IArchiveOpenCallback *openArchiveCallback);
45 const UString &filePath,
46 IInArchive **archive0,
47 IInArchive **archive1,
50 UString &defaultItemName0,
51 UString &defaultItemName1,
52 IArchiveOpenCallback *openArchiveCallback);
55 HRESULT ReOpenArchive(IInArchive *archive, const UString &fileName, IArchiveOpenCallback *openArchiveCallback);
57 HRESULT MyOpenArchive(
59 const UString &archiveName,
61 UString &defaultItemName,
62 IOpenCallbackUI *openCallbackUI);
64 HRESULT MyOpenArchive(
66 const UString &archiveName,
67 IInArchive **archive0,
68 IInArchive **archive1,
69 UString &defaultItemName0,
70 UString &defaultItemName1,
71 UStringVector &volumePaths,
73 IOpenCallbackUI *openCallbackUI);
77 CMyComPtr<IInArchive> Archive0;
78 CMyComPtr<IInArchive> Archive1;
79 UString DefaultItemName0;
80 UString DefaultItemName1;
85 UStringVector VolumePaths;
89 int GetNumLevels() const
103 CArchiveLink(): IsOpen(false), VolumesSize(0) {};
105 IInArchive *GetArchive() { return Archive1 != 0 ? Archive1: Archive0; }
106 UString GetDefaultItemName() { return Archive1 != 0 ? DefaultItemName1: DefaultItemName0; }
107 int GetArchiverIndex() const { return Archive1 != 0 ? FormatIndex1: FormatIndex0; }
114 const UString &archiveName,
115 CArchiveLink &archiveLink,
116 IArchiveOpenCallback *openCallback);
118 HRESULT MyOpenArchive(
120 const UString &archiveName,
121 CArchiveLink &archiveLink,
122 IOpenCallbackUI *openCallbackUI);
124 HRESULT ReOpenArchive(
126 CArchiveLink &archiveLink,
127 const UString &fileName);