1*f6dc9357SAndroid Build Coastguard Worker // AltStreamsFolder.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ALT_STREAMS_FOLDER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ALT_STREAMS_FOLDER_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyCom.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/FileFind.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "../../Archive/IArchive.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #include "IFolder.h" 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker namespace NAltStreamsFolder { 15*f6dc9357SAndroid Build Coastguard Worker 16*f6dc9357SAndroid Build Coastguard Worker class CAltStreamsFolder; 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker struct CAltStream 19*f6dc9357SAndroid Build Coastguard Worker { 20*f6dc9357SAndroid Build Coastguard Worker UInt64 Size; 21*f6dc9357SAndroid Build Coastguard Worker UInt64 PackSize; 22*f6dc9357SAndroid Build Coastguard Worker bool PackSize_Defined; 23*f6dc9357SAndroid Build Coastguard Worker UString Name; 24*f6dc9357SAndroid Build Coastguard Worker }; 25*f6dc9357SAndroid Build Coastguard Worker 26*f6dc9357SAndroid Build Coastguard Worker 27*f6dc9357SAndroid Build Coastguard Worker class CAltStreamsFolder Z7_final: 28*f6dc9357SAndroid Build Coastguard Worker public IFolderFolder, 29*f6dc9357SAndroid Build Coastguard Worker public IFolderCompare, 30*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_UNICODE_FSTRING 31*f6dc9357SAndroid Build Coastguard Worker public IFolderGetItemName, 32*f6dc9357SAndroid Build Coastguard Worker #endif 33*f6dc9357SAndroid Build Coastguard Worker public IFolderWasChanged, 34*f6dc9357SAndroid Build Coastguard Worker public IFolderOperations, 35*f6dc9357SAndroid Build Coastguard Worker // public IFolderOperationsDeleteToRecycleBin, 36*f6dc9357SAndroid Build Coastguard Worker public IFolderClone, 37*f6dc9357SAndroid Build Coastguard Worker public IFolderGetSystemIconIndex, 38*f6dc9357SAndroid Build Coastguard Worker public CMyUnknownImp 39*f6dc9357SAndroid Build Coastguard Worker { 40*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_BEGIN2(IFolderFolder) 41*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IFolderCompare) 42*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_UNICODE_FSTRING 43*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IFolderGetItemName) 44*f6dc9357SAndroid Build Coastguard Worker #endif 45*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IFolderWasChanged) 46*f6dc9357SAndroid Build Coastguard Worker // Z7_COM_QI_ENTRY(IFolderOperationsDeleteToRecycleBin) 47*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IFolderOperations) 48*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IFolderClone) 49*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IFolderGetSystemIconIndex) 50*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_END 51*f6dc9357SAndroid Build Coastguard Worker Z7_COM_ADDREF_RELEASE 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderFolder) 54*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderCompare) 55*f6dc9357SAndroid Build Coastguard Worker #ifdef USE_UNICODE_FSTRING 56*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderGetItemName) 57*f6dc9357SAndroid Build Coastguard Worker #endif 58*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderWasChanged) 59*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderOperations) 60*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderClone) 61*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IFolderGetSystemIconIndex) 62*f6dc9357SAndroid Build Coastguard Worker 63*f6dc9357SAndroid Build Coastguard Worker FString _pathBaseFile; // folder 64*f6dc9357SAndroid Build Coastguard Worker FString _pathPrefix; // folder: 65*f6dc9357SAndroid Build Coastguard Worker 66*f6dc9357SAndroid Build Coastguard Worker CObjectVector<CAltStream> Streams; 67*f6dc9357SAndroid Build Coastguard Worker // CMyComPtr<IFolderFolder> _parentFolder; 68*f6dc9357SAndroid Build Coastguard Worker 69*f6dc9357SAndroid Build Coastguard Worker NWindows::NFile::NFind::CFindChangeNotification _findChangeNotification; 70*f6dc9357SAndroid Build Coastguard Worker 71*f6dc9357SAndroid Build Coastguard Worker HRESULT GetItemFullSize(unsigned index, UInt64 &size, IProgress *progress); 72*f6dc9357SAndroid Build Coastguard Worker void GetAbsPath(const wchar_t *name, FString &absPath); 73*f6dc9357SAndroid Build Coastguard Worker 74*f6dc9357SAndroid Build Coastguard Worker public: 75*f6dc9357SAndroid Build Coastguard Worker // path must be with ':' at tail 76*f6dc9357SAndroid Build Coastguard Worker HRESULT Init(const FString &path /* , IFolderFolder *parentFolder */); 77*f6dc9357SAndroid Build Coastguard Worker GetFullPath(const CAltStream & item,FString & path)78*f6dc9357SAndroid Build Coastguard Worker void GetFullPath(const CAltStream &item, FString &path) const 79*f6dc9357SAndroid Build Coastguard Worker { 80*f6dc9357SAndroid Build Coastguard Worker path = _pathPrefix; 81*f6dc9357SAndroid Build Coastguard Worker path += us2fs(item.Name); 82*f6dc9357SAndroid Build Coastguard Worker } 83*f6dc9357SAndroid Build Coastguard Worker Clear()84*f6dc9357SAndroid Build Coastguard Worker void Clear() 85*f6dc9357SAndroid Build Coastguard Worker { 86*f6dc9357SAndroid Build Coastguard Worker Streams.Clear(); 87*f6dc9357SAndroid Build Coastguard Worker } 88*f6dc9357SAndroid Build Coastguard Worker }; 89*f6dc9357SAndroid Build Coastguard Worker 90*f6dc9357SAndroid Build Coastguard Worker } 91*f6dc9357SAndroid Build Coastguard Worker 92*f6dc9357SAndroid Build Coastguard Worker #endif 93