// DLG_MsgSetup2.cpp : implementation file
//

#include "stdafx.h"
#include "corpsms.h"
#include "DLG_MsgSetup2.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// DLG_MsgSetup2 dialog
#include "DLG_ZFUser.h"

DLG_MsgSetup2::DLG_MsgSetup2(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_MsgSetup2::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_MsgSetup2)
	m_bCM = FALSE;
	m_strCM = _T("");
	m_strMobile = _T("");
	m_strName = _T("");
	m_strNickName = _T("");
	m_strSmsUsed = _T("");
	m_strTel = _T("");
	m_bUserZF = FALSE;
	//}}AFX_DATA_INIT

	m_pMainFrame = (CMainFrame *)pParent;

	m_pSetup = NULL;
	memset(&m_Setup,0,sizeof(m_Setup));
	m_pNewData = NULL;
}


void DLG_MsgSetup2::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_MsgSetup2)
	DDX_Control(pDX, IDC_MSGSETUP2_LIST, m_wndUserList);
	DDX_Check(pDX, IDC_MSGSETUP2_BCM, m_bCM);
	DDX_Text(pDX, IDC_MSGSETUP2_CM, m_strCM);
	DDV_MaxChars(pDX, m_strCM, 28);
	DDX_Text(pDX, IDC_MSGSETUP2_MOBILE, m_strMobile);
	DDV_MaxChars(pDX, m_strMobile, 18);
	DDX_Text(pDX, IDC_MSGSETUP2_NAME, m_strName);
	DDV_MaxChars(pDX, m_strName, 15);
	DDX_Text(pDX, IDC_MSGSETUP2_NICKNAME, m_strNickName);
	DDV_MaxChars(pDX, m_strNickName, 15);
	DDX_Text(pDX, IDC_MSGSETUP2_SMSUSED, m_strSmsUsed);
	DDX_Text(pDX, IDC_MSGSETUP2_TEL, m_strTel);
	DDV_MaxChars(pDX, m_strTel, 18);
	DDX_Check(pDX, IDC_MSGSETUP2_ZF, m_bUserZF);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(DLG_MsgSetup2, CDialog)
	//{{AFX_MSG_MAP(DLG_MsgSetup2)
	ON_BN_CLICKED(IDC_MSGSETUP2_BCM, OnMsgsetup2Bcm)
	ON_NOTIFY(NM_DBLCLK, IDC_MSGSETUP2_LIST, OnDblclkMsgsetup2List)
	ON_NOTIFY(NM_RCLICK, IDC_MSGSETUP2_LIST, OnRclickMsgsetup2List)
	//}}AFX_MSG_MAP
	ON_COMMAND( ZF_USER_ADD   , On_User_Add )
	ON_COMMAND( ZF_USER_MODIFY, On_User_Modify )
	ON_COMMAND( ZF_USER_DEL   , On_User_Del )
	ON_COMMAND( ZF_USER_CLEAR , On_User_Clear )
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_MsgSetup2 message handlers

void DLG_MsgSetup2::SetParam(ANS_MsgSetup3_See *pSetup, ANS_MsgSetupData * pData)
{
	m_pSetup = pSetup;
	m_pData  = pData;
}

REQ_MsgSetup3 DLG_MsgSetup2::GetParam()
{
	return m_Setup;
}

BOOL DLG_MsgSetup2::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_strName = m_pSetup->szName;
	m_strNickName = m_pSetup->szNickName;
	m_strTel  = m_pSetup->szTel;
	m_strMobile= m_pSetup->szMobile;
	m_strSmsUsed.Format( _T("%d") , m_pSetup->lSmsUsed );
	m_bCM = m_pSetup->bCM;
	m_strCM = m_pSetup->szCM;

	m_bUserZF = m_pSetup->bUserZF;
	m_wndUserList.SubClassWindow2();
	m_wndUserList.SetHeadings(_T("���,40;�� ��,80;�ֻ�,100;"));
	m_wndUserList.SetGridLines(true);

	TCHAR Buf[32]={0};
	//��ʾת���б�
	for ( int i=0;i<m_pSetup->lUserZF;i++ )
	{
		m_wndUserList.InsertItem( i , _itot(i+1,Buf,10) , 0 );
		m_wndUserList.SetItemText( i , 1 , m_pData[i].szName );
		m_wndUserList.SetItemText( i , 2 , m_pData[i].szMobile );
	}


	UpdateData( false );

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void DLG_MsgSetup2::OnOK() 
{
	if ( !UpdateData(true) )
		return ;

	if ( m_bCM )
	{
		if ( m_strCM.GetLength() <= 0 )
		{
			MessageBox( _T("ǩ�����ݲ���Ϊ�գ�������!") , _T("����") , MB_ICONWARNING );
			GetDlgItem( IDC_MSGSETUP2_CM )->SetFocus();
			return ;
		}
	}

	m_Setup.lCorpID = m_pSetup->lCorpID;
	m_Setup.lUserID = m_pSetup->lUserID;
	_tcscpy(m_Setup.szName , m_strName );
	_tcscpy(m_Setup.szNickName , m_strNickName );
	_tcscpy(m_Setup.szTel , m_strTel );
	_tcscpy(m_Setup.szMobile , m_strMobile );
	m_Setup.bCM     = m_bCM;
	_tcscpy( m_Setup.szCM , m_strCM );

	m_Setup.bUserZF = m_bUserZF;
	m_Setup.lUserZF = m_wndUserList.GetItemCount();

	m_pNewData = new ANS_MsgSetupData[m_Setup.lUserZF];
	memset( m_pNewData , 0 , sizeof(ANS_MsgSetupData)*(m_Setup.lUserZF) );
	//ȡ�û�ת������
	for ( int i = 0 ; i<m_Setup.lUserZF;i++ )
	{
		m_wndUserList.GetItemText( i , 1 , m_pNewData[i].szName   ,sizeof(m_pNewData[i].szName));
		m_wndUserList.GetItemText( i , 2 , m_pNewData[i].szMobile ,sizeof(m_pNewData[i].szMobile));
	}

	CDialog::OnOK();
}

void DLG_MsgSetup2::OnMsgsetup2Bcm() 
{
	CButton * pButton = (CButton*)GetDlgItem(IDC_MSGSETUP2_BCM);
	if ( pButton->GetCheck() )
	{
		GetDlgItem( IDC_MSGSETUP2_CM )->EnableWindow(true);
	}
	else
	{
		GetDlgItem( IDC_MSGSETUP2_CM )->EnableWindow(false);
	}
}

void DLG_MsgSetup2::OnDblclkMsgsetup2List(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	On_User_Modify();
}

void DLG_MsgSetup2::OnRclickMsgsetup2List(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;

	ShowRUserMenu();
}

void DLG_MsgSetup2::ShowRUserMenu()
{
	CMenu menu;
	menu.CreatePopupMenu();
	BOOL bLock = false;
	long lItem = this->GetCurrentSelected_User();

	//����
	menu.AppendMenu(MF_STRING     , ZF_USER_ADD, _T(" ���Ӻ��� ") );
	//�޸�
	if ( lItem >=0 )
	{
		menu.AppendMenu(MF_STRING     , ZF_USER_MODIFY, _T(" �� �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , ZF_USER_MODIFY , _T(" �� �� ") );
	}
	//ɾ��
	if ( lItem >=0 )
	{
		menu.AppendMenu(MF_STRING     , ZF_USER_DEL, _T(" ɾ �� ") );
	}
	else
	{
		menu.AppendMenu(MF_STRING|MF_DISABLED|MF_GRAYED , ZF_USER_DEL , _T(" ɾ �� ") );
	}
	menu.AppendMenu(MF_SEPARATOR );
	//ˢ��
	menu.AppendMenu(MF_STRING     , ZF_USER_CLEAR , _T(" ��� ") );

	//��ʾ�˵�
	POINT pt ;
	::GetCursorPos( &pt );
	//this->ClientToScreen( &pt);
	menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_RIGHTBUTTON,pt.x,pt.y, this, NULL);
	menu.DestroyMenu();
}

long DLG_MsgSetup2::GetCurrentSelected_User()
{
	POSITION pos = m_wndUserList.GetFirstSelectedItemPosition();
	if ( pos )
	{
		return m_wndUserList.GetNextSelectedItem(pos);
	}
	return -1;
}

void DLG_MsgSetup2::On_User_Add()
{
	ANS_MsgSetupData data={0};
	DLG_ZFUser dlg(this);
	dlg.SetParam( data );
	if ( dlg.DoModal() == IDOK )
	{
		TCHAR Buf[32];
		long lCount = m_wndUserList.GetItemCount();
		m_wndUserList.InsertItem( lCount , _itot(lCount+1,Buf,10),0);
		m_wndUserList.SetItemText( lCount,1 , dlg.GetParam().szName );
		m_wndUserList.SetItemText( lCount,2 , dlg.GetParam().szMobile );
	}
}
void DLG_MsgSetup2::On_User_Del()
{
	long lItem = this->GetCurrentSelected_User();
	if ( lItem < 0 )
		return;
	m_wndUserList.DeleteItem( lItem );

	long lCount = m_wndUserList.GetItemCount();
	TCHAR szBuf[32];
	for ( int i = 0 ; i< lCount;i++ )
	{
		m_wndUserList.SetItemText( i , 0 , _itot(i+1,szBuf,10) );
	}

}
void DLG_MsgSetup2::On_User_Modify()
{
	long lItem = this->GetCurrentSelected_User();
	if ( lItem < 0 )
		return;

	ANS_MsgSetupData data={0};
	m_wndUserList.GetItemText( lItem , 1 , data.szName ,sizeof(data.szName));
	m_wndUserList.GetItemText( lItem , 2 , data.szMobile,sizeof(data.szMobile) );
	DLG_ZFUser dlg(this);
	dlg.SetParam( data );
	if ( dlg.DoModal() == IDOK )
	{
		m_wndUserList.SetItemText( lItem,1 , dlg.GetParam().szName );
		m_wndUserList.SetItemText( lItem,2 , dlg.GetParam().szMobile );
	}
}
void DLG_MsgSetup2::On_User_Clear()
{
	m_wndUserList.DeleteAllItems();
}