/* * pHatt - PalmOS(TM) Hattrick (http://www.hattrick.org) Manager Assistant * * transfer.c - transfer-alarm screen * * 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" static UInt32 time; static Char *playername; static Char *weekday; static void fillValues(DateTimeType *when) { Char *numbers = "00\00001\00002\00003\00004\00005\00006\00007\00008\00009\00010\00011\00012\00013\00014\00015\00016\00017\00018\00019\00020\00021\00022\00023\00024\00025\00026\00027\00028\00029\00030\00031\00032\00033\00034\00035\00036\00037\00038\00039\00040\00041\00042\00043\00044\00045\00046\00047\00048\00049\00050\00051\00052\00053\00054\00055\00056\00057\00058\00059"; Char *months = "Jan\0Feb\0Mar\0Apr\0May\0Jun\0Jul\0Aug\0Sep\0Oct\0Nov\0Dec"; Char *years = "2003\0002004\0002005\0002006\0002007\0002008\0002009\0002010\0002011\0002012"; CtlSetLabel(getOPtr(TransferDateButton), numbers + 3 * (when->day)); CtlSetLabel(getOPtr(TransferMonthButton), months + 4 * (when->month - 1)); CtlSetLabel(getOPtr(TransferYearButton), years + 5 * (when->year - 2003)); CtlSetLabel(getOPtr(TransferHourButton), numbers + 3 * (when->hour)); CtlSetLabel(getOPtr(TransferMinuteButton), numbers + 3 * (when->minute)); switch ( when->weekDay ) { case 0: StrPrintF(weekday, "Sunday"); break; case 1: StrPrintF(weekday, "Monday"); break; case 2: StrPrintF(weekday, "Tuesday"); break; case 3: StrPrintF(weekday, "Wednesday"); break; case 4: StrPrintF(weekday, "Thursday"); break; case 5: StrPrintF(weekday, "Friday"); break; case 6: StrPrintF(weekday, "Saturday"); break; } FldSetTextPtr(getOPtr(TransferWeekday), weekday); FldDrawField(getOPtr(TransferWeekday)); } /* Transfer-Screen Event Handler */ Boolean TransferScreenEHandler(EventPtr event) { Boolean handled = false; DateTimeType mom; Char *pname; switch (event->eType) { case frmOpenEvent: gpForm = FrmGetActiveForm(); pname = getPlayer(prefs.selectedPlayer)->name; playername = MemPtrNew(StrLen(pname) + 1); StrPrintF(playername, "%s", pname); FldSetTextPtr(getOPtr(Player_Name), playername); weekday = MemPtrNew(10); CtlSetValue(getOPtr(TransferDateButton), 1); CtlSetValue(getOPtr(TransferHourButton), 1); if ( getPlayer(prefs.selectedPlayer)->transfer ) { CtlSetValue(getOPtr(TransferEnableBox), 1); time = getPlayer(prefs.selectedPlayer)->transfer; } else time = TimGetSeconds(); TimSecondsToDateTime(time, &mom); mom.second = 0; time = TimDateTimeToSeconds(&mom); fillValues(&mom); FrmDrawForm(gpForm); handled = true; break; case frmCloseEvent: MemPtrFree(playername); playername = NULL; MemPtrFree(weekday); weekday = NULL; FrmEraseForm(gpForm); FrmDeleteForm(gpForm); gpForm = 0; handled = true; break; case ctlSelectEvent: TimSecondsToDateTime(time, &mom); switch (event->data.ctlEnter.controlID) { case TransferDateUp: if ( CtlGetValue(getOPtr(TransferDateButton)) ) { if ( mom.year < 2012 || mom.month < 12 || mom.day < 31 ) time += 86400; TimSecondsToDateTime(time, &mom); } if ( CtlGetValue(getOPtr(TransferMonthButton)) ) { if ( mom.month == 12 ) { if ( mom.year < 2012 ) { mom.year++; mom.month = 1; } } else mom.month++; time = TimDateTimeToSeconds(&mom); } if ( CtlGetValue(getOPtr(TransferYearButton)) ) { if ( mom.year < 2012 ) mom.year++; time = TimDateTimeToSeconds(&mom); } TimSecondsToDateTime(time, &mom); fillValues(&mom); break; case TransferDateDown: if ( CtlGetValue(getOPtr(TransferDateButton))) { if ( mom.year > 2003 || mom.month > 1 || mom.day > 1) time -= 86400; TimSecondsToDateTime(time, &mom); } if ( CtlGetValue(getOPtr(TransferMonthButton))) { if ( mom.month == 1 ) { if ( mom.year > 2003 ) { mom.year--; mom.month = 12; } } else mom.month--; time = TimDateTimeToSeconds(&mom); } if ( CtlGetValue(getOPtr(TransferYearButton))) { if ( mom.year > 2003 ) mom.year--; time = TimDateTimeToSeconds(&mom); } TimSecondsToDateTime(time, &mom); fillValues(&mom); break; case TransferHourUp: if ( CtlGetValue(getOPtr(TransferHourButton))) { if ( mom.year < 2012 || mom.month < 12 || mom.day < 31 || mom.hour < 23 ) time += 3600; } if ( CtlGetValue(getOPtr(TransferMinuteButton))) { if ( mom.year < 2012 || mom.month < 12 || mom.day < 31 || mom.hour < 23 || mom.minute < 59 ) time += 60; } TimSecondsToDateTime(time, &mom); fillValues(&mom); break; case TransferHourDown: if ( CtlGetValue(getOPtr(TransferHourButton))) { if ( mom.year > 2003 || mom.month > 1 || mom.day > 1 || mom.hour > 0 ) time -= 3600; } if ( CtlGetValue(getOPtr(TransferMinuteButton))) { if ( mom.year > 2003 || mom.month > 1 || mom.day > 1 || mom.hour > 0 || mom.minute > 0 ) time -= 60; } TimSecondsToDateTime(time, &mom); fillValues(&mom); break; case EditOKButton: getPlayer(prefs.selectedPlayer)->transfer = ( CtlGetValue(getOPtr(TransferEnableBox)) ? TimDateTimeToSeconds(&mom) : 0 ); SetNextAlarm(); case EditCancelButton: FrmGotoForm(PlayerScreen); handled = true; break; } break; case popSelectEvent: switch (event->data.popSelect.listID) { case PlayerSelection: break; default: break; } break; case menuEvent: handled = switchScreen(event->data.menu.itemID); break; default: break; } return handled; }