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_pMultiActionsInfo = NULL;
435 virtual void MultiActionsInit(ZIP_SIZE_TYPE uTotalFilesToProcess, ZIP_SIZE_TYPE uTotalBytesToProcess,
int iReactType)
437 InitMultiActionsInfo();
438 m_pMultiActionsInfo->Init(uTotalFilesToProcess, uTotalBytesToProcess, iReactType);
452 virtual void Init(LPCTSTR lpszFileInZip = NULL, LPCTSTR lpszExternalFile = NULL)
460 if (m_pMultiActionsInfo)
462 m_pMultiActionsInfo->OnCallbackInit(
m_iType);
492 if (m_pMultiActionsInfo && m_pMultiActionsInfo->OnNextFile())
520 ReleaseMultiActionsInfo();
565 return m_pMultiActionsInfo;
576 m_pMultiActionsInfo->m_iReactType = iType;
604 ReleaseMultiActionsInfo();
621 if (m_iCachedStepSize == 1)
625 m_uAccumulatedProgress += uProgress;
626 if (m_iCurrentStep >= m_iCachedStepSize)
656 if (m_uAccumulatedProgress == 0 && uProgress == 0)
679 if (m_pMultiActionsInfo)
680 m_pMultiActionsInfo->OnCallCallback(uProgress);
690 if (m_iCachedStepSize == 0)
691 m_iCachedStepSize = 1;
704 m_uAccumulatedProgress = 0;
707 CMultiActionsInfo* m_pMultiActionsInfo;
708 void InitMultiActionsInfo()
710 ReleaseMultiActionsInfo();
711 m_pMultiActionsInfo =
new CMultiActionsInfo();
713 void ReleaseMultiActionsInfo()
715 if (m_pMultiActionsInfo != NULL)
717 delete m_pMultiActionsInfo;
718 m_pMultiActionsInfo = NULL;
722 int m_iCachedStepSize;
724 ZIP_SIZE_TYPE m_uAccumulatedProgress;
727 #if (_MSC_VER > 1000) && (defined ZIP_HAS_DLL)
728 #pragma warning (pop)