/*********************************************************************** * * FUNCTION: RepeatHandleEvent * * DESCRIPTION: This routine is the event handler for the "Repeat * Dialog Box". * * PARAMETERS: event - a pointer to an EventType structure * * RETURNED: true if the event was handled and should not be passed * to a higher level handler. * ***********************************************************************/ Boolean RepeatHandleEvent (EventType* event) { Boolean handled = false; if (event->eType == ctlSelectEvent) { switch (event->data.ctlSelect.controlID) { case RepeatOkButton: RepeatApply(); /* Fall through... */ case RepeatCancelButton: /* ...to system */ break; case RepeatNone: case RepeatHourly: case RepeatDaily: case RepeatWeekly: case RepeatMonthly: case RepeatYearly: RepeatChangeType(event); handled = true; break; case RepeatDayOfWeek1PushButton: case RepeatDayOfWeek2PushButton: case RepeatDayOfWeek3PushButton: case RepeatDayOfWeek4PushButton: case RepeatDayOfWeek5PushButton: case RepeatDayOfWeek6PushButton: case RepeatDayOfWeek7PushButton: RepeatChangeRepeatOn(event); handled = true; break; case RepeatByDayPushButton: case RepeatByDatePushButton: RepeatDrawDescription(FrmGetFormPtr(RepeatForm)); handled = true; break; } } else if (event->eType == keyDownEvent && !TxtCharIsHardKey(event->data.keyDown.modifiers, event->data.keyDown.chr) && !EvtKeydownIsVirtual(event)) { const WChar chr = event->data.keyDown.chr; if (TxtCharIsDigit(chr) || TxtCharIsCntrl(chr)) { Boolean noSelection = true; UInt16 startPos = 0; UInt16 endPos = 0; FormType* frm = FrmGetFormPtr(RepeatForm); FieldType* fld = GetObjectPointer(frm, RepeatFrequenceField); FldGetSelection(fld, &startPos, &endPos); noSelection = startPos == endPos; FldHandleEvent(fld, event); /* ** There are 3 ways that the repeat every value can be ** updated ** 1) by the soft keyboard (on silkscreen) ** 2) via graffiti entry in the form with a selection range ** 3) via graffiti entry in the form with no selection range ** (i.e. just an insertion cursor) ** Methods 1 & 2 result in a fldChangedEvent being posted so the ** update will be handled in response to that event. ONLY when ** there is no selection range replacement, do we do the update here ** to avoid a double redraw of the description field. */ if (noSelection) RepeatDrawDescription(frm); } handled = true; } else if (event->eType == fldChangedEvent) { /* ** When the user changes the "repeat every" value via the ** soft keyboard or in the form via a selection replacement ** a fldChangedEvent is posted. Update the description in ** response. */ RepeatDrawDescription(FrmGetFormPtr(RepeatForm)); handled = true; } else if (event->eType == popSelectEvent) { if (event->data.popSelect.listID == RepeatEndOnList) { RepeatSelectEndDate (event); handled = true; } } return handled; }
Boolean AnnotationFormHandleEvent ( EventType* event /* pointer to an EventType structure */ ) { Boolean handled; handled = ResizeHandleEvent( event ); if ( handled ) return handled; switch ( event->eType ) { case frmOpenEvent: AnnotationFormInit(); handled = true; break; case keyDownEvent: switch ( event->data.keyDown.chr ) { case pageUpChr: if ( FldScrollable( field, winUp ) ) FldScrollField( field, 1, winUp ); UpdateFieldScrollbar( field, scrollBar ); break; case pageDownChr: if ( FldScrollable( field, winDown ) ) FldScrollField( field, 1, winDown ); UpdateFieldScrollbar( field, scrollBar ); break; default: { UInt16 scrollPos; UInt16 textHeight; UInt16 fieldHeight; FldGetScrollValues( field, &scrollPos, &textHeight, &fieldHeight ); if ( FldHandleEvent( field, event ) ) { UInt16 newScrollPos; UInt16 newTextHeight; UInt16 newFieldHeight; FldGetScrollValues( field, &newScrollPos, &newTextHeight, &newFieldHeight ); if ( scrollPos != newScrollPos || textHeight != newTextHeight || fieldHeight != newFieldHeight ) UpdateFieldScrollbar( field, scrollBar ); handled = true; } break; } } break; case sclRepeatEvent: ScrollMessage( field, event->data.sclRepeat.newValue - event->data.sclRepeat.value ); break; case ctlSelectEvent: switch ( event->data.ctlSelect.controlID ){ case frmAnnotationCancel: AnnotationFormClose(); FrmReturnToForm( Prefs()->lastForm ); handled = true; break; case frmAnnotationOK: SaveAnnotation(); AnnotationFormClose(); FrmReturnToForm( Prefs()->lastForm ); if ( IsFormMain( Prefs()->lastForm ) ) FrmUpdateForm( GetMainFormId(), frmRedrawUpdateCode ); handled = true; break; case frmAnnotationDelete: if ( entryP->id.indexInParagraph != NEW_ANNOTATION ) { DeleteAnnotation( &( entryP->id ) ); } AnnotationFormClose(); if ( IsFormMain( Prefs()->lastForm ) ) FrmUpdateForm( GetMainFormId(), frmRedrawUpdateCode ); FrmReturnToForm( Prefs()->lastForm ); handled = true; break; default: handled = true; break; } break; case frmCloseEvent: AnnotationFormClose(); handled = false; break; default: handled = false; } return handled; }