Logo Search packages:      
Sourcecode: scummvm version File versions

formmain.cpp

#include <PalmOS.h>

#include "StarterRsc.h"
#include "start.h"
#include "skin.h"
#include "games.h"
#include "scumm_globals.h"
#include "globals.h"

#include "stdafx.h"
#include "version.h"

#include "formEditGame.h"
#include "formUtil.h"

static UInt16 sknLastOn = skinButtonNone;

static Err BeamMe() {
      UInt16 cardNo;
      LocalID dbID;
      Err err;

      err = SysCurAppDatabase(&cardNo, &dbID);
      if (dbID)
            err = SendDatabase(0, dbID, "ScummVM.prc", "\nPlay your favorite LucasArts games");
      else
            err = DmGetLastErr();
      
      return err;
}

/***********************************************************************
 *
 * FUNCTION:    MainFormInit
 *
 * DESCRIPTION: This routine initializes the MainForm form.
 *
 * PARAMETERS:  frm - pointer to the MainForm form.
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void MainFormInit()
{
      SknApplySkin();
}

/***********************************************************************
 *
 * FUNCTION:    MainFormDoCommand
 *
 * DESCRIPTION: This routine performs the menu command specified.
 *
 * PARAMETERS:  command  - menu item id
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/

static Boolean MainFormDoCommand(UInt16 command)
{
      Boolean handled = false;

      switch (command) {
            case MainGamesMemoryCard:
                  FrmPopupForm(CardSlotForm);
                  handled = true;
                  break;

            case MainGamesNewEdit:
                  gFormEditMode = edtModeParams;
                  FrmPopupForm(GameEditForm);
                  handled = true;
                  break;

            case MainOptionsBeam:
                  BeamMe();
                  //if (BeamMe())
                        //FrmCustomAlert(FrmErrorAlert,"Unable to beam ScummVM for PalmOS.",0,0);
                  handled = true;
                  break;

            case MainOptionsAbout:
                  FrmPopupForm(InfoForm);
                  handled = true;
                  break;
            
            case MainGamesMusicSound:
                  FrmPopupForm(MusicForm);
                  handled = true;
                  break;

            case MainOptionsSkins:
                  FrmPopupForm(SkinsForm);
                  handled = true;
                  break;

            case MainOptionsMisc:
                  FrmPopupForm(MiscForm);
                  handled = true;
                  break;
            }

      MenuEraseStatus(0);
      return handled;
}

/***********************************************************************
 *
 * FUNCTION:    MainFormHandleEvent
 *
 * DESCRIPTION: This routine is the event handler for the 
 *              "MainForm" of this application.
 *
 * PARAMETERS:  eventP  - a pointer to an EventType structure
 *
 * RETURNED:    true if the event has handle and should not be passed
 *              to a higher level handler.
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/

static Boolean PenDownRepeat() {
      Coord x,y;
      Boolean penDown, handled = false;
      EvtGetPen(&x, &y, &penDown);

      if (penDown && sknLastOn) {
            RectangleType r;
            DmOpenRef skinDBP;
      
            skinDBP = SknOpenSkin();
            SknGetObjectBounds(skinDBP, sknLastOn, &r);

            if (RctPtInRectangle(x*2, y*2, &r)) {
                  if (SknGetState(skinDBP, sknLastOn) != sknStateSelected) {
                        SknSetState(skinDBP, sknLastOn, sknStateSelected);
                        SknShowObject(skinDBP, sknLastOn);
                  }
                  
                  switch (sknLastOn) {
                        case skinSliderUpArrow:
                        case skinSliderDownArrow:
                              handled = SknProcessArrowAction(sknLastOn);
                              break;
                  }
                  
            } else {
                  if (SknGetState(skinDBP, sknLastOn) != sknStateNormal) {
                        SknSetState(skinDBP, sknLastOn, sknStateNormal);
                        SknShowObject(skinDBP, sknLastOn);
                  }
            }

            SknCloseSkin(skinDBP);
      }
      
      return handled;
}


Boolean MainFormHandleEvent(EventPtr eventP)
{
      Boolean handled = false;
      FormPtr frmP;
      Coord x,y;
      DmOpenRef skinDBP;
      
      switch (eventP->eType) {
            case frmUpdateEvent:
            {
                  RectangleType r;
                  UInt16 idx;
                  IndexedColorType bgColor = UIColorGetTableEntryIndex(UIFormFill);
                  frmP = FrmGetFormPtr(MainForm);

                  if (gPrefs->card.volRefNum != sysInvalidRefNum)
                        idx = FrmGetObjectIndex (frmP, MainMSBitMap);
                  else
                        idx = FrmGetObjectIndex (frmP, MainMSNoneBitMap);

                  WinSetDrawMode(winPaint);
                  WinSetBackColor(bgColor);
                  FrmGetObjectBounds(frmP, idx, &r);
                  WinEraseRectangle(&r, 0);
                  FrmShowObject(frmP, idx);

                  if (eventP->data.frmUpdate.updateCode == frmRedrawUpdateMSImport) {
                        GamImportDatabase();
                        SknUpdateList();
                  }
                  handled = true;
                  break;
            }
            case menuEvent:
                  handled = MainFormDoCommand(eventP->data.menu.itemID);
                  break;

            case frmOpenEvent:
                  MainFormInit();
                  handled = true;
                  break;

            case ctlSelectEvent:
                  switch (eventP->data.ctlSelect.controlID)
                  {
                        case MainCardsButton:
                              //gPrefs->card.volRefNum = parseCards(true);
                              FrmPopupForm(CardSlotForm);
                              break;
                  
                        case MainAboutButton:
                              FrmPopupForm(InfoForm);
                              break;
                        
//                      case MainListTypeSelTrigger:
//                            FrmList(eventP, MainListTypeList);
//                            break;
                  }
                  handled = true;
                  break;

            case penUpEvent:
                  x = eventP->screenX;
                  y = eventP->screenY;
                  lastIndex = dmMaxRecordIndex; // enable select/unselect list item
                  
                  if (sknLastOn != skinButtonNone) {
                        RectangleType r;
                        skinDBP = SknOpenSkin();
                        SknGetObjectBounds(skinDBP, sknLastOn, &r);
                        SknSetState(skinDBP, sknLastOn, sknStateNormal);
                        SknShowObject(skinDBP, sknLastOn);
                        SknCloseSkin(skinDBP);
                        
                        if (RctPtInRectangle(x*2, y*2, &r)) {
                              switch (sknLastOn) {
                                    case skinButtonGameAdd:
                                          gFormEditMode = edtModeAdd;
                                          FrmPopupForm(GameEditForm);
                                          handled = true;
                                          break;

                                    case skinButtonGameAudio:
                                          FrmPopupForm(MusicForm);
                                          handled = true;
                                          break;

                                    case skinButtonGameEdit:
                                    case skinButtonGameParams:
                                          gFormEditMode = edtModeParams;
                                          FrmPopupForm(GameEditForm);
                                          handled = true;
                                          break;

                                    case skinButtonGameStart:
                                          if (gPrefs->card.volRefNum == sysInvalidRefNum)
                                                FrmCustomAlert(FrmWarnAlert,"Please select/insert a memory card.", 0, 0);
                                          else
                                                bStartScumm = true;
                                          handled = true;
                                          break;

                                    case skinButtonGameDelete:
                                          EditGameFormDelete(true);
                                          break;
                              }
                        }
                        sknLastOn = skinButtonNone;
                  }
                  break;

            case penDownEvent:
            case penMoveEvent:
                  if (sknLastOn == skinButtonNone) {
                        x = eventP->screenX;
                        y = eventP->screenY;
                        skinDBP = SknOpenSkin();

                        switch (sknLastOn = SknCheckClick(skinDBP, x,y)) {
                              case skinButtonNone:
                                    break;
                              case skinSliderUpArrow:
                              case skinSliderDownArrow:
                              case skinButtonGameAdd:
                              case skinButtonGameEdit:
                              case skinButtonGameParams:
                              case skinButtonGameStart:
                              case skinButtonGameDelete:
                              case skinButtonGameAudio:
                                    SknSetState(skinDBP, sknLastOn, sknStateSelected);
                                    SknShowObject(skinDBP, sknLastOn);                    
                                    if (gPrefs->soundClick)
                                          SndPlaySystemSound(sndClick);
                                    handled = true;
                                    break;
                              default:
                                    FrmCustomAlert(FrmWarnAlert,"Unknown button !",0,0);
                        }
                        SknCloseSkin(skinDBP);
                        SknSelect(x, y);
                  }
                  break;
            
            case keyDownEvent:
                  if (  (eventP->data.keyDown.chr >= 'a' && eventP->data.keyDown.chr <= 'z') ||
                              (eventP->data.keyDown.chr >= 'A' && eventP->data.keyDown.chr <= 'Z')) {
                        if (GamJumpTo(eventP->data.keyDown.chr)) {
                              SknUpdateList();
                              handled = true;
                        }
                  }
                  break;
            
            default:
                  handled = PenDownRepeat();
      }

      return handled;
}


Generated by  Doxygen 1.6.0   Back to index