1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
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;
}
|