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/Agent/AgentOut.cpp')
-rwxr-xr-xCPP/7zip/UI/Agent/AgentOut.cpp24
1 files changed, 17 insertions, 7 deletions
diff --git a/CPP/7zip/UI/Agent/AgentOut.cpp b/CPP/7zip/UI/Agent/AgentOut.cpp
index a9e4ee8f..f2750234 100755
--- a/CPP/7zip/UI/Agent/AgentOut.cpp
+++ b/CPP/7zip/UI/Agent/AgentOut.cpp
@@ -57,9 +57,11 @@ STDMETHODIMP CAgent::SetFolder(IFolderFolder *folder)
folderItem->BindToParentFolder(&newFolder);
if (newFolder == NULL)
break;
- CMyComBSTR name;
- folderItem->GetName(&name);
- pathParts.Insert(0, (const wchar_t *)name);
+
+ NCOM::CPropVariant prop;
+ if (folderItem->GetFolderProperty(kpidName, &prop) == S_OK)
+ if (prop.vt == VT_BSTR)
+ pathParts.Insert(0, (const wchar_t *)prop.bstrVal);
folderItem = newFolder;
}
@@ -218,9 +220,17 @@ STDMETHODIMP CAgent::DoOperation(
CObjectVector<CUpdatePair2> updatePairs2;
UpdateProduce(updatePairs, actionSet, updatePairs2);
+
+ UInt32 numFiles = 0;
+ for (i = 0; i < updatePairs2.Size(); i++)
+ if (updatePairs2[i].NewData)
+ numFiles++;
+
+ RINOK(updateCallback100->SetNumFiles(numFiles));
+
CUpdateCallbackAgent updateCallbackAgent;
- updateCallbackAgent.Callback = updateCallback100;
+ updateCallbackAgent.SetCallback(updateCallback100);
CArchiveUpdateCallback *updateCallbackSpec = new CArchiveUpdateCallback;
CMyComPtr<IArchiveUpdateCallback> updateCallback(updateCallbackSpec );
@@ -362,7 +372,7 @@ STDMETHODIMP CAgent::DeleteItems(
if (!CanUpdate())
return E_NOTIMPL;
CUpdateCallbackAgent updateCallbackAgent;
- updateCallbackAgent.Callback = updateCallback100;
+ updateCallbackAgent.SetCallback(updateCallback100);
CArchiveUpdateCallback *updateCallbackSpec = new CArchiveUpdateCallback;
CMyComPtr<IArchiveUpdateCallback> updateCallback(updateCallbackSpec);
@@ -402,7 +412,7 @@ HRESULT CAgent::CreateFolder(
if (!CanUpdate())
return E_NOTIMPL;
CUpdateCallbackAgent updateCallbackAgent;
- updateCallbackAgent.Callback = updateCallback100;
+ updateCallbackAgent.SetCallback(updateCallback100);
CArchiveUpdateCallback *updateCallbackSpec = new CArchiveUpdateCallback;
CMyComPtr<IArchiveUpdateCallback> updateCallback(updateCallbackSpec);
@@ -464,7 +474,7 @@ HRESULT CAgent::RenameItem(
if (numItems != 1)
return E_INVALIDARG;
CUpdateCallbackAgent updateCallbackAgent;
- updateCallbackAgent.Callback = updateCallback100;
+ updateCallbackAgent.SetCallback(updateCallback100);
CArchiveUpdateCallback *updateCallbackSpec = new CArchiveUpdateCallback;
CMyComPtr<IArchiveUpdateCallback> updateCallback(updateCallbackSpec);