gecko-dev/cmd/winfe/mucproc.cpp

257 строки
5.8 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 "mucproc.h"
#define new DEBUG_NEW
//********************************************************************************
//
// CMucProc constructor
//
//********************************************************************************
CMucProc::CMucProc()
{
acct_flag = FALSE;
modem_flag = FALSE;
m_lpfnPEPluginFunc = NULL;
}
//********************************************************************************
//
// LoadMuc
//
//********************************************************************************
BOOL CMucProc::LoadMuc()
{
long m_version;
if(m_lpfnPEPluginFunc != NULL)
return TRUE;
m_lpfnPEPluginFunc = (FARPEFUNC)::GetProcAddress(theApp.m_hPEInst,
"PEPluginFunc");
if(m_lpfnPEPluginFunc == NULL)
{
FreeLibrary(theApp.m_hPEInst);
return FALSE;
}
// check the MUC version number
(*m_lpfnPEPluginFunc)(kGetPluginVersion, NULL, &m_version);
if(m_version != 0x00010000)
{
FreeLibrary(theApp.m_hPEInst);
m_lpfnPEPluginFunc = NULL;
return FALSE;
}
return TRUE;
}
// account information
//********************************************************************************
//
// GetAcctNameList
//
//********************************************************************************
BOOL CMucProc::GetAcctArray(CStringArray *acctList)
{
if(!acct_flag)
GetAccountNames();
int size = acctNames.GetSize();
if(size !=0)
{
#ifdef XP_WIN32
acctList->Copy(acctNames);
#else
for( int i=0; i<size; i++)
acctList->SetAtGrow(i, acctNames[i]);
#endif
return TRUE;
}
return FALSE;
}
//********************************************************************************
//
// IsAccountValid
//
//********************************************************************************
BOOL CMucProc::IsAcctValid(char *acctStr)
{
int i = 0;
if(!acct_flag)
GetAccountNames();
int num = acctNames.GetSize();
while(i<num)
{
if(_stricmp(acctStr, (const char*)acctNames[i]) == 0)
return TRUE;
else
i++;
}
return FALSE;
}
// modem information
//********************************************************************************
//
// GetModemList
//
//********************************************************************************
BOOL CMucProc::GetModemArray(CStringArray *modemList)
{
if(!modem_flag)
GetModemNames();
int num = modemNames.GetSize();
if(num !=0)
{
#ifdef WIN32
modemList->Copy(modemNames);
#else
for(int i=0; i<num; i++)
modemList->SetAtGrow(i, modemNames.GetAt(i));
#endif
return TRUE;
}
return FALSE;
}
//********************************************************************************
//
// IsModemValid
//
//********************************************************************************
BOOL CMucProc::IsModemValid(char* modemStr)
{
int i = 0;
if(!modem_flag)
GetModemNames();
int num = modemNames.GetSize();
while(i<num)
{
if(strcmp(modemStr, (const char*)modemNames.GetAt(i)) == 0)
return TRUE;
else
i++;
}
return FALSE;
}
// GetModemList
//********************************************************************************
//
// GetModemNames
//
//********************************************************************************
BOOL CMucProc::GetModemNames()
{
char modemResults[MAX_PATH*10];
int numDevices;
int i;
char temp[MAX_PATH];
memset(modemResults, 0x00, MAX_PATH*10);
if(0 == (*m_lpfnPEPluginFunc)(kSelectModemConfig, &numDevices, modemResults))
{
if(modemResults != NULL && numDevices != 0)
{
// decoding: the muc string is deliminated by "()"
CString key = "()";
CString str = modemResults;
int pos;
i=0;
while(i<numDevices)
{
pos = str.Find(key);
modemNames.Add(str.Left(pos));
str = str.Mid(pos+2);
i++;
}
modem_flag = TRUE;
return TRUE;
}
}
return FALSE;
}
//********************************************************************************
//
// GetAccountNames
//
//********************************************************************************
BOOL CMucProc::GetAccountNames()
{
int numNames=0;
int i=0;
char acctResults[MAX_PATH*10];
char temp[MAX_PATH];
memset(acctResults, 0x00, MAX_PATH*10);
if(0==(*m_lpfnPEPluginFunc)(kSelectAcctConfig, &numNames, acctResults))
{
if(acctResults != NULL && numNames != 0)
{
// decoding: the muc string is deliminated by "()"
CString key = "()";
CString str = acctResults;
int pos;
i=0;
while(i<numNames)
{
pos = str.Find(key);
acctNames.Add(str.Left(pos));
str = str.Mid(pos+2);
i++;
}
acct_flag = TRUE;
return TRUE;
}
}
return FALSE;
}
//********************************************************************************
//
// SetDialOnDemand
//
//********************************************************************************
void CMucProc::SetDialOnDemand(CString acctStr, BOOL flag)
{
if(!LoadMuc()) return;
(*m_lpfnPEPluginFunc)(kSelectDialOnDemand, (void*)((const char*)acctStr), &flag);
}