Main Page   Data Structures   File List   Data Fields   Globals   Related Pages  

palm/options.c

Go to the documentation of this file.
00001 
00009 #include <PalmOS.h>
00010 #include <simcity_resconsts.h>
00011 #include <sections.h>
00012 #include <options.h>
00013 #include <globals.h>
00014 #include <simcity.h>
00015 #include <logging.h>
00016 #include <palmutils.h>
00017 
00018 static FormPtr setupOptions(void) CONFIG_SECTION;
00019 static void saveOptions(void) CONFIG_SECTION;
00020 static FormPtr setupButtonConfig(void) CONFIG_SECTION;
00021 static void saveButtonConfig(void) CONFIG_SECTION;
00022 static void clearButtonConfig(void) CONFIG_SECTION;
00023 
00028 Boolean
00029 hOptions(EventPtr event)
00030 {
00031         Boolean handled = false;
00032         static char okHit = 0;
00033 
00034         switch (event->eType) {
00035         case frmOpenEvent:
00036                 PauseGame();
00037                 WriteLog("options open\n");
00038                 FrmDrawForm(setupOptions());
00039                 okHit = 0;
00040                 handled = true;
00041                 break;
00042         case frmCloseEvent:
00043                 WriteLog("options closed\n");
00044                 if (okHit)
00045                         saveOptions();
00046                 break;
00047         case keyDownEvent:
00048                 switch (event->data.keyDown.chr) {
00049                 case vchrLaunch:
00050                         FrmGotoForm(formID_pocketCity);
00051                         handled = true;
00052                         break;
00053                 }
00054         case ctlSelectEvent:
00055                 switch (event->data.ctlEnter.controlID) {
00056                 case buttonID_OK:
00057                         okHit = 1;
00058                         handled = true;
00059                         FrmGotoForm(formID_pocketCity);
00060                         break;
00061                 case buttonID_Cancel:
00062                         okHit = 0;
00063                         handled = true;
00064                         FrmGotoForm(formID_pocketCity);
00065                         break;
00066                 }
00067         default:
00068                 break;
00069         }
00070 
00071         return (handled);
00072 }
00073 
00078 static FormPtr
00079 setupOptions(void)
00080 {
00081         FormPtr form = FrmGetActiveForm();
00082         UInt8 tval = getDisasterLevel();
00083 
00084         tval = (UInt8)((tval > 3) ? 3 : tval);
00085         CtlSetValue((ControlPtr)GetObjectPtr(form, 
00086                 (UInt16)(buttonID_dis_off + tval)), 1);
00087 
00088         tval = getDifficultyLevel();
00089         tval = (UInt8)((tval > 2) ? 2 : tval);
00090         CtlSetValue((ControlPtr)GetObjectPtr(form, 
00091             (UInt16)(buttonID_Easy + tval)), 1);
00092 
00093         CtlSetValue((ControlPtr)GetObjectPtr(form, checkboxID_autobulldoze),
00094             GETAUTOBULLDOZE() ? 1 : 0);
00095 
00096         CtlSetValue((ControlPtr)GetObjectPtr(form, checkboxID_minimapvisible),
00097             GETMINIMAPVISIBLE() ? 1 : 0);
00098 
00099         CtlSetValue((ControlPtr)GetObjectPtr(form, checkboxID_minimapdetailed),
00100             GETMINIMAPDETAILED() ? 1 : 0);
00101         return (form);
00102 }
00103 
00110 static void
00111 saveOptions(void)
00112 {
00113         FormPtr form = FrmGetActiveForm();
00114         UInt8 level = 0;
00115         if (CtlGetValue((ControlPtr)GetObjectPtr(form, buttonID_dis_off))) {
00116                 level = 0;
00117         } else if (CtlGetValue((ControlPtr)GetObjectPtr(form,
00118                             buttonID_dis_one))) {
00119                 level = 1;
00120         } else if (CtlGetValue((ControlPtr)GetObjectPtr(form,
00121                             buttonID_dis_two))) {
00122                 level = 2;
00123         } else if (CtlGetValue((ControlPtr)GetObjectPtr(form,
00124                             buttonID_dis_three))) {
00125                 level = 3;
00126         }
00127         setDisasterLevel(level);
00128 
00129         level = 0;
00130 
00131         if (CtlGetValue((ControlPtr)GetObjectPtr(form, buttonID_Easy))) {
00132                 level = 0;
00133         } else if (CtlGetValue((ControlPtr)GetObjectPtr(form,
00134                             buttonID_Medium))) {
00135                 level = 1;
00136         } else if (CtlGetValue((ControlPtr)GetObjectPtr(form, buttonID_Hard))) {
00137                 level = 2;
00138         }
00139         setDifficultyLevel(level);
00140         SETAUTOBULLDOZE(CtlGetValue((ControlPtr)GetObjectPtr(form,
00141             checkboxID_autobulldoze)));
00142         SETMINIMAPVISIBLE(CtlGetValue((ControlPtr)GetObjectPtr(form,
00143             checkboxID_minimapvisible)));
00144         SETMINIMAPDETAILED(CtlGetValue((ControlPtr)GetObjectPtr(form,
00145             checkboxID_minimapdetailed)));
00146 }
00147 
00148 
00149 Boolean
00150 hButtonConfig(EventPtr event)
00151 {
00152         Boolean handled = false;
00153         static char okHit = 0;
00154 
00155         switch (event->eType) {
00156         case frmOpenEvent:
00157                 WriteLog("open buttonconfig\n");
00158                 PauseGame();
00159                 FrmDrawForm(setupButtonConfig());
00160                 okHit = 0;
00161                 handled = true;
00162                 break;
00163         case frmCloseEvent:
00164                 WriteLog("close buttonconfig\n");
00165                 if (okHit) saveButtonConfig();
00166                 clearButtonConfig();
00167                 break;
00168         case keyDownEvent:
00169                 switch (event->data.keyDown.chr) {
00170                 case vchrLaunch:
00171                         FrmGotoForm(formID_pocketCity);
00172                         handled = true;
00173                         break;
00174                 }
00175         case ctlSelectEvent:
00176                 switch (event->data.ctlEnter.controlID) {
00177                 case buttonID_OK:
00178                         okHit = 1;
00179                         handled = true;
00180                         FrmGotoForm(formID_pocketCity);
00181                         break;
00182                 case buttonID_Cancel:
00183                         okHit = 0;
00184                         handled = true;
00185                         FrmGotoForm(formID_pocketCity);
00186                         break;
00187                 }
00188         default:
00189                 break;
00190         }
00191 
00192         return (handled);
00193 }
00194 
00204 static const struct bc_chelts {
00205         UInt16 popup; 
00206         UInt16 list; 
00207         UInt16 elt; 
00208 } bc_elts[] = {
00209         { List_Cal_Popup, List_Cal, BkCalendar },
00210         { List_Addr_Popup, List_Addr, BkAddress },
00211         { List_HrUp_Popup, List_HrUp, BkHardUp },
00212         { List_HrDn_Popup, List_HrDn, BkHardDown },
00213         { List_ToDo_Popup, List_ToDo, BkToDo },
00214         { List_Memo_Popup, List_Memo, BkMemo },
00215         { List_Calc_Popup, List_Calc, BkCalc },
00216         { List_Find_Popup, List_Find, BkFind },
00217 #ifdef SONY_CLIE
00218         { List_JogUp_Popup, List_JogUp, BkJogUp },
00219         { List_JogDn_Popup, List_JogDn, BkJogDown },
00220         { List_JogOut_Popup, List_JogOut, BkJogRelease },
00221 #endif
00222         { 0, 0, 0 }
00223 };
00224 
00226 static char **Popups;
00227 
00237 static FormPtr
00238 setupButtonConfig(void)
00239 {
00240         FormPtr form = FrmGetActiveForm();
00241         UInt16 poplen;
00242         ButtonKey bk;
00243 
00244         Popups = FillStringList(StrID_Popups, &poplen);
00245         /* do the buttons */
00246         for (bk = BkCalendar; bc_elts[bk].popup != 0; bk++) {
00247                 ListPtr lp;
00248                 UInt16 ko = gameConfig.pc.keyOptions[bk];
00249 
00250                 if (ko > poplen) {
00251                         ko = poplen - 1;
00252                 }
00253                 CtlSetLabel((ControlPtr)GetObjectPtr(form, bc_elts[bk].popup),
00254                     Popups[ko]);
00255                 lp = (ListPtr)GetObjectPtr(form, bc_elts[bk].list);
00256                 LstSetListChoices(lp, (Char **)Popups, (Int16)poplen);
00257                 LstSetSelection(lp, (Int16)ko);
00258         }
00259         return (form);
00260 }
00261 
00267 static void
00268 saveButtonConfig(void)
00269 {
00270         ButtonKey bk;
00271         FormPtr form = FrmGetActiveForm();
00272 
00273         for (bk = BkCalendar; bc_elts[bk].popup != 0; bk++) {
00274                 gameConfig.pc.keyOptions[bk] =
00275                     (ButtonEvent)LstGetSelection((ListPtr)GetObjectPtr(form,
00276                                 bc_elts[bk].list));
00277         }
00278 }
00279 
00285 static void
00286 clearButtonConfig(void)
00287 {
00288         FreeStringList(Popups);
00289 }

Generated on Mon Aug 30 19:44:15 2004 for pocketcity by doxygen1.2.18