gecko-dev/cmd/winfe/mucwiz.cpp
1998-03-28 02:44:41 +00:00

691 lines
16 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 "setupwiz.h"
#include "mucproc.h"
#include "logindg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
static CMucProc m_pMucProc;
/////////////////////////////////////////////////////////////////////////////
// CMucIntroPage dialog
#ifdef XP_WIN32
CMucIntroPage::CMucIntroPage(CWnd* pParent)
: CNetscapePropertyPage(IDD)
#else
CMucIntroPage::CMucIntroPage(CWnd* pParent)
: CDialog()
#endif
{
m_pParent = (CNewProfileWizard*)pParent;
m_pParent->m_bASWEnabled = FALSE;
m_pParent->m_bMucEnabled = TRUE;
}
#ifdef XP_WIN32
BOOL CMucIntroPage::OnSetActive()
{
m_pParent->SetWizardButtons(PSWIZB_NEXT | PSWIZB_BACK);
return CNetscapePropertyPage::OnSetActive();
}
#else
BOOL CMucIntroPage::Create(UINT nID, CWnd *pWnd)
{
return CDialog::Create(nID, pWnd);
}
#endif
void CMucIntroPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
#ifdef XP_WIN32
BEGIN_MESSAGE_MAP(CMucIntroPage, CNetscapePropertyPage)
#else
BEGIN_MESSAGE_MAP(CMucIntroPage, CDialog)
#endif
//{{AFX_MSG_MAP(CMucIntroPage)
ON_BN_CLICKED(IDC_MUCINTRO_ACCT_EXIST, OnMucIntroAcctExist)
ON_BN_CLICKED(IDC_MUCINTRO_ACCT_SYS, OnMucIntroAcctSys)
ON_BN_CLICKED(IDC_MUCINTRO_ACCT_ADD, OnMucIntroAcctAdd)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMucIntroPage message handlers
BOOL CMucIntroPage::OnInitDialog()
{
if(m_pParent->m_bUpgrade)
{
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_EXIST)) -> SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_SYS)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_ADD)) -> SetCheck(FALSE);
GetDlgItem(IDC_MUCINTRO_ACCT_SYS) -> EnableWindow(FALSE);
GetDlgItem(IDC_MUCINTRO_ACCT_ADD) -> EnableWindow(FALSE);
GetDlgItem(IDC_ACCTSYS_TEXT) -> EnableWindow(FALSE);
GetDlgItem(IDC_ACCTADD_TEXT) -> EnableWindow(FALSE);
MucIntroProc(m_OptExist);
}
else
{
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_EXIST)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_SYS)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_ADD)) -> SetCheck(TRUE);
MucIntroProc(m_OptAdd);
}
#ifdef XP_WIN32
return CNetscapePropertyPage::OnInitDialog();
#else
RECT rect;
m_pParent->GetWindowRect(&rect);
m_height = rect.bottom-rect.top-80;
m_width = rect.right-rect.left-10;
SetWindowPos(&wndTop, rect.left, rect.top+30, m_width, m_height, SWP_HIDEWINDOW);
return TRUE;
#endif
}
void CMucIntroPage::OnMucIntroAcctAdd()
{
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_ADD)) -> SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_EXIST)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_SYS)) -> SetCheck(FALSE);
MucIntroProc(m_OptAdd);
}
void CMucIntroPage::OnMucIntroAcctExist()
{
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_ADD)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_EXIST)) -> SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_SYS)) -> SetCheck(FALSE);
MucIntroProc(m_OptExist);
}
void CMucIntroPage::OnMucIntroAcctSys()
{
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_ADD)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_EXIST)) -> SetCheck(FALSE);
((CButton *)GetDlgItem(IDC_MUCINTRO_ACCT_SYS)) -> SetCheck(TRUE);
MucIntroProc(m_OptSys);
}
void CMucIntroPage::MucIntroProc(int m_option)
{
switch(m_option)
{
case m_OptAdd:
m_pParent->m_bASWEnabled = TRUE;
m_pParent->m_bMucEnabled = FALSE;
break;
case m_OptExist: // enable MUC
m_pParent->m_bASWEnabled = FALSE;
if(!m_pMucProc.LoadMuc())
{
AfxMessageBox("Muc.dll is missing");
m_pParent->m_bMucEnabled = FALSE;
}
else
m_pParent->m_bMucEnabled = TRUE;
break;
case m_OptSys: // disable MUC
m_pParent->m_bASWEnabled = FALSE;
m_pParent->m_bMucEnabled = FALSE;
break;
default:
break;
}
}
void CMucIntroPage::SetMove(int x, int y, int nShowCmd)
{
SetWindowPos(&wndTop, x, y, m_width, m_height, nShowCmd);
}
/////////////////////////////////////////////////////////////////////////////
// CMucEditPage dialog
#ifdef XP_WIN32
CMucEditPage::CMucEditPage(CWnd* pParent, BOOL bEditView)
: CNetscapePropertyPage(IDD)
#else
CMucEditPage::CMucEditPage(CWnd* pParent,BOOL bEditView)
: CDialog()
#endif
{
//{{AFX_DATA_INIT(CMucEditPage)
//}}AFX_DATA_INIT
m_bEditView = bEditView;
if(m_bEditView)
{
m_pEditParent = (CNewProfileWizard*)pParent;
m_pEditParent->m_pAcctName = "";
m_pEditParent->m_pModemName = "";
}
else
m_pViewParent = (CMucViewWizard*)pParent;
m_acctSelect = "";
m_modemSelect = "";
}
CMucEditPage::~CMucEditPage()
{
}
#ifdef XP_WIN32
BOOL CMucEditPage::OnSetActive()
{
CString m_str;
if(m_bEditView)
{
if (m_pEditParent->m_bUpgrade)
{
m_str.LoadString(IDS_PEMUCEDIT_UPGRADE);
m_pEditParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
}
else
{
m_str.LoadString(IDS_PEMUCEDIT_NORMAL);
m_pEditParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
}
GetDlgItem(IDC_EDIT_TEXT)->SetWindowText(m_str);
}
else
m_pViewParent->SetWizardButtons(PSWIZB_FINISH);
return CNetscapePropertyPage::OnSetActive();
}
#else
BOOL CMucEditPage::Create(UINT nID, CWnd *pWnd)
{
return CDialog::Create(nID, pWnd);
}
#endif
void CMucEditPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
#ifdef XP_WIN32
BEGIN_MESSAGE_MAP(CMucEditPage, CNetscapePropertyPage)
#else
BEGIN_MESSAGE_MAP(CMucEditPage, CDialog)
#endif
//{{AFX_MSG_MAP(CMucEditPage)
// ON_CBN_SELENDOK(IDC_MUCWIZARD_MODEMLIST, OnSelectModemlist)
ON_LBN_SELCHANGE(IDC_MUCWIZARD_ACCTLIST, OnSelectAcctlist)
ON_BN_CLICKED(IDC_DIALER_FLAG, OnCheckDialerFlag)
#ifdef XP_WIN32
ON_BN_CLICKED(ID_WIZFINISH,DoFinish)
#endif
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMucEditPage message handlers
BOOL CMucEditPage::OnInitDialog()
{
if(!m_bEditView)
{
if(((m_pViewParent->m_pAcctName).Compare("") == 0) ||
((m_pViewParent->m_pAcctName).Compare("None") == 0))
m_bCheckState = FALSE;
else
m_bCheckState = TRUE;
((CButton*)GetDlgItem(IDC_DIALER_FLAG))->SetCheck(m_bCheckState);
SetViewPageState(m_bCheckState);
CString text;
text.LoadString(IDS_PEMUCVIEW_TEXT1);
GetDlgItem(IDC_VIEW_TEXT1)->SetWindowText(text);
text.LoadString(IDS_PEMUCVIEW_TEXT2);
GetDlgItem(IDC_VIEW_TEXT2)->SetWindowText(text);
GetDlgItem(IDC_EDIT_TEXT)->ShowWindow(FALSE);
}
else
{
GetDlgItem(IDC_DIALER_FLAG)->ShowWindow(FALSE);
GetDlgItem(IDC_DIALER_TEXT)->ShowWindow(FALSE);
GetDlgItem(IDC_CTRL)->ShowWindow(FALSE);
GetDlgItem(IDC_VIEW_TEXT1)->ShowWindow(FALSE);
GetDlgItem(IDC_VIEW_TEXT2)->ShowWindow(FALSE);
}
if(!m_pMucProc.LoadMuc())
return FALSE;
m_pMucProc.GetAcctArray(&m_acctList);
if(!m_bEditView)
{
// check the validility
if(m_pMucProc.IsAcctValid((char*)((const char*)m_pViewParent->m_pAcctName)))
m_acctSelect = m_pViewParent->m_pAcctName;
}
UpdateList();
RECT rect;
#ifdef XP_WIN32
return CNetscapePropertyPage::OnInitDialog();
#else
if(m_bEditView)
m_pEditParent->GetWindowRect(&rect);
else
m_pViewParent->GetWindowRect(&rect);
m_height = rect.bottom-rect.top-80;
m_width = rect.right-rect.left-40;
if(m_bEditView)
SetWindowPos(&wndTop, rect.left+15, rect.top+30, m_width, m_height, SWP_HIDEWINDOW);
else
SetWindowPos(&wndTop, rect.left+15, rect.top+30, m_width, m_height, SWP_SHOWWINDOW);
return TRUE;
#endif
}
void CMucEditPage::SetMove(int x, int y, int nShowCmd)
{
RECT rect;
if(m_bEditView)
m_pEditParent->GetWindowRect(&rect);
else
m_pViewParent->GetWindowRect(&rect);
SetWindowPos(&wndTop, rect.left+15, rect.top+30, m_width, m_height, nShowCmd);
}
void CMucEditPage::UpdateList()
{
int num,i,err;
CString temp;
m_acctName= (CListBox*)GetDlgItem(IDC_MUCWIZARD_ACCTLIST);
if(m_acctName == NULL && !(::IsWindow(((CWnd*)m_acctName)->GetSafeHwnd())))
return;
// update account list
num = m_acctList.GetSize();
if(num == 0)
return;
for (i=0; i < num; i++)
{
temp = m_acctList.GetAt(i);
err = m_acctName->AddString(temp);
ASSERT(err != CB_ERR);
}
// highlight
if((!m_bEditView) && (m_acctSelect.GetLength() !=0))
temp = m_acctSelect;
else
// temp = (char*)(m_acctName->GetItemDataPtr(0));
temp = m_acctList.GetAt(0);
m_acctName->SelectString(-1, temp);
if(m_bEditView)
m_pEditParent->m_pAcctName = temp;
else
m_pViewParent->m_pAcctName = temp;
}
void CMucEditPage::OnSelectAcctlist()
{
CString temp;
int cur_sel = m_acctName->GetCurSel();
m_acctName->GetText(cur_sel, temp);
if(m_bEditView)
m_pEditParent->m_pAcctName = temp;
else
m_pViewParent->m_pAcctName = temp;
}
void CMucEditPage::OnCheckDialerFlag()
{
m_bCheckState = (m_bCheckState + 1) %2;
SetViewPageState(m_bCheckState);
}
void CMucEditPage::SetViewPageState(BOOL m_bState)
{
((CButton*)GetDlgItem(IDC_DIALER_FLAG))->SetCheck(m_bState);
GetDlgItem(IDC_MUCEDIT_TEXT1)->EnableWindow(m_bState);
GetDlgItem(IDC_MUCEDIT_TEXT2)->EnableWindow(m_bState);
GetDlgItem(IDC_VIEW_TEXT1)->EnableWindow(m_bState);
GetDlgItem(IDC_VIEW_TEXT2)->EnableWindow(m_bState);
GetDlgItem(IDC_MUCWIZARD_ACCTLIST)->EnableWindow(m_bState);
}
void CMucEditPage::DoFinish()
{
char acctStr[MAX_PATH];
char path[MAX_PATH];
int ret;
BOOL m_bDialOnDemand = FALSE;
XP_StatStruct statinfo;
if(!m_bEditView) // advanced option of profile manager
{
if(m_bCheckState)
strcpy(acctStr, (const char*)m_pViewParent->m_pAcctName);
else
strcpy(acctStr, "None");
m_bDialOnDemand = m_bCheckState;
strcpy(path, (const char*)m_pViewParent->m_pProfileName);
}
else
{
// profile dir created?
ret = _stat((const char*)m_pEditParent->m_pProfilePath, &statinfo);
if(ret == -1)
return;
// construct config name
strcpy(path, m_pEditParent->m_pProfilePath);
strcat(path, "\\config.ini");
// save the acct config
if(m_pEditParent->m_pAcctName.GetLength() == 0)
strcpy(acctStr, "None");
else
{
strcpy(acctStr, (const char*)m_pEditParent->m_pAcctName);
m_bDialOnDemand = TRUE;
}
}
WritePrivateProfileString("Account", "Account", acctStr, path);
(*(m_pMucProc.m_lpfnPEPluginFunc))(kSelectDialOnDemand, acctStr, &m_bDialOnDemand);
}
/////////////////////////////////////////////////////////////////////////////
// CMucReadyPage
#ifdef XP_WIN32
CMucReadyPage::CMucReadyPage(CWnd *pParent)
: CNetscapePropertyPage(IDD)
#else
CMucReadyPage::CMucReadyPage(CWnd *pParent)
: CDialog()
#endif
{
m_pParent = (CNewProfileWizard*)pParent;
}
#ifdef XP_WIN32
BOOL CMucReadyPage::OnSetActive()
{
m_pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CNetscapePropertyPage::OnSetActive();
}
#else
BOOL CMucReadyPage::Create(UINT nID, CWnd *pWnd)
{
return CDialog::Create(nID, pWnd);
}
#endif
void CMucReadyPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BOOL CMucReadyPage::OnInitDialog()
{
#ifdef XP_WIN32
return CNetscapePropertyPage::OnInitDialog();
#else
RECT rect;
m_pParent->GetWindowRect(&rect);
m_height = rect.bottom-rect.top-80;
m_width = rect.right-rect.left-10;
SetWindowPos(&wndTop, rect.left, rect.top+30, m_width, m_height, SWP_HIDEWINDOW);
return TRUE;
#endif
}
void CMucReadyPage::SetMove(int x, int y, int nShowCmd)
{
SetWindowPos(&wndTop, x, y, m_width, m_height, nShowCmd);
}
#ifdef XP_WIN32
BEGIN_MESSAGE_MAP(CMucReadyPage, CNetscapePropertyPage)
#else
BEGIN_MESSAGE_MAP(CMucReadyPage, CDialog)
#endif
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CASWReadyPage
#ifdef XP_WIN32
CASWReadyPage::CASWReadyPage(CWnd *pParent)
: CNetscapePropertyPage(IDD)
#else
CASWReadyPage::CASWReadyPage(CWnd *pParent)
: CDialog()
#endif
{
m_pParent = (CNewProfileWizard*)pParent;
}
#ifdef XP_WIN32
BOOL CASWReadyPage::OnSetActive()
{
m_pParent->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);
return CNetscapePropertyPage::OnSetActive();
}
#else
BOOL CASWReadyPage::Create(UINT nID, CWnd *pWnd)
{
return CDialog::Create(nID, pWnd);
}
#endif
void CASWReadyPage::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
void CASWReadyPage::DoFinish()
{
char *asw = GetASWURL();
theApp.m_csPEPage = asw;
theApp.m_bAlwaysDockTaskBar = TRUE;
theApp.m_bAccountSetupStartupJava = TRUE; // Force java startup too
theApp.m_bAccountSetup = TRUE; // Force into account setup
XP_FREEIF(asw);
}
BOOL CASWReadyPage::OnInitDialog()
{
#ifdef XP_WIN32
return CNetscapePropertyPage::OnInitDialog();
#else
RECT rect;
m_pParent->GetWindowRect(&rect);
m_height = rect.bottom-rect.top-80;
m_width = rect.right-rect.left-10;
SetWindowPos(&wndTop, rect.left, rect.top+30, m_width, m_height, SWP_HIDEWINDOW);
return TRUE;
#endif
}
void CASWReadyPage::SetMove(int x, int y, int nShowCmd)
{
SetWindowPos(&wndTop, x, y, m_width, m_height, nShowCmd);
}
#ifdef XP_WIN32
BEGIN_MESSAGE_MAP(CASWReadyPage, CNetscapePropertyPage)
ON_BN_CLICKED(ID_WIZFINISH,DoFinish)
END_MESSAGE_MAP()
#else
BEGIN_MESSAGE_MAP(CASWReadyPage, CDialog)
END_MESSAGE_MAP()
#endif
/////////////////////////////////////////////////////////////////////////////
// CMucViewWizard
#ifdef XP_WIN32
CMucViewWizard::CMucViewWizard(CWnd *pParent, CString strProfileName,
CString strAcctName, CString strModemName)
: CNetscapePropertySheet("", pParent)
{
m_pProfileName = strProfileName;
m_pAcctName = strAcctName;
m_pMucEditPage = NULL;
m_pMucEditPage = new CMucEditPage(this,FALSE);
AddPage(m_pMucEditPage);
SetWizardMode();
}
CMucViewWizard::~CMucViewWizard()
{
if (m_pMucEditPage)
delete m_pMucEditPage;
}
BOOL CMucViewWizard::OnInitDialog()
{
BOOL ret = CNetscapePropertySheet::OnInitDialog();
CString text;
text.LoadString(IDS_PEMUCWIZ_TITLE);
SetTitle(text);
text.LoadString(IDS_PEMUCWIZ_BUTTON);
SetFinishText(text);
GetDlgItem(IDHELP)->ShowWindow(SW_HIDE);
return ret; // return TRUE unless you set the focus to a control
}
void CMucViewWizard::DoFinish()
{
if (m_pMucEditPage && ::IsWindow(m_pMucEditPage->GetSafeHwnd()))
m_pMucEditPage->DoFinish();
PressButton(PSBTN_FINISH);
}
BEGIN_MESSAGE_MAP(CMucViewWizard, CNetscapePropertySheet)
ON_BN_CLICKED(ID_WIZFINISH,DoFinish)
END_MESSAGE_MAP()
#else
/////////////////////////////////////////////////////////////////////////////
// CMucViewWizard
CMucViewWizard::CMucViewWizard(CWnd* pParent,CString strProfileName,
CString strAcctName, CString strModemName)
: CDialog(CMucViewWizard::IDD, pParent)
{
m_pProfileName = strProfileName;
m_pAcctName = strAcctName;
m_pModemName = strModemName;
m_pMucEditPage = new CMucEditPage(this,FALSE);
}
void CMucViewWizard::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BOOL CMucViewWizard::OnInitDialog()
{
CDialog::OnInitDialog();
m_pMucEditPage->Create(IDD_MUCWIZARD_EDIT, this);
return TRUE; // return TRUE unless you set the focus to a control
}
void CMucViewWizard::OnMove(int x, int y)
{
CDialog::OnMove(x, y);
if(m_pMucEditPage)
m_pMucEditPage->SetMove(x,y,SW_SHOW);
}
void CMucViewWizard::OnOK()
{
if (m_pMucEditPage && ::IsWindow(m_pMucEditPage->GetSafeHwnd()))
m_pMucEditPage->DoFinish();
EndDialog(TRUE);
}
void CMucViewWizard::OnCancel()
{
EndDialog(TRUE);
}
BEGIN_MESSAGE_MAP(CMucViewWizard, CDialog)
ON_BN_CLICKED(IDCANCEL, OnCancel)
ON_BN_CLICKED(IDOK,OnOK)
ON_WM_MOVE()
END_MESSAGE_MAP()
#endif XP_WIN32