#pragma once

#ifndef CSCALLBACK_H
#define CSCALLBACK_H

#include <QString>

#define CALLBACK_INFO(pInfo, nState)\
{\
	if (pInfo != NULL)\
	{\
		pInfo->ProgressInfo(nState);\
	}\
}

#define CALLBACK_STATE(pInfo, nProgressBytes, nTotalBytes)\
{\
	if (pInfo != NULL)\
	{\
		pInfo->ProgressState(nProgressBytes, nTotalBytes);\
	}\
}

#define CALLBACK_ERROR(pInfo, nState)\
{\
	if (pInfo != NULL)\
	{\
		pInfo->ProgressError(nState);\
	}\
}

#define CALLBACK_COMPLETE(pInfo)\
{\
	if (pInfo != NULL)\
	{\
		pInfo->ProgressComplete();\
	}\
}

//#include "SDCMState.h"

#include "dcmtk/dcmdata/dctag.h"
#include "dcmtk/dcmdata/dcdeftag.h"

#include "SDCMCommonStructure.h"

#include <map>
#include <list>
using namespace std;

class CSCallback
{
public:
	CSCallback();
	virtual ~CSCallback();

	virtual void ProgressInfo(int nState);
	virtual void ProgressError(int nState);
	virtual void ProgressComplete();

	virtual void ProgressState(int nProgressBytes, int nTotalBytes);

    QString GetStateString(int nState);

	virtual void Clear();



protected:
    map<int, QString> m_MapString;


	
	BOOL m_bErrorExist;
	int m_nErrorCode;
};

#endif
