/* -*- 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