Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/UI/FileManager/FilePlugins.cpp')
-rwxr-xr-xCPP/7zip/UI/FileManager/FilePlugins.cpp104
1 files changed, 27 insertions, 77 deletions
diff --git a/CPP/7zip/UI/FileManager/FilePlugins.cpp b/CPP/7zip/UI/FileManager/FilePlugins.cpp
index 22993383..b81850fd 100755
--- a/CPP/7zip/UI/FileManager/FilePlugins.cpp
+++ b/CPP/7zip/UI/FileManager/FilePlugins.cpp
@@ -2,73 +2,39 @@
#include "StdAfx.h"
-#include "Common/MyCom.h"
-
#include "../Agent/Agent.h"
#include "FilePlugins.h"
#include "PluginLoader.h"
#include "StringUtils.h"
-using namespace NRegistryAssociations;
-
-int CExtDatabase::FindExtInfoBig(const UString &ext)
-{
- for (int i = 0; i < ExtBigItems.Size(); i++)
- if (ExtBigItems[i].Ext.CompareNoCase(ext) == 0)
- return i;
- return -1;
-}
-
-int CExtDatabase::FindPlugin(const UString &plugin)
+int CExtDatabase::FindExt(const UString &ext)
{
- for (int i = 0; i < Plugins.Size(); i++)
- if (Plugins[i].Name.CompareNoCase(plugin) == 0)
+ for (int i = 0; i < Exts.Size(); i++)
+ if (Exts[i].Ext.CompareNoCase(ext) == 0)
return i;
return -1;
}
void CExtDatabase::Read()
{
- /*
- CObjectVector<CExtInfo> extItems;
- ReadInternalAssociations(extItems);
- */
ReadFileFolderPluginInfoList(Plugins);
- /*
- for (int i = 0; i < extItems.Size(); i++)
- {
- const CExtInfo &extInfo = extItems[i];
- CExtInfoBig extInfoBig;
- extInfoBig.Ext = extInfo.Ext;
- extInfoBig.Associated = false;
- for (int p = 0; p < extInfo.Plugins.Size(); p++)
- {
- int pluginIndex = FindPlugin(extInfo.Plugins[p]);
- if (pluginIndex >= 0)
- extInfoBig.PluginsPairs.Add(CPluginEnabledPair(pluginIndex, true));
- }
- ExtBigItems.Add(extInfoBig);
- }
- */
for (int pluginIndex = 0; pluginIndex < Plugins.Size(); pluginIndex++)
{
- const CPluginInfo &pluginInfo = Plugins[pluginIndex];
+ const CPluginInfo &plugin = Plugins[pluginIndex];
- CPluginLibrary pluginLibrary;
+ CPluginLibrary pluginLib;
CMyComPtr<IFolderManager> folderManager;
- if (pluginInfo.FilePath.IsEmpty())
+ if (plugin.FilePath.IsEmpty())
folderManager = new CArchiveFolderManager;
- else if (pluginLibrary.LoadAndCreateManager(pluginInfo.FilePath,
- pluginInfo.ClassID, &folderManager) != S_OK)
+ else if (pluginLib.LoadAndCreateManager(plugin.FilePath, plugin.ClassID, &folderManager) != S_OK)
continue;
CMyComBSTR extBSTR;
if (folderManager->GetExtensions(&extBSTR) != S_OK)
return;
- const UString ext2 = (const wchar_t *)extBSTR;
UStringVector exts;
- SplitString(ext2, exts);
+ SplitString((const wchar_t *)extBSTR, exts);
for (int i = 0; i < exts.Size(); i++)
{
const UString &ext = exts[i];
@@ -76,44 +42,28 @@ void CExtDatabase::Read()
if (ext == L"cab")
continue;
#endif
- int index = FindExtInfoBig(ext);
- if (index < 0)
- {
- CExtInfoBig extInfo;
- extInfo.PluginsPairs.Add(CPluginEnabledPair(pluginIndex, false));
- extInfo.Associated = false;
- extInfo.Ext = ext;
- ExtBigItems.Add(extInfo);
- }
+
+ Int32 iconIndex;
+ CMyComBSTR iconPath;
+ CPluginToIcon plugPair;
+ plugPair.PluginIndex = pluginIndex;
+ if (folderManager->GetIconPath(ext, &iconPath, &iconIndex) == S_OK)
+ if (iconPath != 0)
+ {
+ plugPair.IconPath = (const wchar_t *)iconPath;
+ plugPair.IconIndex = iconIndex;
+ }
+
+ int index = FindExt(ext);
+ if (index >= 0)
+ Exts[index].Plugins.Add(plugPair);
else
{
- CExtInfoBig &extInfo = ExtBigItems[index];
- int pluginIndexIndex = extInfo.FindPlugin(pluginIndex);
- if (pluginIndexIndex < 0)
- extInfo.PluginsPairs.Add(CPluginEnabledPair(pluginIndex, false));
+ CExtPlugins extInfo;
+ extInfo.Plugins.Add(plugPair);
+ extInfo.Ext = ext;
+ Exts.Add(extInfo);
}
}
}
}
-
-void CExtDatabase::Save()
-{
- /*
- CObjectVector<CExtInfo> extItems;
- for (int i = 0; i < ExtBigItems.Size(); i++)
- {
- const CExtInfoBig &extInfoBig = ExtBigItems[i];
- CExtInfo extInfo;
- // extInfo.Enabled = extInfoBig.Associated;
- extInfo.Ext = extInfoBig.Ext;
- for (int p = 0; p < extInfoBig.PluginsPairs.Size(); p++)
- {
- CPluginEnabledPair pluginPair = extInfoBig.PluginsPairs[p];
- if (pluginPair.Enabled)
- extInfo.Plugins.Add(Plugins[pluginPair.Index].Name);
- }
- extItems.Add(extInfo);
- }
- WriteInternalAssociations(extItems);
- */
-}