1#ifndef APE_MACPROGRESSHELPER_H
2#define APE_MACPROGRESSHELPER_H
3
4#define KILL_FLAG_CONTINUE          0
5#define KILL_FLAG_PAUSE             -1
6#define KILL_FLAG_STOP              1
7
8#include "NoWindows.h"
9#include "MACLib.h"
10
11//typedef void ( * APE_PROGRESS_CALLBACK) (int);
12
13class CMACProgressHelper
14{
15public:
16
17    CMACProgressHelper(int nTotalSteps, int *pPercentageDone, APE_PROGRESS_CALLBACK ProgressCallback, int *pKillFlag);
18    virtual ~CMACProgressHelper();
19
20    void UpdateProgress(int nCurrentStep = -1, BOOL bForceUpdate = FALSE);
21    void UpdateProgressComplete() { UpdateProgress(m_nTotalSteps, TRUE); }
22
23    int ProcessKillFlag(BOOL bSleep = TRUE);
24
25private:
26
27    BOOL                    m_bUseCallback;
28    APE_PROGRESS_CALLBACK    m_CallbackFunction;
29
30    int                        *m_pPercentageDone;
31
32    int                        m_nTotalSteps;
33    int                        m_nCurrentStep;
34    int                        m_nLastCallbackFiredPercentageDone;
35
36    int                        *m_pKillFlag;
37};
38
39#endif // #ifndef APE_MACPROGRESSHELPER_H
40
41