// QuickViewMngr.h: interface for the CQuickViewMngr class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_QUICKVIEWMNGR_H__5783DF31_E07B_4782_88A9_D145A514D3ED__INCLUDED_)
#define AFX_QUICKVIEWMNGR_H__5783DF31_E07B_4782_88A9_D145A514D3ED__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <vector>
using namespace std;

#include "TabManager.h"

#define QV_WND_WIDTH 373
#define MAX_COLUMNS	 8

typedef enum tagEMESSAGETYPE
    {
		unknown= 0,
		general,		//specific to dry end
		version,		//Wet End
		modules,		//Wet End
		runlist,		//Wet End
		report,
		logging,
		health			//Wet End	
	}
EMESSAGETYPE;

#define QV_HISTORY	5

class CQuickViewMngr  
{
public:
	
	//Keep our own internal enumeration because the Dry-End
	//will support some internal message types not in Wet-End
	

	EMESSAGETYPE currentTypeDisplayed;

						CQuickViewMngr				(	);
	virtual				~CQuickViewMngr				(	);

	BOOL 				SetDisplayPtr			(	CListCtrl *pQV, CTabManager *pTabs, HWND pParentWnd);				//Set the ptrs for messaging
	
	BOOL				AddData					(	EMESSAGETYPE msgType, CString msg);	//Add to internal data struct/history?
	
//	void				AddModule				(	int ID, float version, CString name);				//Add to private Module list
	
	void				AddPulseFiles			(	UINT eSensorType, CString msg);					//Add pulse files

	void				DisplayData				(	EMESSAGETYPE msgType);				//Format and display to Quick View

	void				ClearLists				(	void );

	void				GetSyncInfo				( QV_GENERAL *dest);

	void				DisplayNoSync			(	void );

	EMESSAGETYPE		GetDisplayedType		(	);

	BOOL				bSensorIdSet;			//set this flag when we disconnect so we parse the runlist message again

private:

	//General Variables
	CListCtrl		*m_pQuickView;
	CTabManager		*m_pTabMngr;
	HWND			m_hNotifyWnd;

	CString			m_strVersion;			
	QV_GENERAL		*m_generalDetails;
	vector<SENSOR>  m_vecRunlist;			
	vector<REPORT>  m_vecFileDetail;		
	vector<MODULE>	m_vecModules;			

	//Pulse File Storage
	vector<CString> m_vecHFSSPulseFiles;
	vector<CString> m_vecLFSSPulseFiles;
	vector<CString> m_vecSBPPulseFiles;



	//Parsing functions
	void	ParseModulesString(CString msg);
	void	ParseRunlistString(CString msg);
	void	ParseReportString(CString msg);
	void	ParsePulseFiles(UINT sensorID, CString msg);
	void	ParseHealthString(CString msg);

	//Prepare Column Labels and sizes
	void    PrepareListColumns(EMESSAGETYPE type);
	void    InitDisplay();

	//Helpers
	void	SetSensorIds();
	void	UpdatePulseFiles(UINT sensorID);
};

#endif // !defined(AFX_QUICKVIEWMNGR_H__5783DF31_E07B_4782_88A9_D145A514D3ED__INCLUDED_)
