// DLG_Setup.cpp : implementation file
//

#include "stdafx.h"
#include "SmsCenter.h"
#include "DLG_Setup.h"

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

/////////////////////////////////////////////////////////////////////////////
// DLG_Setup dialog

DLG_Setup::DLG_Setup(CWnd* pParent /*=NULL*/)
	: CDialog(DLG_Setup::IDD, pParent)
{
	//{{AFX_DATA_INIT(DLG_Setup)
	//}}AFX_DATA_INIT
	memset(&m_Setup,0,sizeof(m_Setup));
}


void DLG_Setup::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DLG_Setup)
	DDX_Control(pDX, IDC_SETUP_IP_IPADDRESS, m_L_Address);
	DDX_Control(pDX, IDC_SETUP_DB_USER3, m_E_DBUser3);
	DDX_Control(pDX, IDC_SETUP_DB_USER2, m_E_DBUser2);
	DDX_Control(pDX, IDC_SETUP_DB_PASSWORD3, m_E_DBPassword3);
	DDX_Control(pDX, IDC_SETUP_DB_PASSWORD2, m_E_DBPassword2);
	DDX_Control(pDX, IDC_SETUP_DB_NAME3, m_E_DBName3);
	DDX_Control(pDX, IDC_SETUP_DB_NAME2, m_E_DBName2);
	DDX_Control(pDX, IDC_SETUP_IP_FILENAME, m_E_IPName);
	DDX_Control(pDX, IDC_SETUP_MQ_SERVER, m_E_MQ_Server);
	DDX_Control(pDX, IDC_SETUP_MQ_QSENDP, m_E_MQ_QSendP);
	DDX_Control(pDX, IDC_SETUP_MQ_QSENDB, m_E_MQ_QSendB);
	DDX_Control(pDX, IDC_SETUP_MQ_QRECV, m_E_MQ_QRecv);
	DDX_Control(pDX, IDC_SETUP_MQ_QM, m_E_MQ_QM);
	DDX_Control(pDX, IDC_SETUP_DB_USERS, m_S_DBUser);
	DDX_Control(pDX, IDC_SETUP_DB_PASSWORDS, m_S_DBPassword);
	DDX_Control(pDX, IDC_SETUP_DB_USER, m_E_DBUser);
	DDX_Control(pDX, IDC_SETUP_DB_PASSWORD, m_E_DBPassword);
	DDX_Control(pDX, IDC_SETUP_DB_TYPE, m_L_DBType);
	DDX_Control(pDX, IDC_SETUP_DB_SELDB, m_B_DBSelDB);
	DDX_Control(pDX, IDC_SETUP_DB_NAME, m_E_DBName);
	//}}AFX_DATA_MAP
	DDX_Control(pDX, IDC_SETUP_ZLIB, m_B_Zlib);
	DDX_Control(pDX, IDC_SETUP_ZLIB_MANAGER, m_B_Zlib_Manager);
	DDX_Control(pDX, IDC_SETUP_XY, m_B_XY);
	DDX_Control(pDX, IDC_SETUP_DB_PROVIDER, m_E_Provider);
}


BEGIN_MESSAGE_MAP(DLG_Setup, CDialog)
	//{{AFX_MSG_MAP(DLG_Setup)
	ON_CBN_SELCHANGE(IDC_SETUP_DB_TYPE, OnSelchangeSetupDbType)
	ON_BN_CLICKED(IDC_SETUP_DB_SELDB, OnSetupDbSeldb)
	ON_BN_CLICKED(IDC_SETUP_IP_FILENAME_SEL, OnSetupIpFilenameSel)
	//}}AFX_MSG_MAP
	ON_BN_CLICKED(IDOK, &DLG_Setup::OnBnClickedOk)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DLG_Setup message handlers

void DLG_Setup::SetPara(SC_Setup setup)
{
	m_Setup = setup;
}

SC_Setup DLG_Setup::GetPara()
{
	return m_Setup;
}

BOOL DLG_Setup::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

	m_L_DBType.SetCurSel( m_Setup.uiDBType );
	m_E_DBName.SetWindowText( m_Setup.szDBName );
	m_E_DBUser.SetWindowText( m_Setup.szDBUser );
	m_E_DBPassword.SetWindowText( m_Setup.szDBPasswd );

	m_E_DBName2.SetWindowText( m_Setup.szDBName2 );
	m_E_DBUser2.SetWindowText( m_Setup.szDBUser2 );
	m_E_DBPassword2.SetWindowText( m_Setup.szDBPasswd2 );

	m_E_DBName3.SetWindowText( m_Setup.szDBName3 );
	m_E_DBUser3.SetWindowText( m_Setup.szDBUser3 );
	m_E_DBPassword3.SetWindowText( m_Setup.szDBPasswd3 );
	m_E_Provider.SetWindowText(m_Setup.szProvider);

	m_E_MQ_Server.SetWindowText( m_Setup.szMQ_Server );
	m_E_MQ_QM.SetWindowText( m_Setup.szMQ_QM );
	m_E_MQ_QRecv.SetWindowText( m_Setup.szMQ_QRecv );
	m_E_MQ_QSendP.SetWindowText( m_Setup.szMQ_QSendP );
	m_E_MQ_QSendB.SetWindowText( m_Setup.szMQ_QSendB );

	m_E_IPName.SetWindowText( m_Setup.szIPName );

	OnSelchangeSetupDbType();

	//ȡ��������IP��ַ

	WORD wVersionRequested;
	WSADATA wsaData;
	//Start up WinSock
	wVersionRequested = MAKEWORD(2, 2);
	WSAStartup(wVersionRequested, &wsaData);

	char HostName[128]={0};
    LPHOSTENT lpHostEnt;
	struct in_addr addr[50]={0};
	if ( m_Setup.addr == htonl(INADDR_ANY))
		m_L_Address.SetCurSel(0);
	if (gethostname(HostName,sizeof(HostName))
		!=SOCKET_ERROR)// �õ���������
    {
		lpHostEnt=gethostbyname(HostName);//���õõ���������ȥ��������ṹ
		if (lpHostEnt)
		{
			for (int i=0; lpHostEnt->h_addr_list[i]!=0; i++)//��������ַ���еõ�IP��ַ
			{
				memcpy(&addr[i],lpHostEnt->h_addr_list[i],
					sizeof(in_addr));
#ifdef UNICODE
				int iItem=m_L_Address.AddString(CA2W(inet_ntoa(addr[i])));
				if ( addr[i].S_un.S_addr==m_Setup.addr )
					m_L_Address.SetCurSel(iItem);
#else
				int iItem=m_L_Address.AddString(inet_ntoa(addr[i]));
				if ( addr[i].S_un.S_addr==m_Setup.addr )
					m_L_Address.SetCurSel(iItem);
#endif
			}
		}
	}

	//Label4- >Caption=inet_ntoa(addr[0]);
	//Label5- >Caption=inet_ntoa(addr[1]);
	
	m_B_Zlib.SetCheck(m_Setup.bZlib);
	m_B_Zlib_Manager.SetCheck(m_Setup.bZlibManager);
	m_B_XY.SetCheck(m_Setup.bXY);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void DLG_Setup::OnSelchangeSetupDbType()
{
	m_Setup.uiDBType = m_L_DBType.GetCurSel();
	if ( m_Setup.uiDBType == DB_SQLSERVER )
	{
		m_B_DBSelDB.ShowWindow( SW_HIDE );
		m_E_DBUser.ShowWindow( SW_SHOW );
		m_E_DBPassword.ShowWindow( SW_SHOW );
		m_S_DBUser.ShowWindow( SW_SHOW );
		m_S_DBPassword.ShowWindow( SW_SHOW );
	}
	else
	{
		m_B_DBSelDB.ShowWindow( SW_SHOW );
		m_E_DBUser.ShowWindow( SW_HIDE );
		m_E_DBPassword.ShowWindow( SW_SHOW );
		m_S_DBUser.ShowWindow( SW_HIDE );
		m_S_DBPassword.ShowWindow( SW_SHOW );
	}
}

void DLG_Setup::OnSetupDbSeldb() 
{
	static TCHAR BASED_CODE szFilter[] = _T("Access MDB Files (*.mdb)|*.mdb|All Files (*.*)|*.*||");
	CFileDialog dlg(TRUE,_T("mdb"),NULL,  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
	
	if (dlg.DoModal() == IDOK)
	{
		m_E_DBName.SetWindowText(dlg.GetPathName());
	}
	
}


void DLG_Setup::OnSetupIpFilenameSel() 
{
//	static TCHAR BASED_CODE szFilter[] = _T("Access Files (*.mdb)|*.mdb|All Files (*.*)|*.*||");
//	CFileDialog dlg(TRUE,_T("mdb"),_T("ip.mdb"),  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
//	if (dlg.DoModal() == IDOK)
//	{
//		m_E_IPName.SetWindowText(dlg.GetPathName());
//	}
		
}


void DLG_Setup::OnBnClickedOk()
{
	//ȡ����
	m_Setup.uiDBType = m_L_DBType.GetCurSel();
	m_E_DBName.GetWindowText( m_Setup.szDBName , sizeof(m_Setup.szDBName) ); AllTrim(m_Setup.szDBName);
	m_E_DBUser.GetWindowText( m_Setup.szDBUser , sizeof(m_Setup.szDBUser) ); AllTrim(m_Setup.szDBUser);
	m_E_DBPassword.GetWindowText( m_Setup.szDBPasswd , sizeof(m_Setup.szDBUser) ); AllTrim(m_Setup.szDBUser);

	m_E_DBName2.GetWindowText( m_Setup.szDBName2 , sizeof(m_Setup.szDBName2) ); AllTrim(m_Setup.szDBName2);
	m_E_DBUser2.GetWindowText( m_Setup.szDBUser2 , sizeof(m_Setup.szDBUser2) ); AllTrim(m_Setup.szDBUser2);
	m_E_DBPassword2.GetWindowText( m_Setup.szDBPasswd2 , sizeof(m_Setup.szDBUser2) ); AllTrim(m_Setup.szDBUser2);

	m_E_DBName3.GetWindowText( m_Setup.szDBName3 , sizeof(m_Setup.szDBName3) ); AllTrim(m_Setup.szDBName3);
	m_E_DBUser3.GetWindowText( m_Setup.szDBUser3 , sizeof(m_Setup.szDBUser3) ); AllTrim(m_Setup.szDBUser3);
	m_E_DBPassword3.GetWindowText( m_Setup.szDBPasswd3 , sizeof(m_Setup.szDBUser3) ); AllTrim(m_Setup.szDBUser3);
	m_E_Provider.GetWindowText(m_Setup.szProvider, sizeof(m_Setup.szProvider)); AllTrim(m_Setup.szProvider);

	m_E_MQ_Server.GetWindowText( m_Setup.szMQ_Server , sizeof(m_Setup.szMQ_Server) ); AllTrim(m_Setup.szMQ_Server);
	m_E_MQ_QM.GetWindowText( m_Setup.szMQ_QM         , sizeof(m_Setup.szMQ_QM) );     AllTrim(m_Setup.szMQ_QM);
	m_E_MQ_QRecv.GetWindowText( m_Setup.szMQ_QRecv   , sizeof(m_Setup.szMQ_QRecv) );  AllTrim(m_Setup.szMQ_QRecv);
	m_E_MQ_QSendP.GetWindowText( m_Setup.szMQ_QSendP , sizeof(m_Setup.szMQ_QSendP) ); AllTrim(m_Setup.szMQ_QSendP);
	m_E_MQ_QSendB.GetWindowText( m_Setup.szMQ_QSendB , sizeof(m_Setup.szMQ_QSendB) ); AllTrim(m_Setup.szMQ_QSendB);

	m_E_IPName.GetWindowText( m_Setup.szIPName , sizeof(m_Setup.szIPName));AllTrim(m_Setup.szIPName);


	if ( _tcslen( m_Setup.szDBName) <= 0 )
	{
		MessageBox( _T("���ݿ��ַ����Ϊ�գ�������!") , _T("����") , MB_ICONWARNING );
		m_E_DBName.SetFocus();
		return ;
	}

	CString strAddr ;
	m_L_Address.GetWindowText(strAddr);
	if ( strAddr == CString(_T("����")) )
	{
		m_Setup.addr = htonl(INADDR_ANY);
	}
	else
	{
#ifdef UNICODE
		m_Setup.addr = inet_addr( CW2A(strAddr) );
#else
		m_Setup.addr = inet_addr( strAddr );
#endif
	}

	m_Setup.bZlib = m_B_Zlib.GetCheck();
	m_Setup.bZlibManager = m_B_Zlib_Manager.GetCheck();
	m_Setup.bXY = m_B_XY.GetCheck();

	CDialog::OnOK();
}