// IPSetup.cpp : implementation file
//

#include "stdafx.h"
#include "PLCAlarmSim.h"
#include "IPSetup.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CIPSetup dialog


CIPSetup::CIPSetup(CWnd* pParent /*=NULL*/)
    : CDialog(CIPSetup::IDD, pParent)
{
    //{{AFX_DATA_INIT(CIPSetup)
    m_dwPort = 0;
    //}}AFX_DATA_INIT

    m_Address = _T( "127.0.0.1" );
}


void CIPSetup::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CIPSetup)
    DDX_Control(pDX, IDC_IPADDRESS, m_IPAddress);
    DDX_Text(pDX, IDC_EDIT_PORT, m_dwPort);
    DDV_MinMaxDWord(pDX, m_dwPort, 0, 99999);
    //}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CIPSetup, CDialog)
    //{{AFX_MSG_MAP(CIPSetup)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CIPSetup message handlers

void CIPSetup::OnOK( void )
{
    UpdateData( TRUE );

    // Convert the dwAddress from the dialog control back to a string.

    DWORD dwAddress = 0;

    m_IPAddress.GetAddress( dwAddress );

    SOCKADDR_IN sSocketAddress = { 0 };

    sSocketAddress.sin_family           = PF_INET;
    sSocketAddress.sin_port             = htons( static_cast<unsigned short>( m_dwPort ) );
    sSocketAddress.sin_addr.S_un.S_addr = htonl( dwAddress );

    m_Address = inet_ntoa( sSocketAddress.sin_addr );

    CDialog::OnOK();
}

void CIPSetup::OnCancel( void )
{
    CDialog::OnCancel();
}

BOOL CIPSetup::OnInitDialog()
{
    CDialog::OnInitDialog();

    // Convert from string address to dwAddress then set the dialog control

    SOCKADDR_IN sSocketAddress = { 0 };

    sSocketAddress.sin_family           = PF_INET;
    sSocketAddress.sin_port             = htons( static_cast<unsigned short>( m_dwPort ) );
    sSocketAddress.sin_addr.S_un.S_addr = htonl( inet_addr( static_cast<LPCTSTR>( m_Address ) ) );

    m_IPAddress.SetAddress( sSocketAddress.sin_addr.S_un.S_addr );
	
    return TRUE;  // return TRUE unless you set the focus to a control
                  // EXCEPTION: OCX Property Pages should return FALSE
}
