/****************************************************************************** * * File: Starter.cpp * *****************************************************************************/ #include #include "StarterRsc.h" /*********************************************************************** * * Internal Structures * ***********************************************************************/ /*********************************************************************** * * Global variables * ***********************************************************************/ /*********************************************************************** * * Internal Constants * ***********************************************************************/ static Int8 count = 0; static Char countText[10]; /*********************************************************************** * * Internal Functions * ***********************************************************************/ /*********************************************************************** * * FUNCTION: MainFormInit * ***********************************************************************/ static void MainFormInit(FormPtr frmP) { UInt16 objIndex = FrmGetObjectIndex (frmP, MainField1Field); FieldType *fldP = (FieldType*)FrmGetObjectPtr (frmP, objIndex); StrIToA (countText, count); FldSetTextPtr (fldP, countText); } /*********************************************************************** * * FUNCTION: MainFormDoCommand * ***********************************************************************/ static Boolean MainFormDoCommand(UInt16 command) { Boolean handled = false; //FormPtr frmP; switch (command) { //case MainOptionsAboutStarterApp: // MenuEraseStatus(0); // Clear the menu status from the display. // frmP = FrmInitForm (AboutForm); // FrmDoDialog (frmP); // Display the About Box. // FrmDeleteForm (frmP); handled = true; break; } return handled; } /*********************************************************************** * * FUNCTION: MainFormHandleEvent * ***********************************************************************/ static Boolean MainFormHandleEvent(EventPtr eventP) { Boolean handled = false; FormPtr frmP; switch (eventP->eType) { case menuEvent: return MainFormDoCommand(eventP->data.menu.itemID); case frmOpenEvent: frmP = FrmGetActiveForm(); MainFormInit( frmP); FrmDrawForm ( frmP); handled = true; break; default: break; } return handled; } /*********************************************************************** * * FUNCTION: AppHandleEvent * ***********************************************************************/ static Boolean AppHandleEvent(EventPtr eventP) { UInt16 formId; FormPtr frmP; UInt16 objIndex; ControlType *controlP; Int8 step; FieldType *fldP; if (eventP->eType == frmLoadEvent) { formId = eventP->data.frmLoad.formID; frmP = FrmInitForm(formId); FrmSetActiveForm(frmP); switch (formId) { case MainForm: FrmSetEventHandler(frmP, MainFormHandleEvent); break; } return true; } frmP = FrmGetActiveForm (); objIndex = FrmGetObjectIndex (frmP, MainCb3G2IncCheckbox); controlP = (ControlType*)FrmGetObjectPtr (frmP, objIndex); if (CtlGetValue (controlP) == true) step = 1; else step = -1; objIndex = FrmGetObjectIndex (frmP, MainField1Field); fldP = (FieldType*)FrmGetObjectPtr (frmP, objIndex); if (eventP->eType == ctlSelectEvent) { if (eventP->data.ctlSelect.controlID == MainBtn1Button) { count += step; StrIToA (countText, count); FldSetTextPtr (fldP, countText); FldDrawField (fldP); return true; } } if (eventP->eType == ctlRepeatEvent) { if (eventP->data.ctlSelect.controlID == MainRepBtn1Repeating) { count += step; StrIToA (countText, count); FldSetTextPtr (fldP, countText); FldDrawField (fldP); return false; } } return false; } /*********************************************************************** * * FUNCTION: AppEventLoop * ***********************************************************************/ static void AppEventLoop(void) { UInt16 error; EventType event; do { EvtGetEvent(&event, evtWaitForever); if (! SysHandleEvent(&event)) if (! MenuHandleEvent(0, &event, &error)) if (! AppHandleEvent(&event)) FrmDispatchEvent(&event); } while (event.eType != appStopEvent); } /*********************************************************************** * * FUNCTION: AppStart * ***********************************************************************/ static Err AppStart(void) { return errNone; } /*********************************************************************** * * FUNCTION: AppStop * ***********************************************************************/ static void AppStop(void) { // Close all the open forms. FrmCloseAllForms (); } /*********************************************************************** * * FUNCTION: StarterPalmMain * ***********************************************************************/ static UInt32 StarterPalmMain(UInt16 cmd, MemPtr /*cmdPBP*/, UInt16 launchFlags) { Err error; switch (cmd) { case sysAppLaunchCmdNormalLaunch: error = AppStart(); if (error) return error; FrmGotoForm(MainForm); AppEventLoop(); AppStop(); break; default: break; } return errNone; } /*********************************************************************** * * FUNCTION: PilotMain * ***********************************************************************/ UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) { return StarterPalmMain(cmd, cmdPBP, launchFlags); }