/*++

Copyright (c) 1996  Microsoft Corporation

Module Name:

    FPInfo.cpp : implementation file

  CPropertyPage support for User mgmt wizard

File History:

	JonY	Apr-96	created

--*/


#include "stdafx.h"
#include "speckle.h"
#include "wizbased.h"
#include "FPInfo.h"

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

/////////////////////////////////////////////////////////////////////////////
// CFPInfo property page

IMPLEMENT_DYNCREATE(CFPInfo, CWizBaseDlg)

CFPInfo::CFPInfo() : CWizBaseDlg(CFPInfo::IDD)
{
	//{{AFX_DATA_INIT(CFPInfo)
	m_nGraceLogins = 0;
	m_nConcurrentConnections = 0;
	m_csCaption = _T("");
	m_sAllowedGraceLogins = 6;
	m_sConcurrentConnections = 1;
	//}}AFX_DATA_INIT
}
CFPInfo::~CFPInfo()
{
}

void CFPInfo::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFPInfo)
	DDX_Control(pDX, IDC_CONCURRENT_CONNECTIONS_SPIN, m_sbConconSpin);
	DDX_Control(pDX, IDC_GRACE_LOGIN_SPIN, m_sbGraceLogins);
	DDX_Radio(pDX, IDC_GRACE_LOGIN_RADIO, m_nGraceLogins);
	DDX_Radio(pDX, IDC_CONCURRENT_CONNECTIONS_RADIO1, m_nConcurrentConnections);
	DDX_Text(pDX, IDC_STATIC1, m_csCaption);
	DDX_Text(pDX, IDC_ALLOWED_GRACE_LOGINS_EDIT, m_sAllowedGraceLogins);
	DDV_MinMaxUInt(pDX, m_sAllowedGraceLogins, 0, 200);
	DDX_Text(pDX, IDC_CONCURRENT_CONNECTIONS_EDIT, m_sConcurrentConnections);
	DDV_MinMaxUInt(pDX, m_sConcurrentConnections, 1, 1000);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFPInfo, CWizBaseDlg)
	//{{AFX_MSG_MAP(CFPInfo)
	ON_BN_CLICKED(IDC_GRACE_LOGIN_RADIO, OnGraceLoginRadio)
	ON_BN_CLICKED(IDC_GRACE_LOGIN_RADIO2, OnGraceLoginRadio2)
	ON_BN_CLICKED(IDC_CONCURRENT_CONNECTIONS_RADIO1, OnConcurrentConnectionsRadio)
	ON_BN_CLICKED(IDC_CONCURRENT_CONNECTIONS_RADIO2, OnConcurrentConnectionsRadio2)
	ON_WM_SHOWWINDOW()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFPInfo message handlers

// Disable the contents of the group control
void CFPInfo::OnGraceLoginRadio() 
{
	m_nGraceLogins = 0;
	GetDlgItem(IDC_ALLOWED_GRACE_LOGINS_EDIT)->EnableWindow(FALSE);
	GetDlgItem(IDC_GRACE_LOGIN_SPIN)->EnableWindow(FALSE);
	
}

// Enable the contents of the group control
void CFPInfo::OnGraceLoginRadio2() 
{
	m_nGraceLogins = 1;
	GetDlgItem(IDC_ALLOWED_GRACE_LOGINS_EDIT)->EnableWindow(TRUE);
	GetDlgItem(IDC_GRACE_LOGIN_SPIN)->EnableWindow(TRUE);

	m_sbGraceLogins.SetRange(0,200);
	
}

BOOL CFPInfo::OnInitDialog() 
{
	CWizBaseDlg::OnInitDialog();

// set group box defaults
	GetDlgItem(IDC_ALLOWED_GRACE_LOGINS_EDIT)->EnableWindow(FALSE);
	GetDlgItem(IDC_GRACE_LOGIN_SPIN)->EnableWindow(FALSE);

	GetDlgItem(IDC_CONCURRENT_CONNECTIONS_EDIT)->EnableWindow(FALSE);
	GetDlgItem(IDC_CONCURRENT_CONNECTIONS_SPIN)->EnableWindow(FALSE);

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

// disable			 
void CFPInfo::OnConcurrentConnectionsRadio() 
{
	GetDlgItem(IDC_CONCURRENT_CONNECTIONS_EDIT)->EnableWindow(FALSE);
	GetDlgItem(IDC_CONCURRENT_CONNECTIONS_SPIN)->EnableWindow(FALSE);
}

// enable
void CFPInfo::OnConcurrentConnectionsRadio2() 
{
	GetDlgItem(IDC_CONCURRENT_CONNECTIONS_EDIT)->EnableWindow(TRUE);
	GetDlgItem(IDC_CONCURRENT_CONNECTIONS_SPIN)->EnableWindow(TRUE);
	m_sbConconSpin.SetRange(1, 1000);
}

LRESULT CFPInfo::OnWizardNext() 
{
	CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
	UpdateData(TRUE);

	if (m_nGraceLogins != 0) // limited
		{
		pApp->m_sNWAllowedGraceLogins = m_sAllowedGraceLogins;
		pApp->m_sNWRemainingGraceLogins = m_sAllowedGraceLogins;
		}
	else					// unlimited
		{
		pApp->m_sNWAllowedGraceLogins = 0x6;
		pApp->m_sNWRemainingGraceLogins = 0xff;
		}

	if (m_nConcurrentConnections == 0) pApp->m_sNWConcurrentConnections = 0xffff;
	else pApp->m_sNWConcurrentConnections = m_sConcurrentConnections;
	
	if (pApp->m_bExchange) return IDD_EXCHANGE_DIALOG;
	else return IDD_RESTRICTIONS_DIALOG;
	
}

LRESULT CFPInfo::OnWizardBack() 
{
	CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
	if (pApp->m_bRAS) return IDD_RAS_PERM_DIALOG;
	else if (pApp->m_bHomeDir) return IDD_HOMEDIR_DIALOG;
	else if (pApp->m_bLoginScript) return IDD_LOGON_SCRIPT_DIALOG;
	else if (pApp->m_bProfile) return IDD_PROFILE;
	else return IDD_OPTIONS_DIALOG;
	
}

void CFPInfo::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	CWizBaseDlg::OnShowWindow(bShow, nStatus);
	
	if (bShow)
		{
		CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();

		CString csTemp;
		csTemp.LoadString(IDS_FPNW_CAPTION);

		CString csTemp2;
		csTemp2.Format(csTemp, pApp->m_csUserName);
		m_csCaption = csTemp2;
		UpdateData(FALSE);
		}
	
}