Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / UI / Explorer / ContextMenu.h
1 // ContextMenu.h\r
2 \r
3 #ifndef __CONTEXT_MENU_H\r
4 #define __CONTEXT_MENU_H\r
5 \r
6 #include "Common/MyString.h"\r
7 \r
8 #include "../FileManager/MyCom2.h"\r
9 \r
10 class CZipContextMenu:\r
11   public IContextMenu,\r
12   public IShellExtInit,\r
13   public CMyUnknownImp\r
14 {\r
15 public:\r
16 \r
17   enum ECommandInternalID\r
18   {\r
19     kCommandNULL,\r
20     kOpen,\r
21     kExtract,\r
22     kExtractHere,\r
23     kExtractTo,\r
24     kTest,\r
25     kCompress,\r
26     kCompressEmail,\r
27     kCompressTo7z,\r
28     kCompressTo7zEmail,\r
29     kCompressToZip,\r
30     kCompressToZipEmail\r
31   };\r
32   \r
33   MY_UNKNOWN_IMP2_MT(IContextMenu, IShellExtInit)\r
34 \r
35   // IShellExtInit\r
36   STDMETHOD(Initialize)(LPCITEMIDLIST pidlFolder, LPDATAOBJECT dataObject, HKEY hkeyProgID);\r
37 \r
38   // IContextMenu\r
39   STDMETHOD(QueryContextMenu)(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);\r
40   STDMETHOD(InvokeCommand)(LPCMINVOKECOMMANDINFO lpici);\r
41   STDMETHOD(GetCommandString)(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax);\r
42 \r
43   HRESULT InitContextMenu(const wchar_t *folder, const wchar_t **names, UINT32 numFiles);\r
44 \r
45   CZipContextMenu();\r
46   ~CZipContextMenu();\r
47 \r
48 private:\r
49 \r
50   struct CCommandMapItem\r
51   {\r
52     ECommandInternalID CommandInternalID;\r
53     UString Verb;\r
54     UString HelpString;\r
55     UString Folder;\r
56     UString ArcName;\r
57     UString ArcType;\r
58   };\r
59 \r
60   UStringVector _fileNames;\r
61   bool _dropMode;\r
62   UString _dropPath;\r
63   CObjectVector<CCommandMapItem> _commandMap;\r
64 \r
65   HRESULT GetFileNames(LPDATAOBJECT dataObject, UStringVector &fileNames);\r
66   int FindVerb(const UString &verb);\r
67   void FillCommand(ECommandInternalID id, UString &mainString, CCommandMapItem &commandMapItem);\r
68 };\r
69 \r
70 #endif\r