GPS4Palm

Source Code Documentation


MapOptsForm.c

Go to the documentation of this file.
00001 /*****************************************************************************
00002  *
00003  * $RCSfile: MapOptsForm_8c-source.html,v $
00004  *
00005  * GPS4Palm Map Options Form
00006  *
00007  * This program is Copyright (C) 03/2003 Matthias Prinke
00008  * <matthias.prinke@surfeu.de> and covered by GNU's GPL.
00009  * In particular, this program is free software and comes WITHOUT
00010  * ANY WARRANTY.
00011  *
00012  * $Author: mp $
00013  *
00014  * $Date: 2007-10-08 20:40:33 $
00015  *
00016  * $Revision: 1.7.2.1 $
00017  *
00018  * $Log: MapOptsForm_8c-source.html,v $
00018  * Revision 1.7.2.1  2007-10-08 20:40:33  mp
00018  * updated for gps4palm V0.9.5 beta
00018  *
00019  * Revision 1.7  2005-01-30 21:22:30  mp
00020  * added PortsMenu event handling
00021  *
00022  * Revision 1.6  2004/11/30 20:45:02  mp
00023  * added TrackMenu event handling
00024  *
00025  * Revision 1.5  2004/11/24 21:18:17  mp
00026  * moved static function declarations from header to implementation file
00027  *
00028  * Revision 1.4  2004/11/23 17:49:11  mp
00029  * removed unused variable
00030  *
00031  * Revision 1.3  2004/04/29 18:42:31  mp
00032  * added RouteForm, modified for doxygen
00033  *
00034  * Revision 1.2  2004/02/28 17:21:43  mp
00035  * added menuEvent WaypointMenu
00036  *
00037  * Revision 1.1  2003/11/20 20:38:49  mp
00038  * initial version
00039  *
00040  *
00041  ****************************************************************************/
00042 #include <PalmOS.h>
00043 #include "ResourceDefines.h"
00044 #include "Serial.h"
00045 #include "Sinetab.h"
00046 #include "MapOptsForm.h"
00047 #include "GPS.h"
00048 #include "Utils.h"
00049 #include "common.h"
00050 
00051 extern UInt16           gAutoPwrOff;
00052 extern Boolean          gFormOpened;
00053 extern PrefsType        gPrefs;
00054 
00055 /* Locals */
00056 #define SCALE_ITEMS     30
00057 
00058 /* Caution: Make sure the entries match the list ScaleList in Resources.rcp ! */
00059 static UInt32   ScaleMappings[SCALE_ITEMS] = {
00060                   1000, 1500, 2000, 3000, 5000, 7500,
00061                   10000, 15000, 20000, 30000, 50000, 75000,
00062                   100000, 150000, 200000, 300000, 500000, 750000,
00063                   1000000, 1500000, 2000000, 3000000, 5000000, 7500000,
00064                   10000000, 15000000, 20000000, 30000000, 50000000, 75000000
00065                 };
00066 
00067 
00068 /* Static Functions */
00069 static void MapOptsFormInit(void)               MAPOPTSFORM_SECTION;
00070 static UInt16 mapToPosition(
00071   UInt32 *mappingArray, UInt32 value,
00072   UInt16 mappings, UInt32 defaultItem)          MAPOPTSFORM_SECTION;
00073 
00074 
00075 /*
00076  * mapToPosition:
00077  *   Get list position from list item (reverse array lookup).
00078  *
00079  *
00080  * Parameters:
00081  * -----------
00082  *      mappingArray            Pointer to array
00083  *      value                   Lookup value
00084  *      mappings                Total number of items in array
00085  *      defaultItem             Default Item
00086  *
00087  * Returns:
00088  * --------
00089  *      Position of 'value' in array or default item if not found.
00090  */
00091 static UInt16 mapToPosition(UInt32 *mappingArray, UInt32 value,
00092                                         UInt16 mappings, UInt32 defaultItem)
00093 {
00094   UInt16 i;
00095 
00096   i = 0;
00097   while (mappingArray[i] != value && i < mappings)
00098         i++;
00099   if (i >= mappings)
00100         return defaultItem;
00101 
00102   return i;
00103 }
00104 
00105 
00106 static 
00107 void MapOptsFormInit(void)
00108 {    
00109   gFormOpened = true;
00110 }
00111 
00112 
00113 /****************************************************************************/
00114 /**
00115  * \brief       Map Options Form event handler
00116  *
00117  * \param       eventP          pointer to event structure
00118  *
00119  * \return      event handled flag
00120  ****************************************************************************/
00121 Boolean MapOptsFormHandleEvent(EventPtr eventP)
00122 {
00123         FormPtr         frmP = FrmGetActiveForm();      /* Form Ptr */
00124         ListPtr         lstP;                           /* List Ptr */
00125         UInt16          sel;                            /* List Selection */
00126         Boolean         handled;
00127 
00128         handled = false;
00129         switch (eventP->eType)
00130         {
00131         case menuEvent:
00132           switch (eventP->data.menu.itemID) {
00133       
00134             case PositionMenu:
00135               FrmGotoForm(GPSMainForm);
00136               handled = true;
00137               break;
00138 
00139             case SkyviewMenu:
00140               FrmGotoForm(SkyviewForm);
00141               handled = true;
00142               break;
00143 
00144             case NavigationMenu:
00145               FrmGotoForm(NavigationForm);
00146               handled = true;
00147               break;
00148 
00149             case MapMenu:
00150               FrmGotoForm(MapForm);
00151               handled = true;
00152               break;
00153 
00154             case MiscOptsMenu:
00155               FrmGotoForm(MiscOptsForm);
00156               handled = true;
00157               break;
00158 
00159            case PortsMenu:
00160              if (gNewSerialManager) {
00161                FrmGotoForm(GPSPortForm);
00162              }
00163              handled = true;
00164              break;
00165 
00166             case WaypointMenu:
00167               FrmGotoForm(WaypointForm);
00168               handled = true;
00169               break;
00170 
00171             case RouteMenu:
00172               FrmGotoForm(RouteForm);
00173               handled = true;
00174               break;
00175             
00176             case TrackMenu:
00177               FrmGotoForm(TrackForm);
00178               handled = true;
00179               break;
00180 
00181             case AboutMenu:
00182               FrmGotoForm(AboutForm);
00183               handled = true;
00184               break;
00185 
00186           }
00187           break;
00188           
00189         case ctlSelectEvent:
00190           /* Map Download Policy Push Buttons */
00191           switch (eventP->data.ctlSelect.controlID) {
00192             case DldAPushb:
00193               gPrefs.mapprefs.download = DLD_A;
00194               break;
00195             
00196             case DldQPushb:
00197               gPrefs.mapprefs.download = DLD_Q;
00198               break;
00199               
00200             case DldOPushb:
00201               gPrefs.mapprefs.download = DLD_O;
00202               break;
00203           }
00204   
00205           break;
00206 
00207         case popSelectEvent:
00208           /* Map Scale Popup List */
00209           sel = eventP->data.popSelect.selection;
00210           frmP = FrmGetActiveForm();
00211           FrmSetFocus(frmP, noFocus);
00212           gPrefs.mapprefs.scale = ScaleMappings[sel];
00213           handled = false;
00214           break;
00215 
00216         
00217         case frmOpenEvent:
00218                 MapOptsFormInit();
00219                 FrmDrawForm(FrmGetActiveForm());
00220                 
00221                 /* Set Map Download Policy Push Buttons from Preferences */ 
00222                 switch (gPrefs.mapprefs.download) {
00223                   case DLD_A:
00224                     SetControlValueFromId(DldAPushb, 1);
00225                     break;
00226                     
00227                   case DLD_Q:
00228                     SetControlValueFromId(DldQPushb, 1);
00229                     break;
00230                     
00231                   case DLD_O:
00232                     SetControlValueFromId(DldOPushb, 1);
00233                     break;          
00234                 }
00235 
00236                 /* Init the scale pop-up from Preferences */
00237                 lstP = FrmGetObjectPtr(frmP, 
00238                          FrmGetObjectIndex(frmP, ScaleList));
00239 
00240                 /*  Reverse array lookup (value -> index) */
00241                 sel = mapToPosition(ScaleMappings,         /* array */
00242                                     gPrefs.mapprefs.scale, /* Prefs. value */
00243                                     SCALE_ITEMS,           /* array size */
00244                                     20000);                /* default value */
00245       
00246                 LstSetSelection (lstP, sel);
00247                 CtlSetLabel(FrmGetObjectPtr(frmP,
00248                  FrmGetObjectIndex(frmP, ScalePopup)),
00249                    LstGetSelectionText(lstP, sel));     
00250 
00251                 handled = true;
00252                 break;
00253 
00254         case frmCloseEvent:
00255                 /* Deallocate Fields' Text Memory */
00256                 //SetFieldText(NavigationStatusField, NULL, false, true);
00257                 break;
00258                                 
00259         }
00260         return(handled);
00261 } /* MapOptsFormHandleEvent() */

Created: Mon, 08 Oct 2007 22:33:16 +0200
Copyright ©2004 M. Prinke