?? mytemp.c
字號:
#include <PalmOS.h>#include "com.h"#include "mytemp.h"#include "mytempRsc.h"#include "temp.h"#include "log.h"#include "alarm.h"#include "viewport.h"UInt32 TempLogIntervalls[] = kTempLogIntervalls;static Boolean StartApplication(launchFlags) { Err err; UInt32 ftrRef; gLogIntervallIndex = 2; LogOpenOrCreateDatabase(&logDb, dmModeReadOnly); if (FtrGet(kMyTempID, myTempFtrTempState, &ftrRef) == ftrErrNoSuchFeature) {/* SetAlarm(TimGetSeconds() + TempLogIntervalls[gLogIntervallIndex], 0);*/ err = FtrSet(kMyTempID, myTempFtrTempErr, 0); err = FtrSet(kMyTempID, myTempFtrTempSerialRefNum, 0); err= FtrSet(kMyTempID, myTempFtrTempState, OpenSerialState);/* init to 10s*/ err = FtrSet(kMyTempID, myTempFtrTempLogIntervallIndex, gLogIntervallIndex); err = FtrSet(kMyTempID, myTempFtrTempErrorCounter, 0); } FtrGet(kMyTempID, myTempFtrTempLogIntervallIndex, &gLogIntervallIndex); gLogCheck = GetAlarm() == 0 ? false : true; FtrGet(kMyTempID, myTempFtrFlags, &ftrRef); gLogSound = ftrRef & myTempAlarmSndClick; return false;}static void StopApplication(void) { LogCloseDatabase(logDb); FrmCloseAllForms();}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);/* Pilot 1.0 will continuously relaunch this app unless we switch to another safe one. */ if (romVersion < 0x02000000) { AppLaunchWithCommand(sysFileCDefaultApp, sysAppLaunchCmdNormalLaunch, NULL); } } return (sysErrRomIncompatible); } return (0);}static void MainFormInit(void) { ViewPortData vp; LogEntryT minEntry; LogEntryT maxEntry; FormPtr frm = FrmGetActiveForm(); ControlPtr logCheck = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogCheck)); ControlPtr sndCheck = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogSnd)); ControlPtr intervallPop = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogIntervallPop)); ListPtr intervallList = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, LogIntervallList)); Char* intervallText; FrmDrawForm(frm); LstSetSelection(intervallList, gLogIntervallIndex); intervallText = LstGetSelectionText(intervallList, gLogIntervallIndex); CtlSetLabel(intervallPop, intervallText); CtlSetValue(logCheck, gLogCheck); CtlSetValue(sndCheck, gLogSound); LogGetMinMaxEntry(logDb, &minEntry, &maxEntry); vp.frm = frm; vp.gadgetID = TempGraphGadget; vp.maxX = maxEntry.time; vp.maxY = maxEntry.temp; vp.offsetX = minEntry.time; vp.offsetY = minEntry.temp; ViewportInit(vp); ViewportDraw();}static Boolean UpdateDisplay() { Boolean error = false; LogEntryT minEntry; LogEntryT maxEntry; ViewPortData vp; FormPtr frm = FrmGetActiveForm(); LogEntryT entry; Char buf[8]; LogGetMinMaxEntry(logDb, &minEntry, &maxEntry); vp.frm = frm; vp.gadgetID = TempGraphGadget; vp.maxX = maxEntry.time; vp.maxY = maxEntry.temp; vp.offsetX = minEntry.time; vp.offsetY = minEntry.temp; ViewportInit(vp); ViewportDraw(); LogGetLastEntry(logDb, &entry); StrIToA (buf, entry.temp); SetFieldTextFromString(TempField, buf); return error;}static Boolean MainFormHandleEvent(EventPtr event) { Boolean handled = false; UInt32 ftrRef; switch (event->eType) { case frmOpenEvent: MainFormInit(); handled = true; break; case popSelectEvent: gLogIntervallIndex = event->data.popSelect.selection; FtrSet(kMyTempID, myTempFtrTempLogIntervallIndex, gLogIntervallIndex); SetAlarm(TimGetSeconds(), 0); break; case ctlSelectEvent: switch (event->data.ctlSelect.controlID){ case LogCheck: FtrGet(kMyTempID, myTempFtrFlags, &ftrRef); if (event->data.ctlSelect.on) { FtrSet(kMyTempID, myTempFtrFlags, ftrRef | myTempAlarmLog); SetAlarm(TimGetSeconds(), 0); gLogCheck = true; } else { if (AlarmStopLogging() == tempNoError) { if (ftrRef & myTempAlarmLog) { ftrRef ^= myTempAlarmLog; } FtrSet(kMyTempID, myTempFtrFlags, ftrRef); SetAlarm(0, 0); gLogCheck = false; } } handled = true; break; case LogSnd: FtrGet(kMyTempID, myTempFtrFlags, &ftrRef); if (event->data.ctlSelect.on) { FtrSet(kMyTempID, myTempFtrFlags, ftrRef | myTempAlarmSndClick); } else { if (ftrRef & myTempAlarmSndClick) ftrRef ^= myTempAlarmSndClick; FtrSet(kMyTempID, myTempFtrFlags, ftrRef); } handled = true; break; case ClearButton: LogClearLog(); handled = true; break; } break; default: break; } return handled;}static Boolean ApplicationHandleEvent(EventPtr event) { FormPtr frm; UInt16 formId; Boolean handled = false; if (event->eType == frmLoadEvent) { formId = event->data.frmLoad.formID; frm = FrmInitForm(formId); FrmSetActiveForm(frm); switch (formId) { case MainForm: FrmSetEventHandler(frm, MainFormHandleEvent); break; } handled=true; } return handled;}static void EventLoop(void) { EventType event; UInt16 error; do { EvtGetEvent(&event, evtWaitForever); if (!SysHandleEvent(&event)) if (!MenuHandleEvent(0, &event, &error)) if (!ApplicationHandleEvent(&event)) FrmDispatchEvent(&event); } while (event.eType != appStopEvent);}UInt32 PilotMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags) { Err err; Boolean appIsActive = launchFlags & sysAppLaunchFlagSubCall; err = RomVersionCompatible (version20, launchFlags); if (err) return err; if (cmd == sysAppLaunchCmdNormalLaunch) { if (!StartApplication(launchFlags)) { FrmGotoForm(MainForm); EventLoop(); StopApplication(); } } else if (cmd == sysAppLaunchCmdAlarmTriggered) { AlarmTriggered((SysAlarmTriggeredParamType*) cmdPBP); if (appIsActive) UpdateDisplay(); } else if (cmd == sysAppLaunchCmdDisplayAlarm) { DisplayAlarm((SysDisplayAlarmParamType*) cmdPBP); } else if (cmd == sysAppLaunchCmdNotify) { CommandNotify((SysNotifyParamType*) cmdPBP); } return err;}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -