Logo Search packages:      
Sourcecode: gsoap version File versions

QuoteStarter.c

/******************************************************************************
 *
 * Copyright (c) 1999-2000 Palm, Inc. or its subsidiaries.
 * All rights reserved.
 *
 * File: Starter.c
 *  
 * Release: Palm OS SDK 5.0 (111823)
 *
 *****************************************************************************/
//===================================================================================
//
//    (C) COPYRIGHT International Business Machines Corp., 2002 All Rights Reserved
//    Licensed Materials - Property of IBM
//    US Government Users Restricted Rights - Use, duplication or
//    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
//
//    IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
//    ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
//    PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR
//    CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
//    USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
//    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
//    OR PERFORMANCE OF THIS SOFTWARE.
//
//    The program may be used, executed, copied, modified, and distributed
//    without royalty for the purpose of developing, using, marketing, or distributing.
// 
//=======================================================================================
#include <PalmOS.h>
#include "StockQuoteRsc.h"
#include "soapH.h"    // include the generated proxy

/***********************************************************************
 *
 *    Entry Points
 *
 ***********************************************************************/


/***********************************************************************
 *
 *    Internal Structures
 *
 ***********************************************************************/
typedef struct 
      {
      UInt8 replaceme;
      } StarterPreferenceType;

typedef struct 
      {
      UInt8 replaceme;
      } StarterAppInfoType;

typedef StarterAppInfoType* StarterAppInfoPtr;


/***********************************************************************
 *
 *    Global variables
 *
 ***********************************************************************/
//static Boolean HideSecretRecords;

UInt16 libNum;
/***********************************************************************
 *
 *    Internal Constants
 *
 ***********************************************************************/
#define appFileCreator              'BOB1'      // register your own at http://www.palmos.com/dev/creatorid/
#define appVersionNum               0x01
#define appPrefID                   0x00
#define appPrefVersionNum           0x01

// Define the minimum OS version we support (2.0 for now).
#define ourMinVersion   sysMakeROMVersion(2,0,0,sysROMStageRelease,0)
#define kPalmOS10Version      sysMakeROMVersion(1,0,0,sysROMStageRelease,0)


/***********************************************************************
 *
 *    Internal Functions
 *
 ***********************************************************************/

int getQuote( char *symbol, char *result);
void StdEtoA(char *text);

/***********************************************************************
 *
 * FUNCTION:    RomVersionCompatible
 *
 * DESCRIPTION: This routine checks that a ROM version is meet your
 *              minimum requirement.
 *
 * PARAMETERS:  requiredVersion - minimum rom version required
 *                                (see sysFtrNumROMVersion in SystemMgr.h 
 *                                for format)
 *              launchFlags     - flags that indicate if the application 
 *                                UI is initialized.
 *
 * RETURNED:    error code or zero if rom is compatible
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Err RomVersionCompatible(UInt32 requiredVersion, UInt16 launchFlags)
{
      UInt32 romVersion;

      // See if we're on in minimum required version of the ROM or later.
      FtrGet(sysFtrCreator, sysFtrNumROMVersion, &romVersion);
      if (romVersion < requiredVersion)
            {
            if ((launchFlags & (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp)) ==
                  (sysAppLaunchFlagNewGlobals | sysAppLaunchFlagUIApp))
                  {
                  FrmAlert (RomIncompatibleAlert);
            
                  // Palm OS 1.0 will continuously relaunch this app unless we switch to 
                  // another safe one.
                  if (romVersion <= kPalmOS10Version)
                        {
                        AppLaunchWithCommand(sysFileCDefaultApp, sysAppLaunchCmdNormalLaunch, NULL);
                        }
                  }
            
            return sysErrRomIncompatible;
            }

      return errNone;
}


/***********************************************************************
 *
 * FUNCTION:    GetObjectPtr
 *
 * DESCRIPTION: This routine returns a pointer to an object in the current
 *              form.
 *
 * PARAMETERS:  formId - id of the form to display
 *
 * RETURNED:    void *
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void * GetObjectPtr(UInt16 objectID)
{
      FormPtr frmP;

      frmP = FrmGetActiveForm();
      return FrmGetObjectPtr(frmP, FrmGetObjectIndex(frmP, objectID));
}


/***********************************************************************
 *
 * FUNCTION:    MainFormInit
 *
 * DESCRIPTION: This routine initializes the MainForm form.
 *
 * PARAMETERS:  frm - pointer to the MainForm form.
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void MainFormInit(FormPtr frmP)
{
      FieldPtr                fld;
      char *ptr;
      MemHandle               mh = MemHandleNew (10);
      fld = GetObjectPtr (MainSymbolField);
      ptr = MemHandleLock (mh);
      strcpy(ptr,"IBM");
      FldSetTextHandle (fld, mh);
    MemHandleUnlock(mh);
}


/***********************************************************************
 *
 * 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;
      FormPtr frmP;

      switch (command)
            {
            case MainOptionsAboutStockQuote:
                  MenuEraseStatus(0);                             // Clear the menu status from the display.
                  frmP = FrmInitForm (AboutForm);
                  FrmDoDialog (frmP);                             // Display the About Box.
                  FrmDeleteForm (frmP);
                  handled = true;
                  break;

            }
      
      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 MainFormHandleEvent(EventPtr eventP)
{
      Boolean handled = false;
      FormPtr frmP;
    char result[240];
    int rc;
    FieldPtr                  fld;


      switch (eventP->eType) 
            {
            case menuEvent:
                  return MainFormDoCommand(eventP->data.menu.itemID);

            case frmOpenEvent:
                  frmP = FrmGetActiveForm();
                  MainFormInit( frmP);
                  FrmDrawForm ( frmP);
                  handled = true;
                  break;
                  
            case frmUpdateEvent:
                  // To do any custom drawing here, first call FrmDrawForm(), then do your
                  // drawing, and then set handled to true.
                  break;

/*
      case ctlEnterEvent:
            switch (eventP->data.ctlEnter.controlID)
            {
                  case MainRunButton:
                  getQuote("IBM",result);
                        break;
            }
            break;
*/          

      case ctlSelectEvent:
            switch (eventP->data.ctlSelect.controlID)
            {
                  case MainRunButton:
                  rc = getQuote("IBM",result);
//                if (rc==SOAP_OK)
//                {
                        fld = GetObjectPtr (MainResultField);
                        FldSetTextPtr( fld, result);
                        FldDrawField(fld);
                        FldRecalculateField(fld,true);
//                 }
//                  else
//                    FrmAlert(Soap_errorAlert);

                  
                  break;
            }
            break;

            default:
                  break;
            
            }
      
      return handled;
}


/***********************************************************************
 *
 * FUNCTION:    AppHandleEvent
 *
 * DESCRIPTION: This routine loads form resources and set the event
 *              handler for the form loaded.
 *
 * PARAMETERS:  event  - 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 AppHandleEvent(EventPtr eventP)
{
      UInt16 formId;
      FormPtr frmP;

      if (eventP->eType == frmLoadEvent)
            {
            // Load the form resource.
            formId = eventP->data.frmLoad.formID;
            frmP = FrmInitForm(formId);
            FrmSetActiveForm(frmP);

            // Set the event handler for the form.  The handler of the currently
            // active form is called by FrmHandleEvent each time is receives an
            // event.
            switch (formId)
                  {
                  case MainForm:
                        FrmSetEventHandler(frmP, MainFormHandleEvent);
                        break;

                  default:
//                      ErrFatalDisplay("Invalid Form Load Event");
                        break;

                  }
            return true;
            }
      
      return false;
}


/***********************************************************************
 *
 * FUNCTION:    AppEventLoop
 *
 * DESCRIPTION: This routine is the event loop for the application.  
 *
 * PARAMETERS:  nothing
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void AppEventLoop(void)
{
      UInt16 error;
      EventType event;

      do {
            EvtGetEvent(&event, evtWaitForever);

            if (! SysHandleEvent(&event))
                  if (! MenuHandleEvent(0, &event, &error))
                        if (! AppHandleEvent(&event))
                              FrmDispatchEvent(&event);

      } while (event.eType != appStopEvent);
}


/***********************************************************************
 *
 * FUNCTION:     AppStart
 *
 * DESCRIPTION:  Get the current application's preferences.
 *
 * PARAMETERS:   nothing
 *
 * RETURNED:     Err value 0 if nothing went wrong
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static Err AppStart(void)
{
      StarterPreferenceType prefs;
      UInt16 prefsSize;

      // Read the saved preferences / saved-state information.
      prefsSize = sizeof(StarterPreferenceType);
      if (PrefGetAppPreferences(appFileCreator, appPrefID, &prefs, &prefsSize, true) != 
            noPreferenceFound)
            {
            }
      
      return errNone;
}


/***********************************************************************
 *
 * FUNCTION:    AppStop
 *
 * DESCRIPTION: Save the current state of the application.
 *
 * PARAMETERS:  nothing
 *
 * RETURNED:    nothing
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static void AppStop(void)
{
      StarterPreferenceType prefs;

      // Write the saved preferences / saved-state information.  This data 
      // will saved during a HotSync backup.
      PrefSetAppPreferences (appFileCreator, appPrefID, appPrefVersionNum, 
            &prefs, sizeof (prefs), true);
            
      // Close all the open forms.
      FrmCloseAllForms ();
}


/***********************************************************************
 *
 * FUNCTION:    StarterPalmMain
 *
 * DESCRIPTION: This is the main entry point for the application.
 *
 * PARAMETERS:  cmd - word value specifying the launch code. 
 *              cmdPB - pointer to a structure that is associated with the launch code. 
 *              launchFlags -  word value providing extra information about the launch.
 *
 * RETURNED:    Result of launch
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
static UInt32 StarterPalmMain(UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{
      Err error;

      error = RomVersionCompatible (ourMinVersion, launchFlags);
      if (error) return (error);

      switch (cmd)
            {
            case sysAppLaunchCmdNormalLaunch:
                  error = AppStart();
                  if (error) 
                        return error;
                        
                  FrmGotoForm(MainForm);
                  AppEventLoop();
                  AppStop();
                  break;

            default:
                  break;

            }
      
      return errNone;
}


/***********************************************************************
 *
 * FUNCTION:    PilotMain
 *
 * DESCRIPTION: This is the main entry point for the application.
 *
 * PARAMETERS:  cmd - word value specifying the launch code. 
 *              cmdPB - pointer to a structure that is associated with the launch code. 
 *              launchFlags -  word value providing extra information about the launch.
 * RETURNED:    Result of launch
 *
 * REVISION HISTORY:
 *
 *
 ***********************************************************************/
UInt32 PilotMain( UInt16 cmd, MemPtr cmdPBP, UInt16 launchFlags)
{

//   char result[40];
HostTraceInit();

      return StarterPalmMain(cmd, cmdPBP, launchFlags);
}



  

Generated by  Doxygen 1.6.0   Back to index