/* Get current selected note and fill out note properties elements. If selected == -1, clear and disable this fields. */ static void UpdateNoteProperties() { FormPtr frm = FrmGetActiveForm (); if (notelist.selected == -1) { FrmHideObject(frm, FrmGetObjectIndex(frm, ID_EditorDuration)); FrmHideObject(frm, FrmGetObjectIndex(frm, ID_EditorVelocity)); FrmHideObject(frm, FrmGetObjectIndex(frm, ID_EditorPause)); } else { NotePtr notes = MemHandleLock(notelist.bufH); NotePtr note = notes + notelist.selected; ErrFatalDisplayIf(notelist.selected > notelist.num, "Invalid note index!"); SetFieldTextFromNumber(ID_EditorDuration, note->dur); SetFieldTextFromNumber(ID_EditorVelocity, note->vel); SetFieldTextFromNumber(ID_EditorPause, note->pause); FrmShowObject(frm, FrmGetObjectIndex(frm, ID_EditorDuration)); FrmShowObject(frm, FrmGetObjectIndex(frm, ID_EditorVelocity)); FrmShowObject(frm, FrmGetObjectIndex(frm, ID_EditorPause)); MemPtrUnlock(notes); } }
/* Indicate that the next tap looks things up in the selected word */ static void ShowSelectWordTapIcon( void ) { FormType* mainForm; UInt16 prevCoordSys; if ( Prefs()->toolbar == TOOLBAR_NONE ) return; mainForm = FrmGetFormPtr( GetMainFormId() ); prevCoordSys = PalmSetCoordinateSystem( STANDARD ); if ( Prefs()->toolbar == TOOLBAR_SILK ) { /* FIXME: figure this out */ } else { FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpWait ) ); if ( isSelectWordTapMode ) { FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpHome ) ); FrmShowObject( mainForm, FrmGetObjectIndex( mainForm, bmpLookup ) ); } else { FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpLookup ) ); FrmShowObject( mainForm, FrmGetObjectIndex( mainForm, bmpHome ) ); } } PalmSetCoordinateSystem( prevCoordSys ); }
/* Initialize the details form */ static void DetailsFormInit( void ) { FormType* detailsForm; FieldType* urlField; UInt16 reference; detailsForm = FrmGetFormPtr( frmDetails ); urlField = GetObjectPtr( frmDetailsLink ); reference = GetHistoryCurrent(); if ( AddURLToField( urlField, reference ) ) FrmShowObject( detailsForm, FrmGetObjectIndex( detailsForm, frmDetailsCopy ) ); else FrmHideObject( detailsForm, FrmGetObjectIndex( detailsForm, frmDetailsCopy ) ); FrmDrawForm( detailsForm ); AddDocNameTitle( Prefs()->docName ); CtlSetValue( GetObjectPtr( frmDetailsStatusRead ), LinkVisited( reference ) ); CtlSetValue( GetObjectPtr( frmDetailsStatusUnread ), ! LinkVisited( reference ) ); CtlSetValue( GetObjectPtr( frmDetailsShowImages ), ShowImages( reference ) ); }
static void DrawBuyEquipmentForm() { FormPtr frmP = FrmGetActiveForm(); int i; RectangularShortcuts( frmP, BuyEquipmentBButton ); for (i=0; i<MAXWEAPONTYPE+MAXSHIELDTYPE+MAXGADGETTYPE; ++i) { RectangularButton( frmP, BuyEquipmentBuy0Button + i ); if (i < MAXWEAPONTYPE) { if (BASEWEAPONPRICE( i ) <= 0) FrmHideObject( frmP, FrmGetObjectIndex( frmP, BuyEquipmentBuy0Button + i ) ); else FrmShowObject( frmP, FrmGetObjectIndex( frmP, BuyEquipmentBuy0Button + i ) ); } else if (i < MAXWEAPONTYPE + MAXSHIELDTYPE) { if (BASESHIELDPRICE( i-MAXWEAPONTYPE ) <= 0) FrmHideObject( frmP, FrmGetObjectIndex( frmP, BuyEquipmentBuy0Button + i ) ); else FrmShowObject( frmP, FrmGetObjectIndex( frmP, BuyEquipmentBuy0Button + i ) ); } else { if (BASEGADGETPRICE( i-MAXWEAPONTYPE-MAXSHIELDTYPE ) <= 0) FrmHideObject( frmP, FrmGetObjectIndex( frmP, BuyEquipmentBuy0Button + i ) ); else FrmShowObject( frmP, FrmGetObjectIndex( frmP, BuyEquipmentBuy0Button + i ) ); } } FrmDrawForm( frmP ); for (i=0; i<MAXWEAPONTYPE; ++i) DrawItem( Weapontype[i].Name, 17+i*13, BASEWEAPONPRICE( i ) ); for (i=0; i<MAXSHIELDTYPE; ++i) DrawItem( Shieldtype[i].Name, 17+(i+MAXWEAPONTYPE)*13, BASESHIELDPRICE( i ) ); for (i=0; i<MAXGADGETTYPE; ++i) DrawItem( Gadgettype[i].Name, 17+(i+MAXWEAPONTYPE+MAXSHIELDTYPE)*13, BASEGADGETPRICE( i ) ); DisplayTradeCredits(); }
// Show a dynamic label on the form. void show_lab(FormPtr form, UInt16 labelID, Char* tmp_text) { UInt16 label_index; label_index = FrmGetObjectIndex(form, labelID); FrmHideObject(form, label_index); FrmCopyLabel(form, labelID, tmp_text); FrmShowObject(form, label_index); return; }
/* A game of Hide and go Seek er, Show? */ static void HideNShow ( UInt16 hideThis, UInt16 andThis, UInt16 butShowThis ) { FrmHideObject( form, FrmGetObjectIndex( form, hideThis ) ); FrmHideObject( form, FrmGetObjectIndex( form, andThis ) ); FrmShowObject( form, FrmGetObjectIndex( form, butShowThis ) ); }
bool wxControl::Show( bool show ) { FormType* form = (FormType*)GetParentForm(); if(form==NULL) return false; uint16_t index = FrmGetObjectIndex(form,GetId()); if(index==frmInvalidObjectId) return false; if(show) FrmShowObject(form,index); else FrmHideObject(form,index); return true; }
static void MainFormHandleConnectionProgress(AppContext* appContext, FormType* form, EventType* event) { Assert(event); ConnectionProgressEventData* data=reinterpret_cast<ConnectionProgressEventData*>(&event->data); if (connectionProgress==data->flag) FrmUpdateForm(formDictMain, redrawLookupStatusBar); else { UInt16 index=FrmGetObjectIndex(form, buttonAbortLookup); Assert(frmInvalidObjectId!=index); if (connectionFinished==data->flag) { appContext->lookupStatusBarVisible=false; FrmHideObject(form, index); index=FrmGetObjectIndex(form, buttonFind); Assert(frmInvalidObjectId!=index); FrmShowObject(form, index); MainFormSelectWholeInputText(form); } else { Assert(connectionStarted==data->flag); appContext->lookupStatusBarVisible=true; FrmShowObject(form, index); index=FrmGetObjectIndex(form, buttonFind); Assert(frmInvalidObjectId!=index); FrmHideObject(form, index); } FrmUpdateForm(formDictMain, redrawAll); } if (connectionFinished==data->flag) { SendEvtWithType(evtConnectionFinished); } }
static void DrawSpecialEventForm() { FormPtr frmP; char theText[320]; frmP = FrmGetActiveForm(); setCurrentWinTitle( SpecialEvent[CURSYSTEM.Special].Title ); if (SpecialEvent[CURSYSTEM.Special].JustAMessage) { FrmHideObject( frmP, FrmGetObjectIndex( frmP, SpecialEventYesButton ) ); FrmHideObject( frmP, FrmGetObjectIndex( frmP, SpecialEventNoButton ) ); FrmShowObject( frmP, FrmGetObjectIndex( frmP, SpecialEventOKButton ) ); } else { FrmShowObject( frmP, FrmGetObjectIndex( frmP, SpecialEventYesButton ) ); FrmShowObject( frmP, FrmGetObjectIndex( frmP, SpecialEventNoButton ) ); FrmHideObject( frmP, FrmGetObjectIndex( frmP, SpecialEventOKButton ) ); } FrmDrawForm ( frmP ); SysCopyStringResource(theText, SpecialEvent[CURSYSTEM.Special].QuestStringID); DisplayPage(theText, 18); }
/*********************************************************************** * * FUNCTION: SelectTime * * DESCRIPTION: Display a form showing a start and end time. * Allow the user to change the time and then * return them. * pTimeDiff. * * PARAMETERS: pStartTime - pointer to TimeType * pEndTime - pointer to TimeType * untimed - true if there isn't a time. * title - string containing the title * startOfDay - used when "All Day" button selected. * endOfDay - our used when "All Day" button selected. * startOfDisplay - first hour initially visible * * RETURNED: True if the time was changed by the user. * The first three parameters may change. * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * roger 12/2/94 Initial Revision * trev 08/12/97 made non modified passed variables constant * css 06/08/99 added new parameter & "All Day" button for gromit change. * ***********************************************************************/ Boolean SelectTime (TimeType * startTimeP, TimeType * endTimeP, Boolean untimed, const Char * titleP, Int16 startOfDay, Int16 endOfDay, Int16 startOfDisplay) { Int16 firstHour; Char startTimeText [timeStringLength]; Char endTimeText [timeStringLength]; Char timeChars [timeStringLength]; TimePtr timeP; FormType *originalForm, *frm; ListPtr hoursLst, minutesLst; ControlPtr startTimeCtl, endTimeCtl; EventType event; Boolean confirmed = false; MemHandle hoursItems; TimeType startTime, endTime, timeDiff; TimeFormatType timeFormat; ChangingTimeType changingTime; // Get the time format from the system preerances; timeFormat = (TimeFormatType)PrefGetPreference(prefTimeFormat); // Because this routine only deals with minutes in five minute // intervals we convert the proposed times from those passed. startTime.hours = startTimeP->hours; startTime.minutes = startTimeP->minutes; endTime.hours = endTimeP->hours; endTime.minutes = endTimeP->minutes; TimeDifference (&endTime, &startTime, &timeDiff); // Make sure the end time is displayable (clips at 11:55 pm) AdjustTimes (&startTime, &endTime, &timeDiff, changingStartTime); // Clear the buffer that holds written characters. *timeChars = 0; startOfDisplay = min (startOfDisplay, 12); originalForm = FrmGetActiveForm(); frm = (FormType *) FrmInitForm (TimeSelectorForm); FrmSetActiveForm (frm); hoursLst = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorHourList)); minutesLst = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorMinuteList)); startTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorStartTimeButton)); endTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorEndTimeButton)); // Set list to use either 12 or 24 hour time hoursItems = SysFormPointerArrayToStrings ( ((timeFormat == tfColon24h) || (timeFormat == tfDot24h)) ? (Char *) Hours24Array() : (Char *) Hours12Array(), 24); LstSetListChoices (hoursLst, MemHandleLock(hoursItems), 24); LstSetTopItem (hoursLst, startOfDisplay); // Used to do LstMakeItemVisible (hoursLst, startTime.hours); no longer. if (! untimed) { LstSetSelection (hoursLst, startTime.hours); LstSetSelection (minutesLst, startTime.minutes / 5); CtlSetValue (startTimeCtl, true); changingTime = changingStartTime; } else { // The hour list is dynamically created and doesn't have a selection LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } // Set the start and end time buttons to the current times or blank them // if No Time is selected. SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, untimed); // This needs to be taken out when SelectTimeV33 goes away. It allows for backward // compatibility for this change of adding the end of day variable as a parameter. if (endOfDay != noDisplayOfAllDay) { FrmShowObject (frm, FrmGetObjectIndex (frm, TimeSelectorAllDayButton)); } FrmSetTitle (frm, (Char *) titleP); FrmDrawForm (frm); while (true) { EvtGetEvent (&event, evtWaitForever); if (SysHandleEvent ((EventType *)&event)) continue; if (event.eType == appStopEvent) { // Cancel the dialog and repost this event for the app EvtAddEventToQueue(&event); confirmed = false; break; } // Handle these before the form does to overide the default behavior if (changingTime == changingNoTime && event.eType == lstEnterEvent && event.data.lstEnter.listID == TimeSelectorMinuteList) { SndPlaySystemSound(sndError); continue; } FrmHandleEvent (frm, &event); // If the start or end time buttons are pressed then change // the time displayed in the lists. if (event.eType == ctlSelectEvent) { // "Ok" button pressed? if (event.data.ctlSelect.controlID == TimeSelectorOKButton) { confirmed = true; } // "Cancel" button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorCancelButton) { break; } // Start time button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorStartTimeButton) { if (changingTime != changingStartTime) { if (changingTime == changingNoTime) { SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); } CtlSetValue (endTimeCtl, false); LstSetSelection (hoursLst, startTime.hours); LstSetSelection (minutesLst, startTime.minutes / 5); changingTime = changingStartTime; } else CtlSetValue(startTimeCtl, true); } // End time button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorEndTimeButton) { if (changingTime != changingEndTime) { if (changingTime == changingNoTime) { SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); } CtlSetValue(startTimeCtl, false); LstSetSelection (hoursLst, endTime.hours); LstSetSelection (minutesLst, endTime.minutes / 5); changingTime = changingEndTime; } else CtlSetValue(endTimeCtl, true); } // No time button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorNoTimeButton) { if (changingTime != changingNoTime) { if (changingTime == changingStartTime) CtlSetValue(startTimeCtl, false); else CtlSetValue(endTimeCtl, false); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, true); LstSetSelection (hoursLst, noListSelection); LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } // Get us out of this form display now. confirmed = true; } // All day button pressed? else if (event.data.ctlSelect.controlID == TimeSelectorAllDayButton) { if (changingTime != changingNoTime) { if (changingTime == changingStartTime) CtlSetValue(startTimeCtl, false); else CtlSetValue(endTimeCtl, false); LstSetSelection (hoursLst, noListSelection); LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } // No matter what, the minutes are 0 for both because only the hour is registered for start/end // times. startTime.minutes = 0; endTime.minutes = 0; startTime.hours = startOfDay; endTime.hours = endOfDay; // Set the times to the new times. SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, true); // Get us out of this form display now. First set the changing time to anything but the changingNoTime value // so that the pointers at the end of this function get set correctly. changingTime = changingStartTime; confirmed = true; } // Clear the buffer that holds written characters. *timeChars = 0; } // If either list is changed then get the new time. If the // start time is changed then change the end time so that the // the time difference remains the same. If the end time is // changed then make sure the end time isn't before the start // time. Also calculate a new time difference. else if (event.eType == lstSelectEvent) { // First, get the info from the list which has changed. if (event.data.lstSelect.listID == TimeSelectorHourList) { if (changingTime == changingStartTime) startTime.hours = (UInt8) LstGetSelection (hoursLst); else if (changingTime == changingEndTime) endTime.hours = (UInt8) LstGetSelection (hoursLst); else if (changingTime == changingNoTime) { startTime.hours = (UInt8) LstGetSelection (hoursLst); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); CtlSetValue (endTimeCtl, false); LstSetSelection (minutesLst, startTime.minutes / 5); changingTime = changingStartTime; } } else if (event.data.lstSelect.listID == TimeSelectorMinuteList) { if (changingTime == changingStartTime) startTime.minutes = (UInt8) LstGetSelection (minutesLst) * 5; else if (changingTime == changingEndTime) endTime.minutes = (UInt8) LstGetSelection (minutesLst) * 5; else if (changingTime == changingNoTime) { ErrNonFatalDisplay("lstEnterEvent not being filtered."); } } if (AdjustTimes (&startTime, &endTime, &timeDiff, changingTime)) { if (changingTime == changingStartTime) { TimeToAscii (startTime.hours, startTime.minutes, timeFormat, startTimeText); CtlSetLabel (startTimeCtl, startTimeText); } else if (changingTime == changingEndTime) { LstSetSelection (hoursLst, startTime.hours); LstSetSelection (minutesLst, startTime.minutes / 5); } } TimeToAscii(endTime.hours, endTime.minutes, timeFormat, endTimeText); CtlSetLabel(endTimeCtl, endTimeText); // Clear the buffer that holds written characters. *timeChars = 0; } // Handle character written in the time picker. else if (event.eType == keyDownEvent) { if (changingTime == changingEndTime) { timeP = &endTime; firstHour = startTime.hours; } else { timeP = &startTime; firstHour = startOfDisplay; } // If a backspace character was written, change the time picker's // current setting to "no-time". if (event.data.keyDown.chr == backspaceChr) { *timeChars = 0; if (changingTime != changingNoTime) { if (changingTime == changingStartTime) CtlSetValue (startTimeCtl, false); else CtlSetValue (endTimeCtl, false); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, true); LstSetSelection (hoursLst, noListSelection); LstSetSelection (minutesLst, noListSelection); changingTime = changingNoTime; } } // A linefeed character confirms the dialog box. else if (event.data.keyDown.chr == linefeedChr) { confirmed = true; } // If next-field character toggle between start time in end // time. else if (event.data.keyDown.chr == nextFieldChr) { *timeChars = 0; if (changingTime == changingStartTime) { CtlSetValue (startTimeCtl, false); CtlSetValue (endTimeCtl, true); changingTime = changingEndTime; } else { CtlSetValue (endTimeCtl, false); CtlSetValue (startTimeCtl, true); changingTime = changingStartTime; } } // If a valid time character was written, translate the written // character into a time and update the time picker's UI. else if (TranslateTime (timeFormat, event.data.keyDown.chr, firstHour, timeChars, timeP)) { if (changingTime == changingNoTime) { changingTime = changingStartTime; CtlSetValue (startTimeCtl, true); } AdjustTimes (&startTime, &endTime, &timeDiff, changingTime); SetTimeTriggers (startTime, endTime, startTimeText, endTimeText, timeFormat, false); LstSetSelection (hoursLst, timeP->hours); LstSetSelection (minutesLst, timeP->minutes / 5); } } // Has the dialog been confirmed. if (confirmed) { if (changingTime != changingNoTime) { *startTimeP = startTime; *endTimeP = endTime; } else { TimeToInt(*startTimeP) = noTime; TimeToInt(*endTimeP) = noTime; } break; } } FrmEraseForm (frm); FrmDeleteForm (frm); MemHandleFree (hoursItems); FrmSetActiveForm(originalForm); return (confirmed); }
static void ShowObject (FormPtr frm, UInt16 objectID) { FrmShowObject (frm, FrmGetObjectIndex (frm, objectID)); }
/* ** TrackXferDone */ static void TrackXferDone(DynamicButtonType* btn) { RectangleType bounds[5], frame, popFrame, popShadowFrame; Boolean penDown, on_button; Int16 x, y, clicked_on = 0; Int16 state = 1; Int16 i = 0; WinHandle offscreenH = NULL; FormType* frm = FrmGetActiveForm(); const UInt16 listIdx = FrmGetObjectIndex(frm, XferDoneList); ListType* list = FrmGetObjectPtr(frm, listIdx); UInt16 width = 0, choices = 0; Err err = errNone; Char str[48]; Int16 n = 0; /* Save the old drawing context */ WinPushDrawState(); /* This should match the XferDoneButton bounds */ FrmGetObjectBounds(frm, FrmGetObjectIndex(frm, btn->id), &bounds[0]); /* Invert the done button */ SelectAndDrawButton(btn, true); SndPlaySystemSound(sndClick); /* Set the status of each menu pick */ for (; i < 4; i++) d.xfer.status[i] = 0x00; if (xferGotoIsAlways) d.xfer.status[0] = TRACKXFERDONE_ALWAYS; else if (xferGotoIsNever) d.xfer.status[0] = TRACKXFERDONE_NEVER; else if (p.flags&PFLAGS_XFER_GOTO) d.xfer.status[0] = TRACKXFERDONE_CHECKED; if (xferCompleteIsAlways) d.xfer.status[1] = TRACKXFERDONE_ALWAYS; else if (xferCompleteIsNever) d.xfer.status[1] = TRACKXFERDONE_NEVER; else if (d.xfer.complete) d.xfer.status[1] = TRACKXFERDONE_CHECKED; if (!d.linker_available) d.xfer.status[2] = TRACKXFERDONE_NEVER; else if (p.flags&PFLAGS_XFER_BACKLINK) d.xfer.status[2] = TRACKXFERDONE_CHECKED; if (p.flags&PFLAGS_XFER_DELETE) d.xfer.status[3] = TRACKXFERDONE_CHECKED; for (i = 0; i < 4; ++i) { if (!(d.xfer.status[i] & TRACKXFERDONE_NEVER)) { d.xfer.choice_map[choices] = i; ++choices; /* calculate list width */ SysCopyStringResource(str, XferMenuOptionsStrings + i); n = FntCharsWidth(str, StrLen(str)); width = Max(width, n); } } LstSetDrawFunction(list, XferDoneListDrawFunc); LstSetListChoices(list, 0, choices); LstSetHeight(list, Min(choices, 10)); FrmGetObjectBounds(frm, listIdx, &frame); frame.topLeft.y = 144 - frame.extent.y - 1; /* -1 to compensate for white border */ frame.extent.x = width + 15 + 6; FrmSetObjectBounds(frm, listIdx, &frame); WinGetFramesRectangle(popupFrame, &frame, &popFrame); WinGetFramesRectangle(rectangleFrame, &popFrame, &popShadowFrame); for (i = 0; i < choices; ++i) RctSetRectangle(&bounds[i+1], frame.topLeft.x, frame.topLeft.y + 10 * i, frame.extent.x, 10); /* Save the bits of the whole menu */ offscreenH = WinSaveBits(&popShadowFrame, &err); if (err) abort(); /* None selected */ LstSetSelection(list, -1); FrmShowObject(frm, listIdx); WinEraseRectangle(&popShadowFrame, 0); LstDrawList(list); WinEraseRectangleFrame(rectangleFrame, &frame); WinDrawRectangleFrame(popupFrame, &frame); do { EvtGetPen(&x, &y, &penDown); if (!state || !RctPtInRectangle(x, y, &bounds[state-1])) { on_button = false; for (i = 1; i <= choices + 1; i++) { if ((state != i) && RctPtInRectangle(x, y, &bounds[i-1])) { /* Invert the new state */ LstSetSelection(list, i - 2); LstDrawList(list); WinEraseRectangleFrame(rectangleFrame, &frame); WinDrawRectangleFrame(popupFrame, &frame); SelectAndDrawButton(btn, i == 1); state = i; on_button = true; } } if (state && !on_button) { /* Moved off the current button */ LstSetSelection(list, -1); LstDrawList(list); WinEraseRectangleFrame(rectangleFrame, &frame); WinDrawRectangleFrame(popupFrame, &frame); if (state == 1) SelectAndDrawButton(btn, false); state = 0; } } } while (penDown); FrmHideObject(frm, listIdx); LstEraseList(list); /* Restore the framed rect */ WinRestoreBits(offscreenH, popShadowFrame.topLeft.x, popShadowFrame.topLeft.y); /* Unselect the button */ SelectAndDrawButton(btn, false); /* Finish up if we just tapped the button */ if (RctPtInRectangle(x, y, &bounds[0])) { FinishXferMode(); /* Restore the old draw state */ WinPopDrawState(); return; } /* Change the setting for goto or delete */ for (i = 1; i <= choices; i++) { if (RctPtInRectangle(x, y, &bounds[i])) { clicked_on = i; break; } } if (clicked_on) clicked_on = d.xfer.choice_map[clicked_on-1] + 1; switch (clicked_on) { case 1: /* Goto */ if (d.xfer.status[0] & TRACKXFERDONE_CHECKED) p.flags &= ~PFLAGS_XFER_GOTO; else if (!d.xfer.status[0]) p.flags |= PFLAGS_XFER_GOTO; break; case 2: /* Complete */ if (d.xfer.status[1] & TRACKXFERDONE_CHECKED) d.xfer.complete = false; else if (!d.xfer.status[1]) d.xfer.complete = true; break; case 3: /* BackLink */ if (d.xfer.status[2] & TRACKXFERDONE_CHECKED) p.flags &= ~PFLAGS_XFER_BACKLINK; else if (!d.xfer.status[2]) { p.flags |= PFLAGS_XFER_BACKLINK; p.flags &= ~PFLAGS_XFER_DELETE; /* No delete if backlink */ } break; case 4: /* Delete */ if (d.xfer.status[3] & TRACKXFERDONE_CHECKED) p.flags &= ~PFLAGS_XFER_DELETE; else if (!d.xfer.status[3]) { p.flags |= PFLAGS_XFER_DELETE; p.flags &= ~PFLAGS_XFER_BACKLINK; /* No backlink if delete */ } break; } /* Click and redraw the button */ if (clicked_on) { DrawXferDoneButton(btn); DynBtnDraw(btn); if (d.xfer.status[clicked_on-1] & TRACKXFERDONE_ALWAYS) SndPlaySystemSound(sndWarning); else SndPlaySystemSound(sndClick); } /* Restore the old draw state */ WinPopDrawState(); }
/* ** ToggleObject */ static void ToggleObject(FormType* frm, UInt16 objID, Boolean toggle_on) { if (toggle_on) FrmShowObject(frm, FrmGetObjectIndex(frm, objID)); else FrmHideObject(frm, FrmGetObjectIndex(frm, objID)); }
/* Toggle Autoscroll */ void DoAutoscrollToggle ( AutoscrollType toggle ) { FormType* mainForm; UInt16 prevCoordSys; if ( toggle == AUTOSCROLL_OFF && ! Prefs()->autoscrollEnabled ) return; mainForm = FrmGetFormPtr( GetMainFormId() ); prevCoordSys = PalmSetCoordinateSystem( STANDARD ); if ( toggle == AUTOSCROLL_TOGGLE ) Prefs()->autoscrollEnabled = ! Prefs()->autoscrollEnabled; else if ( toggle == AUTOSCROLL_ON ) Prefs()->autoscrollEnabled = true; else Prefs()->autoscrollEnabled = false; if ( Prefs()->autoscrollEnabled ) Prefs()->autoscrollLastScrollTime = TimGetTicks(); if ( Prefs()->autoscrollEnabled && Prefs()->autoscrollDir == AUTOSCROLL_DOWN && Prefs()->autoscrollMode == AUTOSCROLL_PIXELS ) { LineCacheActivate(); } else { LineCacheRefreshCurrentScreenData(); LineCacheDeactivate(); } if ( Prefs()->toolbar != TOOLBAR_NONE && IsMainFormWinActive() ) { if ( Prefs()->autoscrollEnabled ) { if ( Prefs()->toolbar == TOOLBAR_SILK ) { /* FIXME: figure this out */ } else { FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpAutoscrollStart ) ); FrmShowObject( mainForm, FrmGetObjectIndex( mainForm, bmpAutoscrollStop ) ); } } else { if ( Prefs()->toolbar == TOOLBAR_SILK ) { /* FIXME: figure this out */ } else { FrmHideObject( mainForm, FrmGetObjectIndex( mainForm, bmpAutoscrollStop ) ); FrmShowObject( mainForm, FrmGetObjectIndex( mainForm, bmpAutoscrollStart ) ); } } } PalmSetCoordinateSystem( prevCoordSys ); }
static Boolean MyMainFormHandleEvent( EventPtr event ) { Boolean handled = false; Int i; FieldPtr fld; FormPtr frm; Word readerNum; #ifdef __GCC__ CALLBACK_PROLOGUE #endif frm = FrmGetActiveForm(); switch( event->eType ) { case frmOpenEvent: UpdateScrollbar( dataFieldID, dataSbarID ); FrmDrawForm( frm ); break; case ctlSelectEvent: if( event->data.ctlSelect.controlID==updateButtonID ) { handled=true; if( readerType==SC_READER_UNKNOWN ) { FrmAlert( alert6FormID ); break; } FrmHideObject(frm, FrmGetObjectIndex(frm, updateButtonID)); i=scdir(); UpdateScrollbar( dataFieldID, dataSbarID ); if( i==1 ) FrmAlert(alert1FormID); else if( i==2 ) FrmAlert(alert2FormID); else if( i==3 ) FrmAlert(alert3FormID); else if( i==4 ) FrmAlert(alert4FormID); else if( i>4 ) FrmAlert(alert5FormID); FrmShowObject(frm, FrmGetObjectIndex(frm, updateButtonID)); } break; case menuEvent: fld = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, dataFieldID)); switch( event->data.menu.itemID ) { case selectMenuID: handled = true; FldSetSelection (fld, 0, FldGetTextLength (fld)); break; case copyMenuID: handled = true; FldCopy(fld); break; case readerMenuID: handled = true; switch(readerType) { case SC_READER_DUMBMOUSE: readerNum=0; break; case SC_READER_TOWITOKO: readerNum=1; break; default: readerNum=-1; break; } readerNum = ChooseReader( readerNum ); switch(readerNum) { case 0: readerType=SC_READER_DUMBMOUSE; break; case 1: readerType=SC_READER_TOWITOKO; break; default: readerType=SC_READER_UNKNOWN; break; } break; case aboutMenuID: handled = true; FrmAlert(aboutFormID); break; case helpMenuID: handled = true; FrmAlert(helpFormID); break; default: break; } case fldChangedEvent: if( event->data.fldChanged.fieldID==dataFieldID ) { UpdateScrollbar( dataFieldID, dataSbarID ); handled=true; } break; case sclRepeatEvent: if( event->data.sclRepeat.scrollBarID==dataSbarID ) { ScrollLines( dataFieldID, dataSbarID, event->data.sclRepeat.newValue - event->data.sclRepeat.value, false ); } break; case keyDownEvent: if( event->data.keyDown.chr == pageUpChr ) { PageScroll( dataFieldID, dataSbarID, up ); handled = true; } else if( event->data.keyDown.chr == pageDownChr ) { PageScroll( dataFieldID, dataSbarID, down ); handled = true; } break; default: break; } #ifdef __GCC__ CALLBACK_EPILOGUE #endif return handled; }
Boolean ReplyFormHandleEvent(EventType * eventP) { Boolean handled = false; FormType * frmP; static Boolean listShown = false; frmP = FrmGetActiveForm(); switch (eventP->eType) { case frmOpenEvent: switch (g_ComposeMode) { case COMPOSE_REPLY: ReplyCurrentRecord(g_SmsDb); SetupReplyForm(frmP); break; case COMPOSE_NEW: SetupNewForm(frmP); break; case COMPOSE_FORWARD: ForwardCurrentRecord(g_SmsDb); SetupNewForm(frmP); break; case COMPOSE_FEATURE: SetupFeatureNew(); SetupNewForm(frmP); break; case COMPOSE_RESTORE: RestoreReplyForm(); break; } FrmDrawForm(frmP); ListAllGroups(); SetTriggerText(0); handled = true; break; case frmCloseEvent: ClearPhoneGroups(g_PhoneGroups); break; case menuEvent: switch(eventP->data.menu.itemID) { case MenuItemQueue: DoQueue(); break; case MenuItemBack: DoBack(); break; case MenuItemDraft: DoDraft(); break; case MenuItemSend: DoSend(); break; case MenuItemSendAndBack: DoSendAndBack(); break; case MenuItemSelectTo: SelectTo(); break; case MenuItemSelectGroup: CtlHitControl((ControlPtr) GetObjectPtr(frmP, TriggerGroup)); break; } break; case ctlSelectEvent: switch(eventP->data.ctlSelect.controlID) { case ButtonSendAndBack: DoSendAndBack(); break; case ButtonBack: DoBack(); break; case ButtonGo: DoSend(); break; case ButtonSelectTo: SelectTo(); break; case TriggerGroup: if (listShown) { FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups)); FrmDrawForm(frmP); listShown = false; } else { FrmShowObject(frmP, FrmGetObjectIndex(frmP, ListGroups)); listShown = true; } handled = true; break; } break; case penDownEvent: if (IsEventInControl(frmP, eventP, TriggerGroup)) break; if (IsEventInControl(frmP, eventP, ListGroups)) break; FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups)); FrmDrawForm(frmP); listShown = false; break; case lstSelectEvent: if (eventP->data.lstSelect.listID == ListGroups) { FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups)); FrmDrawForm(frmP); listShown = false; ListPtr list = (ListPtr) GetObjectPtr(frmP, ListGroups); Int16 sel = LstGetSelection(list); if (sel == noListSelection) { ShowMsg("Select a group."); break; } SetTriggerText(sel); } break; case keyDownEvent: WChar chr = eventP->data.keyDown.chr; UInt16 keyCode = eventP->data.keyDown.keyCode; switch(chr) { case vchrPageUp: if (listShown) SelectNextInList(-1); else ScrollFieldPage(frmP, FieldReference, ScrollbarReference, winUp); break; case vchrPageDown: if (listShown) SelectNextInList(1); else ScrollFieldPage(frmP, FieldReference, ScrollbarReference, winDown); break; case vchrNavChange: if(keyCode & navBitSelect) { FrmHideObject(frmP, FrmGetObjectIndex(frmP, ListGroups)); FrmDrawForm(frmP); listShown = false; ListPtr list = (ListPtr) GetObjectPtr(frmP, ListGroups); Int16 sel = LstGetSelection(list); if (sel == noListSelection) { ShowMsg("Select a group."); break; } SetTriggerText(sel); } break; } break; case sclRepeatEvent: ScrollFieldByEvent(frmP, eventP, FieldReference, ScrollbarReference); break; } return handled; }