xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Far/PluginCommon.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // SevenZip/Plugin.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #include "Plugin.h"
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker /*
8*f6dc9357SAndroid Build Coastguard Worker void CPlugin::AddRealIndexOfFile(const CArchiveFolderItem &aFolder,
9*f6dc9357SAndroid Build Coastguard Worker     int anIndexInVector, vector<int> &aRealIndexes)
10*f6dc9357SAndroid Build Coastguard Worker {
11*f6dc9357SAndroid Build Coastguard Worker   const CArchiveFolderFileItem &anItem = aFolder.m_FileSubItems[anIndexInVector];
12*f6dc9357SAndroid Build Coastguard Worker   int aHandlerItemIndex = m_ProxyHandler->GetHandlerItemIndex(anItem.m_Properties);
13*f6dc9357SAndroid Build Coastguard Worker   if (aHandlerItemIndex < 0)
14*f6dc9357SAndroid Build Coastguard Worker     throw "error";
15*f6dc9357SAndroid Build Coastguard Worker   aRealIndexes.push_back(aHandlerItemIndex);
16*f6dc9357SAndroid Build Coastguard Worker }
17*f6dc9357SAndroid Build Coastguard Worker 
18*f6dc9357SAndroid Build Coastguard Worker void CPlugin::AddRealIndexes(const CArchiveFolderItem &anItem,
19*f6dc9357SAndroid Build Coastguard Worker     vector<int> &aRealIndexes)
20*f6dc9357SAndroid Build Coastguard Worker {
21*f6dc9357SAndroid Build Coastguard Worker   int aHandlerItemIndex = m_ProxyHandler->GetHandlerItemIndex(anItem.m_Properties);
22*f6dc9357SAndroid Build Coastguard Worker   if (aHandlerItemIndex >= 0) // test -1 value
23*f6dc9357SAndroid Build Coastguard Worker      aRealIndexes.push_back(aHandlerItemIndex);
24*f6dc9357SAndroid Build Coastguard Worker   for (int i = 0; i < anItem.m_DirSubItems.Size(); i++)
25*f6dc9357SAndroid Build Coastguard Worker     AddRealIndexes(anItem.m_DirSubItems[i], aRealIndexes);
26*f6dc9357SAndroid Build Coastguard Worker   for (i = 0; i < anItem.m_FileSubItems.Size(); i++)
27*f6dc9357SAndroid Build Coastguard Worker     AddRealIndexOfFile(anItem, i , aRealIndexes);
28*f6dc9357SAndroid Build Coastguard Worker }
29*f6dc9357SAndroid Build Coastguard Worker 
30*f6dc9357SAndroid Build Coastguard Worker 
31*f6dc9357SAndroid Build Coastguard Worker void CPlugin::GetRealIndexes(PluginPanelItem *aPanelItems, int anItemsNumber,
32*f6dc9357SAndroid Build Coastguard Worker     vector<int> &aRealIndexes)
33*f6dc9357SAndroid Build Coastguard Worker {
34*f6dc9357SAndroid Build Coastguard Worker   aRealIndexes.clear();
35*f6dc9357SAndroid Build Coastguard Worker   for (int i = 0; i < anItemsNumber; i++)
36*f6dc9357SAndroid Build Coastguard Worker   {
37*f6dc9357SAndroid Build Coastguard Worker     int anIndex = aPanelItems[i].UserData;
38*f6dc9357SAndroid Build Coastguard Worker     if (anIndex < m_FolderItem->m_DirSubItems.Size())
39*f6dc9357SAndroid Build Coastguard Worker     {
40*f6dc9357SAndroid Build Coastguard Worker       const CArchiveFolderItem &anItem = m_FolderItem->m_DirSubItems[anIndex];
41*f6dc9357SAndroid Build Coastguard Worker       AddRealIndexes(anItem, aRealIndexes);
42*f6dc9357SAndroid Build Coastguard Worker     }
43*f6dc9357SAndroid Build Coastguard Worker     else
44*f6dc9357SAndroid Build Coastguard Worker       AddRealIndexOfFile(*m_FolderItem, anIndex - m_FolderItem->m_DirSubItems.Size(),
45*f6dc9357SAndroid Build Coastguard Worker           aRealIndexes);
46*f6dc9357SAndroid Build Coastguard Worker   }
47*f6dc9357SAndroid Build Coastguard Worker   sort(aRealIndexes.begin(), aRealIndexes.end());
48*f6dc9357SAndroid Build Coastguard Worker }
49*f6dc9357SAndroid Build Coastguard Worker 
50*f6dc9357SAndroid Build Coastguard Worker */
51