palm-os-sdk/PalmOne/Samples/Conduit/MLDeviceApp/src/TableUtilities.c

198 lines
5.2 KiB
C

/***********************************************************************
*
* FILE: TableUtilites.c
*
* DESCRIPTION: Table handling
*
* REVISION HISTORY: Initial revision
*
***********************************************************************/
#include "TableUtilities.h"
#define MAX_TABLE_SIZE 10
TablePtr gpTable;
/***********************************************************************
*
* FUNCTION: TableUpdate
*
* DESCRIPTION: Update table
*
* PARAMETERS: pTable
*
* RETURNED:
*
* REVISION HISTORY: Initial revision
*
***********************************************************************/
void TableUpdate(TablePtr pTable)
{
UInt16 row;
UInt16 dTblRowCount = TblGetNumberOfRows(pTable);
UInt16 dRecords = DbGetNonDeletedRecCount();
TblSetRowUsable(pTable, 0, true);
TblSetRowID(pTable, 0, 0);
TblSetRowHeight(pTable, 0, 11);
for (row = 1; row < dTblRowCount; row++) {
if(row <= dRecords) {
UInt32 id = DbGetRecordInfo(row - 1);
TblSetRowUsable(pTable, row, true);
TblSetRowID(pTable, row, id);
TblSetRowHeight(pTable, row, 11);
TblSetItemInt(pTable, row, IndexColumn, row);
} else {
TblSetRowUsable(pTable, row, false);
}
}
}
/***********************************************************************
*
* FUNCTION: TableSelectRow
*
* DESCRIPTION: Select row
*
* PARAMETERS: pTable dRow
*
* RETURNED:
*
* REVISION HISTORY: Initial revision
*
***********************************************************************/
void TableSelectRow(TablePtr pTable, UInt16 dRow)
{
TblSelectItem(pTable, dRow, IndexColumn);
}
/***********************************************************************
*
* FUNCTION: TableInit
*
* DESCRIPTION: Initialize table
*
* PARAMETERS: pTable dRecords
*
* RETURNED:
*
* REVISION HISTORY: Initial revision
*
***********************************************************************/
void TableInit(TablePtr pTable, UInt16 dRecords)
{
UInt16 row;
char indexInitStr[] = "Init";
char libInitStr[] = "Initialization str";
for (row = 0; row < (dRecords + 1); row++) {
TblSetRowUsable(pTable, row, true);
TblSetItemStyle(pTable, row, IndexColumn, numericTableItem);
TblSetItemStyle(pTable, row, ArtistColumn, textTableItem);
TblSetItemStyle(pTable, row, TitleColumn, textTableItem);
TblSetRowHeight(pTable, row, FntLineHeight()); /* make sure all rows are single line */
TblSetItemPtr(pTable, row, ArtistColumn, NULL);
TblSetItemPtr(pTable, row, TitleColumn, NULL);
}
TblSetColumnUsable(pTable, IndexColumn, true);
TblSetColumnUsable(pTable, ArtistColumn, true);
TblSetColumnUsable(pTable, TitleColumn, true);
TblSetColumnWidth(pTable, IndexColumn, FntCharsWidth(indexInitStr, StrLen(indexInitStr)));
TblSetColumnWidth(pTable, ArtistColumn, FntCharsWidth(libInitStr, StrLen(libInitStr)));
TblSetColumnWidth(pTable, TitleColumn, FntCharsWidth(libInitStr, StrLen(libInitStr)));
TblSetLoadDataProcedure(pTable, IndexColumn, (TableLoadDataFuncPtr)MusicLibTableLoadData);
TblSetLoadDataProcedure(pTable, ArtistColumn, (TableLoadDataFuncPtr)MusicLibTableLoadData);
TblSetLoadDataProcedure(pTable, TitleColumn, (TableLoadDataFuncPtr)MusicLibTableLoadData);
TblSetItemFont(pTable, 0, IndexColumn, boldFont);
TblSetItemFont(pTable, 0, ArtistColumn, boldFont);
TblSetItemFont(pTable, 0, TitleColumn, boldFont);
TableUpdate(pTable);
gpTable = pTable;
}
/***********************************************************************
*
* FUNCTION: TableGetPointRow
*
* DESCRIPTION: Find what row is selected based on coordinates
*
* PARAMETERS: pTable dRecords
*
* RETURNED:
*
* REVISION HISTORY:
*
***********************************************************************/
UInt16 TableGetPointRow(TableType *pTable, UInt16 yCoord)
{
RectangleType tableBounds;
Int16 currRow, lastRow;
UInt16 rowY, rowHeight;
TblGetBounds(pTable, &tableBounds);
rowY = tableBounds.topLeft.y;
for(currRow = 0, lastRow = TblGetLastUsableRow(pTable); currRow <= lastRow; currRow++)
{
rowHeight = TblGetRowHeight(pTable, currRow);
if(rowY <= yCoord && yCoord < rowY + rowHeight)
break;
rowY += rowHeight;
}
if(currRow > lastRow) {
return -1;
} else {
return currRow;
}
}
/***********************************************************************
*
* FUNCTION: TableGet
*
* DESCRIPTION: Get global table
*
* PARAMETERS:
*
* RETURNED: TablePtr
*
* REVISION HISTORY:
*
***********************************************************************/
TablePtr TableGet()
{
return gpTable;
}
/***********************************************************************
*
* FUNCTION: TableIsFull
*
* DESCRIPTION: Check if table is full
*
* PARAMETERS:
*
* RETURNED: Boolean
*
* REVISION HISTORY:
*
***********************************************************************/
Boolean TableIsFull()
{
if(DbGetNonDeletedRecCount() == MAX_TABLE_SIZE) {
return true;
} else {
return false;
}
}