#ifndef SDCMWORKLIST_H
#define SDCMWORKLIST_H

#include "dcmtk/dcmnet/dfindscu.h"
#include "dcmtk/dcmnet/diutil.h"
#include "dcmtk/dcmnet/dcmtrans.h"    /* for dcmSocketSend/ReceiveTimeout */
#include "dcmtk/dcmdata/cmdlnarg.h"
#include "dcmtk/ofstd/ofconapp.h"
#include "dcmtk/dcmdata/dcdict.h"
#include "dcmtk/dcmdata/dcostrmz.h"     /* for dcmZlibCompressionLevel */
#include "dcmtk/dcmtls/tlsopt.h"        /* for DcmTLSOptions */

#include "sdcmfindscudatacallback.h"

class SDCMWorklist
{
public:
    SDCMWorklist();

    virtual ~SDCMWorklist();

    int Search();
    void Init();

    DcmFindSCUExtractMode GetExtractMode();
    int GetCancelAfterNResponses();

    void SetWorklistInfo(QString strIP, QString strPort, QString strServerAETitle, QString strClientAETitle);

protected:
    DcmFindSCU m_FindSCU;

    OFList<OFString>* m_pOverrideKeys;

    QString m_strIP;
    int m_nPort;

    QString m_strAETitle;
    QString m_strServerAETitle;
    char *          m_pAbstractSyntax;
    E_TransferSyntax      m_NetworkTransferSyntax; //EXS_Unknown
    T_DIMSE_BlockingMode  m_BlockMode;

    int                   m_DimseTimeout;
    OFCmdUnsignedInt      m_nMaxReceivePDULength;
    OFBool m_bSecure;
    OFBool m_bAbortAssociation;
    int m_nRetryCount;
    DcmFindSCUExtractMode m_ExtractMode;
    int m_CancelAfterNResponses;
    int m_ACSETimeout;
};

#endif // SDCMWORKLIST_H
