scummvm/backends/PalmOS/Src/forms/formMisc.cpp
Chris Apers 7afd085317 This is now defined for each games
svn-id: r15061
2004-09-12 13:41:28 +00:00

194 lines
5.3 KiB
C++

#include <PalmOS.h>
#include "start.h"
#include "formTabs.h"
#include "forms.h"
/***********************************************************************
*
* FUNCTION: MiscOptionsFormSave
* FUNCTION: MiscOptionsFormInit
* FUNCTION: MiscOptionsFormHandleEvent
*
* DESCRIPTION: Misc. Options form functions
*
* REVISION HISTORY:
*
*
***********************************************************************/
static TabType *myTabP;
static UInt16 lastTab = 0;
static Boolean stackChanged = false;
static UInt32 StackSize(UInt32 newSize) {
MemHandle pref = DmGetResource('pref',0);
UInt32 size = 0;
if (pref) {
SysAppPrefsType *data = (SysAppPrefsType *)MemHandleLock(pref);
size = data->stackSize;
if (newSize) {
SysAppPrefsType newData;
MemMove(&newData, data, sizeof(SysAppPrefsType));
newData.stackSize = newSize;
DmWrite(data, 0, &newData, sizeof(SysAppPrefsType));
}
MemPtrUnlock(data);
DmReleaseResource(pref);
}
return size;
}
static Boolean ScummVMTabSave() {
FieldType *fld1P;
ControlType *cckP[11];
FormPtr frmP;
fld1P = (FieldType *)GetObjectPtr(TabScummVMDebugLevelField);
cckP[3] = (ControlType *)GetObjectPtr(TabScummVMDebugCheckbox);
cckP[6] = (ControlType *)GetObjectPtr(TabScummVMDemoCheckbox);
cckP[9] = (ControlType *)GetObjectPtr(TabScummVMCopyProtectionCheckbox);
cckP[10]= (ControlType *)GetObjectPtr(TabScummVMAltIntroCheckbox);
frmP = FrmGetActiveForm();
if (FldGetTextLength(fld1P) == 0 && CtlGetValue(cckP[3]) == 1) {
TabSetActive(frmP, myTabP, 1);
FrmSetFocus(frmP, FrmGetObjectIndex(frmP, TabScummVMDebugLevelField));
FrmCustomAlert(FrmWarnAlert,"You must specified a debug level.",0,0);
return false;
}
gPrefs->debug = CtlGetValue(cckP[3]);
gPrefs->demoMode = CtlGetValue(cckP[6]);
gPrefs->copyProtection = CtlGetValue(cckP[9]);
gPrefs->altIntro = CtlGetValue(cckP[10]);
gPrefs->debugLevel = StrAToI(FldGetTextPtr(fld1P));
return true;
}
static void PalmOSTabSave() {
ControlType *cckP[11];
cckP[0] = (ControlType *)GetObjectPtr(TabPalmOSVibratorCheckbox);
cckP[1] = (ControlType *)GetObjectPtr(TabPalmOSNoAutoOffCheckbox);
cckP[2] = (ControlType *)GetObjectPtr(TabPalmOSStdPaletteCheckbox);
cckP[4] = (ControlType *)GetObjectPtr(TabPalmOSLargerStackCheckbox);
cckP[5] = (ControlType *)GetObjectPtr(TabPalmOSAutoResetCheckbox);
cckP[10]= (ControlType *)GetObjectPtr(TabPalmOSARMCheckbox);
gPrefs->vibrator = CtlGetValue(cckP[0]);
gPrefs->autoOff = !CtlGetValue(cckP[1]);
gPrefs->stdPalette = CtlGetValue(cckP[2]);
gPrefs->autoReset = CtlGetValue(cckP[5]);
gPrefs->arm = CtlGetValue(cckP[10]);
// Larger stack is a global data init at start up
StackSize(CtlGetValue(cckP[4]) ? STACK_LARGER : STACK_DEFAULT);
if (stackChanged)
FrmCustomAlert(FrmInfoAlert,"You need to restart ScummVM in order for changes to take effect.",0,0);
}
static void ScummVMTabInit() {
FieldType *fld1P;
Char *levelP;
MemHandle levelH;
CtlSetValue((ControlType *)GetObjectPtr(TabScummVMDebugCheckbox), gPrefs->debug);
CtlSetValue((ControlType *)GetObjectPtr(TabScummVMDemoCheckbox), gPrefs->demoMode);
CtlSetValue((ControlType *)GetObjectPtr(TabScummVMCopyProtectionCheckbox), gPrefs->copyProtection);
CtlSetValue((ControlType *)GetObjectPtr(TabScummVMAltIntroCheckbox), gPrefs->altIntro);
fld1P = (FieldType *)GetObjectPtr(TabScummVMDebugLevelField);
levelH = MemHandleNew(FldGetMaxChars(fld1P)+1);
levelP = (Char *)MemHandleLock(levelH);
StrIToA(levelP, gPrefs->debugLevel);
MemHandleUnlock(levelH);
FldSetTextHandle(fld1P, levelH);
}
static void PalmOSTabInit() {
CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSLargerStackCheckbox), (StackSize(STACK_GET) == STACK_LARGER));
CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSVibratorCheckbox), gPrefs->vibrator);
CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSNoAutoOffCheckbox), !gPrefs->autoOff);
CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSStdPaletteCheckbox), gPrefs->stdPalette);
CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSAutoResetCheckbox), gPrefs->autoReset);
CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSARMCheckbox), gPrefs->arm);
}
static void MiscFormSave() {
PalmOSTabSave();
if (!ScummVMTabSave()) return;
TabDeleteTabs(myTabP);
FrmReturnToMain();
}
static void MiscFormInit() {
TabType *tabP;
FormType *frmP = FrmGetActiveForm();
tabP = TabNewTabs(2);
TabAddContent(&frmP, tabP, "PalmOS", TabPalmOSForm);
TabAddContent(&frmP, tabP, "ScummVM", TabScummVMForm);
PalmOSTabInit();
ScummVMTabInit();
FrmDrawForm(frmP);
TabSetActive(frmP, tabP, lastTab);
myTabP = tabP;
}
Boolean MiscFormHandleEvent(EventPtr eventP) {
FormPtr frmP = FrmGetActiveForm();
Boolean handled = false;
switch (eventP->eType) {
case frmOpenEvent:
MiscFormInit();
handled = true;
break;
case ctlSelectEvent:
switch (eventP->data.ctlSelect.controlID)
{
case (MiscForm + 1) :
case (MiscForm + 2) :
lastTab = (eventP->data.ctlSelect.controlID - MiscForm - 1);
TabSetActive(frmP, myTabP, lastTab);
break;
case TabPalmOSLargerStackCheckbox:
stackChanged = !stackChanged;
break;
case MiscOKButton:
MiscFormSave();
break;
case MiscCancelButton:
TabDeleteTabs(myTabP);
FrmReturnToMain();
break;
}
handled = true;
break;
default:
break;
}
return handled;
}