Err DIA_Init(DIA_Settings* diaSettings) { UInt16 cardNo; LocalID localId; UInt32 value; Err error; Err tmpErr; Assert(diaSettings); MemSet(diaSettings, sizeof(*diaSettings), 0); error=SonySilkLibInit(diaSettings); if (error) goto OnError; if (!DIA_HasSonySilkLib(diaSettings)) { if ( 0==FtrGet(pinCreator, pinFtrAPIVersion, &value) ) { if ( 0!=value ) DIA_SetFlag(diaSettings, diaHasPenInputMgr); } } if (!FtrGet(sysFtrCreator, sysFtrNumNotifyMgrVersion, &value) && value) { error=SysCurAppDatabase(&cardNo, &localId); if (error) goto OnError; if (DIA_HasPenInputMgr(diaSettings)) { error=SysNotifyRegister(cardNo, localId, sysNotifyDisplayResizedEvent, NULL, sysNotifyNormalPriority, NULL); if (sysNotifyErrDuplicateEntry==error) error=errNone; if (error) goto OnError; DIA_SetFlag(diaSettings, diaRegisteredDisplayResizeNotify); } if (DIA_HasSonySilkLib(diaSettings)) { error=SysNotifyRegister(cardNo, localId, sysNotifyDisplayChangeEvent, NULL, sysNotifyNormalPriority, NULL); if (sysNotifyErrDuplicateEntry==error) error=errNone; if (error) goto OnError; DIA_SetFlag(diaSettings, diaRegisteredDisplayChangeNotify); } } Exit: return error; OnError: if (DIA_HasSonySilkLib(diaSettings)) { tmpErr=SonySilkLibFree(diaSettings); if (tmpErr) error=tmpErr; } goto Exit; }
static void RegisterNotification( void ) { Err err; haveNotification = false; switch ( hardware ) { #ifdef SUPPORT_DIA_SONY case DIA_HARDWARE_SONY1: case DIA_HARDWARE_SONY2: displayChangeNotification = sysNotifyDisplayChangeEvent; break; #endif #ifdef SUPPORT_DIA_HANDERA case DIA_HARDWARE_HANDERA: displayChangeNotification = trgNotifySilkEvent; break; #endif #ifdef HAVE_PALM_DIA_SDK case DIA_HARDWARE_PALM10: case DIA_HARDWARE_PALM11: displayChangeNotification = sysNotifyDisplayResizedEvent; break; #endif default: return; } err = SysCurAppDatabase( &card, &db ); if ( err != errNone ) return; err = SysNotifyRegister( card, db, displayChangeNotification, NULL, sysNotifyNormalPriority, 0 ); haveNotification = ( err == errNone ); }
static Err AppStartCheckNotify() { UInt32 romVersion; Err err; err = FtrGet(sysFtrCreator, sysFtrNumNotifyMgrVersion, &romVersion); if (!err) { UInt16 cardNo; LocalID dbID; err = SysCurAppDatabase(&cardNo, &dbID); if (!err) { SysNotifyRegister(cardNo, dbID, sysNotifyVolumeMountedEvent, NULL, sysNotifyNormalPriority, NULL); SysNotifyRegister(cardNo, dbID, sysNotifyVolumeUnmountedEvent, NULL, sysNotifyNormalPriority, NULL); SysNotifyRegister(cardNo, dbID, sonySysNotifyMsaEnforceOpenEvent, NULL, sysNotifyNormalPriority, NULL); SysNotifyRegister(cardNo, dbID, sysNotifyDisplayResizedEvent, NULL, sysNotifyNormalPriority, NULL); } } return err; }
/*----------------------------------------CIRexxApp::RegisterForNotifications-+ | Register for interest in the pen stroke event (5.0's version of a hack) | +----------------------------------------------------------------------------*/ void CIRexxApp::RegisterForNotifications() { Err err; UInt16 cardNo; LocalID dbID; SysCurAppDatabase(&cardNo, &dbID); err = SysNotifyRegister(cardNo, dbID, sysNotifyProcessPenStrokeEvent, (SysNotifyProcPtr)0, sysNotifyNormalPriority, 0); return; }
void hookHoldSwitch(void (*CallBack)(UInt32)) { Err err; UInt32 val; err = FtrGet(sysFtrCreator, sysFtrNumNotifyMgrVersion, &val); if (!err && val) { UInt16 CardNo; LocalID dbID; SysCurAppDatabase(&CardNo, &dbID); SysNotifyRegister(CardNo, dbID, sonySysNotifyHoldStatusChangeEvent, PrvHoldNotificationHandler, sysNotifyNormalPriority, NULL); holdCB = CallBack; } }
Boolean SonySilk(void) { Err error = errNone; UInt32 version; UInt16 cardNo; LocalID dbID; if (silk_ref != -1) return (silk_ref != 0); if (SysLibFind(sonySysLibNameSilk, &silk_ref)) { error = SysLibLoad('libr', sonySysFileCSilkLib, &silk_ref); } if (error == sysErrLibNotFound || silk_ref == -1) { silk_ref = 0; return (0); } WriteLog("found sony silk library "); error = FtrGet(sonySysFtrCreator, sonySysFtrNumVskVersion, &version); if (error || !version) { silk_ver = 0; SilkLibOpen(silk_ref); } else { VskOpen(silk_ref); silk_ver = VskGetAPIVersion(silk_ref); } WriteLog("version: %d\n", silk_ver); SonySetSilkResizable(true); SysCurAppDatabase(&cardNo, &dbID); SysNotifyRegister(cardNo, dbID, sysNotifyDisplayChangeEvent, SonyNotifyHook, sysNotifyNormalPriority, NULL); return (silk_ref != 0); }
/*********************************************************************** * handling for form and control actions * menu actions are forwarded to MainFormDoCommand ***********************************************************************/ static Boolean MainFormHandleEvent (EventPtr event) { FormType *frm; Boolean handled = false; Boolean categoryEdited, reDraw=false; UInt16 category, numRecords; ControlType *ctl; UInt32 *recordList; if (event->eType == ctlSelectEvent) { // button handling handled = true; switch (event->data.ctlSelect.controlID) { // the ok button - this leaves the application case LIST_cat_trigger: frm = FrmGetActiveForm(); category=DatabaseGetCat(); numRecords=DmNumRecordsInCategory(DatabaseGetRef(), DELETE_CATEGORY); recordList=(UInt32 *)MemPtrNew(numRecords * sizeof(UInt32)); CatPreEdit(numRecords, recordList); categoryEdited = CategorySelect(DatabaseGetRef(), frm, LIST_cat_trigger, LIST_cat, false, &category, gCategoryName, 0, STRING_cat_edit); // categoryDefaultEditCategoryString if (categoryEdited || (category != DatabaseGetCat())) { reDraw=true; DatabaseSetCat(category); ctl = GetObjectPtr(LIST_cat_trigger); CategoryGetName(DatabaseGetRef(), DatabaseGetCat(), gCategoryName); CategorySetTriggerLabel(ctl, gCategoryName); } CatPostEdit(numRecords, recordList); if (reDraw) { GadgetSetNeedsCompleteRedraw(true); FrmDrawForm(frm); } if (recordList != NULL) MemPtrFree((MemPtr)recordList); break; case BUTTON_beam: BeamCourse(GadgetGetHintCourseIndex()); break; case BUTTON_edit: gMenuCurrentForm=FORM_main; EditTime(); break; case BUTTON_next: GadgetDrawHintNext(); break; default: break; } } else if (event->eType == keyDownEvent) { // We have a hard button assigned and it was pressed if (TxtCharIsHardKey(event->data.keyDown.modifiers, event->data.keyDown.chr)) { if (! (event->data.keyDown.modifiers & poweredOnKeyMask)) { GadgetDrawHintNext(); handled = true; } } else if (EvtKeydownIsVirtual(event)) { // Up or down keys pressed switch (event->data.keyDown.chr) { case vchrPageUp: if (event->data.keyDown.modifiers & autoRepeatKeyMask) { if (! gMainRepeat) { GadgetSwitchScreen(); gMainRepeat = true; } } else { GadgetDrawStep(winUp); gMainRepeat = false; } handled=true; break; case vchrPageDown: if (event->data.keyDown.modifiers & autoRepeatKeyMask) { if (! gMainRepeat) { GadgetSwitchScreen(); gMainRepeat = true; } } else { GadgetDrawStep(winDown); gMainRepeat = false; } handled=true; break; case vchrSendData: BeamCourse(GadgetGetHintCourseIndex()); handled=true; break; default: break; } } } else if (event->eType == menuEvent) { // forwarding of menu events return HandleMenuEvent(event->data.menu.itemID); } else if (event->eType == menuOpenEvent) { return HandleMenuOpenEvent(event); } else if (event->eType == frmUpdateEvent) { // redraws the form if needed frm = FrmGetActiveForm(); FrmDrawForm(frm); // GadgetDrawHintNext(); handled = true; } else if (event->eType == frmOpenEvent) { ControlType *ctl; LocalID dbID; UInt16 cardNo; Boolean newKeyP4=false; UInt16 newKeyP2=0xFFFF; // initializes and draws the form at program launch frm = FrmGetActiveForm(); GadgetSet(frm, GADGET_main, GADGET_hint); FrmSetGadgetHandler(frm, FrmGetObjectIndex(frm, GADGET_main), GadgetHandler); FrmSetGadgetHandler(frm, FrmGetObjectIndex(frm, GADGET_hint), GadgetHintHandler); FrmDrawForm(frm); GadgetDrawHintNext(); ctl = GetObjectPtr(LIST_cat_trigger); CategoryGetName (DatabaseGetRef(), DatabaseGetCat(), gCategoryName); CategorySetTriggerLabel (ctl, gCategoryName); DmOpenDatabaseInfo(DatabaseGetRefN(DB_MAIN), &dbID, NULL, NULL, &cardNo, NULL); SysNotifyRegister(cardNo, dbID, sysNotifyLateWakeupEvent, HandleNotification, sysNotifyNormalPriority, NULL); KeyRates(false,&gKeyP1, &gKeyP2, &gKeyP3, &gKeyP4); KeyRates(true, &gKeyP1, &newKeyP2, &gKeyP3, &newKeyP4); handled = true; } else if (event->eType == frmCloseEvent) { // this is done if program is closed LocalID dbID; UInt16 cardNo; DmOpenDatabaseInfo(DatabaseGetRefN(DB_MAIN), &dbID, NULL, NULL, &cardNo, NULL); SysNotifyUnregister(cardNo, dbID, sysNotifyLateWakeupEvent, sysNotifyNormalPriority); // Restore original key rates KeyRates(true, &gKeyP1, &gKeyP2, &gKeyP3, &gKeyP4); } return (handled); }