Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / UI / FileManager / FilePlugins.h
1 // FilePlugins.h\r
2 \r
3 #ifndef __FILEPLUGINS_H\r
4 #define __FILEPLUGINS_H\r
5 \r
6 #include "RegistryPlugins.h"\r
7 #include "RegistryAssociations.h"\r
8 \r
9 struct CPluginEnabledPair\r
10 {\r
11   int Index;\r
12   bool Enabled;\r
13   CPluginEnabledPair(int index, bool enabled): Index(index),Enabled(enabled) {}\r
14 };\r
15 \r
16 struct CExtInfoBig\r
17 {\r
18   UString Ext;\r
19   bool Associated;\r
20   CRecordVector<CPluginEnabledPair> PluginsPairs;\r
21   int FindPlugin(int pluginIndex)\r
22   {\r
23     for (int i = 0; i < PluginsPairs.Size(); i++)\r
24       if (PluginsPairs[i].Index == pluginIndex)\r
25         return i;\r
26     return -1;\r
27   }\r
28 };\r
29 \r
30 class CExtDatabase\r
31 {\r
32 public:\r
33   CObjectVector<CExtInfoBig> ExtBigItems;\r
34   CObjectVector<CPluginInfo> Plugins;\r
35   int FindExtInfoBig(const UString &ext);\r
36   int FindPlugin(const UString &plugin);\r
37 \r
38   UString GetMainPluginNameForExtItem(int extIndex) const\r
39   {\r
40     const CExtInfoBig &extInfo = ExtBigItems[extIndex];\r
41     if (extInfo.PluginsPairs.IsEmpty())\r
42       return UString();\r
43     else\r
44       return Plugins[extInfo.PluginsPairs.Front().Index].Name;\r
45   }\r
46 \r
47   void Read();\r
48   void Save();\r
49 };\r
50 \r
51 \r
52 #endif\r
53 \r
54 \r