Logo Search packages:      
Sourcecode: scummvm version File versions

formMisc.cpp

#include <PalmOS.h>

#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;
}

Generated by  Doxygen 1.6.0   Back to index