/* * pHatt - PalmOS(TM) Hattrick (http://www.hattrick.org) Manager Assistant * * prefs.c - get/set Preferences * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ #include "phat.h" #define Attitude_Defensive 1 #define Attitude_Offensive 2 #define Attitude_ToWing 4 #define Attitude_ToMiddle 8 static Char *valueTexts[8]; static MemHandle valueHandles[8]; static void setAttitudeVisible(Int8 w) { if ( w & Attitude_Defensive ) FrmShowObject(gpForm, FrmGetObjectIndex(gpForm, PosDefensiveButton)); else FrmHideObject(gpForm, FrmGetObjectIndex(gpForm, PosDefensiveButton)); if ( w & Attitude_Offensive ) FrmShowObject(gpForm, FrmGetObjectIndex(gpForm, PosOffensiveButton)); else FrmHideObject(gpForm, FrmGetObjectIndex(gpForm, PosOffensiveButton)); if ( w & Attitude_ToWing) FrmShowObject(gpForm, FrmGetObjectIndex(gpForm, PosToWingButton)); else FrmHideObject(gpForm, FrmGetObjectIndex(gpForm, PosToWingButton)); if ( w & Attitude_ToMiddle) FrmShowObject(gpForm, FrmGetObjectIndex(gpForm, PosToMiddleButton)); else FrmHideObject(gpForm, FrmGetObjectIndex(gpForm, PosToMiddleButton)); } static void setPositionPopup(Int8 pos) { SetEditValue(Prefs_Position, Prefs_Position_Trigger, pos); CtlSetValue(getOPtr(prefs.prefsAttitude), 1); } static UInt16 getFieldNr( Int8 i ) { switch ( i ) { case 0: return PrefsStamina; case 1: return PrefsGoalie; case 2: return PrefsPlaymaking; case 3: return PrefsPassing; case 4: return PrefsWinging; case 5: return PrefsDefending; case 6: return PrefsScoring; case 7: return PrefsSetting; } return NULL; } static struct positionWeight *choosePosition() { switch ( prefs.prefsPlayerScreen ) { case PrefsKeeper: return &(prefs.w[posID(Pos_Keeper)]); case PrefsDefender: switch ( prefs.prefsAttitude ) { case PosNormalButton: return &(prefs.w[posID(Pos_Def)]); case PosOffensiveButton: return &(prefs.w[posID(Pos_DefOff)]); case PosToWingButton: return &(prefs.w[posID(Pos_DefWing)]); } break; case PrefsWingBack: switch ( prefs.prefsAttitude ) { case PosNormalButton: return &(prefs.w[posID(Pos_WBack)]); case PosOffensiveButton: return &(prefs.w[posID(Pos_WBackOff)]); case PosDefensiveButton: return &(prefs.w[posID(Pos_WBackDef)]); case PosToMiddleButton: return &(prefs.w[posID(Pos_WBackMid)]); } break; case PrefsMidfield: switch ( prefs.prefsAttitude ) { case PosNormalButton: return &(prefs.w[posID(Pos_Mid)]); case PosOffensiveButton: return &(prefs.w[posID(Pos_MidOff)]); case PosDefensiveButton: return &(prefs.w[posID(Pos_MidDef)]); case PosToWingButton: return &(prefs.w[posID(Pos_MidWing)]); } break; case PrefsWinger: switch ( prefs.prefsAttitude ) { case PosNormalButton: return &(prefs.w[posID(Pos_Wing)]); case PosOffensiveButton: return &(prefs.w[posID(Pos_WingOff)]); case PosDefensiveButton: return &(prefs.w[posID(Pos_WingDef)]); case PosToMiddleButton: return &(prefs.w[posID(Pos_WingMid)]); } break; case PrefsForward: switch ( prefs.prefsAttitude ) { case PosNormalButton: return &(prefs.w[posID(Pos_For)]); case PosDefensiveButton: return &(prefs.w[posID(Pos_ForDef)]); } break; } return &(prefs.w[posID(Pos_Captain)]); } static void setDBValues() { struct positionWeight *w; Char *temp; w = choosePosition(); temp = FldGetTextPtr(getOPtr(PrefsStamina)); w->stamina = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsGoalie)); w->goalie = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsPlaymaking)); w->playmaking = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsPassing)); w->passing = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsWinging)); w->winging = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsDefending)); w->defending = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsScoring)); w->scoring = ( temp ? StrAToI(temp) : 0); temp = FldGetTextPtr(getOPtr(PrefsSetting)); w->setting = ( temp ? StrAToI(temp) : 0); } static Int8 getDBValues(Int8 field) { struct positionWeight *w; w = choosePosition(); switch ( getFieldNr(field) ) { case PrefsStamina: return w->stamina; case PrefsGoalie: return w->goalie; case PrefsPlaymaking: return w->playmaking; case PrefsPassing: return w->passing; case PrefsWinging: return w->winging; case PrefsDefending: return w->defending; case PrefsScoring: return w->scoring; case PrefsSetting: return w->setting; } return 0; } static UInt8 getSortNr(UInt16 s) { switch (s) { case PrefsOrderInsert: return 0; case PrefsOrderAge: return 1; case PrefsOrderValue: return 2; default: return 3; } } Boolean VariousPrefsEHandler(EventPtr event) { Boolean handled = false; switch (event->eType) { case frmOpenEvent: gpForm = FrmGetActiveForm(); if ( prefs.currency <= Country_Wales) SetEditValue(Prefs_Currency, Prefs_Currency_Trigger, prefs.currency); else SetEditValue(Prefs_Currency, Prefs_Currency_Trigger, Country_England); SetEditValue(Prefs_Sort, Prefs_Sort_Trigger, getSortNr(prefs.orderby)); SetEditValue(Prefs_PositionPage, Prefs_PositionPage_Trigger, prefs.positionPage); FrmDrawForm(gpForm); handled = true; break; case frmCloseEvent: FrmEraseForm(gpForm); FrmDeleteForm(gpForm); gpForm = NULL; handled = true; break; case ctlSelectEvent: switch (event->data.ctlEnter.controlID) { case EditOKButton: switch ( LstGetSelection(getOPtr(Prefs_Sort)) ) { case 0: prefs.orderby = PrefsOrderInsert; break; case 1: prefs.orderby = PrefsOrderAge; break; case 2: prefs.orderby = PrefsOrderValue; break; case 3: prefs.orderby = PrefsOrderName; break; default: break; } prefs.currency = LstGetSelection(getOPtr(Prefs_Currency)); prefs.positionPage = LstGetSelection(getOPtr(Prefs_PositionPage)); sortPlayers(); case EditCancelButton: FrmGotoForm(prefs.prefsPrevScreen); handled = true; default: break; } /* case popSelectEvent: switch (event->data.popSelect.listID) { case Prefs_Sort: break; default: break; } */ default: break; } return handled; } Boolean PlayerPrefsEHandler(EventPtr event) { Boolean handled = false; Int8 i; switch (event->eType) { case frmOpenEvent: gpForm = FrmGetActiveForm(); for ( i = 0; i < 8; i++ ) { valueHandles[i] = MemHandleNew(4); valueTexts[i] = MemHandleLock(valueHandles[i]); StrPrintF(valueTexts[i], "%i", getDBValues(i)); FldSetTextHandle(getOPtr(getFieldNr(i)), valueHandles[i]); } switch ( prefs.prefsPlayerScreen ) { case PrefsKeeper: setPositionPopup(0); setAttitudeVisible(0); break; case PrefsDefender: setPositionPopup(1); setAttitudeVisible(Attitude_Offensive + Attitude_ToWing); break; case PrefsWingBack: setPositionPopup(2); setAttitudeVisible(Attitude_Offensive + Attitude_Defensive + Attitude_ToMiddle); break; case PrefsMidfield: setPositionPopup(3); setAttitudeVisible(Attitude_Offensive + Attitude_Defensive + Attitude_ToWing); break; case PrefsWinger: setPositionPopup(4); setAttitudeVisible(Attitude_Offensive + Attitude_Defensive + Attitude_ToMiddle); break; case PrefsForward: setPositionPopup(5); setAttitudeVisible(Attitude_Defensive); break; default: break; } FrmDrawForm(gpForm); handled = true; break; case frmCloseEvent: for ( i = 0; i < 8; i++) { FldSetTextHandle(getOPtr(getFieldNr(i)), NULL); MemHandleUnlock(valueHandles[i]); MemHandleFree(valueHandles[i]); valueTexts[i] = NULL; } FrmEraseForm(gpForm); FrmDeleteForm(gpForm); gpForm = 0; handled = true; break; case ctlSelectEvent: switch (event->data.ctlEnter.controlID) { case PosNormalButton: case PosOffensiveButton: case PosDefensiveButton: case PosToWingButton: case PosToMiddleButton: setDBValues(); prefs.prefsAttitude = event->data.ctlEnter.controlID; FrmGotoForm(FrmGetActiveFormID()); handled = true; break; case EditOKButton: setDBValues(); case EditCancelButton: FrmGotoForm(prefs.prefsPrevScreen); handled = true; default: break; } case popSelectEvent: switch (event->data.popSelect.listID) { case Prefs_Position: prefs.prefsAttitude = PosNormalButton; switch ( LstGetSelection(getOPtr(event->data.popSelect.listID)) ) { case 0: prefs.prefsPlayerScreen = PrefsKeeper; break; case 1: prefs.prefsPlayerScreen = PrefsDefender; break; case 2: prefs.prefsPlayerScreen = PrefsWingBack; break; case 3: prefs.prefsPlayerScreen = PrefsMidfield; break; case 4: prefs.prefsPlayerScreen = PrefsWinger; break; case 5: prefs.prefsPlayerScreen = PrefsForward; break; default: break; } FrmGotoForm(FrmGetActiveFormID()); break; default: break; } default: break; } return handled; }