#include #include "start.h" #include "formTabs.h" #include "forms.h" #include "globals.h" #ifndef DISABLE_LIGHTSPEED #include "lightspeed_public.h" #endif /*********************************************************************** * * FUNCTION: MiscOptionsFormSave * FUNCTION: MiscOptionsFormInit * FUNCTION: MiscOptionsFormHandleEvent * * DESCRIPTION: Misc. Options form functions * * REVISION HISTORY: * * ***********************************************************************/ static TabType *myTabP; static UInt16 lastTab = 0; 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[3] = (ControlType *)GetObjectPtr(TabPalmOSLightspeedCheckbox); cckP[4] = (ControlType *)GetObjectPtr(TabPalmOSLargerStackCheckbox); cckP[5] = (ControlType *)GetObjectPtr(TabPalmOSExitLauncherCheckbox); cckP[10]= (ControlType *)GetObjectPtr(TabPalmOSARMCheckbox); gPrefs->vibrator = CtlGetValue(cckP[0]); gPrefs->autoOff = !CtlGetValue(cckP[1]); gPrefs->stdPalette = CtlGetValue(cckP[2]); gPrefs->lightspeed.enable = CtlGetValue(cckP[3]); gPrefs->setStack = CtlGetValue(cckP[4]); gPrefs->exitLauncher = CtlGetValue(cckP[5]); gPrefs->arm = CtlGetValue(cckP[10]); #ifndef DISABLE_LIGHTSPEED if (LS_Installed()) { ListType *list1P = (ListType *)GetObjectPtr(TabPalmOSLightspeedList); cckP[6] = (ControlType *)GetObjectPtr(TabPalmOSLightspeedCheckbox); gPrefs->lightspeed.enable = CtlGetValue(cckP[6]); gPrefs->lightspeed.mode = LstGetSelection(list1P); } #endif } 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() { #ifndef DISABLE_LIGHTSPEED if (LS_Installed()) { ListType *list1P = (ListType *)GetObjectPtr(TabPalmOSLightspeedList); LstSetSelection(list1P, gPrefs->lightspeed.mode); CtlSetLabel((ControlType *)GetObjectPtr(TabPalmOSLightspeedPopTrigger), LstGetSelectionText(list1P, LstGetSelection(list1P))); } #endif CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSExitLauncherCheckbox), gPrefs->lightspeed.enable); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSExitLauncherCheckbox), gPrefs->exitLauncher); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSLargerStackCheckbox), gPrefs->setStack); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSVibratorCheckbox), gPrefs->vibrator); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSNoAutoOffCheckbox), !gPrefs->autoOff); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSStdPaletteCheckbox), gPrefs->stdPalette); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSARMCheckbox), gPrefs->arm); CtlSetValue((ControlType *)GetObjectPtr(TabPalmOSLightspeedCheckbox), gPrefs->lightspeed.enable); } 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); #ifndef DISABLE_LIGHTSPEED if (!LS_Installed()) #endif { FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSLightspeedCheckbox)); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSLightspeedPopTrigger)); } #ifndef DISABLE_ARM if (!OPTIONS_TST(kOptDeviceARM)) #endif { FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSARMCheckbox)); } 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); #ifndef DISABLE_LIGHTSPEED if (!LS_Installed()) #endif { FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSLightspeedCheckbox)); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSLightspeedPopTrigger)); } #ifndef DISABLE_ARM if (!OPTIONS_TST(kOptDeviceARM)) #endif { FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSARMCheckbox)); } break; case TabPalmOSLightspeedPopTrigger: FrmList(eventP, TabPalmOSLightspeedList); FrmHideObject(frmP, FrmGetObjectIndex(frmP, TabPalmOSLightspeedList)); break; case MiscOKButton: MiscFormSave(); break; case MiscCancelButton: TabDeleteTabs(myTabP); FrmReturnToMain(); break; } handled = true; break; default: break; } return handled; }