コード例 #1
0
ファイル: repeat.c プロジェクト: jemyzhang/DiddleBug
/***********************************************************************
 *
 * 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;
}
コード例 #2
0
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;
}