xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/AltStreamsFolder.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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