// DlgTextOnly.cpp : implementation file
//

#include "stdafx.h"
#include "6046dryend.h"
#include "6046DryEndDlg.h"
#include "DlgTextOnly.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CDlgTextOnly dialog


CDlgTextOnly::CDlgTextOnly(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgTextOnly::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgTextOnly)
	//}}AFX_DATA_INIT


	radFactor = 180/PI;

	m_pImageList = new CImageList;
}


void CDlgTextOnly::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgTextOnly)
	DDX_Control(pDX, IDC_LIST_TABLE, m_ctrlTextTable);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgTextOnly, CDialog)
	//{{AFX_MSG_MAP(CDlgTextOnly)
	ON_WM_LBUTTONDOWN()
	ON_WM_DESTROY()
	ON_WM_CLOSE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgTextOnly message handlers

void CDlgTextOnly::OnLButtonDown(UINT nFlags, CPoint point) 
{
	//MAKE WINDOWS THINK WE CLICKED ON THE CAPTION BAR,
	//SO THE DIALOG CAN BE MOVED BY CLICKING ANYWHERE ON IT.
    PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
	
	CDialog::OnLButtonDown(nFlags, point);
}

void CDlgTextOnly::ForceMove(CPoint point)
{
	PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( point.x, point.y));
}

BOOL CDlgTextOnly::OnInitDialog() 
{
	CDialog::OnInitDialog();

	HICON icon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	SetIcon(icon, FALSE);

	m_ctrlTextTable.pParent = this;

	m_pConfig = (CSystemConfig*)&((CMy6046DryEndApp*)AfxGetApp())->m_SystemConfig;
	
	LoadSettings();

	LOGFONT lf;
	CFont newf;
	CFont * f;
	CString label;
	f = m_ctrlTextTable.GetFont(); //use just one of the controls to get the font info
	f->GetLogFont(&lf);
	lf.lfWeight = 700;
	m_font.CreateFontIndirect(&lf);

	if(m_pImageList)
	{
		m_pImageList->Create(16,16,ILC_COLOR8,2,1);
		m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON_BLANK));
		m_pImageList->Add(AfxGetApp()->LoadIcon(IDI_ICON_DELTA));
	}


	m_ctrlTextTable.SetBkColor(RGB(0,15,0));
	m_ctrlTextTable.SetTextBkColor(RGB(0,15,0));
	m_ctrlTextTable.SetTextColor(RGB(5,230,15));
	m_ctrlTextTable.SetFont(&m_font, FALSE);
	m_ctrlTextTable.SetImageList(m_pImageList,LVSIL_SMALL);
	m_ctrlTextTable.InsertColumn(0,"Item", LVCFMT_CENTER, 78, NULL);
	m_ctrlTextTable.InsertColumn(1,"Data", LVCFMT_CENTER, 125, NULL);

	//Brute force time!
	int i = 0;
	m_ctrlTextTable.InsertItem(i++, "", 0);

	label.Format(IDS_ROLL);
	m_ctrlTextTable.InsertItem(i, label, 0);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	label.Format(IDS_ROLLRATE);
	m_ctrlTextTable.InsertItem(i, label, 1);
	m_ctrlTextTable.SetItemText(i++,1,"0");	

	m_ctrlTextTable.InsertItem(i++, "", 0);

	label.Format(IDS_PITCH);
	m_ctrlTextTable.InsertItem(i, label, 0);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	label.Format(IDS_PITCHRATE);
	m_ctrlTextTable.InsertItem(i, label, 1);
	m_ctrlTextTable.SetItemText(i++,1,"0");	

	m_ctrlTextTable.InsertItem(i++, "", 0);

	label.Format(IDS_DEPTH);
	m_ctrlTextTable.InsertItem(i, label, 0);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	label.Format(IDS_DEPTHRATE);
	m_ctrlTextTable.InsertItem(i, label, 1);
	m_ctrlTextTable.SetItemText(i++,1,"0");	

	m_ctrlTextTable.InsertItem(i++, "", 0);
	
	label.Format(IDS_YAW);
	m_ctrlTextTable.InsertItem(i, label, 0);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	label.Format(IDS_YAWRATE);
	m_ctrlTextTable.InsertItem(i, label, 1);
	m_ctrlTextTable.SetItemText(i++,1,"0");	

	m_ctrlTextTable.InsertItem(i++, "", 0);

	label.Format(IDS_ALTITUDE);
	m_ctrlTextTable.InsertItem(i, label, 0);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	
	m_ctrlTextTable.InsertItem(i++, "", 0);
	
	label.Format(IDS_SPEED);
	m_ctrlTextTable.InsertItem(i, label, 0);
	m_ctrlTextTable.SetItemText(i++,1,"0");	

	m_ctrlTextTable.InsertItem(i++, "", 0);

	label.Format(IDS_ACCELEAST);
	m_ctrlTextTable.InsertItem(i, label, 1);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	label.Format(IDS_ACCELNORTH);
	m_ctrlTextTable.InsertItem(i, label, 1);
	m_ctrlTextTable.SetItemText(i++,1,"0");	
	
	
	
	m_ctrlTextTable.SetItemText(i,1,"0");		
			
			



	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgTextOnly::AddGroupData(NBlueFin7kMessages::PBLUEFINRECORDTYPEHEADER	pRecHdr,
								NBlueFin7kMessages::PBLUEFINNAVIGATIONMESSAGE   pNavFrame )
{

	CString entry;
	entry.Format	("%.2f°",    pNavFrame->m_fRoll * radFactor);
	m_ctrlTextTable.SetItemText(1,1,entry);
	
	entry.Format	("%.2f°/s",  pNavFrame->m_fRollRate * radFactor);
	m_ctrlTextTable.SetItemText(2,1,entry);
	
	entry.Format	("%.2f°",    pNavFrame->m_fPitch* radFactor);
	m_ctrlTextTable.SetItemText(4,1,entry);
	
	entry.Format	("%.2f°/s",  pNavFrame->m_fPitchRate * radFactor);
	m_ctrlTextTable.SetItemText(5,1,entry);
	
	entry.Format	("%.2f m",   pNavFrame->m_dDepth);
	m_ctrlTextTable.SetItemText(7,1,entry);
	
	entry.Format	("%.2f m/s", pNavFrame->m_fDepthRate);
	m_ctrlTextTable.SetItemText(8,1,entry);
	
	entry.Format	("%.2f m",   pNavFrame->m_dAltitude);
	m_ctrlTextTable.SetItemText(10,1,entry);
	
	entry.Format	("%f m/s",   pNavFrame->m_fEastingRate);
	m_ctrlTextTable.SetItemText(11,1,entry);
	
	entry.Format	("%f m/s",   pNavFrame->m_fNorthingRate);
	m_ctrlTextTable.SetItemText(13,1,entry);	
	
	entry.Format	("%.2f m/s", pNavFrame->m_fSpeed);
	m_ctrlTextTable.SetItemText(15,1,entry);
	
	entry.Format	("%.2f°",    pNavFrame->m_fYaw* radFactor);
	m_ctrlTextTable.SetItemText(17,1,entry);
	
	entry.Format	("%.2f°/s",  pNavFrame->m_fYawRate * radFactor);
	m_ctrlTextTable.SetItemText(18,1,entry);
}



LRESULT CDlgTextOnly::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	if(message == WM_EXITSIZEMOVE)
	{
		CRect rect;
		GetWindowRect(&rect);
		m_pConfig->ASCIWindowX	= rect.left;
		m_pConfig->ASCIWindowY	= rect.top;

		SaveSettings();
	}
	if(message == 112358)
	{
	    PostMessage( WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM( wParam, lParam));
	}
		
	return CDialog::WindowProc(message, wParam, lParam);
}

BOOL CDlgTextOnly::PreTranslateMessage(MSG* pMsg) 
{
	if(pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_ESCAPE)
	{
		return TRUE ;
	}
	
	return CDialog::PreTranslateMessage(pMsg);
}

void CDlgTextOnly::LoadSettings()
{
	if(m_pConfig->Open(CSystemConfig::accessRead))
	{	
		m_pConfig->Read();
		m_pConfig->Close();

		int x	= m_pConfig->ASCIWindowX;
		int y	= m_pConfig->ASCIWindowY;
		
		SetWindowPos(NULL,x,y,0,0,SWP_NOSIZE);

	}
}

void CDlgTextOnly::SaveSettings()
{
	if(m_pConfig->Open(CSystemConfig::accessWrite))
	{
		m_pConfig->Save();
		m_pConfig->Close();
	}

}

void CDlgTextOnly::OnDestroy() 
{
	CDialog::OnDestroy();
	
	m_pImageList->DeleteImageList();
	delete m_pImageList;
	m_pImageList = NULL;
	
}

void CDlgTextOnly::OnClose() 
{
	((CMy6046DryEndDlg*)AfxGetMainWnd())->ForceClose(DSPASCII);
	
	CDialog::OnClose();
}
