/*********************************************************************** * * FUNCTION: SetTimeTriggers * * DESCRIPTION: This routine sets the text label of the start time and * end time triggers. * * PARAMETERS: startTime - pointer to TimeType * endTime - pointer to TimeType * startTimeText - buffer that holds start time string * emdTimeText - buffer that holds end time string * timeFormat - time format * untimed - true if there isn't a time. * * RETURNED: nothing * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * art 4/4/96 Initial Revision * ***********************************************************************/ static void SetTimeTriggers (TimeType startTime, TimeType endTime, Char * startTimeText, Char * endTimeText, TimeFormatType timeFormat, Boolean untimed) { FormType * frm; ControlPtr startTimeCtl, endTimeCtl; frm = FrmGetActiveForm (); startTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorStartTimeButton)); endTimeCtl = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, TimeSelectorEndTimeButton)); if (! untimed) { TimeToAscii (startTime.hours, startTime.minutes, timeFormat, startTimeText); TimeToAscii (endTime.hours, endTime.minutes, timeFormat, endTimeText); } else { // copy two spaces into these fields instead of just a null // because controls with empty strings (or one space) cause old-style // graphic control behavior, which uses the wrong colors! StrCopy(startTimeText, " "); StrCopy(endTimeText, " "); } CtlSetLabel (startTimeCtl, startTimeText); CtlSetLabel(endTimeCtl, endTimeText); }
static void AudioCDTabInit() { ControlType *cck3P; FieldType *fld2P, *fld3P; ListType *list1P, *list2P; MemHandle lengthH, firstTrackH; Char *lengthP, *firstTrackP; cck3P = (ControlType *)GetObjectPtr(TabAudioCDMP3Checkbox); fld2P = (FieldType *)GetObjectPtr(TabAudioCDLengthSecsField); fld3P = (FieldType *)GetObjectPtr(TabAudioCDFirstTrackField); list1P = (ListType *)GetObjectPtr(TabAudioCDDriverList); list2P = (ListType *)GetObjectPtr(TabAudioCDFormatList); LstSetSelection(list1P, gameInfoP->musicInfo.sound.drvCD); CtlSetLabel((ControlType *)GetObjectPtr(TabAudioCDDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); LstSetSelection(list2P, gameInfoP->musicInfo.sound.frtCD); CtlSetLabel((ControlType *)GetObjectPtr(TabAudioCDFormatPopTrigger), LstGetSelectionText(list2P, LstGetSelection(list2P))); CtlSetValue(cck3P, gameInfoP->musicInfo.sound.CD); lengthH = MemHandleNew(FldGetMaxChars(fld2P)+1); lengthP = (Char *)MemHandleLock(lengthH); StrIToA(lengthP, gameInfoP->musicInfo.sound.defaultTrackLength); MemHandleUnlock(lengthH); FldSetTextHandle(fld2P, lengthH); firstTrackH = MemHandleNew(FldGetMaxChars(fld3P)+1); firstTrackP = (Char *)MemHandleLock(firstTrackH); StrIToA(firstTrackP, gameInfoP->musicInfo.sound.firstTrack); MemHandleUnlock(firstTrackH); FldSetTextHandle(fld3P, firstTrackH); }
void DrawRollButton() { if( stor.currplayer < 0 ) { CtlSetLabel( GetObjectPtr(btn_Roll), StartString ); } else { CtlSetLabel( GetObjectPtr(btn_Roll), RollString ); } }
Int DialogChooseTwo( CharPtr fText, CharPtr bOne, CharPtr bTwo ) { FormPtr prevForm, frm; Word hitButton; // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmChooseTwo ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... CtlSetLabel( GetObjectPtr(btnChooseTwo1), bOne ); CtlSetLabel( GetObjectPtr(btnChooseTwo2), bTwo ); SetFieldTextFromStr( fldChooseTwo, fText ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } if( hitButton == btnChooseTwo1 ) return 1; if( hitButton == btnChooseTwo2 ) return 2; return ( -1 ); }
void wxControl::SetControlLabel(const wxString& label) { ControlType* control = (ControlType*)GetObjectPtr(); if(control==NULL) return; CtlSetLabel(control,wxEmptyString); m_label = label; if(!m_label.empty()) CtlSetLabel(control,m_label.c_str()); }
void DrawRollButton() { if( stor.currplayer < 0 ) { ShowControl( btn_Roll, 1 ); CtlSetLabel( GetObjectPtr(btn_Roll), StartString ); } else { if( IsAI( stor.currplayer ) ) { ShowControl( btn_Roll, 0 ); } else { ShowControl( btn_Roll, 1 ); CtlSetLabel( GetObjectPtr(btn_Roll), RollString ); } } }
static void ExamDetailsSetTriggers(ControlType *dtr, ControlType *ttr) { DateToAscii(gExamDetailsDate.month, gExamDetailsDate.day, gExamDetailsDate.year+MAC_SHIT_YEAR_CONSTANT, PrefGetPreference(prefLongDateFormat), gExamDetailsDateTrigger); CtlSetLabel(dtr, gExamDetailsDateTrigger); // Time Trigger not longer set, done during EditTimeGetTime call }
DieType DialogChooseThree( Char* fText, DieType c1, DieType c2, DieType c3 ) { FormPtr prevForm, frm; UInt16 hitButton; if( IsAI( GetCurrPlayer() ) ) { return AIChooseThree( c1, c2, c3 ); } // Save previous form prevForm = FrmGetActiveForm(); // Init new form frm = FrmInitForm( frmChooseThree ); // Set it FrmSetActiveForm(frm); FrmDrawForm(frm); // Fill it... CtlSetLabel( GetObjectPtr(btnChooseThree1), val2name[c1] ); CtlSetLabel( GetObjectPtr(btnChooseThree2), val2name[c2] ); CtlSetLabel( GetObjectPtr(btnChooseThree3), val2name[c3] ); SetFieldTextFromStr( fldChooseThree, fText ); // Set the handler // FrmSetEventHandler(frm, DialogNewGameHandleEvent); hitButton = FrmDoDialog(frm); // Delete the form, we're not using it FrmDeleteForm(frm); // Restore previous form. if (prevForm) { FrmSetActiveForm(prevForm); } if( hitButton == btnChooseThree1 ) return c1; if( hitButton == btnChooseThree2 ) return c2; if( hitButton == btnChooseThree3 ) return c3; return c1; }
static void MusicTabInit() { ControlType *cck1P, *cck2P; ListType *list1P, *list2P, *list3P; FieldType *fld1P; MemHandle tempoH; Char *tempoP; cck1P = (ControlType *)GetObjectPtr(TabMusicMusicCheckbox); cck2P = (ControlType *)GetObjectPtr(TabMusicMultiMidiCheckbox); list1P = (ListType *)GetObjectPtr(TabMusicDriverList); list2P = (ListType *)GetObjectPtr(TabMusicRateList); list3P = (ListType *)GetObjectPtr(TabMusicQualityList); fld1P = (FieldType *)GetObjectPtr(TabMusicTempoField); CtlSetValue(cck1P, gameInfoP->musicInfo.sound.music); CtlSetValue(cck2P, gameInfoP->musicInfo.sound.multiMidi); if (gameInfoP->musicInfo.sound.drvMusic > 5) gameInfoP->musicInfo.sound.drvMusic = 0; LstSetSelection(list1P, gameInfoP->musicInfo.sound.drvMusic); LstSetTopItem(list1P, gameInfoP->musicInfo.sound.drvMusic); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); LstSetSelection(list2P, gameInfoP->musicInfo.sound.rate); LstSetTopItem(list2P, gameInfoP->musicInfo.sound.rate); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicRatePopTrigger), LstGetSelectionText(list2P, LstGetSelection(list2P))); LstSetSelection(list3P, gameInfoP->fmQuality); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicQualityPopTrigger), LstGetSelectionText(list3P, LstGetSelection(list3P))); tempoH = MemHandleNew(FldGetMaxChars(fld1P)+1); tempoP = (Char *)MemHandleLock(tempoH); StrIToA(tempoP, gameInfoP->musicInfo.sound.tempo); MemHandleUnlock(tempoH); FldSetTextHandle(fld1P, tempoH); }
void DrawTopStatusButton() { if( stor.leader < 0 ) { ShowControl( btnTopStatus, 0 ); return; } if( stor.leader >= 0 ) { ShowControl( btnTopStatus, 1 ); CtlSetLabel( GetObjectPtr(btnTopStatus), LastLicksString ); return; } }
void LoadPrefsButtons(void) { ListType* lst; Int16 selection; UInt32 i; UInt32 lists[] = { LstCal, LstPho, LstDo, LstNt, LstUp, LstDn }; UInt32 triggers[] = { TrCal, TrPho, TrDo, TrNt, TrUp, TrDn }; // Map each keymap setting (hd.button[1]...hd.button[6]) to // a string and set the boxes accordingly for (i=0;i<=5;i++) { lst = (ListType*)GetObjectPtr(lists[i]); selection = temphd.buttons[i+1]; LstSetSelection(lst, selection); CtlSetLabel((ControlType*)GetObjectPtr(triggers[i]), LstGetSelectionText(lst, selection)); } }
//////////////////////////////////////////////////////////////////////// // FUNCTION: CategorySelect // // DESCRIPTION: This routine process the selection and editing of // categories. Usually you call this when the user taps // the category pop-up trigger. // // PARAMETERS: (DmOpenRef) db - Opened database containing category info. // (FormType *) frm - Form that contains the category popup list. // (UInt16) ctlID - ID of the popup trigger // (UInt16) lstID - ID of the popup list // (Boolean) title - true if the popup trigger is on the title // line, which mans that an "All" choice should be // added to the list. Pass false if the popup // tigger appears in a form where a specific record // is being modified or any where else the "All" // choice should not appear. // (UInt16 *) categoryP - Current category (pointer into db // structure). // (char *) categoryName - Name of the current category // (UInt8) numUneditableCategories - This is the number // categories, starting with the first one at // zero, that may not have their names edited // by the user. // (UInt32) editingStrID - The resource ID of a string to // use with the "Edit Categories" list item. // // RETURNED: Returns true if any of the following conditions are true: // .The current category is renamed. // .The current category is deleted. // .The current category is merged with another category. // // REVISION HISTORY: // Name Date Description // ---- ---- ----------- // Jerry 3/16/01 Initial Revision // Jerry 3/19/01 Initial Revision // Jerry 5/05/01 Modify to use Global LIST catList //////////////////////////////////////////////////////////////////////// Boolean CategorySelect (DmOpenRef db, const FormType *frm, UInt16 ctlID, UInt16 lstID, Boolean title, UInt16 *categoryP, char *categoryName, UInt8 numUneditableCategories, UInt32 editingStrID) { ControlPtr ctlP; ListType *listP; UInt16 maxlength = 0; Int16 theIndex, lastIndex = *categoryP; ctlP = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, ctlID)); listP = FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, lstID)); if ( !ctlP || !listP ) return FALSE; Vmemcpy (&(listP->bounds), &(ctlP->bounds), sizeof(RectangleType)); CategoryCreateList (db, listP, *categoryP, title,TRUE, TRUE, 0, TRUE); if ( title ) { if (*categoryP == dmAllCategories) listP->currentItem = 0; else listP->currentItem = *categoryP+1; } else listP->currentItem = *categoryP; theIndex = LstPopupList(listP); if (theIndex >= 0) { Vstrcpy (categoryName, LstGetSelectionText(listP,theIndex)); CtlSetLabel (ctlP, categoryName); if ( title ) { if ( !theIndex ) *categoryP = dmAllCategories; else *categoryP = theIndex-1; } else *categoryP = theIndex; return FALSE; } else { if ( *categoryP == dmAllCategories ) Vstrcpy (categoryName, LstGetSelectionText(listP,0)); // *categoryP = dmAllCategories; return FALSE; } }
/*********************************************************************** * * FUNCTION: RepeatSetDateTrigger * * DESCRIPTION: This routine sets the label of the trigger that displays * the end date of a repeating appointment. * * PARAMETERS: endDate - date or -1 if no end date * * RETURNED: nothing * * NOTES: * This routine assumes that the memory allocated for the label of * the due date trigger is large enough to hold the lagest posible * label. This label's memory is reserved by initializing the label * in the resource file. * ***********************************************************************/ static void RepeatSetDateTrigger (DateType endDate) { FormType* frm = FrmGetFormPtr(RepeatForm); ListType* lst = GetObjectPointer(frm, RepeatEndOnList); ControlType* ctl = GetObjectPointer(frm, RepeatEndOnTrigger); Char* label = (Char*)CtlGetLabel(ctl); /* OK to cast; we call CtlSetLabel */ ASSERT(lst); ASSERT(ctl); ASSERT(label); if (DateToInt(endDate) == apptNoEndDate) { StrCopy(label, LstGetSelectionText(lst, repeatNoEndDateItem)); LstSetSelection(lst, noEndDateItem); } else { /* Format the end date into a string. */ DateToDOWDMFormat(endDate.month, endDate.day, endDate.year + firstYear, PrefGetPreference(prefDateFormat), label); LstSetSelection(lst, repeatChooseDateItem); } CtlSetLabel(ctl, label); }
/*********************************************************************** * * FUNCTION: SelectOneTime * * DESCRIPTION: Display a form showing a time and allow the user * to select a different time. This is the single time * dialog as seen in general panel * * PARAMETERS: hour - pointer to hour to change minute - pointer to minute to change * title - string title for the dialog * * RETURNED: true if the OK button was pressed * if true the parameters passed are changed * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * roger 12/2/94 Initial Revision in General Panel * gavin 3/20/98 Extracted into separate system function * ***********************************************************************/ Boolean SelectOneTime(Int16 *hour,Int16 *minute, const Char * titleP) { FormType * originalForm, * frm; EventType event; Boolean confirmed = false; Boolean handled = false; Boolean done = false; TimeFormatType timeFormat; // Format to display time in Int16 curHour; UInt16 currentTimeButton; UInt8 hoursTimeButtonValue; Char hoursTimeButtonString[3]; UInt8 minuteTensButtonValue; Char minuteTensButtonString[2]; UInt8 minuteOnesButtonValue; Char minuteOnesButtonString[2]; Char separatorString[3]; timeFormat = (TimeFormatType)PrefGetPreference(prefTimeFormat); originalForm = FrmGetActiveForm(); frm = (FormType *) FrmInitForm (SelectOneTimeDialog); if (titleP) FrmSetTitle (frm, (Char *) titleP); FrmSetActiveForm (frm); curHour = *hour; if (Use24HourFormat(timeFormat)) { // Hide the AM & PM ui FrmHideObject (frm, FrmGetObjectIndex (frm, timeAMCheckbox)); FrmHideObject (frm, FrmGetObjectIndex (frm, timePMCheckbox)); } else { if (curHour < 12) CtlSetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeAMCheckbox)), true); else { CtlSetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timePMCheckbox)), true); curHour -= 12; } if (curHour == 0) curHour = 12; } // Set the time seperator to the system defined one separatorString[0] = TimeSeparator(timeFormat); separatorString[1] = '\0'; FrmCopyLabel(frm, timeSeparatorLabel, separatorString); // Now set the time displayed in the push buttons. hoursTimeButtonValue = curHour; StrIToA(hoursTimeButtonString, hoursTimeButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeHourButton)), hoursTimeButtonString); minuteTensButtonValue = *minute / 10; StrIToA(minuteTensButtonString, minuteTensButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesTensButton)), minuteTensButtonString); minuteOnesButtonValue = *minute % 10; StrIToA(minuteOnesButtonString, minuteOnesButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesOnesButton)), minuteOnesButtonString); // Set the hour time button to be the one set by the arrows currentTimeButton = defaultTimeButton; CtlSetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, defaultTimeButton)), true); FrmDrawForm (frm); while (!done) { EvtGetEvent (&event, evtWaitForever); if (! SysHandleEvent ((EventType *)&event)) FrmHandleEvent (frm,&event); if (event.eType == ctlSelectEvent) { switch (event.data.ctlSelect.controlID) { case timeOkButton: frm = FrmGetActiveForm(); // Set the new time (seconds are cleared). if (Use24HourFormat(timeFormat)) *hour = hoursTimeButtonValue; else { *hour = hoursTimeButtonValue % 12 + // 12am is 0 hours! (CtlGetValue(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timePMCheckbox))) ? 12 : 0); } *minute = minuteTensButtonValue * 10 + minuteOnesButtonValue; done = true; confirmed = true; break; case timeCancelButton: done = true; break; case timeDecreaseButton: case timeIncreaseButton: frm = FrmGetActiveForm(); switch (currentTimeButton) { // MemHandle increasing and decreasing the time for each time digit case timeHourButton: if (event.data.ctlSelect.controlID == timeDecreaseButton) { if (Use24HourFormat(timeFormat)) if (hoursTimeButtonValue > 0) hoursTimeButtonValue--; else hoursTimeButtonValue = 23; else if (hoursTimeButtonValue > 1) hoursTimeButtonValue--; else hoursTimeButtonValue = 12; } else { if (Use24HourFormat(timeFormat)) if (hoursTimeButtonValue < 23) hoursTimeButtonValue++; else hoursTimeButtonValue = 0; else if (hoursTimeButtonValue < 12) hoursTimeButtonValue++; else hoursTimeButtonValue = 1; } StrIToA(hoursTimeButtonString, hoursTimeButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeHourButton)), hoursTimeButtonString); break; case timeMinutesTensButton: if (event.data.ctlSelect.controlID == timeDecreaseButton) { if (minuteTensButtonValue > 0) minuteTensButtonValue--; else minuteTensButtonValue = 5; } else { if (minuteTensButtonValue < 5) minuteTensButtonValue++; else minuteTensButtonValue = 0; } StrIToA(minuteTensButtonString, minuteTensButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesTensButton)), minuteTensButtonString); break; case timeMinutesOnesButton: if (event.data.ctlSelect.controlID == timeDecreaseButton) { if (minuteOnesButtonValue > 0) minuteOnesButtonValue--; else minuteOnesButtonValue = 9; } else { if (minuteOnesButtonValue < 9) minuteOnesButtonValue++; else minuteOnesButtonValue = 0; } StrIToA(minuteOnesButtonString, minuteOnesButtonValue); CtlSetLabel(FrmGetObjectPtr (frm, FrmGetObjectIndex (frm, timeMinutesOnesButton)), minuteOnesButtonString); break; } handled = true; break; // timeDecreaseButton & timeIncreaseButton case timeHourButton: currentTimeButton = timeHourButton; break; case timeMinutesTensButton: currentTimeButton = timeMinutesTensButton; break; case timeMinutesOnesButton: currentTimeButton = timeMinutesOnesButton; break; } } else if (event.eType == appStopEvent) { EvtAddEventToQueue (&event); done = true; break; } } // end while true FrmEraseForm (frm); FrmDeleteForm (frm); FrmSetActiveForm(originalForm); return (confirmed); }
//////////////////////////////////////////////////////////////////////// // FUNCTION: CategorySetTriggerLabel // // DESCRIPTION: This routine set the label displayed by the category // trigger. The category name is truncated if it is larger // than the system default maximum width. // // PARAMETERS: (ControlType *) ctl - OPointer to control object to relabel // (char *) name - Pointer to the name of the new category. // // RETURNED: Returns nothing. // // REVISION HISTORY: // Name Date Description // ---- ---- ----------- // Jerry 3/27/01 Initial Revision //////////////////////////////////////////////////////////////////////// extern void CategorySetTriggerLabel (ControlType *ctl, Char *name) { CtlSetLabel (ctl, name); }
/* Event handler for the Color preferences */ Boolean PrefsColorPalmEvent ( EventType* event /* pointer to an EventType structure */ ) { Boolean handled; handled = false; switch ( event->eType ) { case popSelectEvent: { Int16 selection; selection = event->data.popSelect.selection; if ( selection != noListSelection ) { ControlType* ctl; ListType* list; Char* label; UInt16 controlID; list = event->data.popSelect.listP; controlID = event->data.popSelect.controlID; ctl = GetObjectPtr( controlID ); label = LstGetSelectionText( list, selection ); CtlSetLabel( ctl, label ); LstSetSelection( list, selection ); switch ( controlID ) { default: break; } } break; } case ctlSelectEvent: switch ( event->data.ctlEnter.controlID ) { case frmPrefsColorIndividual: if ( ! CtlGetValue( GetObjectPtr( frmPrefsColorIndividual ))) { HidePrefsFormObject( frmPrefsColorAsDefault, true ); } else { ShowPrefsFormObject( frmPrefsColorAsDefault, true ); } handled = true; break; case frmPrefsColorAsDefault: handled = true; break; default: break; } break; default: handled = false; } return handled; }
/*********************************************************************** * * FUNCTION: RepeatSetUIValues * * DESCRIPTION: This routine sets the current repeat settings of the * ui gadgets in the repeat dialog box * * PARAMETERS: frm - pointer to the Repeat Dialog * repeatP - pointer to a RepeatInfoType structure. * * RETURNED: nothing * ***********************************************************************/ void RepeatSetUIValues(FormType* frm, RepeatInfoType* repeatP) { UInt16 i; UInt16 id; UInt16 oldFreq; MemHandle freqH; Char* freqP = NULL; Boolean on = false; FieldType* fld = NULL; const Int8 startOfWeek = PrefGetPreference(prefWeekStartDay); /* Set the selection of the "repeat type" push button group. */ id = repeatP->repeatType + RepeatNone; if (repeatP->repeatType > repeatMonthlyByDay) id--; FrmSetControlGroupSelection (frm, RepeatTypeGroup, id); /* Set the frequency field */ if (repeatP->repeatType != repeatNone) { fld = GetObjectPointer(frm, RepeatFrequenceField); freqH = FldGetTextHandle(fld); if (freqH) { freqP = MemHandleLock(freqH); oldFreq = StrAToI(freqP); } else { freqH = MemHandleNew(maxFrequenceFieldLen); ASSERT(freqH); freqP = MemHandleLock(freqH); oldFreq = 0; } if (oldFreq != repeatP->repeatFrequency) { StrIToA(freqP, repeatP->repeatFrequency); FldSetTextHandle(fld, freqH); if (FrmVisible(frm)) { FldEraseField(fld); FldDrawField(fld); } } MemHandleUnlock (freqH); } /* Set the selection of the "repeat on" push button groups. */ if (repeatP->repeatType == repeatWeekly) { /* ** If the appointment has a different start-day-of-week than ** the dialog-box's current start-day-of-week, rearrange the ** labels on the days-of-week push buttons. ** Note that this will only handle button-label shifts of one day. */ if (startOfWeek != d.repeat_start_of_week) { const Char* sundayLabel = CtlGetLabel(GetObjectPointer(frm, RepeatDayOfWeek1PushButton)); for (id = RepeatDayOfWeek1PushButton; id < RepeatDayOfWeek7PushButton; id++) CtlSetLabel(GetObjectPointer(frm, id), CtlGetLabel(GetObjectPointer(frm, id + 1))); CtlSetLabel(GetObjectPointer(frm, RepeatDayOfWeek7PushButton), sundayLabel); d.repeat_start_of_week = startOfWeek; } /* Turn on the push buttons for the days the appointment repeats on. */ for (i = 0; i < daysInWeek; i++) { on = ((repeatP->repeatOn & (1 << i) ) != 0); id = RepeatDayOfWeek1PushButton + ((i - startOfWeek + daysInWeek) % daysInWeek); CtlSetValue(GetObjectPointer(frm, id), on); } } /* Set the selection of the "repeat by" push button groups. */ if (repeatP->repeatType == repeatMonthlyByDate) FrmSetControlGroupSelection(frm, RepeatByGroup, RepeatByDatePushButton); else FrmSetControlGroupSelection(frm, RepeatByGroup, RepeatByDayPushButton); /* Set the "end on" trigger label and popup list selection. */ if (repeatP->repeatType != repeatNone) RepeatSetDateTrigger(repeatP->repeatEndDate); }
static void ExamDetailsFormInit(FormType *frm) { UInt16 selectedCourse=0; ListType *course; ControlType *course_tr, *date_tr, *time_tr; course = GetObjectPtr(LIST_exd_course); course_tr = GetObjectPtr(LIST_exd_course_trigger); date_tr = GetObjectPtr(SELECTOR_exd_date); time_tr = GetObjectPtr(SELECTOR_exd_time); gExamDetailsNumCourses = CountCourses(); gExamDetailsItemList = (Char **) MemPtrNew(gExamDetailsNumCourses * sizeof(Char *)); gExamDetailsItemIDs = (UInt16 *) MemPtrNew(gExamDetailsNumCourses * sizeof(UInt16)); gExamDetailsItemInd = (UInt16 *) MemPtrNew(gExamDetailsNumCourses * sizeof(UInt16)); if (gExamsLastSelRowUID == 0) { // ADD DateTimeType dt; selectedCourse = CourseListGen(gExamDetailsItemList, gExamDetailsItemIDs, gExamDetailsItemInd, gExamDetailsNumCourses, 0, CLIST_SEARCH_INDEX); TimSecondsToDateTime(TimGetSeconds(), &dt); gExamDetailsDate.year=dt.year-MAC_SHIT_YEAR_CONSTANT; gExamDetailsDate.month=dt.month; gExamDetailsDate.day=dt.day; gExamDetailsBegin.hours=14; gExamDetailsBegin.minutes=0; gExamDetailsEnd.hours=15; gExamDetailsEnd.minutes=30; } else { MemHandle mex, mRoom, old; ExamDBRecord *ex; UInt16 index=0; Char *buffer; FieldType *fldRoom; fldRoom=GetObjectPtr(FIELD_exd_room); DmFindRecordByID(DatabaseGetRefN(DB_MAIN), gExamsLastSelRowUID, &index); mex = DmQueryRecord(DatabaseGetRefN(DB_MAIN), index); ex = (ExamDBRecord *)MemHandleLock(mex); selectedCourse = CourseListGen(gExamDetailsItemList, gExamDetailsItemIDs, gExamDetailsItemInd, gExamDetailsNumCourses, ex->course, CLIST_SEARCH_ID); gExamDetailsDate.year=ex->date.year; gExamDetailsDate.month=ex->date.month; gExamDetailsDate.day=ex->date.day; gExamDetailsBegin.hours=ex->begin.hours; gExamDetailsBegin.minutes=ex->begin.minutes; gExamDetailsEnd.hours=ex->end.hours; gExamDetailsEnd.minutes=ex->end.minutes; // Copy contents to the memory handle mRoom=MemHandleNew(StrLen(ex->room)+1); buffer=(Char *)MemHandleLock(mRoom); MemSet(buffer, MemPtrSize(buffer), 0); StrNCopy(buffer, ex->room, StrLen(ex->room)); MemHandleUnlock(mRoom); // Load fields old = FldGetTextHandle(fldRoom); FldSetTextHandle(fldRoom, mRoom); if (old != NULL) MemHandleFree(old); MemHandleUnlock(mex); } LstSetListChoices(course, gExamDetailsItemList, gExamDetailsNumCourses); if (gExamDetailsNumCourses < 5) LstSetHeight(course, gExamDetailsNumCourses); else LstSetHeight(course, 5); LstSetSelection(course, selectedCourse); CtlSetLabel(course_tr, LstGetSelectionText(course, selectedCourse)); ExamDetailsSetTriggers(date_tr, time_tr); EditTimeSetSelectorText(time_tr, &gExamDetailsBegin, &gExamDetailsEnd, gExamDetailsTimeTrigger); }
Boolean CBiddingForm::OnNilEvent(EventPtr pEvent, Boolean& bHandled) { if ( gManager->Status() == GetHandBids ) { HighlightActiveBidder(); FormPtr frmP = FrmGetActiveForm(); Int16 player_index = (*gManager->tbl->current_bidder)->playerIndex; // // if this is a human player, we need to render the screen widgets for their bid // if ( player_index == gManager->humanIndex && player_has_bid == false ) { player_hand.Render(true); Int16 current_bid = 0; if ( (*gManager->tbl->dealer)->playerIndex != gManager->humanIndex || ! gManager->dealer_take_bid ) { current_bid = gManager->tbl->high_bid; } else { current_bid = gManager->tbl->high_bid - 1; } if ( (*gManager->tbl->dealer)->playerIndex == gManager->humanIndex && gManager->tbl->high_bid < 2 ) { CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid4PushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid4PushButton )), "-4-"); CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid3PushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid3PushButton )), "-3-"); CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBidPassPushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBidPassPushButton )), "-Pass-"); } else { switch (current_bid) { case 5: CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBidSmudgePushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBidSmudgePushButton )), "-S-"); case 4: CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid4PushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid4PushButton )), "-4-"); case 3: CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid3PushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid3PushButton )), "-3-"); case 2: CtlSetEnabled((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid2PushButton )), false); CtlSetLabel ((ControlType *)FrmGetObjectPtr( frmP, FrmGetObjectIndex( frmP, PlayerBid2PushButton )), "-2-"); } } } // if if ( player_index == 3 && player_has_bid == false ) // // handle processing actual bids here - get one automatically if this player isn't // a human, or if the human has already bid // if ( player_index != gManager->humanIndex || player_has_bid == true ) { Boolean player_did_bid = gManager->GetNextBid(gManager->trk, false ); Int16 tmp_bid = (*gManager->tbl->current_bidder)->Bid(); if ( player_did_bid && gManager->tbl->current_bidder == gManager->tbl->winning_bidder && (tmp_bid >= 2) ) { char x[10]; StrPrintF(x, "bids %d", tmp_bid ); bidstr = x; } else { bidstr = "passes"; } bids[(*gManager->tbl->current_bidder)->playerIndex].Replace(bidstr); // // if we just got the dealer's bid, then we are all done // if ( gManager->tbl->current_bidder == gManager->tbl->dealer ) { // // at this point we need to set trump... // gManager->Status(SetHandTrump); if ( (*gManager->tbl->winning_bidder)->playerIndex == gManager->humanIndex ) { CPlayerTrumpForm frmPlayerTrump; frmPlayerTrump.DoModal(); } FrmDrawForm(frmP); // // ... and display the final results // Card::suit_t foo = (*gManager->tbl->winning_bidder)->Trump(); gManager->tbl->trump = foo; gManager->trk->no_trump_first_trick = (*gManager->tbl->winning_bidder)->NoTrumpFirstTrickP(); MemHandle hRsc; BitmapType* bitmapP; switch ( gManager->tbl->trump ) { case Card::heart: hRsc = DmGetResource(bitmapRsc, HeartBitmapFamily ); break; case Card::diamond: hRsc = DmGetResource(bitmapRsc, DiamondBitmapFamily ); break; case Card::club: hRsc = DmGetResource(bitmapRsc, ClubBitmapFamily ); break; case Card::spade: hRsc = DmGetResource(bitmapRsc, SpadeBitmapFamily ); break; } if ( gManager->trk->no_trump_first_trick ) { FrmCustomAlert(NoTrumpFirstTrickAlert, (*gManager->tbl->winning_bidder)->name, "", ""); } RectangleType bounds; UInt16 gadgetIndex = FrmGetObjectIndex(frmP, BiddingTrumpGadget); FrmGetObjectBounds(frmP, gadgetIndex, &bounds); WinPaintChars("Trump Is: ", StrLen("Trump Is: "), bounds.topLeft.x, bounds.topLeft.y ); ErrFatalDisplayIf(!hRsc, "Could not get bitmap family resource"); bitmapP = (BitmapType*) MemHandleLock(hRsc); WinDrawBitmap (bitmapP, bounds.topLeft.x + 40, bounds.topLeft.y); MemHandleUnlock(hRsc); DmReleaseResource(hRsc); UInt32 hsStatusVersion; if (FtrGet (hsFtrCreator, hsFtrIDNavigationSupported, &hsStatusVersion) == 0) { FrmGlueNavObjectTakeFocus(FrmGetActiveForm(), BiddingOKButton ); } } // if ( dealer bid ) else { // move along to the next player gManager->tbl->current_bidder = gManager->getNextPlayerIter(gManager->tbl->current_bidder); EventType event; event.eType = nilEvent; EvtAddEventToQueue (&event); // pause here // SysTaskDelay(SysTicksPerSecond()); gManager->ShortDelay(); } } // if ( player_index != 3 || player_has_bid == true ) } // if GetHandBids bHandled = false; return true; }
/*********************************************************************** * * 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 Boolean FlopFormHandleEvent(EventPtr event) { Boolean handled = false; UInt16 value; FieldPtr field; FormPtr form; int fieldid; UInt16 *curval; static UInt16 curinval = 0; static UInt16 curoutval = 0; form = FrmGetFormPtr(FlopForm); switch (event->eType) { case frmOpenEvent: SetField(FlopForm, FlopText , TextBuffer); SetField(FlopForm, FlopFileName , FileNameBuffer); FrmDrawForm(form); handled = true; break; case sclRepeatEvent: value = event->data.sclRepeat.newValue; if (event->data.sclRepeat.scrollBarID == FlopInScrollBar) { /* its the input field scrollbar */ fieldid = FlopText; curval = &curinval; } else { /* its the output field scrollbar */ fieldid = FlopOutput; curval = &curoutval; } field = (FieldPtr)FrmGetObjectPtr(form,FrmGetObjectIndex(form,fieldid)); if (value > *curval) FldScrollField(field,value-*curval, winDown); else FldScrollField(field, *curval-value, winUp); *curval = value; break; case ctlSelectEvent: switch (event->data.ctlSelect.controlID) { case FlopSpeak: FlopSpeakCmd(FlopForm,FlopText,FlopOutput); FrmDrawForm(form); handled = true; break; case FlopShutup: StopPlayStream(); handled = true; break; case FlopExit: FlopStop = true; handled = true; break; default: break; } break; case popSelectEvent: FlopOutputType = event->data.popSelect.selection; CtlSetLabel(event->data.popSelect.controlP, FlopOutputTypes[FlopOutputType]); handled = true; break; case menuEvent: MenuEraseStatus(NULL); switch (event->data.menu.itemID) { case FlopOptionsAboutCmd: (void)FrmAlert(FlopAboutAlert); handled = true; break; default: break; } break; default: break; } return handled; }
Boolean MusicFormHandleEvent(EventPtr eventP) { FormPtr frmP = FrmGetActiveForm(); Boolean handled = false; switch (eventP->eType) { case frmOpenEvent: MusicFormInit(GamGetSelected()); handled = true; break; case frmCloseEvent: MusicFormSave(dmMaxRecordIndex); handled = true; break; case ctlSelectEvent: switch (eventP->data.ctlSelect.controlID) { case (MusicForm + 1) : case (MusicForm + 2) : case (MusicForm + 3) : lastTab = (eventP->data.ctlSelect.controlID - MusicForm - 1); TabSetActive(frmP, myTabP, lastTab); break; case TabMusicDriverPopTrigger: FrmList(eventP, TabMusicDriverList); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabMusicDriverList)); if (!OPTIONS_TST(kOptDeviceZodiac) && !OPTIONS_TST(kOptSonyPa1LibAPI)) { ListType *list1P = (ListType *)GetObjectPtr(TabMusicDriverList); if (LstGetSelection(list1P) == 4) { FrmCustomAlert(FrmInfoAlert, "There is no built-in MIDI support on your device.", 0, 0); LstSetSelection(list1P, 0); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); } } break; case TabMusicQualityPopTrigger: FrmList(eventP, TabMusicQualityList); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabMusicQualityList)); break; case TabMusicRatePopTrigger: FrmList(eventP, TabMusicRateList); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabMusicRateList)); if (!OPTIONS_TST(kOptPalmSoundAPI)) { ListType *list1P = (ListType *)GetObjectPtr(TabMusicRateList); if (LstGetSelection(list1P) != 0) { FrmCustomAlert(FrmInfoAlert, "You cannot use this rate on your device.", 0, 0); LstSetSelection(list1P, 0); CtlSetLabel((ControlType *)GetObjectPtr(TabMusicRatePopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); } } break; case TabAudioCDFormatPopTrigger: FrmList(eventP, TabAudioCDFormatList); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabAudioCDFormatList)); if (LstGetSelection((ListPtr)GetObjectPtr(TabAudioCDDriverList)) == 1) { ListType *list1P = (ListType *)GetObjectPtr(TabAudioCDFormatList); LstSetSelection(list1P, 0); CtlSetLabel((ControlType *)GetObjectPtr(TabAudioCDFormatPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); } break; case TabAudioCDDriverPopTrigger: FrmList(eventP, TabAudioCDDriverList); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabAudioCDDriverList)); if (LstGetSelection((ListPtr)GetObjectPtr(TabAudioCDDriverList)) == 1) { ListType *list1P = (ListType *)GetObjectPtr(TabAudioCDFormatList); LstSetSelection(list1P, 0); CtlSetLabel((ControlType *)GetObjectPtr(TabAudioCDFormatPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); } break; case MusicOKButton: MusicFormSave(GamGetSelected()); break; case MusicCancelButton: MusicFormSave(dmMaxRecordIndex); break; } handled = true; break; default: break; } return handled; }
Boolean BookmarksFormHandleEvent(EventType * event) { Boolean handled = false; FormType * frm; ListType * bkmList, * sortTypeList; char * listTxt; UInt16 bookmarksCount; AppContext* appContext = GetAppContext(); frm = FrmGetActiveForm(); switch (event->eType) { case frmOpenEvent: OpenBookmarksDB(appContext, appContext->prefs.bookmarksSortType); bkmList = (ListType *) FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, listBookmarks)); bookmarksCount = BookmarksWordCount(appContext); Assert( 0 != bookmarksCount ); LstSetDrawFunction(bkmList, BookmarksListDrawFunc); LstSetListChoices(bkmList, NULL, bookmarksCount); sortTypeList = (ListType *) FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, listSortBy)); // list position matches enums for simplicity LstSetSelection(sortTypeList, (Int16)appContext->prefs.bookmarksSortType); listTxt = LstGetSelectionText(sortTypeList, appContext->prefs.bookmarksSortType); CtlSetLabel((ControlType *)FrmGetObjectPtr(frm,FrmGetObjectIndex(frm,popupSortBy)), listTxt); FrmDrawForm(frm); handled = true; break; case winDisplayChangedEvent: handled= BookmarksFormDisplayChanged(appContext, frm); break; case ctlSelectEvent: switch (event->data.ctlSelect.controlID) { case buttonCancel: CloseBookmarksDB(appContext); FrmReturnToForm(0); handled = true; break; case popupSortBy: // do nothing break; default: Assert(false); break; } break; case popSelectEvent: switch (event->data.popSelect.listID) { case listSortBy: Assert( appContext->currBookmarkDbType == appContext->prefs.bookmarksSortType ); if ((BookmarkSortType) event->data.popSelect.selection != appContext->prefs.bookmarksSortType) { // we changed sorting type sortTypeList = (ListType *) FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, listSortBy)); listTxt = LstGetSelectionText(sortTypeList, event->data.popSelect.selection); CtlSetLabel((ControlType *)FrmGetObjectPtr(frm,FrmGetObjectIndex(frm,popupSortBy)), listTxt); // list position matches enums for simplicity OpenBookmarksDB(appContext, (BookmarkSortType) event->data.popSelect.selection); appContext->prefs.bookmarksSortType = (BookmarkSortType) event->data.popSelect.selection; #ifdef DEBUG // word count shouldn't change bookmarksCount = BookmarksWordCount(appContext); bkmList = (ListType *) FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, listBookmarks)); Assert( LstGetNumberOfItems(bkmList) == bookmarksCount ); #endif FrmDrawForm(frm); } handled = true; break; default: Assert(false); break; } break; case lstSelectEvent: { MemHandle recHandle; char * word; recHandle = DmQueryRecord(appContext->bookmarksDb, event->data.lstSelect.selection); Assert( recHandle ); // no reason it shouldn't work if (recHandle) { word = (char*)MemHandleLock(recHandle); Assert(word); #ifndef I_NOAH appContext->currentWord = dictGetFirstMatching(GetCurrentFile(appContext), word); MemHandleUnlock(recHandle); SendEvtWithType(evtNewWordSelected); #else FrmReturnToForm(0); StartWordLookup(appContext, word); MemHandleUnlock(recHandle); #endif } CloseBookmarksDB(appContext); #ifndef I_NOAH FrmReturnToForm(0); #endif handled = true; } default: break; } return handled; }
/* Event handler for the Control preference */ Boolean PrefsControlPalmEvent ( EventType* event /* pointer to an EventType structure */ ) { Boolean handled; handled = false; switch ( event->eType ) { case ctlSelectEvent: switch ( event->data.ctlEnter.controlID ) { case frmPrefsControlMode1: case frmPrefsControlMode2: case frmPrefsControlMode3: controlMode = event->data.ctlEnter.controlID - frmPrefsControlMode1; /* We need to hide then redraw our current section because HandleControlPrefs() has the code to display the proper objects to match our recently updated controlMode */ PrefsHideSection( objectList, prevControlMode ); PrefsOpenSection( GetCurrentSection() ); handled = true; break; default: break; } break; case popSelectEvent: { Int16 selection; selection = event->data.popSelect.selection; if ( selection != noListSelection ) { ControlType* ctl; ListType* list; Char* label; UInt16 controlID; list = event->data.popSelect.listP; controlID = event->data.popSelect.controlID; ctl = GetObjectPtr( controlID ); label = LstGetSelectionText( list, selection ); CtlSetLabel( ctl, label ); LstSetSelection( list, selection ); switch ( controlID ) { case frmPrefsControlPopup1: case frmPrefsControlPopup2: case frmPrefsControlPopup3: case frmPrefsControlPopup4: { UInt8 area; area = event->data.popSelect.listID - frmPrefsControlList1; controlSelect[ controlMode ][ area ] = LstGetSelection( list ); handled = true; break; } default: handled = false; break; } } break; } default: handled = false; } return handled; }