gecko-dev/cmd/dialup/mac/as_plugin/modemWizardRtns.c
1999-11-02 07:16:31 +00:00

219 lines
6.9 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.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#include "pluginIncludes.h"
#include "MUC.h"
extern JRI_PUBLIC_API(void)
native_SetupPlugin_SECURE_0005fOpenModemWizard(JRIEnv* env, struct SetupPlugin* self)
{
OSErr err;
ProcessSerialNumber thePSN;
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_OpenModemWizard entered");
if (isAppRunning(MODEM_WIZARD_SIGNATURE,&thePSN, NULL)==false) { // if Modem Wizard is not running, Launch it
SETUP_PLUGIN_INFO_STR("\p OpenModemWizard: launching the modem wizard", NULL);
err=LaunchApp(MODEM_WIZARD_SIGNATURE,TRUE,NULL,TRUE);
if (err==fnfErr) {
showPluginError(UNABLE_TO_FIND_MODEM_WIZARD_STR_ID, FALSE);
}
else if (err) {
showPluginError(MODEM_WIZARD_LAUNCH_PROBLEM_STR_ID, FALSE);
}
}
else {
SETUP_PLUGIN_INFO_STR("\p OpenModemWizard: bringing the modem wizard to the front", NULL);
SetFrontProcess(&thePSN); // if Modem Wizard is running, switch to it
}
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_OpenModemWizard exiting");
}
extern JRI_PUBLIC_API(void)
native_SetupPlugin_SECURE_0005fCloseModemWizard(JRIEnv* env, struct SetupPlugin* self)
{
AEAddressDesc modemWizardAddr={typeNull,NULL};
AppleEvent theEvent={typeNull,NULL}, theReply={typeNull,NULL};
OSErr err;
ProcessSerialNumber modemWizardPSN;
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_CloseModemWizard entered");
if (isAppRunning(MODEM_WIZARD_SIGNATURE, &modemWizardPSN, NULL) == true) { // if Modem Wizard is running, send it a Quit AppleEvent
SETUP_PLUGIN_INFO_STR("\p CloseModemWizard: closing the modem wizard", NULL);
if (err=AECreateDesc(typeProcessSerialNumber,&modemWizardPSN,sizeof(ProcessSerialNumber),&modemWizardAddr)) {}
else if (err=AECreateAppleEvent(kCoreEventClass, kAEQuitApplication,&modemWizardAddr,kAutoGenerateReturnID,kAnyTransactionID,&theEvent)) {}
else if (err=AESend(&theEvent,&theReply,kAENoReply+kAENeverInteract,kAENormalPriority,kAEDefaultTimeout,NULL,NULL)) {}
if (err) {
SETUP_PLUGIN_ERROR("\p CloseModemWizard error;g", err);
}
if (modemWizardAddr.dataHandle) (void)AEDisposeDesc(&modemWizardAddr);
if (theEvent.dataHandle) (void)AEDisposeDesc(&theEvent);
if (theReply.dataHandle) (void)AEDisposeDesc(&theReply);
}
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_CloseModemWizard exiting");
}
extern JRI_PUBLIC_API(jbool)
native_SetupPlugin_SECURE_0005fIsModemWizardOpen(JRIEnv* env, struct SetupPlugin* self)
{
ProcessSerialNumber thePSN;
jbool theFlag;
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_IsModemWizardOpen entered");
theFlag = (jbool)isAppRunning(MODEM_WIZARD_SIGNATURE, &thePSN, NULL); // look for a process with MODEM_WIZARD_SIGNATURE
SETUP_PLUGIN_INFO_STR("\p IsModemWizardOpen;g", ((theFlag == TRUE) ? "\p yes" : "\p no"));
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_IsModemWizardOpen exiting");
return(theFlag);
}
static int
CompareStringWrapper(const void *string1, const void *string2)
{
return (CompareString(string1, string2, NULL));
}
extern JRI_PUBLIC_API(jstringArray) native_SetupPlugin_SECURE_0005fGetModemList(JRIEnv* env, struct SetupPlugin* self)
{
JRIGlobalRef globalRef = NULL;
OSErr err = noErr;
Str255* modemList = NULL;
short modemCount, x;
void* theArray;
java_lang_String* modem;
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_GetModemList entered");
err = CallMUCPlugin( kGetModemsList, &modemList );
if ( err != noErr )
{
SETUP_PLUGIN_ERROR( "\p GetModemList error;g", err );
return NULL;
}
if ( modemList == NULL )
{
SETUP_PLUGIN_ERROR( "\p GetModemList: modemList is NULL", unimpErr );
return NULL;
}
modemCount = (short)( GetPtrSize( (Ptr)modemList ) / sizeof( Str255 ) ); // modemList is not NULL terminated, so get ptr size
qsort( modemList, modemCount, sizeof( Str255 ), CompareStringWrapper ); // modemList is not sorted, so use qsort
if ( theArray = JRI_NewObjectArray( env, modemCount, class_java_lang_String(env), NULL ) )
{
globalRef = JRI_NewGlobalRef( env, theArray ); // locks the array
for ( x = 0; x < modemCount; x++ )
{
if ( modemList[ x ] == NULL )
break;
PtoCstr( modemList[ x ] );
// if (modem = JRI_NewStringUTF(env, (char *)modemList[x],strlen((char *)modemList[x]))) {
if (modem = cStr2javaLangString( env, (char*)modemList[ x ], strlen( (char*)modemList[ x ] ) ) )
JRI_SetObjectArrayElement( env, theArray, x, modem );
CtoPstr( (char*)modemList[ x ] );
}
if ( globalRef )
JRI_DisposeGlobalRef( env, globalRef );
}
for ( x = 0; x < modemCount; x++ )
// we need to dispose of modemList strings
DisposePtr( (Ptr)modemList[ x ] );
SETUP_PLUGIN_TRACE( "\p native_SetupPlugin_GetModemList exiting" );
return theArray;
}
extern JRI_PUBLIC_API(java_lang_String *)
native_SetupPlugin_SECURE_0005fGetModemType(JRIEnv* env, struct SetupPlugin* self, java_lang_String *theModem)
{
java_lang_String *theString;
char *theModemStr;
char *theModemType="Modem";
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_GetModemType entered");
if ((theModemStr = (char *)javaLangString2Cstr( env, theModem )) != NULL) {
if (strstr(theModemStr,"ISDN")) {
theModemType="ISDN";
}
}
SETUP_PLUGIN_INFO_STR("\p GetModemType: the modem type is", theModemType);
// theString=JRI_NewStringUTF(env,theModemType,strlen(theModemType));
theString=cStr2javaLangString(env,theModemType,strlen(theModemType));
SETUP_PLUGIN_TRACE("\p native_SetupPlugin_GetModemType exiting");
return(theString);
}
extern JRI_PUBLIC_API(java_lang_String *) native_SetupPlugin_SECURE_0005fGetCurrentModemName( JRIEnv* env, struct SetupPlugin* self )
{
java_lang_String* theString = NULL;
OSErr err = noErr;
Str255 modemName = { 0 };
SETUP_PLUGIN_TRACE( "\p native_SetupPlugin_GetCurrentModemName entered" );
err = CallMUCPlugin( kGetActiveModemName, &modemName );
if ( !err )
{
SETUP_PLUGIN_INFO_STR( "\p GetCurrentModemName: the modem name is;g", modemName );
PtoCstr( modemName );
// theString=JRI_NewStringUTF(env,(void *)modemName,strlen((void *)modemName));
theString = cStr2javaLangString( env, (void*)modemName, strlen( (void*)modemName ) );
}
else
SETUP_PLUGIN_ERROR( "\p GetCurrentModemName: error", err );
SETUP_PLUGIN_TRACE( "\p native_SetupPlugin_GetCurrentModemName exiting" );
return theString;
}