aboutsummaryrefslogtreecommitdiff
path: root/backends/PalmOS/Src/forms/formSound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backends/PalmOS/Src/forms/formSound.cpp')
-rw-r--r--backends/PalmOS/Src/forms/formSound.cpp125
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