1 // 7zip/Far/Plugin.h
2 
3 #ifndef __7ZIP_FAR_PLUGIN_H
4 #define __7ZIP_FAR_PLUGIN_H
5 
6 #include "../../../Common/MyCom.h"
7 
8 // #include "../../../Windows/COM.h"
9 #include "../../../Windows/FileFind.h"
10 #include "../../../Windows/PropVariant.h"
11 
12 #include "../Common/WorkDir.h"
13 
14 #include "../Agent/Agent.h"
15 
16 #include "FarUtils.h"
17 
18 const UInt32 kNumInfoLinesMax = 64;
19 
20 class CPlugin
21 {
22   CAgent *_agent;
23   CMyComPtr<IInFolderArchive> m_ArchiveHandler;
24   CMyComPtr<IFolderFolder> _folder;
25 
26   // NWindows::NCOM::CComInitializer m_ComInitializer;
27   UString m_CurrentDir;
28 
29   UString m_PannelTitle;
30   FString m_FileName;
31   NWindows::NFile::NFind::CFileInfo m_FileInfo;
32 
33   UString _archiveTypeName;
34 
35   InfoPanelLine m_InfoLines[kNumInfoLinesMax];
36 
37   char m_FileNameBuffer[1024];
38   char m_CurrentDirBuffer[1024];
39   char m_PannelTitleBuffer[1024];
40 
41   AString PanelModeColumnTypes;
42   AString PanelModeColumnWidths;
43   // PanelMode _PanelMode;
44   void AddColumn(PROPID aPropID);
45 
46   void EnterToDirectory(const UString &dirName);
47   void GetPathParts(UStringVector &pathParts);
48   void SetCurrentDirVar();
49   // HRESULT AfterUpdate(CWorkDirTempFile &tempFile, const UStringVector &pathVector);
50 
51 public:
52 
53   bool PasswordIsDefined;
54   UString Password;
55 
56   CPlugin(const FString &fileName, CAgent *agent, UString archiveTypeName);
57   ~CPlugin();
58 
59   void ReadPluginPanelItem(PluginPanelItem &panelItem, UInt32 itemIndex);
60 
61   int GetFindData(PluginPanelItem **panelItems,int *itemsNumber,int opMode);
62   void FreeFindData(PluginPanelItem *panelItem,int ItemsNumber);
63   int SetDirectory(const char *aszDir, int opMode);
64   void GetOpenPluginInfo(struct OpenPluginInfo *info);
65   int DeleteFiles(PluginPanelItem *panelItems, int itemsNumber, int opMode);
66 
67   HRESULT ExtractFiles(
68       bool decompressAllItems,
69       const UInt32 *indices,
70       UInt32 numIndices,
71       bool silent,
72       NExtract::NPathMode::EEnum pathMode,
73       NExtract::NOverwriteMode::EEnum overwriteMode,
74       const UString &destPath,
75       bool passwordIsDefined, const UString &password);
76 
77   NFar::NFileOperationReturnCode::EEnum GetFiles(struct PluginPanelItem *panelItem, int itemsNumber,
78       int move, char *destPath, int opMode);
79 
80   NFar::NFileOperationReturnCode::EEnum GetFilesReal(struct PluginPanelItem *panelItems,
81       int itemsNumber, int move, const char *_aDestPath, int opMode, bool showBox);
82 
83   NFar::NFileOperationReturnCode::EEnum PutFiles(struct PluginPanelItem *panelItems, int itemsNumber,
84       int move, int opMode);
85   HRESULT CreateFolder();
86 
87   HRESULT ShowAttributesWindow();
88 
89   int ProcessKey(int key, unsigned int controlState);
90 };
91 
92 HRESULT CompressFiles(const CObjectVector<PluginPanelItem> &pluginPanelItems);
93 
94 #endif
95