If you have the patiente to read trough this i congratulate you, otherwise
just ignore it and I'll try to reduce to a minimu acceptable. (I'm starting
to think on redesigning the UI)
static Boolean AppHandleEvent(EventPtr event)
{
UInt16 formId;
FormPtr form;
if (Close_BT){
CloseBT();
Close_BT=false;
MyPrintF(gResultsForm, gResultsField, "\nBTLib Closed");
}
if (event->eType == frmLoadEvent) {
// Load the form resource.
formId = event->data.frmLoad.formID;
form = FrmInitForm(formId);
ErrFatalDisplayIf(!form, "Can't initialize form");
FrmSetActiveForm(form);
// Set the event handler for the form. The handler of the currently
// active form is called by FrmHandleEvent each time is receives an
// event.
switch (formId) {
case MainForm:
FrmSetEventHandler(form, MainFormHandleEvent);
break;
case MenuSelectDevForm:
FrmSetEventHandler(form, MenuSelectDevHandleEvent);
break;
case MenuSelectFileForm:
FrmSetEventHandler(form, MenuSelectFileHandleEvent);
break;
default:
ErrFatalDisplay("Invalid Form Load Event");
break;
}
return true;
} else
return false;
}
static
void MainFormInit(FormPtr form)
{
#pragma unused(form)
// warning-- don't do any drawing in this routine.
// Also, don't call FrmSetFocus from here (it must be called *after*
// FrmDrawForm)
}
static
void MainFormDeinit(FormPtr form)
{
#pragma unused(form)
}
static void AppEventLoop(void)
{
Err error;
EventType event;
do {
EvtGetEvent(&event, evtWaitForever);
if (! SysHandleEvent(&event))
if (! MenuHandleEvent(0, &event, &error))
if (! AppHandleEvent(&event))
FrmDispatchEvent(&event);
} while (event.eType != appStopEvent);
}
static Err AppStart(void)
{
return errNone;
}
static Err AppStop(void)
{
CloseBT();
FrmCloseAllForms();
MemPtrFree(gResultsField);
MemPtrFree(gSelectedDevField);
return errNone;
}
UInt32 PilotMain(UInt16 launchCode, MemPtr launchParameters,
UInt16 launchFlags)
{
#pragma unused(launchParameters)
Err error;
switch (launchCode) {
case sysAppLaunchCmdNormalLaunch:
error = RomVersionCompatible (ourMinVersion, launchFlags);
if (error)
return error;
error = AppStart();
if (error)
return error;
FrmGotoForm(MainForm);
AppEventLoop();
AppStop();
break;
default:
break;
}
return errNone;
}
Boolean MenuSelectFileHandleEvent(EventPtr event)
{
Boolean handled = false;
FormPtr form;
UInt32 listSel;
switch (event->eType)
{
case frmOpenEvent:
form = FrmGetActiveForm();
MainFormInit(form);
gFileList = (ListType *) GetObjectPtrFromActiveForm(MenuSelectFileList);
FillFileList(gFileList);
LstSetSelection(gFileList, noListSelection);
FrmDrawForm(form);
FileSelec=true;
handled = true;
break;
case ctlSelectEvent :
switch (event->data.ctlSelect.controlID){
case MenuSelectFileFormDone :
if (ListChoices) {
UInt16 i;
for (i=0; i<ListNumItems; i++)
MemPtrFree((MemPtr) ListChoices[i]);
MemPtrFree((MemPtr) ListChoices);
ListChoices=0;
}
FrmGotoForm(MainForm);
handled = true;
break;
default : break;
}
case lstSelectEvent:
if (event->data.lstSelect.listID == MenuSelectFileList) {
listSel = LstGetSelection(gFileList);
SysCreateDataBaseList(sysFileTApplication,0,&wNumDBsFound,&haItems,true);
if (haItems) paItems= (SysDBListItemType*)MemHandleLock(haItems);
dBName = (Char *) MemPtrNew(sizeof(paItems[listSel].name));
StrCopy(dBName,paItems[listSel].name);
dBIDNo = paItems[listSel].dbID;
dBCardNo = paItems[listSel].cardNo;
MemHandleFree(haItems);
haItems= NULL;
handled = true;
break;
}
case frmCloseEvent:
MainFormDeinit(FrmGetActiveForm());
handled = false;
break;
default : break;
}
return handled;
}
Boolean MenuSelectDevHandleEvent(EventPtr event)
{
Boolean handled = false;
FormPtr form;
UInt16 coordY,currentDev,devSel=0;
switch (event->eType)
{
case frmOpenEvent:
form = FrmGetActiveForm();
MainFormInit(form);
FrmDrawForm(form);
for (coordY=TOPDEVLIST, currentDev=0;currentDev<MAXBDAVAILABLE &&
coordY<110;coordY += 13,currentDev++) //coordY<140 para 10
{
UpdateDevList(currentDev,coordY);
}
DeviceSelec = true;
handled = true;
break;
case ctlSelectEvent:
if (event->data.ctlSelect.controlID!=MenuSelectDevFormDone){
devSel=event->data.ctlSelect.controlID-5000;
if (devSel<10) gSelectedBdAddr=devSel;
else {
gSelectedBdAddr=devSel-10;
}
handled = true;
break;
}
else if (event->data.ctlSelect.controlID == MenuSelectDevFormDone){
FrmGotoForm(MainForm);
handled = true;
break;
}
case frmCloseEvent:
MainFormDeinit(FrmGetActiveForm());
handled = false;
break;
default:
break;
}
return handled;
}
Boolean MainFormHandleEvent(EventPtr event)
{
Boolean handled = false;
FormPtr form;
Err error,err;
Char *errorStr,*sendName;
BtLibConnectionRoleEnum role;
UInt16 i,j=0;
ExgSocketType exgSocket;
UInt32 sendNameDim=0;
switch (event->eType)
{
case frmOpenEvent:
form = FrmGetActiveForm();
MainFormInit(form);
FrmDrawForm(form);
FrmSetMenu(form,MainMenu);
gResultsForm = form;
gResultsField = GetObjectPtrFromActiveForm(MainField);
gResultsScrollBar = GetObjectPtrFromActiveForm(MainScrollBar);
gSelectedDevField = GetObjectPtrFromActiveForm(MainSelectedDeviceField);
UpdateDevField(gSelectedBdAddr);
/* if (!BTLib_Loaded){
OpenBT();
//btCreateListenerSocket();
BTLib_Loaded = true;
}*/
/* if (startup){
startup=false;
btCreateListenerSocket();
}*/
handled = true;
break;
case menuEvent :
switch(event->data.menu.itemID){
case MenuOptionsSelectDev :
if (inqComplete) {
FrmGotoForm(MenuSelectDevForm);
handled = true;
break;
}
else {
MyPrintF(gResultsForm, gResultsField, "\n You must first perform an
Inquiry");
handled = true;
break;
}
case MenuOptionsGetDevBDAddr :
ConvertBdAddrToStr(&gBdAddr[gSelectedBdAddr],gBtLibRefNum, gBdAddrStr);
MyPrintF(gResultsForm, gResultsField, "\nDevice name : %s",(Char
*)gBdAddrStr);
handled = true;
break;
case MenuOptionsGetDevClass :
MyPrintF(gResultsForm, gResultsField,"\nCoD :
%s",GetCoD(gSelectedBdAddr));
handled = true;
break;
case MenuOptionsSelectFile :
FrmGotoForm(MenuSelectFileForm);
handled = true;
break;
case MenuAbout :
MenuEraseStatus(0); // Clear the menu status from the display.
form= FrmInitForm (MenuAboutForm);
FrmDoDialog (form); // Display the About Box.
FrmDeleteForm (form);
handled = true;
break;
case MenuAboutHelp :
FrmHelp(MainHelpString);
handled = true;
break;
}
break;
case ctlSelectEvent:
switch (event->data.ctlSelect.controlID) {
case MainInquiryButton:
Inquiry = true;
if(!BTLib_Loaded){
OpenBT();
}
error = BtLibStartInquiry(gBtLibRefNum, NULL, 10);
if(error != btLibErrPending)
{
errorStr = ConvertBtErrToString(error);
MyPrintF(gResultsForm, gResultsField,"\nStart Inq Error");
handled = true;
break;
}
else {
MyPrintF(gResultsForm, gResultsField,"\nStarted Inquiry");
handled = true;
break;
}
case MainSendButton:
if (DeviceSelec && FileSelec && validDevice){
BeamFile();
handled = true;
break;
}
else if (!DeviceSelec || !validDevice) {
MyPrintF(gResultsForm, gResultsField,"\nPlease Select a Device");
handled = true;
break;
}
else if (!FileSelec) {
MyPrintF(gResultsForm, gResultsField,"\nPlease Select a File");
handled = true;
break;
}
case MainCancelButton :
if (Inquiry) {
error = BtLibCancelInquiry(gBtLibRefNum);
if (error != btLibErrNoError) MyPrintF(gResultsForm, gResultsField,
"\nCancel Inquiry error : %s",ConvertBtErrToString(error));
}
else MyPrintF(gResultsForm, gResultsField, "\nNo Inquiry in progress");
handled = true;
break;
}
break;
case sclRepeatEvent:
ScrollLines(gResultsField, gResultsScrollBar,
event->data.sclRepeat.newValue - event->data.sclRepeat.value, false);
handled = true;
break;
case fldChangedEvent:
UpdateScrollBar(gResultsField, gResultsScrollBar);
handled = true;
break;
case keyDownEvent:
if (event->data.keyDown.chr == pageUpChr) {
PageScroll(gResultsField, gResultsScrollBar, winUp);
handled = true;
break;
} else if (event->data.keyDown.chr == pageDownChr) {
PageScroll(gResultsField, gResultsScrollBar, winDown);
handled = true;
break;
}
case frmCloseEvent:
MainFormDeinit(FrmGetActiveForm());
handled = false;
break;
default:
break;
}
UpdateScrollBar(gResultsField, gResultsScrollBar);
return handled;
}
--
For information on using the Palm Developer Forums, or to unsubscribe, please see
http://www.palmos.com/dev/support/forums/