198 lines
5.2 KiB
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;
|
|
}
|
|
}
|
|
|
|
|