diff options
Diffstat (limited to 'backends/PalmOS/Src/forms/formSound.cpp')
-rw-r--r-- | backends/PalmOS/Src/forms/formSound.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/backends/PalmOS/Src/forms/formSound.cpp b/backends/PalmOS/Src/forms/formSound.cpp new file mode 100644 index 0000000000..9306868d16 --- /dev/null +++ b/backends/PalmOS/Src/forms/formSound.cpp @@ -0,0 +1,125 @@ +#include <PalmOS.h> + +#include "start.h" +#include "forms.h" + +static void SoundFormSave() { + ControlType *cck1P, *cck2P, *cck3P, *cck4P; + ListType *list1P; + FieldType *fld1P, *fld2P, *fld3P; + UInt8 tempo; + UInt16 firstTrack; + + cck1P = (ControlType *)GetObjectPtr(SoundMusicCheckbox); + cck2P = (ControlType *)GetObjectPtr(SoundMultiMidiCheckbox); + cck3P = (ControlType *)GetObjectPtr(SoundMP3Checkbox); + cck4P = (ControlType *)GetObjectPtr(SoundTrackLengthCheckbox); + list1P = (ListType *)GetObjectPtr(SoundDriverList); + fld1P = (FieldType *)GetObjectPtr(SoundTempoField); + fld2P = (FieldType *)GetObjectPtr(SoundLengthSecsField); + fld3P = (FieldType *)GetObjectPtr(SoundFirstTrackField); + + tempo = StrAToI(FldGetTextPtr(fld1P)); + if (tempo < 50 || tempo > 200) { + FrmCustomAlert(FrmErrorAlert, "Invalid tempo value (50...200)", 0, 0); + return; + } + + firstTrack = StrAToI(FldGetTextPtr(fld3P)); + if (firstTrack < 1 || firstTrack > 999) { + FrmCustomAlert(FrmErrorAlert, "Invalid track value (1...999)", 0, 0); + return; + } + + gPrefs->sound.music = CtlGetValue(cck1P); + gPrefs->sound.multiMidi = CtlGetValue(cck2P); + gPrefs->sound.MP3 = CtlGetValue(cck3P); + gPrefs->sound.setDefaultTrackLength = CtlGetValue(cck4P); + + gPrefs->sound.driver = LstGetSelection(list1P); + gPrefs->sound.tempo = tempo; + gPrefs->sound.defaultTrackLength = StrAToI(FldGetTextPtr(fld2P)); + gPrefs->sound.firstTrack = firstTrack; + FrmReturnToMain(); +} + +static void SoundFormInit() { + ControlType *cck1P, *cck2P, *cck3P, *cck4P; + ListType *list1P; + FieldType *fld1P, *fld2P, *fld3P; + FormPtr frmP; + MemHandle tempoH, lengthH, firstTrackH; + Char *tempoP, *lengthP, *firstTrackP; + + cck1P = (ControlType *)GetObjectPtr(SoundMusicCheckbox); + cck2P = (ControlType *)GetObjectPtr(SoundMultiMidiCheckbox); + cck3P = (ControlType *)GetObjectPtr(SoundMP3Checkbox); + cck4P = (ControlType *)GetObjectPtr(SoundTrackLengthCheckbox); + list1P = (ListType *)GetObjectPtr(SoundDriverList); + fld1P = (FieldType *)GetObjectPtr(SoundTempoField); + fld2P = (FieldType *)GetObjectPtr(SoundLengthSecsField); + fld3P = (FieldType *)GetObjectPtr(SoundFirstTrackField); + + CtlSetValue(cck1P, gPrefs->sound.music); + CtlSetValue(cck2P, gPrefs->sound.multiMidi); + CtlSetValue(cck3P, gPrefs->sound.MP3); + CtlSetValue(cck4P, gPrefs->sound.setDefaultTrackLength); + + LstSetSelection(list1P, gPrefs->sound.driver); + CtlSetLabel((ControlType *)GetObjectPtr(SoundDriverPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); + + tempoH = MemHandleNew(FldGetMaxChars(fld1P)+1); + tempoP = (Char *)MemHandleLock(tempoH); + StrIToA(tempoP, gPrefs->sound.tempo); + MemHandleUnlock(tempoH); + FldSetTextHandle(fld1P, tempoH); + + lengthH = MemHandleNew(FldGetMaxChars(fld2P)+1); + lengthP = (Char *)MemHandleLock(lengthH); + StrIToA(lengthP, gPrefs->sound.defaultTrackLength); + MemHandleUnlock(lengthH); + FldSetTextHandle(fld2P, lengthH); + + firstTrackH = MemHandleNew(FldGetMaxChars(fld3P)+1); + firstTrackP = (Char *)MemHandleLock(firstTrackH); + StrIToA(firstTrackP, gPrefs->sound.firstTrack); + MemHandleUnlock(firstTrackH); + FldSetTextHandle(fld3P, firstTrackH); + + frmP = FrmGetActiveForm(); + FrmDrawForm(frmP); +} + +Boolean SoundFormHandleEvent(EventPtr eventP) { + Boolean handled = false; + + switch (eventP->eType) { + case frmOpenEvent: + SoundFormInit(); + handled = true; + break; + + case ctlSelectEvent: + switch (eventP->data.ctlSelect.controlID) + { + case SoundOKButton: + SoundFormSave(); + break; + + case SoundCancelButton: + FrmReturnToMain(); + break; + + case SoundDriverPopTrigger: + FrmList(eventP, SoundDriverList); + break; + } + handled = true; + break; + + default: + break; + } + + return handled; +}
\ No newline at end of file |