21 #if !defined(ZIPARCHIVE_ZIPCALLBACK_DOT_H)
22 #define ZIPARCHIVE_ZIPCALLBACK_DOT_H
26 #if defined ZIP_HAS_DLL
27 #pragma warning (push)
28 #pragma warning( disable : 4251 ) // needs to have dll-interface to be used by clients of class
32 #include "ZipString.h"
33 #include "ZipExport.h"
39 #define ZIP_SPLIT_LAST_VOLUME (ZIP_SIZE_TYPE)(-1)
89 virtual bool Callback(ZIP_SIZE_TYPE uProgress) = 0;
211 cbDeleteCnt = 0x0010,
260 cbCalculateForMulti= 0x0800,
269 cbMultiAdd = 0x1000 | cbAdd,
278 cbEncryptPrepare= 0x2000,
286 cbEncryptMoveData= 0x4000,
305 cbMultiEncrypt = 0x10000 | cbEncryptMoveData | cbEncrypt,
312 cbNextValue = 0x20000,
319 cbSubActions = cbAddTmp | cbAddStore | cbDeleteCnt | cbMoveData | cbCalculateForMulti | cbEncryptPrepare | cbEncryptMoveData,
325 cbActions = cbAdd | cbExtract | cbDelete | cbTest | cbSave | cbGet | cbModify | cbEncrypt,
332 cbMultiActions = cbMultiAdd | cbMultiEncrypt,
338 cbAll = cbActions | cbSubActions | cbMultiActions
373 void Init(ZIP_SIZE_TYPE uTotalItemsToProcess, ZIP_SIZE_TYPE uTotalBytesToProcess,
int iReactType)
375 m_uTotalFilesToProcess = uTotalItemsToProcess;
376 m_uTotalBytesToProcess = uTotalBytesToProcess;
377 m_uBytesProcessed = m_uFilesProcessed = 0;
378 m_iReactType = iReactType;
381 void OnCallbackInit(
int iType)
385 m_bActive = iType == m_iReactType;
388 void OnCallCallback(ZIP_SIZE_TYPE uProgress)
391 m_uBytesProcessed += uProgress;
411 m_uAccumulatedProgress = 0;
412 m_iCachedStepSize = 0;
415 m_pMultiActionsInfo = NULL;
439 virtual void MultiActionsInit(ZIP_SIZE_TYPE uTotalFilesToProcess, ZIP_SIZE_TYPE uTotalBytesToProcess,
int iReactType)
441 InitMultiActionsInfo();
442 m_pMultiActionsInfo->Init(uTotalFilesToProcess, uTotalBytesToProcess, iReactType);
456 virtual void Init(LPCTSTR lpszFileInZip = NULL, LPCTSTR lpszExternalFile = NULL)
464 if (m_pMultiActionsInfo)
466 m_pMultiActionsInfo->OnCallbackInit(
m_iType);
499 if (m_pMultiActionsInfo && m_pMultiActionsInfo->OnNextFile())
527 ReleaseMultiActionsInfo();
572 return m_pMultiActionsInfo;
583 m_pMultiActionsInfo->m_iReactType = iType;
611 ReleaseMultiActionsInfo();
628 if (m_iCachedStepSize == 1)
632 m_uAccumulatedProgress += uProgress;
633 if (m_iCurrentStep >= m_iCachedStepSize)
663 if (m_uAccumulatedProgress == 0 && uProgress == 0)
686 if (m_pMultiActionsInfo)
687 m_pMultiActionsInfo->OnCallCallback(uProgress);
697 if (m_iCachedStepSize == 0)
698 m_iCachedStepSize = 1;
711 m_uAccumulatedProgress = 0;
714 CMultiActionsInfo* m_pMultiActionsInfo;
715 void InitMultiActionsInfo()
717 ReleaseMultiActionsInfo();
718 m_pMultiActionsInfo =
new CMultiActionsInfo();
720 void ReleaseMultiActionsInfo()
722 if (m_pMultiActionsInfo != NULL)
724 delete m_pMultiActionsInfo;
725 m_pMultiActionsInfo = NULL;
729 int m_iCachedStepSize;
731 ZIP_SIZE_TYPE m_uAccumulatedProgress;
734 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
735 #pragma warning (pop)