aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/PalmOS/Src/builder/builder.c
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/PalmOS/Src/builder/builder.c')
-rw-r--r--backends/platform/PalmOS/Src/builder/builder.c442
1 files changed, 442 insertions, 0 deletions
diff --git a/backends/platform/PalmOS/Src/builder/builder.c b/backends/platform/PalmOS/Src/builder/builder.c
new file mode 100644
index 0000000000..8b30707b81
--- /dev/null
+++ b/backends/platform/PalmOS/Src/builder/builder.c
@@ -0,0 +1,442 @@
+#include <PalmOS.h>
+#include "BuilderRsc.h"
+
+
+/***********************************************************************
+ *
+ * Entry Points
+ *
+ ***********************************************************************/
+
+void buildAll();
+/***********************************************************************
+ *
+ * Internal Structures
+ *
+ ***********************************************************************/
+typedef struct
+ {
+ UInt8 replaceme;
+ } StarterPreferenceType;
+
+typedef struct
+ {
+ UInt8 replaceme;
+ } StarterAppInfoType;
+
+typedef StarterAppInfoType* StarterAppInfoPtr;
+
+
+/***********************************************************************
+ *
+ * Global variables
+ *
+ ***********************************************************************/
+//static Boolean HideSecretRecords;
+
+
+/***********************************************************************
+ *
+ * Internal Constants
+ *
+ ***********************************************************************/
+#define appFileCreator 'STRT' // register your own at http://www.palmos.com/dev/creatorid/
+#define appVersionNum 0x01
+#define appPrefID 0x00
+#define appPrefVersionNum 0x01
+
+// Define the minimum OS version we support.
+#define ourMinVersion sysMakeROMVersion(3,5,0,sysROMStageRelease,0)
+#define kPalmOS10Version sysMakeROMVersion(1,0,0,sysROMStageRelease,0)
+
+
+/***********************************************************************
+ *
+ * Internal Functions
+ *
+ ***********************************************************************/
+
+
+/***********************************************************************
+ *
+ * FUNCTION: RomVersionCompatible
+ *
+ * DESCRIPTION: This routine checks that a ROM version is meet your
+ * minimum requirement.
+ *
+ * PARAMETERS: requiredVersion - minimum rom version required
+ * (see sysFtrNumROMVersion in SystemMgr.h
+ * for format)
+ * launchFlags - flags that indicate if the application
+ * UI is initialized.
+ *
+ * RETURNED: error code or zero if rom is compatible
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static Err RomVersionCompatible(UInt32 requiredVersion, UInt16 launchFlags)
+{
+ UInt32 romVersion;
+
+ // See if we're on in minimum required version of the ROM or later.
+ FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion);
+ if (romVersion < requiredVersion)
+ {
+ if ((launchFlags & (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) ==
+ (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp))
+ {
+ FrmAlert (RomIncompatibleAlert);
+
+ // Palm OS 1.0 will continuously relaunch this app unless we switch to
+ // another safe one.
+ if (romVersion <= kPalmOS10Version)
+ {
+ AppLaunchWithCommand(sysFileCDefaultApp, sysAppLaunchCmdNormalLaunch, NULL);
+ }
+ }
+
+ return sysErrRomIncompatible;
+ }
+
+ return errNone;
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: GetObjectPtr
+ *
+ * DESCRIPTION: This routine returns a pointer to an object in the current
+ * form.
+ *
+ * PARAMETERS: formId - id of the form to display
+ *
+ * RETURNED: void *
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static void * GetObjectPtr(UInt16 objectID)
+{
+ FormPtr frmP;
+
+ frmP = FrmGetActiveForm();
+ return FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, objectID));
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: MainFormInit
+ *
+ * DESCRIPTION: This routine initializes the MainForm form.
+ *
+ * PARAMETERS: frm - pointer to the MainForm form.
+ *
+ * RETURNED: nothing
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static void MainFormInit(FormPtr /*frmP*/)
+{
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: MainFormDoCommand
+ *
+ * DESCRIPTION: This routine performs the menu command specified.
+ *
+ * PARAMETERS: command - menu item id
+ *
+ * RETURNED: nothing
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+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
+ *
+ * DESCRIPTION: This routine is the event handler for the
+ * "MainForm" of this application.
+ *
+ * PARAMETERS: eventP - a pointer to an EventType structure
+ *
+ * RETURNED: true if the event has handle and should not be passed
+ * to a higher level handler.
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+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;
+
+ case ctlSelectEvent:
+ switch (eventP->data.ctlSelect.controlID)
+ {
+ case MainBuildButton:
+ buildAll();
+ break;
+ }
+ handled = true;
+ break;
+
+ case frmUpdateEvent:
+ // To do any custom drawing here, first call FrmDrawForm(), then do your
+ // drawing, and then set handled to true.
+ break;
+
+ default:
+ break;
+
+ }
+
+ return handled;
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: AppHandleEvent
+ *
+ * DESCRIPTION: This routine loads form resources and set the event
+ * handler for the form loaded.
+ *
+ * PARAMETERS: event - a pointer to an EventType structure
+ *
+ * RETURNED: true if the event has handle and should not be passed
+ * to a higher level handler.
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static Boolean AppHandleEvent(EventPtr eventP)
+{
+ UInt16 formId;
+ FormPtr frmP;
+
+ if (eventP->eType == frmLoadEvent)
+ {
+ // Load the form resource.
+ formId = eventP->data.frmLoad.formID;
+ frmP = FrmInitForm(formId);
+ FrmSetActiveForm(frmP);
+
+ // 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(frmP, MainFormHandleEvent);
+ break;
+
+ default:
+// ErrFatalDisplay("Invalid Form Load Event");
+ break;
+
+ }
+ return true;
+ }
+
+ return false;
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: AppEventLoop
+ *
+ * DESCRIPTION: This routine is the event loop for the application.
+ *
+ * PARAMETERS: nothing
+ *
+ * RETURNED: nothing
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+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
+ *
+ * DESCRIPTION: Get the current application's preferences.
+ *
+ * PARAMETERS: nothing
+ *
+ * RETURNED: Err value 0 if nothing went wrong
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static Err AppStart(void)
+{
+ StarterPreferenceType prefs;
+ UInt16 prefsSize;
+
+ // Read the saved preferences / saved-state information.
+ prefsSize = sizeof(StarterPreferenceType);
+ if (PrefGetAppPreferences(appFileCreator, appPrefID, &prefs, &prefsSize, true) !=
+ noPreferenceFound)
+ {
+ }
+
+ return errNone;
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: AppStop
+ *
+ * DESCRIPTION: Save the current state of the application.
+ *
+ * PARAMETERS: nothing
+ *
+ * RETURNED: nothing
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static void AppStop(void)
+{
+ StarterPreferenceType prefs;
+
+ // Write the saved preferences / saved-state information. This data
+ // will saved during a HotSync backup.
+ PrefSetAppPreferences (appFileCreator, appPrefID, appPrefVersionNum,
+ &prefs, sizeof (prefs), true);
+
+ // Close all the open forms.
+ FrmCloseAllForms ();
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: StarterPalmMain
+ *
+ * DESCRIPTION: This is the main entry point for the application.
+ *
+ * PARAMETERS: cmd - word value specifying the launch code.
+ * cmdPB - pointer to a structure that is associated with the launch code.
+ * launchFlags - word value providing extra information about the launch.
+ *
+ * RETURNED: Result of launch
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+static UInt32 StarterPalmMain(UInt16 cmd, MemPtr /*cmdPBP*/, UInt16 launchFlags)
+{
+ Err error;
+
+ error = RomVersionCompatible (ourMinVersion, launchFlags);
+ if (error) return (error);
+
+ switch (cmd)
+ {
+ case sysAppLaunchCmdNormalLaunch:
+ error = AppStart();
+ if (error)
+ return error;
+
+ FrmGotoForm(MainForm);
+ AppEventLoop();
+ AppStop();
+ break;
+
+ default:
+ break;
+
+ }
+
+ return errNone;
+}
+
+
+/***********************************************************************
+ *
+ * FUNCTION: PilotMain
+ *
+ * DESCRIPTION: This is the main entry point for the application.
+ *
+ * PARAMETERS: cmd - word value specifying the launch code.
+ * cmdPB - pointer to a structure that is associated with the launch code.
+ * launchFlags - word value providing extra information about the launch.
+ * RETURNED: Result of launch
+ *
+ * REVISION HISTORY:
+ *
+ *
+ ***********************************************************************/
+UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
+{
+ return StarterPalmMain(cmd, cmdPBP, launchFlags);
+}