// DLG_Corp_SF.cpp : 实现文件
//

#include "stdafx.h"
#include "SmsManager.h"
#include "DLG_Corp_SF.h"
#include "afxdialogex.h"
#include "DLG_Corp_LXR_SF.h"

// DLG_Corp_SF 对话框

IMPLEMENT_DYNAMIC(DLG_Corp_SF, CDialogEx)

DLG_Corp_SF::DLG_Corp_SF(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_CORP_SF, pParent)
	, m_strCorpName(_T(""))
	, m_strSmsNum(_T(""))
{
	memset(&m_See, 0, sizeof(m_See));
	m_pSFData = NULL;
	m_pYWYData = NULL;
	m_pSFDlg = NULL;
}

DLG_Corp_SF::~DLG_Corp_SF()
{
}

void DLG_Corp_SF::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Text(pDX, IDC_CORP_SF_CORPNME, m_strCorpName);
	DDX_Text(pDX, IDC_CORP_SF_SMSNUM, m_strSmsNum);
	DDX_Control(pDX, IDC_CORP_SF_LIST, m_wndList);
}


BEGIN_MESSAGE_MAP(DLG_Corp_SF, CDialogEx)
	ON_NOTIFY(NM_DBLCLK, IDC_CORP_SF_LIST, &DLG_Corp_SF::OnNMDblclkCorpSfList)
	ON_NOTIFY(LVN_ITEMCHANGED, IDC_CORP_SF_LIST, &DLG_Corp_SF::OnLvnItemchangedCorpSfList)
END_MESSAGE_MAP()


// DLG_Corp_SF 消息处理程序


BOOL DLG_Corp_SF::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	m_strCorpName = m_See.szCorpName;
	m_strSmsNum = m_See.szSMSNum;

	this->UpdateData(false);

	//初始化List
	m_Image.Create(16, 16, ILC_COLOR16 | ILC_MASK, 5, 5);
	//m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_CORP));
	m_Image.Add(AfxGetApp()->LoadIcon(IDI_L_SWTSQ));
	
	m_wndList.SubClassWindow2();
	m_wndList.SetHeadings(_T("序号,50; 状态,60; 下单时间,130;运单号,120;  寄件内容,120;   收件人,100;   地址,250;"));
	m_wndList.SetGridLines(true);
	m_wndList.SetImageList(&m_Image, LVSIL_SMALL);

	POSITION pos;
	TCHAR Buf[32];
	CString str;
	for (int i = 0; i< m_See.lCount; i++)
	{
		ANS_Corp_SFData * pData = new ANS_Corp_SFData;
		*pData = m_pSFData[i];
		pos = m_SF.AddTail(pData);
		_stprintf(Buf, _T("%d"), i + 1);
		m_wndList.InsertItem(i, Buf, 0);
		m_wndList.SetItemData(i, (DWORD_PTR)pos);
		int iTemp = 1;
		switch (pData->lStatus)
		{
		case 1:
			m_wndList.SetItemText(i, iTemp++, _T("已取消"));
			break;
		case 2:
			m_wndList.SetItemText(i, iTemp++, _T("已收件"));
			break;
		case 3:
			m_wndList.SetItemText(i, iTemp++, _T("已签收"));
			break;
		case 0:
		default:
			m_wndList.SetItemText(i, iTemp++, _T("已下单"));
			break;
		}
		str.Format(_T("%04d.%02d.%02d %02d:%02d"), pData->tCreate.wYear, pData->tCreate.wMonth, pData->tCreate.wDay, pData->tCreate.wHour,pData->tCreate.wMinute);
		m_wndList.SetItemText(i, iTemp++, str);

		m_wndList.SetItemText(i, iTemp++, pData->Res_mailno);
		m_wndList.SetItemText(i, iTemp++, pData->Cargo_name);
		m_wndList.SetItemText(i, iTemp++, pData->d_contact);
		m_wndList.SetItemText(i, iTemp++, pData->d_address);
	}

	return TRUE;  // return TRUE unless you set the focus to a control
				  // 异常: OCX 属性页应返回 FALSE
}

long DLG_Corp_SF::GetCurrentSelected()
{
	POSITION pos = m_wndList.GetFirstSelectedItemPosition();
	if (pos)
	{
		return m_wndList.GetNextSelectedItem(pos);
	}
	return -1;
}

void DLG_Corp_SF::OnNMDblclkCorpSfList(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);


	long lItem = GetCurrentSelected();
	if (lItem < 0)
		return;

	POSITION pos = (POSITION)m_wndList.GetItemData(lItem);
	POSITION pos2 = pos;
	ANS_Corp_SFData * pData = m_SF.GetNext(pos);
	if (pData)
	{
		DLG_Corp_LXR_SF dlg(this);
		m_pSFDlg = &dlg;
		//dlg.SetParam(m_See.lYWYCount,m_See.lDefaultYWYID,m_pYWYData,*pData,false);
		dlg.SetParam(0,0,NULL, *pData, false);
		dlg.DoModal();
		m_pSFDlg = NULL;
	}

	*pResult = 0;
}

BOOL DLG_Corp_SF::ProcessSocket(Socket_Head_Add *pHead, BYTE *pFrame)
{
	if (pHead->lFuncType == SMSFUNC_CORP_SF_ADD ||
		pHead->lFuncType == SMSFUNC_CORP_SF_CANCEL ||
		pHead->lFuncType == SMSFUNC_CORP_SF_ROUTE)
	{
		//ANS_Corp_SF_Add     * pAdd = (ANS_Corp_SF_Add  *)pFrame;
		//ANS_Corp_SFData     * pData = (ANS_Corp_SFData *)(pFrame + sizeof(ANS_Corp_SF_Add));
		if (this->m_pSFDlg)
		{
			m_pSFDlg->ProcessSocket(pHead, pFrame);
		}
		return true;
	}
	return false;
}
void DLG_Corp_SF::SetParam(ANS_Corp_SF_See * pSee, ANS_Corp_SFData * pSFData, ANS_Corp_LXR_YWYData * pYWYData)
{
	m_See = *pSee;
	m_pSFData = pSFData;
	m_pYWYData = pYWYData;
}


void DLG_Corp_SF::OnLvnItemchangedCorpSfList(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
	// TODO: 在此添加控件通知处理程序代码
	*pResult = 0;
}