Link to: source code | unit
cost directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages calculators in the Goldenseal accounting software,
estimating software, project management software
and construction estimating software.
class CCalculatorList : public DB_DescribedPersistent,
public CTCS_Broadcaster,
public CTCS_Listener
{
public:
enum
{
msg_CalcChanged = 'CLC1',
cSampleListOnly = true
};
CCalculatorList();
virtual ~CCalculatorList() {}
static CLASS_DESC *sDescriptor;
static DB_PersistentObject *MakeNew() { return TCS_NEW CCalculatorList; }
virtual DBid GetDBClassID(void) const { return id_CalculatorList; }
virtual void CopyFrom(DB_PersistentObject *source, const UInt8 copyFlags = 0);
virtual NeoSize GetFileLength(const CNeoFormat *aFormat) const;
virtual Boolean GetMemberValue(const NeoTag aTag, const NeoTag aType,
void *aValue) const;
virtual Boolean SetMemberValue(const NeoTag aTag, const NeoTag aType,
const void *aValue);
virtual void ReadObject(CNeoStream *aStream, const TagType aTag);
virtual void WriteObject(CNeoStream *aStream, const TagType aTag);
static Boolean HasCircularReference(const DBClass calcClass, const DBid calcID,
const DBClass thisClass, const DBid thisID);
static TagType GetCalculatorTag(const DBid classValue, const DBid fieldValue);
static CTextString GetCalculatorTagString(const DBid classValue, const DBid fieldValue);
static CTextString GetCalculatorTagPrefix(const DBid classValue);
static CTextString GetCalculatorName(const TagType tag);
static TagType GetCalculatorTagStart(const DBid classValue);
static DBid GetCalculatorItemID(const TagType tag);
static DBid GetCalculatorClassID(const TagType tag);
static Boolean IsValidCalculatorTag(const TagType tag);
static Boolean ShowsObjectValue(const TagType dataType);
//static DB_PersistentObject *FetchCalculator(const TagType tag); // deleted TCS 3/16/00
static Boolean HasCalculator(const TagType tag);
static Boolean Func_AppendFieldText(DB_PersistentObject *obj, TagType *fieldTag,
CTextString *text, UInt8 *roundingMethod,
SInt32 *fieldType);
static Boolean Func_AddFieldValue(DB_PersistentObject *obj, TagType *fieldTag,
CMoney *value);
static Boolean Func_AddFieldCount(DB_PersistentObject *obj, TagType *fieldTag,
SInt32 *value);
static Boolean CalcIsSimpleNumber(const UInt8 calcType);
static Boolean GetCalculation(CTextString *outString, const TagType field,
const UInt8 objectClass, const UInt8 calculationType,
const UInt8 recordRange, const UInt8 roundingMethod,
const TagType matchTag, const DBid matchValue,
const FormatType format, const UInt8 dateChoice = date_entered,
const Boolean limitRange = false);
virtual SInt32 GetTagField() { return mField; }
virtual void SetTagField (const SInt32 inType) { mField = inType; }
virtual SInt32 GetMatchField() { return mFieldMatch; }
virtual void SetMatchField (const SInt32 inType) { mFieldMatch = inType; }
virtual Boolean IsNumber() const;
virtual Boolean IsSimpleNumber() const;
virtual Boolean IsMathable() const;
virtual Boolean IsDisplayDirty() const { return mDisplayDirty; }
virtual Boolean SetDisplayDirty(const UInt8 source);
virtual void SetCalcDirty (Boolean inValue = true)
{
mCalcDirty = inValue;
// we don't need to MakeDirty, since calc dirty status is used
// only while calculator is in a report
}
virtual Boolean IsCalcDirty() const { return mCalcDirty; }
virtual DBid GetObjectClass() const { return mObjectClass; }
virtual Boolean UsesField(const TagType tag);
virtual CTextString GetDisplayCString(const FormatType format = 0, const Boolean alwaysUpdate = false); // don't make const-
object changes
virtual CTextString GetSampleCString() const;
virtual CTextString GetStarterCString(const FormatType format) const;
virtual CMoney GetCalculatorMoney();
virtual SInt32 GetCalculatorInteger();
virtual void UpdateCalculatorValue(SInt32 &runLimit, const FormatType format,
const Boolean alwaysUpdate = false);
virtual UInt8 GetFieldType() const;
virtual Boolean ExportMember(const TagType tag, CTextString *outString);
virtual SInt32 ImportMember(const TagType tag, const CTextString &inString);
virtual Boolean GetAdjustedCalculation(CTextString *outString, const UInt8 recordRange,
const UInt8 calcMethod, const CMoney &multiplier,
const Boolean limitRange);
virtual UInt8 GetStatusForMenuArray() const { return mCalculationType; } // TCS 12/13/00
virtual void FillDataReport(CTCS_Table *table, CNeoStream *stream) const;
virtual void SetEndSafetyTag() { mEndSafetyTag = tag_endsafetytag; }
protected:
// outside member
CTextString mCurrentValue;
// copied members
UInt8 mCalculationType,
mRoundingType,
mTimeRange,
mDateChoice,
mObjectClass; // rearranged TCS 3/27/02
// *** NEVER insert members before this bitfield!!!
UInt8 mCalcDirty:1,
mDisplayDirty:1,
filler:6;
TagType mField,
mFieldMatch;
DBid mFieldValue;
// calculated members
TagType mEndSafetyTag; // TCS 9/8/02
enum
{
cCopyFileLength = 6*sizeof(UInt8) +
2*sizeof(TagType) +
sizeof(DBid),
cFileLength = cCopyFileLength +
sizeof(TagType)
};
}; |