/****************************************************************/
/*																*/
/*  WizardPages.cpp												*/
/*																*/
/*  Implementation of the New User Wizard.						*/
/*																*/
/*  Programmed by LYFZ van der Meer							*/
/*  Copyright LYFZ Software Solutions 2002						*/
/*	http://www.LYFZvandermeer.nl								*/
/*																*/
/*  Last updated: 10 july 2002									*/
/*																*/
/****************************************************************/


#include "stdafx.h"
#include "LYFZReceiveMsgApp.h"
#include "LYFZReceiveMsg.h"
#include "WizardPages.h"

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


IMPLEMENT_DYNAMIC(CWizardSheet, CPropertySheetEx)

CWizardSheet::CWizardSheet(UINT nIDCaption, CWnd* pParentWnd,
	UINT iSelectPage, HBITMAP hbmWatermark, HPALETTE hpalWatermark,
	HBITMAP hbmHeader)
: CPropertySheetEx(nIDCaption, pParentWnd, iSelectPage,
				  hbmWatermark, hpalWatermark, hbmHeader)
{
	// add all the pages of the wizard
	InitPages();

	// set the WIZARD97 flag so we'll get the new look
	m_psh.dwFlags |= PSH_WIZARD97;
	m_psh.dwFlags &= ~PSH_HASHELP; 
}

CWizardSheet::CWizardSheet(LPCTSTR pszCaption, CWnd* pParentWnd,
	UINT iSelectPage, HBITMAP hbmWatermark, HPALETTE hpalWatermark,
	HBITMAP hbmHeader)
: CPropertySheetEx(pszCaption, pParentWnd, iSelectPage,
					  hbmWatermark, hpalWatermark, hbmHeader)

{
	// add all the pages of the wizard
	InitPages();

	// set the WIZARD97 flag so we'll get the new look
	m_psh.dwFlags |= PSH_WIZARD97;
	m_psh.dwFlags &= ~PSH_HASHELP; 
}


CWizardSheet::~CWizardSheet()
{
}


BEGIN_MESSAGE_MAP(CWizardSheet, CPropertySheetEx)
	//{{AFX_MSG_MAP(CWizardSheet)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : InitPages										*/
/* Description   : Add pages to wizard.								*/
/*																	*/
/********************************************************************/
void CWizardSheet::InitPages()
{
	AddPage(&m_Page1);
	AddPage(&m_Page2);
	AddPage(&m_Page3);
	AddPage(&m_Page4);
	AddPage(&m_PageFinish);
}



IMPLEMENT_DYNCREATE(CWizardPage1, CPropertyPageEx)

CWizardPage1::CWizardPage1() : CPropertyPageEx(CWizardPage1::IDD, 0, IDS_HEADERTITLE1, NULL)
{
	//{{AFX_DATA_INIT(CWizardPage1)
	m_strAccountName = _T("");
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP; 
}

CWizardPage1::~CWizardPage1()
{
}

void CWizardPage1::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPageEx::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizardPage1)
	DDX_Text(pDX, IDC_ACCOUNTNAME, m_strAccountName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWizardPage1, CPropertyPageEx)
	//{{AFX_MSG_MAP(CWizardPage1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnSetActive										*/
/* Description   : Called when this becomes the active page.		*/
/*																	*/
/********************************************************************/
BOOL CWizardPage1::OnSetActive() 
{
	CPropertySheetEx* parent = (CPropertySheetEx*)GetParent();
	parent->SetWizardButtons(PSWIZB_NEXT);
	return CPropertyPageEx::OnSetActive();
}


/********************************************************************/
/*																	*/
/* Function name : OnWizardNext										*/
/* Description   : Called when Next button has been pressed.		*/
/*																	*/
/********************************************************************/
LRESULT CWizardPage1::OnWizardNext() 
{
	CEdit *editBox = (CEdit *)GetDlgItem(IDC_ACCOUNTNAME);
	if (editBox->GetWindowTextLength() == 0)
	{
		MessageBox("You must enter an account name.", "Account Wizard",  MB_OK | MB_ICONEXCLAMATION);
		editBox->SetFocus();
		return -1;
	}	
	return CPropertyPageEx::OnWizardNext();
}


IMPLEMENT_DYNCREATE(CWizardPage2, CPropertyPageEx)

CWizardPage2::CWizardPage2() : CPropertyPageEx(CWizardPage2::IDD, 0, IDS_HEADERTITLE2, NULL)
{
	//{{AFX_DATA_INIT(CWizardPage2)
	m_strPassword = _T("");
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP; 
}

CWizardPage2::~CWizardPage2()
{
}

void CWizardPage2::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPageEx::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizardPage2)
	DDX_Text(pDX, IDC_PASSWORD, m_strPassword);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWizardPage2, CPropertyPageEx)
	//{{AFX_MSG_MAP(CWizardPage2)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnSetActive										*/
/* Description   : Called when this becomes the active page.		*/
/*																	*/
/********************************************************************/
BOOL CWizardPage2::OnSetActive() 
{
	CPropertySheetEx* parent = (CPropertySheetEx*)GetParent();
	parent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);	
	return CPropertyPageEx::OnSetActive();
}


/********************************************************************/
/*																	*/
/* Function name : OnWizardNext										*/
/* Description   : Called when Next button has been pressed.		*/
/*																	*/
/********************************************************************/
LRESULT CWizardPage2::OnWizardNext() 
{
	CString strPassword, strConfirmPassword;

	GetDlgItemText(IDC_PASSWORD, strPassword);
	GetDlgItemText(IDC_CONFIRMPASSWORD, strConfirmPassword);

	if (strPassword != strConfirmPassword)
	{
		MessageBox("The passwords do not match!\r\nPlease make sure 'Password' and 'Confirm Password' are the same.", "Connection Wizard",  MB_OK | MB_ICONEXCLAMATION);
		GetDlgItem(IDC_PASSWORD)->SetFocus();
		return -1;
	}	
	return CPropertyPageEx::OnWizardNext();
}


IMPLEMENT_DYNCREATE(CWizardPage3, CPropertyPageEx)

CWizardPage3::CWizardPage3() : CPropertyPageEx(CWizardPage3::IDD, 0, IDS_HEADERTITLE3, NULL)
{
	//{{AFX_DATA_INIT(CWizardPage3)
	m_strHomeDirectory = _T("");
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP; 
}

CWizardPage3::~CWizardPage3()
{
}

void CWizardPage3::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPageEx::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizardPage3)
	DDX_Text(pDX, IDC_HOMEDIRECTORY, m_strHomeDirectory);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWizardPage3, CPropertyPageEx)
	//{{AFX_MSG_MAP(CWizardPage3)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnSetActive										*/
/* Description   : Called when this becomes the active page.		*/
/*																	*/
/********************************************************************/
BOOL CWizardPage3::OnSetActive() 
{
	CPropertySheetEx* parent = (CPropertySheetEx*)GetParent();
	parent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);		
	return CPropertyPageEx::OnSetActive();
}


/********************************************************************/
/*																	*/
/* Function name : OnBrowse											*/
/* Description   : Browse for folder.								*/
/*																	*/
/********************************************************************/
void CWizardPage3::OnBrowse() 
{
	CString strDir = BrowseForFolder(m_hWnd, "Select a directory:", BIF_RETURNONLYFSDIRS);
	if (!strDir.IsEmpty())
	{
		GetDlgItem(IDC_HOMEDIRECTORY)->SetWindowText(strDir);
	}	
}


/********************************************************************/
/*																	*/
/* Function name : OnWizardNext										*/
/* Description   : Called when Next button has been pressed.		*/
/*																	*/
/********************************************************************/
LRESULT CWizardPage3::OnWizardNext() 
{
	CString strHomeDirectory;
	if (GetDlgItemText(IDC_HOMEDIRECTORY, strHomeDirectory) == 0)
	{
		MessageBox("You must specify a home directory.", "Account Wizard",  MB_OK | MB_ICONEXCLAMATION);
		GetDlgItem(IDC_HOMEDIRECTORY)->SetFocus();
		return -1;
	}	

	// check if it's a valid directory
	if (GetFileAttributes(strHomeDirectory) == 0xFFFFFFFF)
	{
		MessageBox("The directory you entered is not valid.", "Account Wizard",  MB_OK | MB_ICONEXCLAMATION);
		GetDlgItem(IDC_HOMEDIRECTORY)->SetFocus();
		return -1;
	}
	return CPropertyPageEx::OnWizardNext();
}


IMPLEMENT_DYNCREATE(CWizardPage4, CPropertyPageEx)

CWizardPage4::CWizardPage4() : CPropertyPageEx(CWizardPage4::IDD, 0, IDS_HEADERTITLE4, NULL)
{
	//{{AFX_DATA_INIT(CWizardPage4)
	m_bAllowCreateDirectory = FALSE;
	m_bAllowDelete = FALSE;
	m_bAllowDownload = FALSE;
	m_bAllowRename = FALSE;
	m_bAllowUpload = FALSE;
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= ~PSP_HASHELP; 
}

CWizardPage4::~CWizardPage4()
{
}

void CWizardPage4::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPageEx::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizardPage4)
	DDX_Check(pDX, IDC_CREATE_DIR, m_bAllowCreateDirectory);
	DDX_Check(pDX, IDC_DELETE, m_bAllowDelete);
	DDX_Check(pDX, IDC_DOWNLOAD, m_bAllowDownload);
	DDX_Check(pDX, IDC_RENAME, m_bAllowRename);
	DDX_Check(pDX, IDC_UPLOAD, m_bAllowUpload);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWizardPage4, CPropertyPageEx)
	//{{AFX_MSG_MAP(CWizardPage4)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnInitDialog										*/
/* Description   : Initialize dialog.								*/
/*																	*/
/********************************************************************/
BOOL CWizardPage4::OnInitDialog() 
{
	CPropertyPageEx::OnInitDialog();
	
	return TRUE;
}


/********************************************************************/
/*																	*/
/* Function name : OnSetActive										*/
/* Description   : Called when this becomes the active page.		*/
/*																	*/
/********************************************************************/
BOOL CWizardPage4::OnSetActive() 
{
	CPropertySheetEx* parent = (CPropertySheetEx*)GetParent();
	parent->SetWizardButtons( PSWIZB_BACK | PSWIZB_NEXT);	
	return CPropertyPageEx::OnSetActive();
}



IMPLEMENT_DYNCREATE(CWizardFinish, CPropertyPageEx)

CWizardFinish::CWizardFinish() : CPropertyPageEx(CWizardFinish::IDD)
{
	//{{AFX_DATA_INIT(CWizardFinish)
	//}}AFX_DATA_INIT
	m_psp.dwFlags |= PSP_HIDEHEADER;
	m_psp.dwFlags &= ~PSP_HASHELP; 
}

CWizardFinish::~CWizardFinish()
{
}

void CWizardFinish::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPageEx::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWizardFinish)
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CWizardFinish, CPropertyPageEx)
	//{{AFX_MSG_MAP(CWizardFinish)
	ON_BN_CLICKED(IDC_CONNECTNOW, OnConnectnow)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()


/********************************************************************/
/*																	*/
/* Function name : OnSetActive										*/
/* Description   : Called when this becomes the active page.		*/
/*																	*/
/********************************************************************/
BOOL CWizardFinish::OnSetActive() 
{
	CPropertySheetEx* parent = (CPropertySheetEx*)GetParent();
	parent->SetWizardButtons( PSWIZB_BACK | PSWIZB_NEXT | PSWIZB_FINISH);	
	return CPropertyPageEx::OnSetActive();
}


/********************************************************************/
/*																	*/
/* Function name : OnConnectnow										*/
/* Description   :													*/
/*																	*/
/********************************************************************/
void CWizardFinish::OnConnectnow() 
{
	UpdateData();	
}