gecko-dev/cmd/winfe/setupwiz.cpp

1695 строки
45 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "stdafx.h"
#include "property.h"
#include "styles.h"
#include "helper.h"
#include "display.h"
#include "dialog.h"
#include "secnav.h"
#include "custom.h"
#include "cxabstra.h"
#include "setupwiz.h"
#include "logindg.h"
#include "prefapi.h"
#include "mnwizard.h"
#include "msgcom.h"
#include "mailmisc.h"
#include "mucproc.h"
#include "profile.h"
#include "mnprefs.h"
#define BUFSZ MAX_PATH+1
extern "C" BOOL IsNumeric(char* pStr);
#ifdef XP_WIN32
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConfirmPage
CConfirmPage::CConfirmPage(CWnd *pParent)
: CNetscapePropertyPage(IDD)
{
//{{AFX_DATA_INIT(CIntroPage)
//}}AFX_DATA_INIT
m_pParent = (CNewProfileWizard*)pParent;
}
CConfirmPage::~CConfirmPage()
{
}
BOOL CConfirmPage::OnSetActive()
{
m_pParent->SetWizardButtons(PSWIZB_FINISH | PSWIZB_BACK);
return CNetscapePropertyPage::OnSetActive();
}
void CConfirmPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BOOL CConfirmPage::OnInitDialog()
{
BOOL ret;
ret = CNetscapePropertyPage::OnInitDialog();
CButton * pMove = (CButton *) GetDlgItem(IDC_MOVEFILES);
if (!m_pParent->m_bUpgrade) {
GetDlgItem(IDC_MOVEFILES)->EnableWindow(FALSE);
GetDlgItem(IDC_COPYFILES)->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_IGNOREFILES))->SetCheck(TRUE);
}
else if (pMove)
pMove->SetCheck(TRUE);
return ret;
}
int CConfirmPage::DoFinish()
{
CButton * pMove = (CButton *) GetDlgItem(IDC_MOVEFILES);
CButton * pCopy = (CButton *) GetDlgItem(IDC_COPYFILES);
CButton * pIgnore = (CButton *) GetDlgItem(IDC_IGNOREFILES);
int iMove = TRUE;
int iCopy = FALSE;
int iIgnore = FALSE;
if (pMove)
iMove = pMove->GetCheck();
if (pCopy)
iCopy = pCopy->GetCheck();
if (pIgnore)
iIgnore = pIgnore->GetCheck();
if (iMove) {
login_UpdateFilesToNewLocation(m_pParent->m_pProfilePath,m_pParent,FALSE); // move files
login_UpdatePreferencesToJavaScript(m_pParent->m_pProfilePath); // upgrade prefs
} else if (iCopy) {
login_UpdateFilesToNewLocation(m_pParent->m_pProfilePath,m_pParent,TRUE); // Copy files
login_UpdatePreferencesToJavaScript(m_pParent->m_pProfilePath); // upgrade prefs
} else {
// just create the directories --
login_CreateEmptyProfileDir(m_pParent->m_pProfilePath, m_pParent,m_pParent->m_bExistingDir);
}
return TRUE;
}
BEGIN_MESSAGE_MAP(CConfirmPage, CNetscapePropertyPage)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CIntroPage
CIntroPage::CIntroPage(CWnd *pParent)
: CNetscapePropertyPage(IDD)
{
//{{AFX_DATA_INIT(CIntroPage)
//}}AFX_DATA_INIT
m_pParent = (CNewProfileWizard*)pParent;
}
BOOL CIntroPage::OnSetActive()
{
m_pParent->SetWizardButtons(PSWIZB_NEXT);
return CNetscapePropertyPage::OnSetActive();
}
BOOL CIntroPage::OnInitDialog()
{
BOOL ret = CNetscapePropertyPage::OnInitDialog();
if(theApp.m_bPEEnabled)
{
CString m_str;
m_str.LoadString(IDS_PE_INTROPAGE_TEXT);
GetDlgItem(IDC_INTRO_TEXT)->SetWindowText(m_str);
}
return ret;
}
void CIntroPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CIntroPage, CNetscapePropertyPage)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNamePage
CNamePage::CNamePage(CWnd *pParent)
: CNetscapePropertyPage(IDD)
{
//{{AFX_DATA_INIT(CProfileNamePage)
//}}AFX_DATA_INIT
m_pParent = (CNewProfileWizard*)pParent;
}
CNamePage::~CNamePage()
{
}
BOOL CNamePage::OnInitDialog()
{
BOOL ret;
char * pString = NULL;
ret = CNetscapePropertyPage::OnInitDialog();
if (m_pParent->m_bUpgrade) {
// if we aren't creating a new profile, we are updating an existing one
CString csUserAddr = theApp.GetProfileString("User","User_Addr","DefaultUser");
CString csFullName = theApp.GetProfileString("User","User_Name","");
m_pParent->m_pUserAddr = csUserAddr;
m_pParent->m_pFullName = csFullName;
} else {
char buffer[256];
int nLen = 255;
if (PREF_NOERROR == PREF_GetCharPref("mail.identity.username", buffer, &nLen))
m_pParent->m_pFullName = buffer;
if (PREF_NOERROR == PREF_GetCharPref("mail.identity.useremail", buffer, &nLen))
m_pParent->m_pUserAddr = buffer;
}
SetDlgItemText(IDC_USER_NAME, m_pParent->m_pFullName);
SetDlgItemText(IDC_EMAIL_ADDR, m_pParent->m_pUserAddr);
if(theApp.m_bPEEnabled)
ShowHideEmailName();
return ret;
}
void CNamePage::ShowHideEmailName()
{
// PE: disable email entry
int nShowCmd;
CString text;
if(theApp.m_bPEEnabled && m_pParent->m_bASWEnabled)
{
text.LoadString(IDS_PEMUC_NAMEPAGE_TEXT);
SetDlgItemText(IDC_EMAIL_TEXT1,(LPCTSTR)text);
nShowCmd = SW_HIDE;
}
else
{
text.LoadString(IDS_MUP_NAMEPAGE_TEXT);
SetDlgItemText(IDC_EMAIL_TEXT1,(LPCTSTR)text);
nShowCmd = SW_SHOW;
}
GetDlgItem(IDC_EMAIL_ADDRTEXT)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EMAIL_ADDR)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EMAIL_ADDREG)->ShowWindow(nShowCmd);
}
BOOL CNamePage::OnSetActive()
{
m_pParent->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
return CNetscapePropertyPage::OnSetActive();
}
void CNamePage::DoFinish()
{
if (!m_pParent->m_pFullName.IsEmpty())
PREF_SetCharPref("mail.identity.username",m_pParent->m_pFullName);
if (!m_pParent->m_pUserAddr.IsEmpty())
PREF_SetCharPref("mail.identity.useremail",m_pParent->m_pUserAddr);
}
void CNamePage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
if (pDX->m_bSaveAndValidate) {
char name[BUFSZ];
if (GetDlgItemText(IDC_EMAIL_ADDR, name, BUFSZ))
m_pParent->m_pUserAddr = name;
if (GetDlgItemText(IDC_USER_NAME, name, BUFSZ))
m_pParent->m_pFullName = name;
// Set the preference now so that future pages (like the mail/news pages) will be able
// to access it.
if (!m_pParent->m_pFullName.IsEmpty())
PREF_SetCharPref("mail.identity.username",m_pParent->m_pFullName);
if (!m_pParent->m_pUserAddr.IsEmpty())
PREF_SetCharPref("mail.identity.useremail",m_pParent->m_pUserAddr);
}
}
BEGIN_MESSAGE_MAP(CNamePage, CNetscapePropertyPage)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CProfileNamePage
CProfileNamePage::CProfileNamePage(CWnd *pParent)
: CNetscapePropertyPage(IDD)
{
//{{AFX_DATA_INIT(CProfileNamePage)
//}}AFX_DATA_INIT
m_pParent = (CNewProfileWizard*)pParent;
m_pParent->m_pProfileName = "";
m_pParent->m_pProfilePath = "";
}
CProfileNamePage::~CProfileNamePage()
{
}
BOOL CProfileNamePage::OnInitDialog()
{
BOOL ret;
char * pString = NULL;
ret = CNetscapePropertyPage::OnInitDialog();
CString csUserAddrShort;
CString csUserDirectory;
csUserDirectory.Empty();
int iAtSign = m_pParent->m_pUserAddr.Find('@');
if (iAtSign != -1)
csUserAddrShort = m_pParent->m_pUserAddr.Left(iAtSign);
else
csUserAddrShort = m_pParent->m_pUserAddr;
if (csUserAddrShort.IsEmpty())
csUserAddrShort = "default";
CUserProfileDB::AssignProfileDirectoryName(csUserAddrShort,csUserDirectory);
SetDlgItemText(IDC_PROFILE_DIR, csUserDirectory);
SetDlgItemText(IDC_PROFILE_NAME, csUserAddrShort);
PREF_SetCharPref("mail.pop_name",csUserAddrShort);
return ret;
}
BOOL CProfileNamePage::OnSetActive()
{
#ifndef MOZ_MAIL_NEWS // Is this the correct ifdef?
if(!theApp.m_bPEEnabled ||( theApp.m_bPEEnabled && (!m_pParent->m_bMucEnabled) && (!m_pParent->m_bASWEnabled)))
{
if(!m_pParent->m_bUpgrade)
{
m_pParent->SetWizardButtons(PSWIZB_FINISH | PSWIZB_BACK);
CString text;
text.LoadString(IDS_CLICK_FINISH);
GetDlgItem(IDC_PROFILENAME_TEXT)->SetWindowText(text);
}
}
else
m_pParent->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
#else
m_pParent->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
#endif /* MOZ_MAIL_NEWS */
return CNetscapePropertyPage::OnSetActive();
}
int CProfileNamePage::DoFinish()
{
char path[BUFSZ],name[BUFSZ];
int ret;
XP_StatStruct statinfo;
if (!GetDlgItemText(IDC_PROFILE_NAME, name, BUFSZ)) {
AfxMessageBox(szLoadString(IDS_INVALID_PROFILE_NAME),MB_OK);
return FALSE;
}
if (GetDlgItemText(IDC_PROFILE_DIR, path, BUFSZ)) {
if (path[strlen(path)-1] == '\\') path[strlen(path)-1] = NULL; // remove last slash...
ret = _stat((char *) path, &statinfo);
if (!ret) {
// Directory already exists!
if (AfxMessageBox(szLoadString(IDS_PROFDIR_EXISTS),MB_OKCANCEL) == IDCANCEL)
return FALSE;
else
m_pParent->m_bExistingDir = TRUE;
}
if(ret == -1) {
// see if we can just create it
char * slash = strchr(path,'\\');
while (slash) {
slash[0] = NULL;
ret = CreateDirectory(path,NULL);
slash[0] = '\\';
if (slash+1) slash = strchr(slash+1,'\\');
}
ret = CreateDirectory(path,NULL);
if (!ret) {
AfxMessageBox(szLoadString(IDS_UNABLE_CREATE_DIR),MB_OK);
return FALSE;
}
}
} else {
AfxMessageBox(szLoadString(IDS_INVALID_PROFILE_NAME),MB_OK);
return FALSE;
}
if (GetDlgItemText(IDC_PROFILE_NAME, name, BUFSZ))
login_CreateNewUserKey(name,path);
m_pParent->m_pProfileName = name;
m_pParent->m_pProfilePath = path;
return TRUE;
}
void CProfileNamePage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BOOL CProfileNamePage::UpdateData(BOOL bValidate)
{
char path[BUFSZ];
if (bValidate) {
if (GetDlgItemText(IDC_PROFILE_DIR, path, BUFSZ)) {
if (!path || !path[0]) {
AfxMessageBox(szLoadString(IDS_PROFILE_EMPTY));
return FALSE;
}
}
else return FALSE;
}
return TRUE;
}
void CProfileNamePage::GetProfilePath(char *path)
{
if (GetDlgItemText(IDC_PROFILE_DIR, path, BUFSZ))
if (path[strlen(path)-1] == '\\')
path[strlen(path)-1] = NULL; // remove last slash...
}
BEGIN_MESSAGE_MAP(CProfileNamePage, CNetscapePropertyPage)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CNewProfileWizard
CNewProfileWizard::CNewProfileWizard(CWnd *pParent, BOOL bUpgrade)
: CNetscapePropertySheet("", pParent)
{
m_pIntroPage = new CIntroPage(this);
m_pNamePage = new CNamePage(this);
m_pProfileNamePage = new CProfileNamePage(this);
m_pConfirmPage = new CConfirmPage(this);
m_bUpgrade = bUpgrade;
m_bExistingDir = FALSE;
m_pUserAddr = "defaultuser@domain.com";
#ifdef MOZ_MAIL_NEWS
m_pSendMailPage = new CSendMailPage(this);
m_pReceiveMailPage = new CReceiveMailPage(this);
m_pReadNewsPage = new CReadNewsPage(this);
#endif /* MOZ_MAIL_NEWS */
// PE: pe multiple user configuration
if(theApp.m_bPEEnabled){
m_pMucIntroPage = new CMucIntroPage(this);
m_pMucEditPage = new CMucEditPage(this,TRUE);
m_pASWReadyPage = new CASWReadyPage(this);
m_pMucReadyPage = new CMucReadyPage(this);
}
// PE: replace intro page with pe intro page
if(theApp.m_bPEEnabled)
{
AddPage(m_pIntroPage);
AddPage(m_pMucIntroPage);
AddPage(m_pNamePage);
AddPage(m_pProfileNamePage);
AddPage(m_pASWReadyPage);
#ifdef MOZ_MAIL_NEWS
AddPage(m_pSendMailPage);
AddPage(m_pReceiveMailPage);
AddPage(m_pReadNewsPage);
#endif // MOZ_MAIL_NEWS
AddPage(m_pMucReadyPage);
AddPage(m_pMucEditPage);
AddPage(m_pConfirmPage);
}
else
{
AddPage(m_pIntroPage);
AddPage(m_pNamePage);
AddPage(m_pProfileNamePage);
if (bUpgrade)
AddPage(m_pConfirmPage);
else
{
#ifdef MOZ_MAIL_NEWS
AddPage(m_pSendMailPage);
AddPage(m_pReceiveMailPage);
AddPage(m_pReadNewsPage);
#endif /* MOZ_MAIL_NEWS */
}
}
SetWizardMode();
}
BOOL CNewProfileWizard::OnInitDialog()
{
BOOL ret = CNetscapePropertySheet::OnInitDialog();
GetWindowText(m_title);
GetDlgItem(IDHELP)->ShowWindow(SW_HIDE);
return ret;
}
CNewProfileWizard::~CNewProfileWizard()
{
if (m_pIntroPage)
delete m_pIntroPage;
if (m_pNamePage)
delete m_pNamePage;
if (m_pProfileNamePage)
delete m_pProfileNamePage;
if (m_pConfirmPage)
delete m_pConfirmPage;
#ifdef MOZ_MAIL_NEWS
if (m_pSendMailPage)
delete m_pSendMailPage;
if (m_pReceiveMailPage)
delete m_pReceiveMailPage;
if (m_pReadNewsPage)
delete m_pReadNewsPage;
#endif // MOZ_MAIL_NEWS
// PE: MUC
if (theApp.m_bPEEnabled && m_pMucIntroPage)
delete m_pMucIntroPage;
if (theApp.m_bPEEnabled && m_pMucEditPage)
delete m_pMucEditPage;
if (theApp.m_bPEEnabled && m_pMucReadyPage)
delete m_pMucReadyPage;
if (theApp.m_bPEEnabled && m_pASWReadyPage)
delete m_pASWReadyPage;
}
// flag is to enable finish button push
void CNewProfileWizard::DoFinish()
{
if (m_pNamePage && ::IsWindow(m_pNamePage->GetSafeHwnd()))
m_pNamePage->DoFinish();
if (m_pProfileNamePage && ::IsWindow(m_pProfileNamePage->GetSafeHwnd())) {
if (m_pProfileNamePage->DoFinish()) {
if (m_bUpgrade) {
if (m_pConfirmPage && ::IsWindow(m_pConfirmPage->GetSafeHwnd()))
m_pConfirmPage->DoFinish();
} else {
login_CreateEmptyProfileDir(m_pProfilePath, this, m_bExistingDir);
#ifdef MOZ_MAIL_NEWS
if (m_pSendMailPage && ::IsWindow(m_pSendMailPage->GetSafeHwnd()))
m_pSendMailPage->DoFinish();
if (m_pReceiveMailPage && ::IsWindow(m_pReceiveMailPage->GetSafeHwnd()))
m_pReceiveMailPage->DoFinish();
if (m_pReadNewsPage && ::IsWindow(m_pReadNewsPage->GetSafeHwnd()))
m_pReadNewsPage->DoFinish();
#endif // MOZ_MAIL_NEWS
}
if (theApp.m_bPEEnabled)
{
// PE: upgrad case
if(m_bMucEnabled && m_bUpgrade && m_pMucEditPage
&& ::IsWindow(m_pMucEditPage->GetSafeHwnd()))
m_pMucEditPage->DoFinish();
// PE: dialer thread:
if(m_bMucEnabled && m_pMucEditPage
&& ::IsWindow(m_pMucEditPage->GetSafeHwnd()))
m_pMucEditPage->DoFinish();
// PE: account setup thread
else if (m_bASWEnabled && m_pASWReadyPage
&& ::IsWindow(m_pASWReadyPage->GetSafeHwnd()))
m_pASWReadyPage->DoFinish();
// PE: network thread
else
{
CMucProc m_mucProc;
m_mucProc.SetDialOnDemand("",FALSE);
}
}
PressButton(PSBTN_FINISH);
}
}
}
void CNewProfileWizard::DoNext()
{
PressButton(PSBTN_NEXT);
if(theApp.m_bPEEnabled)
{
CPropertyPage* curPage = GetActivePage();
if(curPage == m_pMucIntroPage && m_bUpgrade) // skip muc intro page
SetActivePage(m_pNamePage);
if(curPage == m_pNamePage && ::IsWindow(m_pNamePage->GetSafeHwnd()))
m_pNamePage->ShowHideEmailName();
if(curPage == m_pASWReadyPage)
{
if(!m_bASWEnabled)
{
if (m_bUpgrade)
SetActivePage(m_pMucEditPage);
else
#ifdef MOZ_MAIL_NEWS
SetActivePage(m_pSendMailPage);
#else
SetActivePage(m_pMucReadyPage);
#endif /* MOZ_MAIL_NEWS */
}
}
#ifdef MOZ_MAIL_NEWS
if(curPage == m_pReceiveMailPage)
m_pReadNewsPage->SetFinish(!m_bMucEnabled);
#endif /* MOZ_MAIL_NEWS */
if(curPage == m_pMucReadyPage || curPage == m_pMucEditPage)
SetTitle(m_title);
}
}
void CNewProfileWizard::DoBack()
{
PressButton(PSBTN_BACK);
if(theApp.m_bPEEnabled)
{
CPropertyPage* curPage = GetActivePage();
if(curPage == m_pASWReadyPage)
SetActivePage(m_pProfileNamePage);
if(curPage == m_pMucReadyPage && m_bUpgrade)
SetActivePage(m_pProfileNamePage);
if(curPage == m_pMucIntroPage && m_bUpgrade)
SetActivePage(m_pIntroPage);
}
}
void CNewProfileWizard::GetProfilePath(char *str)
{
if (m_pProfileNamePage && ::IsWindow(m_pProfileNamePage->GetSafeHwnd()))
m_pProfileNamePage->GetProfilePath(str);
}
BEGIN_MESSAGE_MAP(CNewProfileWizard, CNetscapePropertySheet)
ON_BN_CLICKED(ID_WIZFINISH,DoFinish)
ON_BN_CLICKED(ID_WIZNEXT,DoNext)
ON_BN_CLICKED(ID_WIZBACK,DoBack)
END_MESSAGE_MAP()
#else
/////////////////////////////////////////////////////////////////////////////
// CNewProfileWizard
CNewProfileWizard::CNewProfileWizard(CWnd *pParent, BOOL bUpgrade)
: CDialog(IDD, pParent)
{
m_nCurrentPage = ID_PAGE_INTRO;
m_bUpgrade = bUpgrade;
// PE: pe multiple user configuration
if(theApp.m_bPEEnabled)
{
m_pMucIntroPage = new CMucIntroPage(this);
m_pMucEditPage = new CMucEditPage(this,TRUE);
m_pASWReadyPage = new CASWReadyPage(this);
m_pMucReadyPage = new CMucReadyPage(this);
}
}
CNewProfileWizard::~CNewProfileWizard()
{
}
void CNewProfileWizard::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
void CNewProfileWizard::InitPrefStrings()
{
CString csUserAddr = "";
CString csFullName = "";
if (m_bUpgrade) {
csUserAddr = theApp.GetProfileString("User","User_Addr","");
csFullName = theApp.GetProfileString("User","User_Name","");
}
m_pUserAddr = csUserAddr;
m_pFullName = csFullName;
m_pProfileName = "";
m_pProfilePath = "";
m_bExistingDir = FALSE;
#ifdef MOZ_MAIL_NEWS
PREF_GetBoolPref("mail.leave_on_server", &m_bLeftOnServer);
m_szFullName = g_MsgPrefs.m_csUsersFullName;
m_szEmail = g_MsgPrefs.m_csUsersEmailAddr;
#endif /* MOZ_MAIL_NEWS */
char *prefStr = NULL;
PREF_CopyCharPref("network.hosts.smtp_server", &prefStr);
if (prefStr)
m_szMailServer = prefStr;
XP_FREEIF(prefStr);
prefStr = NULL;
PREF_CopyCharPref("mail.pop_name", &prefStr);
if (prefStr)
m_szPopName = prefStr;
XP_FREEIF(prefStr);
prefStr = NULL;
PREF_CopyCharPref("network.hosts.pop_server", &prefStr);
if (prefStr)
m_szInMailServer = prefStr;
XP_FREEIF(prefStr);
if (m_szInMailServer.IsEmpty())
m_szInMailServer = m_szMailServer;
int32 prefInt = 0;
PREF_GetIntPref("mail.server_type", &prefInt);
m_bUseIMAP = prefInt == MSG_Imap4;
#ifdef MOZ_MAIL_NEWS
if (m_bUseIMAP)
{
char serverName[128];
GetImapServerName(serverName);
m_szPopName = serverName;
if (strlen(serverName) > 0)
{
char userName[128];
GetImapUserName(serverName, userName);
if (strlen(userName) > 0)
m_szInMailServer = userName;
}
}
else
{ //POP server
pPrefStr = NULL;
PREF_CopyCharPref("mail.pop_name", &pPrefStr);
m_szPopName = pPrefStr;
if (pPrefStr) XP_FREE(pPrefStr);
pPrefStr = NULL;
PREF_CopyCharPref("network.hosts.pop_server", &pPrefStr);
m_szInMailServer = pPrefStr;
if (pPrefStr) XP_FREE(pPrefStr);
}
#endif /* MOZ_MAIL_NEWS */
prefStr = NULL;
PREF_CopyCharPref("network.hosts.nntp_server", &prefStr);
if (prefStr)
m_szNewsServer = prefStr;
XP_FREEIF(prefStr);
m_bIsSecure = FALSE;
m_nPort = NEWS_PORT;
}
BOOL CNewProfileWizard::OnInitDialog()
{
GetDlgItem(IDC_EDIT1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_EG1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_EG2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_EDIT3)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_READMAIL_POP1)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_READMAIL_POP2)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_READMAIL_IMAP)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC5)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_X)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_TITLE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC1)->ShowWindow(SW_HIDE);
ShowHideNamePage(SW_HIDE);
ShowHideProfilePage(SW_HIDE);
ShowHideConfirmPage(SW_HIDE);
ShowHideSendPage(SW_HIDE);
ShowHideReceivePage(SW_HIDE);
ShowHideNewsPage(SW_HIDE);
InitPrefStrings();
SetDlgItemText(IDC_USER_NAME, m_pFullName);
SetDlgItemText(IDC_EMAIL_ADDR, m_pUserAddr);
GetDlgItem(IDC_BUTTON_BACK)->EnableWindow(FALSE);
if(theApp.m_bPEEnabled)
{
m_pMucIntroPage->Create(IDD_MUCWIZARD_INTRO, this);
m_pMucEditPage->Create(IDD_MUCWIZARD_EDIT, this);
m_pASWReadyPage->Create(IDD_MUCWIZARD_ASWREADY, this);
m_pMucReadyPage->Create(IDD_MUCWIZARD_MUCREADY, this);
ShowHidePEMucIntroPage(SW_HIDE);
ShowHidePEMucEditPage(SW_HIDE);
ShowHidePEMucASWReadyPage(SW_HIDE);
ShowHidePEMucReadyPage(SW_HIDE);
}
return CDialog::OnInitDialog();
}
void CNewProfileWizard::DoBack()
{
// PE:
if(theApp.m_bPEEnabled)
{
if(m_nCurrentPage == ID_PEMUC_INTRO)
m_nCurrentPage = ID_PAGE_INTRO;
else if(m_nCurrentPage == ID_PAGE_NAME && !m_bUpgrade)
m_nCurrentPage = ID_PEMUC_INTRO;
else if(m_nCurrentPage == ID_PAGE_NAME && m_bUpgrade)
m_nCurrentPage = ID_PAGE_INTRO;
else if(m_nCurrentPage == ID_PEMUC_ASWREADY)
m_nCurrentPage = ID_PAGE_PROFILE;
#ifdef MOZ_MAIL_NEWS
else if(m_nCurrentPage == ID_PEMUC_MUCREADY && !m_bUpgrade)
m_nCurrentPage = ID_PAGE_READNEWS;
#else
else if(m_nCurrentPage == ID_PEMUC_MUCREADY && !m_bUpgrade)
m_nCurrentPage = ID_PAGE_PROFILE;
#endif /* MOZ_MAIL_NEWS */
else if(m_nCurrentPage == ID_PEMUC_MUCREADY && m_bUpgrade)
m_nCurrentPage = ID_PAGE_PROFILE;
else if(m_nCurrentPage == ID_PEMUC_MUCEDIT)
m_nCurrentPage = ID_PEMUC_MUCREADY;
else if (m_nCurrentPage == ID_PAGE_SENDMAIL)
m_nCurrentPage = ID_PAGE_PROFILE;
else if (m_nCurrentPage == ID_PAGE_FINISH && m_bUpgrade)
m_nCurrentPage = ID_PAGE_CONFIRM;
else if (m_nCurrentPage == ID_PAGE_CONFIRM)
m_nCurrentPage = ID_PEMUC_MUCEDIT;
else if (m_nCurrentPage == ID_PAGE_FINISH && m_bASWEnabled)
m_nCurrentPage = ID_PEMUC_ASWREADY;
else if (m_nCurrentPage == ID_PAGE_FINISH && m_bMucEnabled)
m_nCurrentPage = ID_PEMUC_MUCEDIT;
#ifndef MOZ_MAIL_NEWS
else if (m_nCurrentPage == ID_PAGE_FINISH && (!m_bMucEnabled) && (!m_bASWEnabled))
m_nCurrentPage = ID_PAGE_PROFILE;
#else
else if (m_nCurrentPage == ID_PAGE_FINISH && (!m_bMucEnabled) && (!m_bASWEnabled))
m_nCurrentPage = ID_PAGE_READNEWS;
#endif // MOZ_MAIL_NEWS
else
m_nCurrentPage -= 1;
} //pe
else
{
#ifdef MOZ_MAIL_NEWS
if (m_nCurrentPage == ID_PAGE_SENDMAIL)
m_nCurrentPage = ID_PAGE_PROFILE;
else
m_nCurrentPage -= 1;
#else
if(m_bUpgrade && m_nCurrentPage == ID_PAGE_FINISH)
m_nCurrentPage = ID_PAGE_CONFIRM;
else if(m_bUpgrade && m_nCurrentPage == ID_PAGE_CONFIRM)
m_nCurrentPage = ID_PAGE_PROFILE;
else m_nCurrentPage -= 1;
#endif /* MOZ_MAIL_NEWS */
}
switch (m_nCurrentPage)
{
case ID_PAGE_INTRO: // 1st page
if(theApp.m_bPEEnabled)
ShowHidePEMucIntroPage(SW_HIDE);
ShowHideNamePage(SW_HIDE);
ShowHideIntroPage(SW_SHOW);
GetDlgItem(IDC_BUTTON_BACK)->EnableWindow(FALSE);
break;
case ID_PAGE_NAME: // 2nd page
#ifndef MOZ_MAIL_NEWS // Is this the correct ifdef?
SetControlText(IDOK, IDS_NEXT);
#endif // MOZ_MAIL_NEWS
ShowHideProfilePage(SW_HIDE);
ShowHideNamePage(SW_SHOW);
break;
case ID_PEMUC_INTRO: // PE: 2nd page
ShowHideNamePage(SW_HIDE);
ShowHidePEMucIntroPage(SW_SHOW);
break;
case ID_PAGE_PROFILE: // 3rd page
#ifndef MOZ_MAIL_NEWS // Is this the correct ifdef?
if((!theApp.m_bPEEnabled) && (!m_bUpgrade))
SetControlText(IDOK, IDS_FINISH);
else if (theApp.m_bPEEnabled && (m_bASWEnabled || m_bMucEnabled || m_bUpgrade))
SetControlText(IDOK, IDS_NEXT);
#else
SetControlText(IDOK, IDS_NEXT);
#endif // MOZ_MAIL_NEWS
ShowHideConfirmPage(SW_HIDE);
ShowHideSendPage(SW_HIDE);
if(theApp.m_bPEEnabled)
{
ShowHidePEMucASWReadyPage(SW_HIDE);
ShowHidePEMucReadyPage(SW_HIDE); //upgrade
}
ShowHideProfilePage(SW_SHOW);
break;
#ifdef MOZ_MAIL_NEWS
case ID_PAGE_SENDMAIL: // 4th page
ShowHideReceivePage(SW_HIDE);
ShowHideSendPage(SW_SHOW);
break;
case ID_PAGE_RECEIVEMAIL: // 5th page
SetControlText(IDOK, IDS_NEXT);
ShowHideNewsPage(SW_HIDE);
ShowHideReceivePage(SW_SHOW);
break;
case ID_PAGE_READNEWS: // PE: 6th page
if(theApp.m_bPEEnabled && m_bMucEnabled)
SetControlText(IDOK, IDS_NEXT);
else
SetControlText(IDOK, IDS_FINISH);
ShowHidePEMucReadyPage(SW_HIDE);
ShowHideNewsPage(SW_SHOW);
break;
#endif /* MOZ_MAIL_NEWS */
case ID_PEMUC_MUCREADY: // PE: 7th page
SetControlText(IDOK, IDS_NEXT);
ShowHidePEMucReadyPage(SW_SHOW);
ShowHidePEMucEditPage(SW_HIDE);
break;
case ID_PEMUC_MUCEDIT: // PE: 8th page
if(m_bUpgrade)
{
SetControlText(IDOK, IDS_NEXT);
ShowHideConfirmPage(SW_HIDE);
ShowHidePEMucEditPage(SW_SHOW);
}
break;
default:
break;
}
}
void CNewProfileWizard::DoNext()
{
CString text;
// PE:
if(theApp.m_bPEEnabled)
{
if (m_nCurrentPage == ID_PAGE_INTRO && !m_bUpgrade)
m_nCurrentPage = ID_PEMUC_INTRO;
else if (m_nCurrentPage == ID_PAGE_INTRO && m_bUpgrade)
m_nCurrentPage = ID_PAGE_NAME;
else if (m_nCurrentPage == ID_PEMUC_INTRO)
m_nCurrentPage = ID_PAGE_NAME;
else if (m_nCurrentPage == ID_PAGE_PROFILE && m_bASWEnabled && !m_bUpgrade)
m_nCurrentPage = ID_PEMUC_ASWREADY;
#ifdef MOZ_MAIL_NEWS
else if (m_nCurrentPage == ID_PAGE_PROFILE && (!m_bASWEnabled) && !m_bUpgrade)
m_nCurrentPage = ID_PAGE_SENDMAIL;
#else
else if (m_nCurrentPage == ID_PAGE_PROFILE && (m_bMucEnabled))
m_nCurrentPage = ID_PEMUC_MUCREADY;
else if (m_nCurrentPage == ID_PAGE_PROFILE && (!m_bMucEnabled))
m_nCurrentPage = ID_PAGE_FINISH;
#endif /* MOZ_MAIL_NEWS */
else if (m_nCurrentPage == ID_PAGE_PROFILE && (!m_bASWEnabled) && m_bUpgrade)
m_nCurrentPage = ID_PEMUC_MUCREADY;
else if (m_nCurrentPage == ID_PEMUC_ASWREADY)
m_nCurrentPage = ID_PAGE_FINISH;
else if (m_nCurrentPage == ID_PEMUC_MUCEDIT && m_bUpgrade)
m_nCurrentPage = ID_PAGE_CONFIRM;
else if (m_nCurrentPage == ID_PAGE_CONFIRM)
m_nCurrentPage = ID_PAGE_FINISH;
else if (m_nCurrentPage == ID_PEMUC_MUCEDIT&& !m_bUpgrade)
m_nCurrentPage = ID_PAGE_FINISH;
else if (m_nCurrentPage == ID_PEMUC_MUCREADY)
m_nCurrentPage = ID_PEMUC_MUCEDIT;
#ifdef MOZ_MAIL_NEWS
else if (m_nCurrentPage == ID_PAGE_READNEWS && m_bMucEnabled)
m_nCurrentPage = ID_PEMUC_MUCREADY;
else if (m_nCurrentPage == ID_PAGE_READNEWS && (!m_bMucEnabled))
m_nCurrentPage = ID_PAGE_FINISH;
#endif /* MOZ_MAIL_NEWS */
else if (m_nCurrentPage == ID_PAGE_FINISH)
m_nCurrentPage = ID_PAGE_FINISH;
else
m_nCurrentPage += 1;
}
else
{
if (m_nCurrentPage == ID_PAGE_PROFILE) {
// special magic on this page
if (m_bUpgrade) m_nCurrentPage = ID_PAGE_CONFIRM;
#ifndef MOZ_MAIL_NEWS
else m_nCurrentPage = ID_PAGE_FINISH;
#else
else m_nCurrentPage = ID_PAGE_SENDMAIL;
#endif /* MOZ_MAIL_NEWS */
}
else if (m_nCurrentPage == ID_PAGE_CONFIRM)
// confirm page next is finish
m_nCurrentPage = ID_PAGE_FINISH;
else if (m_nCurrentPage == ID_PAGE_FINISH)
m_nCurrentPage = ID_PAGE_FINISH;
else
m_nCurrentPage += 1;
}
switch (m_nCurrentPage)
{
case ID_PAGE_NAME: // 2nd page
if(theApp.m_bPEEnabled)
ShowHidePEMucIntroPage(SW_HIDE);
ShowHideIntroPage(SW_HIDE);
ShowHideNamePage(SW_SHOW);
GetDlgItem(IDC_BUTTON_BACK)->EnableWindow(TRUE);
break;
case ID_PEMUC_INTRO: // PE: 2nd page
ShowHideIntroPage(SW_HIDE);
ShowHidePEMucIntroPage(SW_SHOW);
GetDlgItem(IDC_BUTTON_BACK)->EnableWindow(TRUE);
break;
case ID_PAGE_PROFILE: // 3rd page
ShowHideNamePage(SW_HIDE);
ShowHideProfilePage(SW_SHOW);
#ifndef MOZ_MAIL_NEWS // Is this the correct ifdef??
if(!m_bUpgrade)
if(!((theApp.m_bPEEnabled && m_bASWEnabled) || (theApp.m_bPEEnabled && m_bMucEnabled)))
{
SetControlText(IDOK, IDS_FINISH);
SetControlText(IDC_NAME3, IDS_CLICK_FINISH);
}
#endif /* MOZ_MAIL_NEWS */
break;
case ID_PAGE_CONFIRM: // 4th page
SetControlText(IDOK, IDS_FINISH);
ShowHideProfilePage(SW_HIDE);
ShowHidePEMucEditPage(SW_HIDE);
ShowHideConfirmPage(SW_SHOW);
break;
case ID_PEMUC_ASWREADY: // PE: 4th page
SetControlText(IDOK, IDS_FINISH);
ShowHideProfilePage(SW_HIDE);
ShowHidePEMucASWReadyPage(SW_SHOW);
break;
#ifdef MOZ_MAIL_NEWS
case ID_PAGE_SENDMAIL: // other 4th page
ShowHideProfilePage(SW_HIDE);
ShowHideSendPage(SW_SHOW);
break;
case ID_PAGE_RECEIVEMAIL: // 5th page
ShowHideSendPage(SW_HIDE);
ShowHideReceivePage(SW_SHOW);
break;
case ID_PAGE_READNEWS: // 6th page
if(!(theApp.m_bPEEnabled && m_bMucEnabled))
SetControlText(IDOK, IDS_FINISH);
ShowHideReceivePage(SW_HIDE);
ShowHideNewsPage(SW_SHOW);
break;
#endif /* MOZ_MAIL_NEWS */
case ID_PEMUC_MUCREADY: // PE: 7th page
ShowHideNewsPage(SW_HIDE);
ShowHidePEMucReadyPage(SW_SHOW);
break;
case ID_PEMUC_MUCEDIT: // PE: 8th page
if(!m_bUpgrade)
SetControlText(IDOK, IDS_FINISH);
else
SetControlText(IDOK, IDS_NEXT);
ShowHidePEMucReadyPage(SW_HIDE);
ShowHidePEMucEditPage(SW_SHOW);
break;
case ID_PAGE_FINISH: // done, save value
if (DoFinish())
EndDialog(IDOK);
else
DoBack();
break;
default:
break;
}
}
void CNewProfileWizard::SetControlText(int nID, int nStringID)
{
CString text;
text.LoadString(nStringID);
SetDlgItemText(nID, LPCTSTR(text));
}
void CNewProfileWizard::ShowHideIntroPage(int nShowCmd)
{
GetDlgItem(IDC_INTRO1)->ShowWindow(nShowCmd);
if(theApp.m_bPEEnabled)
{
CString m_str;
m_str.LoadString(IDS_PE_INTROPAGE_TEXT);
SetDlgItemText(IDC_INTRO2, (LPCSTR)m_str);
}
GetDlgItem(IDC_INTRO2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_INTRO3)->ShowWindow(nShowCmd);
}
void CNewProfileWizard::ShowHideNamePage(int nShowCmd)
{
char name[BUFSZ];
GetDlgItem(IDC_PROFILE1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_PROFILE2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_PROFILE3)->ShowWindow(nShowCmd);
GetDlgItem(IDC_PROFILE4)->ShowWindow(nShowCmd);
GetDlgItem(IDC_USER_NAME)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EMAIL_ADDR)->ShowWindow(nShowCmd);
if (nShowCmd == SW_HIDE) {
if (GetDlgItemText(IDC_EMAIL_ADDR, name, BUFSZ))
m_pUserAddr = name;
if (GetDlgItemText(IDC_USER_NAME, name, BUFSZ))
m_pFullName = name;
// setup mail/news wizard parts
m_szFullName = m_pFullName;
m_szEmail = m_pUserAddr;
}
if (nShowCmd == SW_SHOW) {
GetDlgItem(IDC_USER_NAME)->SetFocus();
}
//PE: disable email addr.
if(theApp.m_bPEEnabled & nShowCmd==SW_SHOW)
{
int nCmd;
CString text;
if(m_bASWEnabled)
{
text.LoadString(IDS_PEMUC_NAMEPAGE_TEXT);
nCmd = SW_HIDE;
}
else
{
text.LoadString(IDS_MUP_NAMEPAGE_TEXT);
nCmd = SW_SHOW;
}
SetDlgItemText(IDC_PROFILE1,(LPCTSTR)text);
GetDlgItem(IDC_PROFILE4)->ShowWindow(nCmd);
GetDlgItem(IDC_EMAIL_ADDR)->ShowWindow(nCmd);
}
}
void CNewProfileWizard::ShowHideProfilePage(int nShowCmd)
{
GetDlgItem(IDC_NAME1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_NAME2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_NAME3)->ShowWindow(nShowCmd);
GetDlgItem(IDC_NAME4)->ShowWindow(nShowCmd);
GetDlgItem(IDC_PROFILE_NAME)->ShowWindow(nShowCmd);
GetDlgItem(IDC_PROFILE_DIR)->ShowWindow(nShowCmd);
if (nShowCmd == SW_SHOW) {
CString csUserDirectory;
CString csUserAddrShort;
char buf[4];
int iAtSign = m_pUserAddr.Find('@');
if (iAtSign != -1)
csUserAddrShort = m_pUserAddr.Left(iAtSign);
else
csUserAddrShort = m_pUserAddr;
if (csUserAddrShort.IsEmpty())
csUserAddrShort = "default";
CUserProfileDB::AssignProfileDirectoryName(csUserAddrShort,csUserDirectory);
PREF_SetCharPref("mail.pop_name",csUserAddrShort);
if (!GetDlgItemText(IDC_PROFILE_DIR,buf,4))
SetDlgItemText(IDC_PROFILE_DIR, csUserDirectory);
if (!GetDlgItemText(IDC_PROFILE_NAME,buf,4))
SetDlgItemText(IDC_PROFILE_NAME, csUserAddrShort);
GetDlgItem(IDC_PROFILE_NAME)->SetFocus();
}
}
void CNewProfileWizard::ShowHideConfirmPage(int nShowCmd)
{
GetDlgItem(IDC_CONFIRM1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_MOVEFILES)->ShowWindow(nShowCmd);
GetDlgItem(IDC_COPYFILES)->ShowWindow(nShowCmd);
GetDlgItem(IDC_IGNOREFILES)->ShowWindow(nShowCmd);
GetDlgItem(IDC_CONFIRM2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_CONFIRM3)->ShowWindow(nShowCmd);
if (!m_bUpgrade) {
GetDlgItem(IDC_MOVEFILES)->EnableWindow(FALSE);
GetDlgItem(IDC_COPYFILES)->EnableWindow(FALSE);
((CButton *)GetDlgItem(IDC_IGNOREFILES))->SetCheck(TRUE);
}
else ((CButton *)GetDlgItem(IDC_MOVEFILES))->SetCheck(TRUE);
}
void CNewProfileWizard::ShowHideSendPage(int nShowCmd)
{
if (nShowCmd == SW_SHOW) {
SetControlText(IDC_STATIC_TITLE, IDS_WIZARD_SENDMAIL);
SetControlText(IDC_STATIC1, IDS_SENDMAIL_STATIC1);
SetControlText(IDC_STATIC_EG1, IDS_SENDMAIL_EG1);
SetControlText(IDC_STATIC2, IDS_SENDMAIL_STATIC2);
SetControlText(IDC_STATIC_EG2, IDS_SENDMAIL_EG2);
SetControlText(IDC_STATIC3, IDS_SENDMAIL_STATIC3);
SetControlText(IDC_STATIC5, IDS_SENDREADMAIL_STATIC5);
}
GetDlgItem(IDC_EDIT1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC_EG1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EDIT2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC_EG2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC3)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EDIT3)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC5)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC_TITLE)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC1)->ShowWindow(nShowCmd);
if (nShowCmd == SW_SHOW)
{ // init value
SetDlgItemText(IDC_EDIT1, m_szFullName);
SetDlgItemText(IDC_EDIT2, m_szEmail);
SetDlgItemText(IDC_EDIT3, m_szMailServer);
GetDlgItem(IDC_EDIT1)->SetFocus();
}
else
{ // save value
char text[BUFSZ];
if (GetDlgItemText(IDC_EDIT1, text, BUFSZ))
m_szFullName = text;
else
m_szFullName = "";
if (GetDlgItemText(IDC_EDIT2, text, BUFSZ))
m_szEmail = text;
else
m_szEmail = "";
if (GetDlgItemText(IDC_EDIT3, text, BUFSZ))
m_szMailServer = text;
else
m_szMailServer = "";
}
}
void CNewProfileWizard::ShowHideReceivePage(int nShowCmd)
{
if (nShowCmd == SW_SHOW) {
SetControlText(IDC_STATIC_TITLE, IDS_WIZARD_READMAIL);
SetControlText(IDC_STATIC1, IDS_READMAIL_STATIC1);
SetControlText(IDC_STATIC_EG1, IDS_READMAIL_EG1);
SetControlText(IDC_STATIC2, IDS_READMAIL_STATIC2);
SetControlText(IDC_STATIC3, IDS_READMAIL_STATIC3);
SetControlText(IDC_STATIC5, IDS_SENDREADMAIL_STATIC5);
}
GetDlgItem(IDC_EDIT1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC_EG1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EDIT2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC3)->ShowWindow(nShowCmd);
GetDlgItem(IDC_READMAIL_POP1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_READMAIL_POP2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_READMAIL_IMAP)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC5)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC_TITLE)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC1)->ShowWindow(nShowCmd);
if (nShowCmd == SW_SHOW)
{ // init value
SetDlgItemText(IDC_EDIT1, m_szPopName);
SetDlgItemText(IDC_EDIT2, m_szInMailServer);
if (m_bUseIMAP)
((CButton*)GetDlgItem(IDC_READMAIL_IMAP))->SetCheck(TRUE);
else if (m_bLeftOnServer)
((CButton*)GetDlgItem(IDC_READMAIL_POP2))->SetCheck(TRUE);
else
((CButton*)GetDlgItem(IDC_READMAIL_POP1))->SetCheck(TRUE);
GetDlgItem(IDC_EDIT1)->SetFocus();
}
else
{ // save value
char text[BUFSZ];
m_bUseIMAP = m_bLeftOnServer = FALSE;
if (GetDlgItemText(IDC_EDIT1, text, BUFSZ))
m_szPopName = text;
else
m_szPopName = "";
if (GetDlgItemText(IDC_EDIT2, text, BUFSZ))
m_szInMailServer = text;
else
m_szInMailServer = "";
if (IsDlgButtonChecked(IDC_READMAIL_IMAP))
m_bUseIMAP = TRUE;
else if (IsDlgButtonChecked(IDC_READMAIL_POP2))
m_bLeftOnServer = TRUE;
}
}
void CNewProfileWizard::ShowHideNewsPage(int nShowCmd)
{
if (nShowCmd == SW_SHOW) {
SetControlText(IDC_STATIC_TITLE, IDS_WIZARD_READNEWS);
SetControlText(IDC_STATIC1, IDS_READNEWS_STATIC1);
SetControlText(IDC_STATIC2, IDS_READNEWS_STATIC2);
if(theApp.m_bPEEnabled && m_bMucEnabled)
SetControlText(IDC_STATIC5, IDS_PEMUC_NEWSPAGE);
else
SetControlText(IDC_STATIC5, IDS_READNEWS_STATIC5);
}
GetDlgItem(IDC_EDIT1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC5)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC_TITLE)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC1)->ShowWindow(nShowCmd);
GetDlgItem(IDC_STATIC2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_EDIT2)->ShowWindow(nShowCmd);
GetDlgItem(IDC_X)->ShowWindow(nShowCmd);
if (nShowCmd == SW_SHOW)
{ // init value
char szPort[16];
SetDlgItemText(IDC_EDIT1, m_szNewsServer);
sprintf(szPort, "%ld", m_nPort);
SetDlgItemText(IDC_EDIT2, szPort);
if (m_bIsSecure)
((CButton*)GetDlgItem(IDC_X))->SetCheck(TRUE);
else
((CButton*)GetDlgItem(IDC_X))->SetCheck(FALSE);
GetDlgItem(IDC_EDIT1)->SetFocus();
}
else
{ // save value
char text[BUFSZ];
if(GetDlgItemText(IDC_EDIT1, text, BUFSZ))
m_szNewsServer = text;
else
m_szNewsServer = "";
if (IsDlgButtonChecked(IDC_X))
m_bIsSecure = TRUE;
else
m_bIsSecure = FALSE;
if (GetDlgItemText(IDC_EDIT2, text, BUFSZ))
m_nPort = atol(text);
else
{
if (m_bIsSecure)
m_nPort = SECURE_NEWS_PORT;
else
m_nPort = NEWS_PORT;
}
}
}
void CNewProfileWizard::ShowHidePEMucIntroPage(int nShowCmd)
{
if(theApp.m_bPEEnabled && m_pMucIntroPage
&& ::IsWindow(m_pMucIntroPage->GetSafeHwnd()))
m_pMucIntroPage->ShowWindow(nShowCmd);
if(nShowCmd == SW_SHOW)
SetFocus();
}
void CNewProfileWizard::ShowHidePEMucASWReadyPage(int nShowCmd)
{
if(theApp.m_bPEEnabled && m_pASWReadyPage
&& ::IsWindow(m_pASWReadyPage->GetSafeHwnd()))
m_pASWReadyPage->ShowWindow(nShowCmd);
if(nShowCmd == SW_SHOW)
SetFocus();
}
void CNewProfileWizard::ShowHidePEMucReadyPage(int nShowCmd)
{
if(theApp.m_bPEEnabled && m_pMucReadyPage
&& ::IsWindow(m_pMucReadyPage->GetSafeHwnd()))
m_pMucReadyPage->ShowWindow(nShowCmd);
if(nShowCmd == SW_SHOW)
SetFocus();
}
void CNewProfileWizard::ShowHidePEMucEditPage(int nShowCmd)
{
CString m_str;
if(theApp.m_bPEEnabled && m_pMucEditPage
&& ::IsWindow(m_pMucEditPage->GetSafeHwnd()))
m_pMucEditPage->ShowWindow(nShowCmd);
if(nShowCmd == SW_SHOW)
{
if(m_bUpgrade)
m_str.LoadString(IDS_PEMUCEDIT_UPGRADE);
else
m_str.LoadString(IDS_PEMUCEDIT_NORMAL);
(m_pMucEditPage->GetDlgItem(IDC_EDIT_TEXT))->SetWindowText(m_str);
SetFocus();
}
}
void CNewProfileWizard::OnMove(int x, int y)
{
CDialog::OnMove(x, y);
if(theApp.m_bPEEnabled && m_pMucIntroPage && m_pASWReadyPage
&& m_pMucReadyPage && m_pMucEditPage)
{
int nShowCmd;
if (m_nCurrentPage == ID_PEMUC_INTRO) nShowCmd = SW_SHOW;
else nShowCmd = SW_HIDE;
m_pMucIntroPage->SetMove(x,y, nShowCmd);
if (m_nCurrentPage == ID_PEMUC_ASWREADY) nShowCmd = SW_SHOW;
else nShowCmd = SW_HIDE;
m_pASWReadyPage->SetMove(x,y,nShowCmd);
if (m_nCurrentPage == ID_PEMUC_MUCREADY) nShowCmd = SW_SHOW;
else nShowCmd = SW_HIDE;
m_pMucReadyPage->SetMove(x,y,nShowCmd);
if (m_nCurrentPage == ID_PEMUC_MUCEDIT) nShowCmd = SW_SHOW;
else nShowCmd = SW_HIDE;
m_pMucEditPage->SetMove(x,y,nShowCmd);
}
}
// this internal function does not attempt to insure that every aspect of the
// path is valid. If they enter an invalid character for example, it will show
// up when we attempt to create the directory. This simply insures that there
// are no parts of the path greater than 8 characters...Since mkdir simply truncates
// this, it works but we are then screwed because we have the wrong pointer...
BOOL checkValidWin16Path(char *path)
{
BOOL bRet = TRUE;
char * slash1 = path; // start of path
char * slash2 = strchr(path,'\\');
if (!slash2) bRet = FALSE; // need at least 1 slash!
while (slash2) {
// the difference between any 2 slashes can't be greater than 8
if ((slash2 - slash1) > 9)
bRet = FALSE;
if (slash2+1) {
slash1 = slash2;
slash2 = strchr(slash2+1,'\\');
} else slash2 = NULL;
}
// what is on the end can't be too large either
if (strlen(slash1) > 9) // 8 + slash
bRet = FALSE;
return bRet;
}
BOOL CNewProfileWizard::DoFinish()
{
if (!m_pFullName.IsEmpty())
PREF_SetCharPref("mail.identity.username",m_pFullName);
if (!m_pUserAddr.IsEmpty())
PREF_SetCharPref("mail.identity.useremail",m_pUserAddr);
char path[BUFSZ],name[BUFSZ];
int ret;
XP_StatStruct statinfo;
if (!GetDlgItemText(IDC_PROFILE_NAME, name, BUFSZ)) {
AfxMessageBox(szLoadString(IDS_INVALID_PROFILE_NAME),MB_OK);
return FALSE;
}
if (GetDlgItemText(IDC_PROFILE_DIR, path, BUFSZ)) {
if (path[strlen(path)-1] == '\\') path[strlen(path)-1] = NULL; // remove last slash...
if (!checkValidWin16Path(path)) {
AfxMessageBox(szLoadString(IDS_INVALID_WIN16_DIR));
return FALSE;
}
ret = _stat((char *) path, &statinfo);
if (!ret) {
// Directory already exists!
if (AfxMessageBox(szLoadString(IDS_PROFDIR_EXISTS),MB_OKCANCEL) == IDCANCEL)
return FALSE;
else
m_bExistingDir = TRUE;
}
if(ret == -1) {
char * slash = strchr(path,'\\');
while (slash) {
slash[0] = NULL;
ret = _mkdir(path);
slash[0] = '\\';
if (slash+1) slash = strchr(slash+1,'\\');
}
ret = _mkdir(path);
if (ret == -1) {
AfxMessageBox(szLoadString(IDS_UNABLE_CREATE_DIR),MB_OK);
return FALSE;
}
}
// else "Warn already exists"
} else {
AfxMessageBox(szLoadString(IDS_INVALID_PROFILE_NAME),MB_OK);
return FALSE;
}
if (GetDlgItemText(IDC_PROFILE_NAME, name, BUFSZ))
login_CreateNewUserKey(name,path);
m_pProfileName = name;
m_pProfilePath = path;
// PE finish -
if (theApp.m_bPEEnabled)
{
// asw thread
if(m_bASWEnabled && m_pASWReadyPage && ::IsWindow(m_pASWReadyPage->GetSafeHwnd()))
m_pASWReadyPage->DoFinish();
// dialer cfg thread
else if (m_bMucEnabled && m_pMucEditPage && ::IsWindow(m_pMucEditPage->GetSafeHwnd()))
m_pMucEditPage->DoFinish();
// network thread
else
{
CMucProc m_mucProc;
m_mucProc.SetDialOnDemand("",FALSE);
}
}
CButton * pMove = (CButton *) GetDlgItem(IDC_MOVEFILES);
CButton * pCopy = (CButton *) GetDlgItem(IDC_COPYFILES);
CButton * pIgnore = (CButton *) GetDlgItem(IDC_IGNOREFILES);
int iMove = TRUE;
int iCopy = FALSE;
int iIgnore = FALSE;
if (m_bUpgrade) {
if (pMove)
iMove = pMove->GetCheck();
if (pCopy)
iCopy = pCopy->GetCheck();
if (pIgnore)
iIgnore = pIgnore->GetCheck();
} else {
iIgnore = TRUE;
iMove = FALSE;
iCopy = FALSE;
}
if (iMove) {
login_UpdateFilesToNewLocation(m_pProfilePath,this,FALSE); // move files
login_UpdatePreferencesToJavaScript(m_pProfilePath); // upgrade prefs
} else if (iCopy) {
login_UpdateFilesToNewLocation(m_pProfilePath,this,TRUE); // Copy files
login_UpdatePreferencesToJavaScript(m_pProfilePath); // upgrade prefs
} else {
// just create the directories --
login_CreateEmptyProfileDir(m_pProfilePath, this, m_bExistingDir);
}
if (!m_bUpgrade) {
#ifdef MOZ_MAIL_NEWS
PREF_SetCharPref("mail.identity.username", m_szFullName);
PREF_SetCharPref("mail.identity.useremail", m_szEmail);
PREF_SetCharPref("network.hosts.smtp_server", m_szMailServer);
if (m_bUseIMAP)
{
PREF_SetBoolPref("mail.leave_on_server", m_bUseIMAP);
SetImapServerName(LPCTSTR(m_szInMailServer));
IMAP_SetCharPref(LPCTSTR(m_szInMailServer), CHAR_USERNAME, LPCTSTR(m_szPopName));
}
else
{
PREF_SetBoolPref("mail.leave_on_server", m_bLeftOnServer);
PREF_SetCharPref("network.hosts.pop_server", m_szInMailServer);
PREF_SetCharPref("mail.pop_name", m_szPopName);
}
long imapPref = m_bUseIMAP ? MSG_Imap4 : MSG_Pop3;
PREF_SetIntPref("mail.server_type", imapPref);
char szPort[10];
int nPortLen = 0;
int nNewsServerLen = 0;
if (nNewsServerLen = GetDlgItemText(IDC_EDIT1, name, BUFSZ))
m_szNewsServer = name;
else
m_szNewsServer = "";
if (IsDlgButtonChecked(IDC_X))
m_bIsSecure = TRUE;
else
m_bIsSecure = FALSE;
if (nPortLen = GetDlgItemText(IDC_EDIT2, szPort, 10) > 0)
m_nPort = atoi(szPort);
else
{
if (m_bIsSecure)
m_nPort = SECURE_NEWS_PORT;
else
m_nPort = NEWS_PORT;
}
if (nNewsServerLen && nPortLen)
{
if (m_nPort < 0 || m_nPort> MAX_PORT_NUMBER)
{
AfxMessageBox(IDS_PORT_RANGE);
((CEdit*)GetDlgItem(IDC_EDIT2))->SetFocus();
((CEdit*)GetDlgItem(IDC_EDIT2))->SetSel((DWORD)MAKELONG(0, -1));
return FALSE;
}
if (!::IsNumeric(szPort))
{
AfxMessageBox(IDS_NUMBERS_ONLY);
((CEdit*)GetDlgItem(IDC_EDIT2))->SetFocus();
((CEdit*)GetDlgItem(IDC_EDIT2))->SetSel((DWORD)MAKELONG(0, -1));
return FALSE;
}
}
PREF_SetCharPref("network.hosts.nntp_server", LPCTSTR(m_szNewsServer));
if (nNewsServerLen)
{
PREF_SetBoolPref("news.server_is_secure", m_bIsSecure);
PREF_SetIntPref("news.server_port", (int32)m_nPort);
}
else
{
PREF_SetBoolPref("news.server_is_secure", FALSE);
PREF_SetIntPref("news.server_port", (int32)NEWS_PORT);
}
#endif // MOZ_MAIL_NEWS
PREF_SavePrefFile();
}
return TRUE;
}
void CNewProfileWizard::OnCheckSecure()
{
char port[16];
BOOL bIsSecure;
if (IsDlgButtonChecked(IDC_X))
bIsSecure = TRUE;
else
bIsSecure = FALSE;
if (GetDlgItemText(IDC_EDIT2, port, 16) == 0)
{
if (bIsSecure)
SetDlgItemInt(IDC_EDIT2, SECURE_NEWS_PORT);
else
SetDlgItemInt(IDC_EDIT2, NEWS_PORT);
}
else
{
int32 lPort = atol(port);
if (bIsSecure && lPort == NEWS_PORT)
SetDlgItemInt(IDC_EDIT2, SECURE_NEWS_PORT);
else if (!bIsSecure && lPort == SECURE_NEWS_PORT)
SetDlgItemInt(IDC_EDIT2, NEWS_PORT);
}
}
BEGIN_MESSAGE_MAP(CNewProfileWizard, CDialog)
ON_BN_CLICKED(IDC_BUTTON_BACK, DoBack)
ON_BN_CLICKED(IDOK, DoNext)
ON_BN_CLICKED(IDC_X, OnCheckSecure)
ON_WM_MOVE()
END_MESSAGE_MAP()
#endif XPWIN_32