Link to: source code | source
2 | source
3 | source
4 | tables
directory
Copyright Turtle Creek Software 1996-2006. All Rights Reserved.
This class manages general breakdown tables for
the Goldenseal estimating software,
small business management software, construction
project management software and
construction estimating software.
class CBreakdownTable : public CSpreadsheetTable,
public CClassDescriptorOwner
{
public:
enum
{
class_ID = 'BDTB'
};
static CBreakdownTable *CreateBreakdownTable(DB_ClassDescriptor *desc,
const SPaneInfo &paneInfo,
const SViewInfo &viewInfo,
SInt16 rowHeight);
CBreakdownTable(const SPaneInfo &inPaneInfo, const SViewInfo &inViewInfo,
DB_ClassDescriptor *desc);
virtual ~CBreakdownTable() {}
virtual void ListenToMessage(MessageT inMessage, void *ioParam);
virtual void UpdateFromLayoutStream(CInputStream &stream);
virtual void InsertRows(const TableIndexT howMany, const Boolean redraw = true);
virtual void InsertSpacerRow(const UInt8 rowsToAdd = 1);
virtual void RemoveRows(const TableIndexT howMany, const Boolean redraw = true);
virtual void AppendColumnMember(const SMemberInfo &memberInfo)
{ mColumnMemberArray.Append(memberInfo); }
SInt32 GetColTag(const TableIndexT col) const
{
SMemberInfo memberInfo;
if (!mColumnMemberArray.FetchItemAt(col, memberInfo))
return 0;
else
return memberInfo.tag;
}
Boolean GetColMemberInfo(const TableIndexT col, SMemberInfo *memberInfo) const
{ return mColumnMemberArray.FetchItemAt(col, *memberInfo); }
virtual TableIndexT GetMemberCol(const TagType tag) const;
virtual SInt32 GetMemberColValue(const TableIndexT row, const TagType tag) const;
virtual Boolean SetMemberColValue(const TableIndexT row, const TagType tag,
const SInt32 inText);
virtual CTextString GetMemberColString(const TableIndexT row, const TagType tag) const;
virtual Boolean SetMemberColString(const TableIndexT row, const TagType tag,
const CTextString &inText);
virtual CMoney GetMemberColMoney(const TableIndexT row, const TagType tag) const;
virtual Boolean SetMemberColMoney(const TableIndexT row, const TagType tag,
const CMoney &inValue);
virtual Boolean SetMemberColNumber(const TableIndexT row, const TagType tag,
const CMoney &inValue);
virtual Boolean SetMemberColPercent(const TableIndexT row, const TagType tag,
const CMoney &inValue);
virtual CDate GetMemberColDate(const TableIndexT row, const TagType tag) const;
virtual Boolean SetMemberColDate(const TableIndexT row, const TagType tag,
const CDate &inDate);
virtual CDate GetMemberColTime(const TableIndexT row, const TagType tag) const;
virtual Boolean SetMemberColTime(const TableIndexT row, const TagType tag,
const CDate &inTime);
virtual Boolean SetMemberCV(const TableIndexT row, const TagType tag,
DBid inValue, const DBid classID = 0);
virtual void SetCellColType(const TableIndexT row, const TableIndexT col,
const SInt32 inType);
virtual SInt32 GetMaxTextLength(const TableIndexT &col) const;
virtual CTextString GetColTitle(const TableIndexT col) const;
virtual CTextString GetStockColTitle(const TableIndexT col) const;
virtual SInt32 GetColType(const TableIndexT col) const;
virtual SInt32 GetColType(const TableIndexT /*row*/, const TableIndexT col) const
{ return GetColType(col); }
virtual SInt32 GetColType(const TableCellT &cell) const
{ return GetColType(ROW(cell), COL(cell)); }
virtual SInt32 GetColType(const SMemberInfo &memberInfo) const;
virtual SInt16 GetColData(const TableIndexT col) const;
virtual SInt32 GetColData(const SMemberInfo &memberInfo) const;
virtual void SetFindMode(const Boolean findMode);
virtual void GetFindSelectors(CTCS_Array *selectorArray) const;
virtual DB_MemberSelector *GetSimpleSelector(const SMemberInfo &memberInfo,
const TableIndexT col, const CTextString &cellText) const;
virtual DB_MemberSelector *GetRangeSelector(const SMemberInfo &memberInfo,
const CTextString &lowString, const CTextString &highString) const;
/*virtual void UpdateObjects(TObjectIDArray &objectArray,
const DBid breakdownClassID,
DB_PersistentObject *owner,
const Boolean countSubclasses =true,
const Boolean allowZeros = false);*/
//virtual void UpdateFromIterator(DB_Iterator *iterator);
//virtual void UpdateFromArray(const DBid classID, TObjectIDArray &array);
virtual void UpdateRowFromDBObject(const TableIndexT row,
DB_PersistentObject *object);
virtual void FinishRowFill(const TableIndexT /*row*/) {}
virtual void UpdateCellFromDBObject(const TableIndexT row, const TableIndexT col,
SMemberInfo &memberInfo, DB_PersistentObject *object);
virtual void UpdateDBObjectFromRow(const TableIndexT row,
DB_PersistentObject *object);
virtual void UpdateDBObjectField(const TableIndexT row, const TableIndexT col,
DB_PersistentObject *object);
virtual void FinishTableFill(CProgressBar */*progressBar*/ = nil) {}
virtual void PrepareSubcatCV(const DBid catSystemID, const UInt8 jobClass = 0,
const DBid jobID = 0);
virtual void PrepareCostItemCV();
virtual void PrepareLocationCV();
//virtual void PrepareCostAreaCV();
virtual Boolean AllowNegatives(TableIndexT col) const;
virtual Boolean CanDoFillDown() { return true; }
virtual TagType GetAmountTestTag() const { return 0; }
virtual TagType GetNameTestTag() const { return 0; }
virtual TagType GetCheckmarkTestTag() const { return 0; }
virtual TagType GetFirstDataTag() const { return 0; } // TCS 12/12/01
virtual TableIndexT GetAmountCol() { return GetMemberCol(tag_amount); }
virtual Boolean CanAlwaysChange(const TableCellT &cell) const;
virtual void HandleCheckmarkChanged(const TableIndexT row, const TableIndexT col,
const Boolean isChecked);
virtual void HandleCellCVChanged(const TableIndexT row, const TableIndexT col,
CTCS_CVField *cv);
virtual void HandleCellTextChanged(const TableIndexT row, const TableIndexT col,
const Boolean sendMessage = true);
virtual DBid GetTableCatSystem() const { return mCatSystem; }
virtual void SetTableCatSystem(const DBid inSystem) { mCatSystem = inSystem; }
virtual DBid GetTableJobType() const { return mJobType; }
virtual void SetTableJobType(const DBid inType) { mJobType = inType; }
virtual DBid GetTableJobID() const { return mJobID; }
virtual void SetTableJobID(const DBid inType) { mJobID = inType; }
virtual DBid GetTableJobClass() const { return mJobClass; }
virtual void SetTableJobClass(const DBid inType) { mJobClass = inType; }
virtual DBid GetTableCustomerDiscount() const { return 0; }
virtual void SetTableCustomerDiscount(const DBid /*inValue*/) {}
virtual DBid GetTableLocationPackage() const { return mLocationPackage; }
virtual void SetTableLocationPackage(const DBid inType) { mLocationPackage = inType; }
virtual DBid GetTableMainAccount() const { return mMainAccount; }
virtual void SetTableMainAccount(const DBid inID) { mMainAccount = inID; }
virtual DBClass GetTableMainAccountClass() const { return mMainAccountClass; }
virtual void SetTableMainAccountClass(const DBClass inClass) { mMainAccountClass = inClass; }
virtual CMoney GetColTagMoneyTotal(const TagType tag);
virtual CMoney GetTotalAmount() { return GetColTagMoneyTotal(tag_amount); }
virtual CMoney GetValueCompleted() { return GetColTagMoneyTotal(tag_valuecompleted); }
virtual CMoney GetContractAmount() { return GetColTagMoneyTotal(tag_contractamount); }
// subclasses showing objects in rows can override these methods TCS 11/17/99
// with the tag for columns showing object class & id-
// then double-click will open an editor window showing that object.
virtual TagType GetDetailIDTag() const { return 0; }
virtual TagType GetDetailClassTag() const { return 0; }
// subclasses showing objects in rows can override these methods TCS 11/18/99
// if there is some other way of fetching the id's-
// then double-click will open an editor window showing that object.
virtual DBid GetDetailTransactionID(const TableIndexT row) const;
virtual UInt8 GetDetailTransactionClass(const TableIndexT row) const;
virtual void FillDetailArray(TObjectIDArray &selectArray,
const DBClass detailClass = 0) const;
virtual void FillDetailArray(TObjectInfoArray &selectArray) const;
virtual void HandleNonEditCellDblClicked(const TableCellT &inCell);
virtual Boolean HandleEnterKey();
virtual void PrepareToAddRow();
virtual Boolean ShowsSingleClass() const { return mShowsSingleClass; }
virtual void SetShowsSingleClass(const Boolean inValue) { mShowsSingleClass = inValue; }
virtual UInt8 GetTableClass() { return table_breakdown; } // TCS 4/28/00
virtual Boolean MemoryIsShort() const { return mMemoryIsShort; } // TCS 8/21/01
virtual void SetMemoryIsShort(const Boolean inValue = true) { mMemoryIsShort = inValue; }
virtual Boolean IsCompletelyFilled() const { return mCompletelyFilled; } // TCS 8/21/01
virtual void SetIsCompletelyFilled(const Boolean inValue = true) { mCompletelyFilled = inValue; }
virtual Boolean HasColumn(const TagType tag) const;
virtual Boolean HasUncheckedRows() const;
virtual TMemberArray GetColumnMemberArray() { return mColumnMemberArray; }
virtual void SetSpecialOrderOnly(const Boolean inValue = true) { mSpecialOrderOnly = inValue; }
virtual void SetNoSpecialOrder(const Boolean inValue = true) { mNoSpecialOrder = inValue; }
protected:
TMemberArray mColumnMemberArray; // array of member info for each col
TObjectInfoArray mBreakdownItemArray; // array of breakdown object infos TCS 2/7/00
DBid mCatSystem,
mJobType,
mJobID,
mLocationPackage, // TCS 7/22/99
mMainAccount; // TCS 2/22/00
UInt8 mJobClass,
mMainAccountClass; // TCS 12/13/99
UInt8 mShowsSingleClass:1, // TCS 1/4/01
mMemoryIsShort:1, // TCS 8/21/01
mCompletelyFilled:1,
mSpecialOrderOnly:1, // TCS 2/25/02
mNoSpecialOrder:1,
breakdownTableFiller:3;
UInt8 mTableFiller; // TCS 4/24/03
virtual DBid GetCellCVClassID(const TableCellT &inCell) const;
virtual DBid GetMemberCVClassID(const SMemberInfo &memberInfo) const;
virtual DBid GetMenuCVClassID(const TableCellT &inCell) const;
virtual DBid GetMemberMenuCVClassID(const SMemberInfo &memberInfo) const;
virtual UInt8 GetFieldType(const TableIndexT col) const;
virtual UInt8 GetFieldType(const TableIndexT row, const TableIndexT col) const;
virtual CTCS_CVField *CreateNewCellCVField(const TableCellT &inCell,
const SPaneInfo &inPaneInfo);
virtual CMenuCV *CreateNewCellMenuCVField(const TableCellT &inCell,
const SPaneInfo &inPaneInfo);
virtual void PrepCellCVField(const TableIndexT row,
const TableIndexT col, CTCS_CVField *cellField);
virtual void DrawRow(const TableIndexT row, const TableIndexT leftCol,
const TableIndexT rightCol);
/*typedef void (*BreakdownTableColFunc)(TableIndexT col,
const SMemberInfo &memberInfo,
CBreakdownTable *table,...);
void DoForEachMemberCol(BreakdownTableColFunc func,
void *param1 = nil,
void *param2 = nil,
void *param3 = nil,
void *param4 = nil);*/
virtual void DoFillDown();
virtual void ResetSubcategory(const TableIndexT row);
virtual void ResetCostItem(const TableIndexT row, const SInt32 oldValue, const SInt32 newValue);
virtual void UpdateItemDetails(const TableIndexT /*row*/) {}
virtual void UpdateRow(const TableIndexT /*row*/) {}
virtual Boolean NeedsRowRecalc(const TagType /*tag*/) { return true; } // TCS 8/14/01
virtual CMoney RecalcBreakdownRow(const TableIndexT /*row*/, const TagType /*changedCol*/)
{ return TCS_Real(0); }
virtual CMoney RecalcTotal();
virtual Boolean CanChangeMultipleCheckmarks() const { return true; } // TCS 8/17/01
}; |