// Copyright (c) Sean Walton 1999-2006 All rights reserved // // Standard disclaimer: you use it --> you're responsible // Standard license: you can use it in any way, but keep // my copyright attached. #include "BBGrid.h" HoursGrid::HoursGrid(void): BBGrid(1, NUMCOLS) { SetColumnWidth(0, 41, false); for ( int c = 1; c < NUMCOLS; c++ ) SetColumnWidth(c, 17, false); SetColumnWidth(c, 17, true); memset(&Vals, 0, sizeof(Vals)); memset(&CurrentVal, 0, sizeof(CurrentVal)); memset(&Items, 0, sizeof(Items)); Count = 0; } void HoursGrid::NowDisplaying(ubyte row, ubyte col, Graphics& area) { int width = GetColumnWidth(col); if ( row == 0 ) { static const char *days[] = {"", "Su", "M", "T", "W", "Th", "F", "Sa"}; area.DrawString(width/2, 0, days[col], strlen(days[col]), GetFont(), LCD_CENTERED|TEXT_UNDERLINE); } else if ( col == 0 ) area.DrawString(0, 0, Items[row-1], strlen(Items[row-1]), GetFont(), 0); else { Num2Dec(Vals[row-1][col-1], CurrentVal, 1); area.DrawString(width, 0, CurrentVal, strlen(CurrentVal), GetFont(), LCD_RIGHT_JUSTIFIED); } } bool HoursGrid::OnKey(int event, char digit, int flags) { int r, c; GetSelected(r, c); int len = strlen(CurrentVal); if ( digit == '\b' ) Vals[r-1][c-1] = Vals[r-1][c-1]/10; else if ( isdigit(digit) ) Vals[r-1][c-1] = Vals[r-1][c-1]*10 + digit-'0'; Redraw(r, c); return true; } bool HoursGrid::AllowSelect(ubyte Row, ubyte Col) { return (Row >= NUMHEADERS) && (Col != 0); } void HoursGrid::Add(const char* Record) { strncpy(Items[Count], Record, MAXNAME); Items[Count++][MAXNAME-1] = 0; SetRows(Count+1); } void HoursGrid::Delete(int Record) { Count--; for ( int i = Record; i < Count; i++ ) strcpy(Items[i], Items[i+1]); SetRows(Count+1); }