Files
easy7zip/CPP/7zip/UI/FileManager/FilePlugins.cpp
Igor Pavlov a36c48cece 23.01
2023-12-22 17:17:05 +00:00

79 lines
1.7 KiB
C++
Executable File

// FilePlugins.cpp
#include "StdAfx.h"
#include "../Agent/Agent.h"
#include "FilePlugins.h"
#include "PluginLoader.h"
#include "StringUtils.h"
int CExtDatabase::FindExt(const UString &ext) const
{
FOR_VECTOR (i, Exts)
if (Exts[i].Ext.IsEqualTo_NoCase(ext))
return (int)i;
return -1;
}
void CExtDatabase::Read()
{
/*
ReadFileFolderPluginInfoList(Plugins);
FOR_VECTOR (pluginIndex, Plugins)
*/
{
// const CPluginInfo &plugin = Plugins[pluginIndex];
CPluginLibrary pluginLib;
CMyComPtr<IFolderManager> folderManager;
// if (plugin.FilePath.IsEmpty())
folderManager = new CArchiveFolderManager;
/*
else
{
if (!plugin.ClassID_Defined)
continue;
if (pluginLib.LoadAndCreateManager(plugin.FilePath, plugin.ClassID, &folderManager) != S_OK)
continue;
}
*/
CMyComBSTR extBSTR;
if (folderManager->GetExtensions(&extBSTR) != S_OK)
return;
UStringVector exts;
SplitString((const wchar_t *)extBSTR, exts);
FOR_VECTOR (i, exts)
{
const UString &ext = exts[i];
#ifdef UNDER_CE
if (ext == L"cab")
continue;
#endif
Int32 iconIndex;
CMyComBSTR iconPath;
CPluginToIcon plugPair;
// plugPair.PluginIndex = pluginIndex;
if (folderManager->GetIconPath(ext, &iconPath, &iconIndex) == S_OK)
if (iconPath)
{
plugPair.IconPath = (const wchar_t *)iconPath;
plugPair.IconIndex = iconIndex;
}
const int index = FindExt(ext);
if (index >= 0)
Exts[index].Plugins.Add(plugPair);
else
{
CExtPlugins extInfo;
extInfo.Plugins.Add(plugPair);
extInfo.Ext = ext;
Exts.Add(extInfo);
}
}
}
}