home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 Mobile
/
Chip_Mobile_2001.iso
/
palm
/
business
/
printcar
/
printcar.exe
/
src
/
CardRecord.cc
< prev
next >
Wrap
C/C++ Source or Header
|
2000-06-10
|
2KB
|
96 lines
//
// $Id: CardRecord.cc,v 1.5 2000/06/10 00:19:40 sergey Exp $
//
#include <Pilot.h>
#include "CardRecord.h"
#include "DB/ResourceDatabase.h"
#include "Util/Assert.h"
// constants
const int FIRST_RECORD_ID = 5000; // Resource id of the first Card record. First part for app resources, second - for the cards
const int RECORD_ID_STEP = 10; // Distance between two sequential records.
const int NAME_ID_OFFSET = 0;
const int SCRIPT_ID_OFFSET = 1;
const int IMAGE_ID_OFFSET = 2;
const int LIB_SCRIPT_ID_OFFSET = 3;
// construction
CardRecord::CardRecord()
{}
CardRecord::~CardRecord()
{}
// operations
bool CardRecord::load(int recordIndex, const DB::ResourceDatabase& cardDb)
{
int id = FIRST_RECORD_ID+recordIndex*RECORD_ID_STEP;
if (!cardDb.readResource(strRsc, id+NAME_ID_OFFSET, _name))
return false;
if (!cardDb.readResource(strRsc, id+SCRIPT_ID_OFFSET, _script))
return false;
loadImage(cardDb, id);
if (!loadLibScript(cardDb, id))
return false;
return true;
}
// utilities
int CardRecord::countRecords(const DB::ResourceDatabase& cardDb)
{
// Find all sequential Card records starting from the first one.
int count = 0;
for (int id = FIRST_RECORD_ID; cardDb.findResource(strRsc, id) != -1; id += RECORD_ID_STEP)
++count;
return count;
}
// implementation
void CardRecord::loadImage(const DB::ResourceDatabase& cardDb, int cardID)
{
// image could be absend
if (cardDb.findResource(bitmapRsc, cardID+IMAGE_ID_OFFSET) != -1)
cardDb.readResource(bitmapRsc, cardID+IMAGE_ID_OFFSET, _image);
else
_image = BitmapResource();
}
bool CardRecord::loadLibScript(const DB::ResourceDatabase& cardDb, int cardID)
{
// not all cards needs the library script
if (cardDb.findResource(strRsc, cardID+LIB_SCRIPT_ID_OFFSET) != -1)
{
StringResource libScriptID;
if (cardDb.readResource(strRsc, cardID+LIB_SCRIPT_ID_OFFSET, libScriptID))
{
if (cardDb.readResource(strRsc, StrAToI(libScriptID.data()), _libScript))
return true;
}
return true;
}
else
{
_libScript = StringResource();
return true;
}
return false;
}