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/

Reply via email to