/*
*  
*  $Id: filehistory.h 5047 2012-07-25 13:14:57Z carlos $
*  Ginkgo CADx Project
*
*  Copyright 2008-10 MetaEmotion S.L. All rights reserved.
*  http://ginkgo-cadx.com
*
*  This file is licensed under LGPL v3 license.
*  See License.txt for details
*
*/
#pragma once

#include <string>
#include <vector>
#include <api/autoptr.h>
#include <api/imodelointegracion.h>

#include <api/ievento.h>
#include "eventosginkgo.h"


namespace GNC {
	namespace GCS {
		namespace Eventos {
/*
			class EXTAPI EventUpdateFileHistory: public GNC::GCS::Eventos::IEvento
			{
			public:

				typedef std::list<std::string> TIdList;

				EventUpdateFileHistory():GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_UpdateFile)
				{
					m_Nombre = "UpdateFileHistory";
				}

				EventUpdateFileHistory(const TIdList& listSopInstanceUID):GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_UpdateFile)
				{
					m_listSopInstanceUID = listSopInstanceUID;
					m_Nombre = "UpdateFileHistory";
				}

				~EventUpdateFileHistory()
				{
				}

				TIdList &GetIdList()
				{
					return m_listSopInstanceUID;
				}

				virtual void pushInfo(std::ostream& out) const {
					out << " Ids = [ ";
					int i = 0;
					for (TIdList::const_iterator it = m_listSopInstanceUID.begin(); it != m_listSopInstanceUID.end(); it++) {
						if (i != 0) {
							out << ", ";
						}
						out << (*it).c_str();
					}
					out << " ]";
				}

			protected:
				TIdList          m_listSopInstanceUID;
			};

			class EXTAPI EventDeleteFileHistory: public GNC::GCS::Eventos::IEvento
			{
			public:

				typedef std::list<std::string> TIdList;

				EventDeleteFileHistory():GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_DeleteFile)
				{
					m_Nombre = "DeleteFileHistory";
				}

				EventDeleteFileHistory(const std::string& patientId, const std::string& studyId, const std::string& seriesId, const TIdList& listSopInstanceUID ):GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_DeleteFile)
				{
					m_listSopInstanceUID = listSopInstanceUID;
					m_PatientId = patientId;
					m_StudyId = studyId;
					m_SeriesId = seriesId;
					m_Nombre = "DeleteFileHistory";
				}

				~EventDeleteFileHistory()
				{
				}

				TIdList &GetIdList()
				{
					return m_listSopInstanceUID;
				}

				std::string& GetPatientId()
				{
					return m_PatientId;
				}

				std::string& GetStudyId()
				{
					return m_StudyId;
				}

				std::string& GetSeriesId()
				{
					return m_SeriesId;
				}

				virtual void pushInfo(std::ostream& out) const {
					out << " Ids = [ ";
					int i = 0;
					for (TIdList::const_iterator it = m_listSopInstanceUID.begin(); it != m_listSopInstanceUID.end(); it++) {
						if (i != 0) {
							out << ", ";
						}
						out << (*it).c_str();
					}
					out << " ]";
				}

			protected:
				TIdList          m_listSopInstanceUID;
				std::string		  m_PatientId;
				std::string		  m_StudyId;
				std::string		  m_SeriesId;
			};

			class EXTAPI AddModelHistoryEvent: public GNC::GCS::Eventos::IEvento
			{
			public:
				AddModelHistoryEvent(GNC::GCS::HistoryController::DICOMFileModelList* pListaModelos = NULL, bool abrirDespuesDeCargar = true, GnkPtr<GIL::IModeloIntegracion> pModeloIntegracion=NULL ):GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_AddModelHistory)
				{
					m_pListaModelos        = pListaModelos;
					m_abrirDespuesDeCargar = abrirDespuesDeCargar;
					m_pModeloIntegracion   = pModeloIntegracion;
					m_Nombre               = "AddModeloHistorial";
				}

				~AddModelHistoryEvent()
				{
					m_pListaModelos = NULL;
				}

				GNC::GCS::HistoryController::DICOMFileModelList* GetListaModelos()
				{
					return m_pListaModelos;
				}

				bool GetAbrirDespuesDeCargar(){
					return m_abrirDespuesDeCargar;
				}

				virtual void pushInfo(std::ostream& out) const {
					out << "Rutas = [ ";
					out << " ]";
				}

				GnkPtr<GIL::IModeloIntegracion> GetModeloIntegracion() {
					return m_pModeloIntegracion;
				}

			protected:
				bool                                              m_abrirDespuesDeCargar;
				GNC::GCS::HistoryController::DICOMFileModelList* m_pListaModelos;
				GnkPtr<GIL::IModeloIntegracion>                   m_pModeloIntegracion;
			};

			class EXTAPI ReloadHistoryEvent: public GNC::GCS::Eventos::IEvento
			{
				public:
				ReloadHistoryEvent():GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_ReloadHistory)
				{
					m_Nombre = "ReloadHistoryEvent";
				}

				~ReloadHistoryEvent()
				{
				}


			protected:
			};


			class EXTAPI ClearHistoryEvent: public GNC::GCS::Eventos::IEvento
			{
			public:

				ClearHistoryEvent():GNC::GCS::Eventos::IEvento(ginkgoEVT_Core_ClearHistory)
				{
					m_Nombre = "ClearHistoryEvent";
				}

				~ClearHistoryEvent()
				{
				}
			protected:
			};
		*/
		}
	}
}
