Accounting Software
Small Business Software Estimating Software
Contact SoftwareInventory SoftwareInventory Tracking SoftwareInventory Management SoftwareInventory Control SoftwareCustomer Management SoftwareBusiness Management Software

Chart of Accounts Preferences (Source Code)

Link to: header | prefs directory

Copyright Turtle Creek Software 1996-2006. All Rights Reserved.

Comments

CChartOfAccountPreferences

This class manages chart of accounts preferences for the Goldenseal accounting software,
small business management software, construction project management software and
construction accounting software.

It's the storage object for chart of account preferences. This is where we set
some display details. This object also stores settings for sort order,
icon size, window position and scrolling locations for each column in
the Chart of Accounts window.

SUPERCLASS = DB_PersistentObject

Constructor

/******************************************************************************
default constructor
******************************************************************************/
CChartOfAccountPreferences::CChartOfAccountPreferences()
{
mBottomJobs = mBottomAssets = 0;
mBottomLiabilities = mBottomCosts = 0;

mBottomJobsClass = mBottomAssetsClass = id_CalcSummation;
mBottomLiabilitiesClass = mBottomCostsClass = id_CalcSummation;

mShowFolderLines = true;
mDragStartsTransaction = true;
mDoubleClickForSnapshot = false;

mAFWJobSettings.nextFolderNumber = 1;
mAFWAssetSettings.nextFolderNumber = 1;
mAFWLiabilitySettings.nextFolderNumber = 1;
mAFWCostSettings.nextFolderNumber = 1;

mAFWJobSettings.viewMethod = icon_LargeIcon;
mAFWAssetSettings.viewMethod = icon_LargeIcon;
mAFWLiabilitySettings.viewMethod = icon_LargeIcon;
mAFWCostSettings.viewMethod = icon_LargeIcon;

mAFWJobSettings.defaultIndex = 1;
mAFWAssetSettings.defaultIndex = 1;
mAFWLiabilitySettings.defaultIndex = 1;
mAFWCostSettings.defaultIndex = 1;

mAFWJobSettings.frameHeight = 0;
mAFWAssetSettings.frameHeight = 0;
mAFWLiabilitySettings.frameHeight = 0;
mAFWCostSettings.frameHeight = 0;

mAFWJobSettings.scrollPosition = 0;
mAFWAssetSettings.scrollPosition = 0;
mAFWLiabilitySettings.scrollPosition = 0;
mAFWCostSettings.scrollPosition = 0;

mAFWJobSettings.frameWidth = 0;
mAFWAssetSettings.frameWidth = 0;
mAFWLiabilitySettings.frameWidth = 0;
mAFWCostSettings.frameWidth = 0;

mAFWJobSettings.sortMethod = sort_Name;
mAFWAssetSettings.sortMethod = sort_Name;
mAFWLiabilitySettings.sortMethod = sort_Name;
mAFWCostSettings.sortMethod = sort_Name;

mAFWJobSettings.reverseSort = false; // TCS 8/6/02
mAFWAssetSettings.reverseSort = false;
mAFWLiabilitySettings.reverseSort = false;
mAFWCostSettings.reverseSort = false;

mAFWJobSettings.isDefault = true;
mAFWAssetSettings.isDefault = false;
mAFWLiabilitySettings.isDefault = false;
mAFWCostSettings.isDefault = false;

mFutureExpansion = mMoreExpansion = 0;
mCofAFiller = 0; // TCS 6/16/03

mEndSafetyTag = tag_endsafetytag; // TCS 9/8/02
}

Source Code

/*********************************************************************************

GetFileLength

return the file length used by this object

*********************************************************************************/
NeoSize CChartOfAccountPreferences::GetFileLength(const CNeoFormat *aFormat) const
{
return THE_SUPERCLASS::GetFileLength(aFormat) +
ARRAY_FILE_SIZE(mAFWFolderArray) +
ARRAY_FILE_SIZE(mAFWJobIconArray) +
ARRAY_FILE_SIZE(mAFWAssetIconArray) +
ARRAY_FILE_SIZE(mAFWLiabilityIconArray) +
ARRAY_FILE_SIZE(mAFWCostIconArray) +
cFileLength;
}/*********************************************************************************

GetMemberValue

get the next number for an item

*********************************************************************************/
Boolean CChartOfAccountPreferences::GetMemberValue(const TagType aTag, const TagType aType,
void *aValue) const
{
switch (aTag)
{
case tag_bottomjobs:
return ConvertObjectIDMember(mBottomJobs, mBottomJobsClass, aValue, aType);
break;

case tag_bottomassets:
return ConvertObjectIDMember(mBottomAssets, mBottomAssetsClass, aValue, aType);
break;

case tag_bottomliabilities:
return ConvertObjectIDMember(mBottomLiabilities, mBottomLiabilitiesClass, aValue, aType);
break;

case tag_bottomcosts:
return ConvertObjectIDMember(mBottomCosts, mBottomCostsClass, aValue, aType);
break;

case tag_bottomjobsclass:
return ConvertEnumMember(mBottomJobsClass, MENU_CalcSources, aValue, aType);
break;

case tag_bottomassetsclass:
return ConvertEnumMember(mBottomAssetsClass, MENU_CalcSources, aValue, aType);
break;

case tag_bottomliabilitiesclass:
return ConvertEnumMember(mBottomLiabilitiesClass, MENU_CalcSources, aValue, aType);
break;

case tag_bottomcostsclass:
return ConvertEnumMember(mBottomCostsClass, MENU_CalcSources, aValue, aType);
break;

case tag_font:
return ConvertMember(&mFont, type_short, aValue, aType);
break;

case tag_fontsize:
return ConvertMember(&mFontSize, type_enum, aValue, aType);
break;

case tag_showfolderlines:
return ConvertBitFieldMember(mShowFolderLines, aValue, aType);
break;

case tag_dragstartstransact:
return ConvertBitFieldMember(mDragStartsTransaction, aValue, aType);
break;

case tag_doubleclicksnapshot:
return ConvertBitFieldMember(mDoubleClickForSnapshot, aValue, aType);
break;

default:
return THE_SUPERCLASS::GetMemberValue(aTag, aType, aValue);
break;
}
}/*********************************************************************************

SetMemberValue

set the value of the member with the given tag

*********************************************************************************/
Boolean CChartOfAccountPreferences::SetMemberValue(const TagType aTag, const TagType aType,
const void *aValue)
{
switch (aTag)
{
case tag_bottomjobs:
return ConvertDataToObjectID(aValue, aType, &mBottomJobs, mBottomJobsClass);
break;

case tag_bottomassets:
return ConvertDataToObjectID(aValue, aType, &mBottomAssets, mBottomAssetsClass);
break;

case tag_bottomliabilities:
return ConvertDataToObjectID(aValue, aType, &mBottomLiabilities, mBottomLiabilitiesClass);
break;

case tag_bottomcosts:
return ConvertDataToObjectID(aValue, aType, &mBottomCosts, mBottomCostsClass);
break;

case tag_bottomjobsclass:
return ConvertMember(aValue, aType, &mBottomJobsClass, type_enum);
break;

case tag_bottomassetsclass:
return ConvertMember(aValue, aType, &mBottomAssetsClass, type_enum);
break;

case tag_bottomliabilitiesclass:
return ConvertMember(aValue, aType, &mBottomLiabilitiesClass, type_enum);
break;

case tag_bottomcostsclass:
return ConvertMember(aValue, aType, &mBottomCostsClass, type_enum);
break;

case tag_font:
return ConvertMember(aValue, aType, &mFont, type_short);
break;

case tag_fontsize:
return ConvertMember(aValue, aType, &mFontSize, type_enum);
break;

case tag_showfolderlines:
mShowFolderLines = ConvertDataToBitField(aValue, aType);
return true;
break;

case tag_dragstartstransact:
mDragStartsTransaction = ConvertDataToBitField(aValue, aType);
return true;
break;

case tag_doubleclicksnapshot:
mDoubleClickForSnapshot = ConvertDataToBitField(aValue, aType);
return true;
break;

default:
return THE_SUPERCLASS::SetMemberValue(aTag, aType, aValue);
break;
}
}/*********************************************************************************

ReadObject

read the persistent object's data in from a stream

*********************************************************************************/
void CChartOfAccountPreferences::ReadObject(CNeoStream *aStream, const TagType aTag)
{
TCS_FailNILMsg(aStream, TCS_GetErrString(errID_BadStream));

CNeoDebugImport checker(aStream, this, cCheckTooSmall); // TCS 2/24/00

THE_SUPERCLASS::ReadObject(aStream, aTag);

if (!IsIOValid()) // TCS 2/5/02
return;

ReadFolderArrayFromStream(aStream, mAFWFolderArray, cHasSafetyTag); // TCS 6/23/02
ReadIconOrderArrayFromStream(aStream, mAFWJobIconArray, cHasSafetyTag); // TCS 6/23/02
ReadIconOrderArrayFromStream(aStream, mAFWAssetIconArray, cHasSafetyTag); // TCS 6/23/02
ReadIconOrderArrayFromStream(aStream, mAFWLiabilityIconArray, cHasSafetyTag); // TCS 6/23/02
ReadIconOrderArrayFromStream(aStream, mAFWCostIconArray, cHasSafetyTag); // TCS 6/23/02

/// aStream->ReadChunk(&mBottomJobs, cFileLength);

mBottomJobs = aStream->ReadID(); // mfs_sa rev 20feb2k3
mBottomAssets = aStream->ReadID();
mBottomLiabilities = aStream->ReadID();
mBottomCosts = aStream->ReadID();

mFont = aStream->ReadShort();

mFontSize = aStream->ReadChar();
mBottomJobsClass = aStream->ReadChar();
mBottomAssetsClass = aStream->ReadChar();
mBottomLiabilitiesClass = aStream->ReadChar();
mBottomCostsClass = aStream->ReadChar();

*((UInt8*)&mBottomCostsClass + sizeof(mBottomCostsClass)) = aStream->ReadBits(3); // --Bitfield

mFutureExpansion = aStream->ReadChar();
mMoreExpansion = aStream->ReadChar();

mAFWJobSettings.nextFolderNumber = aStream->ReadLong();
mAFWJobSettings.viewMethod = aStream->ReadLong();
mAFWJobSettings.defaultIndex = aStream->ReadLong();
mAFWJobSettings.frameHeight = aStream->ReadLong();
mAFWJobSettings.scrollPosition = aStream->ReadLong();
mAFWJobSettings.frameWidth = aStream->ReadUShort();
mAFWJobSettings.sortMethod = aStream->ReadChar();
*((UInt8*)&mAFWJobSettings.sortMethod + sizeof(mAFWJobSettings.sortMethod)) = aStream->ReadBits(2); // --Bitfield

mAFWAssetSettings.nextFolderNumber = aStream->ReadLong();
mAFWAssetSettings.viewMethod = aStream->ReadLong();
mAFWAssetSettings.defaultIndex = aStream->ReadLong();
mAFWAssetSettings.frameHeight = aStream->ReadLong();
mAFWAssetSettings.scrollPosition = aStream->ReadLong();
mAFWAssetSettings.frameWidth = aStream->ReadUShort();
mAFWAssetSettings.sortMethod = aStream->ReadChar();
*((UInt8*)&mAFWAssetSettings.sortMethod + sizeof(mAFWAssetSettings.sortMethod)) = aStream->ReadBits(2); // --Bitfield

mAFWLiabilitySettings.nextFolderNumber = aStream->ReadLong();
mAFWLiabilitySettings.viewMethod = aStream->ReadLong();
mAFWLiabilitySettings.defaultIndex = aStream->ReadLong();
mAFWLiabilitySettings.frameHeight = aStream->ReadLong();
mAFWLiabilitySettings.scrollPosition = aStream->ReadLong();
mAFWLiabilitySettings.frameWidth = aStream->ReadUShort();
mAFWLiabilitySettings.sortMethod = aStream->ReadChar();
*((UInt8*)&mAFWLiabilitySettings.sortMethod + sizeof(mAFWLiabilitySettings.sortMethod)) = aStream->ReadBits(2); // --Bitfield

mAFWCostSettings.nextFolderNumber = aStream->ReadLong();
mAFWCostSettings.viewMethod = aStream->ReadLong();
mAFWCostSettings.defaultIndex = aStream->ReadLong();
mAFWCostSettings.frameHeight = aStream->ReadLong();
mAFWCostSettings.scrollPosition = aStream->ReadLong();
mAFWCostSettings.frameWidth = aStream->ReadUShort();
mAFWCostSettings.sortMethod = aStream->ReadChar();
*((UInt8*)&mAFWCostSettings.sortMethod + sizeof(mAFWCostSettings.sortMethod)) = aStream->ReadBits(2); // --Bitfield

mEndSafetyTag = aStream->ReadEndSafetyTag(this);

if (!IsValidEndTag(mEndSafetyTag)) // TCS 9/8/02
ReportDamagedObject(GetDBClassID(), GetDBID());
}/*********************************************************************************

WriteObject

write the persistent object's data to a stream

*********************************************************************************/
void CChartOfAccountPreferences::WriteObject(CNeoStream *aStream, const TagType aTag)
{
TCS_FailNILMsg(aStream, TCS_GetErrString(errID_BadStream));

// make sure we have valid data to write TCS 9/8/02
if (!IsValidEndTag(mEndSafetyTag))
{
ReportDamagedObject(GetDBClassID(), GetDBID());
mEndSafetyTag = tag_endsafetytag; // TCS 11/26/02
}

CNeoDebugExport checker(aStream, this, cCheckTooSmall);
THE_SUPERCLASS::WriteObject(aStream, aTag);

WriteFolderArrayToStream(aStream, mAFWFolderArray, cHasSafetyTag); // TCS 6/23/02
WriteIconOrderArrayToStream(aStream, mAFWJobIconArray, cHasSafetyTag); // TCS 6/23/02
WriteIconOrderArrayToStream(aStream, mAFWAssetIconArray, cHasSafetyTag); // TCS 6/23/02
WriteIconOrderArrayToStream(aStream, mAFWLiabilityIconArray, cHasSafetyTag); // TCS 6/23/02
WriteIconOrderArrayToStream(aStream, mAFWCostIconArray, cHasSafetyTag); // TCS 6/23/02

/// aStream->WriteChunk(&mBottomJobs, cFileLength);

aStream->WriteID(mBottomJobs); // mfs_sa rev 20feb2k3
aStream->WriteID(mBottomAssets);
aStream->WriteID(mBottomLiabilities);
aStream->WriteID(mBottomCosts);

aStream->WriteShort(mFont);

aStream->WriteChar(mFontSize);
aStream->WriteChar(mBottomJobsClass);
aStream->WriteChar(mBottomAssetsClass);
aStream->WriteChar(mBottomLiabilitiesClass);
aStream->WriteChar(mBottomCostsClass);

aStream->WriteChar(*((UInt8*)&mBottomCostsClass + sizeof(mBottomCostsClass))); // --Bitfield

aStream->WriteChar(mFutureExpansion);
aStream->WriteChar(mMoreExpansion);

aStream->WriteLong(mAFWJobSettings.nextFolderNumber);
aStream->WriteLong(mAFWJobSettings.viewMethod);
aStream->WriteLong(mAFWJobSettings.defaultIndex);
aStream->WriteLong(mAFWJobSettings.frameHeight);
aStream->WriteLong(mAFWJobSettings.scrollPosition);
aStream->WriteUShort(mAFWJobSettings.frameWidth);
aStream->WriteChar(mAFWJobSettings.sortMethod);
aStream->WriteChar(*((UInt8*)&mAFWJobSettings.sortMethod + sizeof(mAFWJobSettings.sortMethod))); // --Bitfield

aStream->WriteLong(mAFWAssetSettings.nextFolderNumber);
aStream->WriteLong(mAFWAssetSettings.viewMethod);
aStream->WriteLong(mAFWAssetSettings.defaultIndex);
aStream->WriteLong(mAFWAssetSettings.frameHeight);
aStream->WriteLong(mAFWAssetSettings.scrollPosition);
aStream->WriteUShort(mAFWAssetSettings.frameWidth);
aStream->WriteChar(mAFWAssetSettings.sortMethod);
aStream->WriteChar(*((UInt8*)&mAFWAssetSettings.sortMethod + sizeof(mAFWAssetSettings.sortMethod))); // --Bitfield

aStream->WriteLong(mAFWLiabilitySettings.nextFolderNumber);
aStream->WriteLong(mAFWLiabilitySettings.viewMethod);
aStream->WriteLong(mAFWLiabilitySettings.defaultIndex);
aStream->WriteLong(mAFWLiabilitySettings.frameHeight);
aStream->WriteLong(mAFWLiabilitySettings.scrollPosition);
aStream->WriteUShort(mAFWLiabilitySettings.frameWidth);
aStream->WriteChar(mAFWLiabilitySettings.sortMethod);
aStream->WriteChar(*((UInt8*)&mAFWLiabilitySettings.sortMethod + sizeof(mAFWLiabilitySettings.sortMethod))); // --Bitfield

aStream->WriteLong(mAFWCostSettings.nextFolderNumber);
aStream->WriteLong(mAFWCostSettings.viewMethod);
aStream->WriteLong(mAFWCostSettings.defaultIndex);
aStream->WriteLong(mAFWCostSettings.frameHeight);
aStream->WriteLong(mAFWCostSettings.scrollPosition);
aStream->WriteUShort(mAFWCostSettings.frameWidth);
aStream->WriteChar(mAFWCostSettings.sortMethod);
aStream->WriteChar(*((UInt8*)&mAFWCostSettings.sortMethod + sizeof(mAFWCostSettings.sortMethod))); // --Bitfield

aStream->WriteEndSafetyTag(mEndSafetyTag, this);

}
#if CAN_USE_MARK
#pragma mark -
#endif
/*********************************************************************************

CanImportEnum TCS 5/29/00

is the given imported value OK? Some menus are built on the fly so we can't
check against them

*********************************************************************************/
Boolean CChartOfAccountPreferences::CanImportEnum(const TagType tag, const SInt32 value) const
{
switch (tag)
{
case tag_font:
case tag_fontsize:
return true;
break;

default:
break;
}
// if we got this far, the superclass can handle it
return THE_SUPERCLASS::CanImportEnum(tag, value);
}
/*********************************************************************************

GetAFWColInfo TCS 6/24/02

fetch settings for the given chart of accounts column

*********************************************************************************/
SAFWColInfo CChartOfAccountPreferences::GetAFWColInfo(const SInt32 colID) const
{
switch (colID)
{
case cJobListPaneID:
return mAFWJobSettings;
break;

case cAssetListPaneID:
return mAFWAssetSettings;
break;

case cLiabilityListPaneID:
return mAFWLiabilitySettings;
break;

case cCostListPaneID:
return mAFWCostSettings;
break;

default:
TCS_DebugAlert("Oops, bad case in CChartOfAccountPreferences::GetAFWColInfo!");
return mAFWCostSettings;
break;
}
}
/*********************************************************************************

SetAFWColInfo TCS 6/24/02

store settings for the given chart of accounts column

*********************************************************************************/
void CChartOfAccountPreferences::SetAFWColInfo(const SInt32 colID,
const SAFWColInfo &inInfo)
{
switch (colID)
{
case cJobListPaneID:
mAFWJobSettings = inInfo;
break;

case cAssetListPaneID:
mAFWAssetSettings = inInfo;
break;

case cLiabilityListPaneID:
mAFWLiabilitySettings = inInfo;
break;

case cCostListPaneID:
mAFWCostSettings = inInfo;
break;

default:
TCS_DebugAlert("Oops, bad case in CChartOfAccountPreferences::GetAFWColInfo!");
break;
}
}
#if CAN_USE_MARK
#pragma mark -
#endif
/*********************************************************************************

GetIconOrderArray TCS 6/24/02

fetch an array of account and icon ids, using the custom order that is
stored here.
*********************************************************************************/
void CChartOfAccountPreferences::FillIconOrderArray(const DBid colID, TIconOrderArray &orderArray) const
{
switch (colID)
{
case cJobListPaneID:
case cJobIconPaneID:
orderArray = mAFWJobIconArray;
break;

case cAssetListPaneID:
case cAssetIconPaneID:
orderArray = mAFWAssetIconArray;
break;

case cLiabilityListPaneID:
case cLiabilityIconPaneID:
orderArray = mAFWLiabilityIconArray;
break;

case cCostListPaneID:
case cCostIconPaneID:
orderArray = mAFWCostIconArray;
break;

default:
TCS_DebugAlert("Oops, bad case in CChartOfAccountPreferences::FillIconArray!");
break;
}
}
/*********************************************************************************

SortIconArray TCS 8/2/02

sort an array of icon pointers from the chart of accounts. We put them into the
stored custom order. Any extra icons go at the end

*********************************************************************************/
void CChartOfAccountPreferences::SortIconArray(const PaneIDT colID, TArray<LPane*> &iconArray,
const Boolean restorePriorSort)
{
CAFWIcon *icon = nil;

switch (colID)
{
case cJobListPaneID:
case cJobIconPaneID:
SortIconArray(iconArray, mAFWJobIconArray, restorePriorSort);
break;

case cAssetListPaneID:
case cAssetIconPaneID:
SortIconArray(iconArray, mAFWAssetIconArray, restorePriorSort);
break;

case cLiabilityListPaneID:
case cLiabilityIconPaneID:
SortIconArray(iconArray, mAFWLiabilityIconArray, restorePriorSort);
break;

case cCostListPaneID:
case cCostIconPaneID:
SortIconArray(iconArray, mAFWCostIconArray, restorePriorSort);
break;
}
}
/*********************************************************************************

SortIconArray TCS 8/2/02

sort an array of icon pointers from the chart of accounts. We put them into the
stored custom order. Any extra icons go at the end

*********************************************************************************/
void CChartOfAccountPreferences::SortIconArray(TArray<LPane*> &iconArray, TIconOrderArray &orderArray,
const Boolean restorePriorSort)
{
if (orderArray.GetCount() == 0 || !restorePriorSort)
{
SaveIconOrder(iconArray, orderArray);
}
else
{
// if we already have a stored order, then arrange the
// panes in that order
TArray<LPane*> *tempArray = NEW TArray<LPane*>;
TCS_FailNILMsg(tempArray, TCS_GetErrString(errID_BadArray));

TCS_TRY
{
TArrayIterator<LPane*> iconIterator (iconArray);
CAFWIcon *icon = nil;
LPane *pane = nil;

TIconOrderArrayIterator iterator (orderArray);
SIconOrderInfo info;

// go through our stored order, and fill in icons
while (iterator.Next(info))
{
iconIterator.ResetTo(LArrayIterator::from_Start);

// fetch the icon
while (iconIterator.Next(pane))
{
TCS_TRY // TCS 12/13/03
{
icon = TCS_SAFE_CAST(pane, CAFWIcon); // TCS tidy 12/13/03
TCS_FailNILMsg(icon, TCS_GetErrString(errID_BadIcon));

if (icon->GetAccountClassID() == info.classID &&
icon->GetAccountID() == info.accountID)
{
tempArray->InsertItemsAt(1, LArray::index_Last, icon);
iconArray.RemoveItemsAt(1, iconIterator.GetCurrentIndex());
}
}
TCS_CATCH {} // continue even if a bad icon
}
}

// append any remaining icons
iconIterator.ResetTo(LArrayIterator::from_Start);
while (iconIterator.Next(pane))
{
tempArray->InsertItemsAt(1, LArray::index_Last, pane);
}

iconArray = *tempArray;
}
TCS_CATCH {}

TCS_Forget(tempArray);
}
}
/*********************************************************************************

SaveIconOrder TCS 8/6/02

save the order of a list of icons

*********************************************************************************/
void CChartOfAccountPreferences::SaveIconOrder(const PaneIDT colID, const TArray<LPane*> &iconArray)
{
CAFWIcon *icon = nil;

switch (colID)
{
case cJobListPaneID:
case cJobIconPaneID:
SaveIconOrder(iconArray, mAFWJobIconArray);
break;

case cAssetListPaneID:
case cAssetIconPaneID:
SaveIconOrder(iconArray, mAFWAssetIconArray);
break;

case cLiabilityListPaneID:
case cLiabilityIconPaneID:
SaveIconOrder(iconArray, mAFWLiabilityIconArray);
break;

case cCostListPaneID:
case cCostIconPaneID:
SaveIconOrder(iconArray, mAFWCostIconArray);
break;
}
}
/*********************************************************************************

SaveIconOrder TCS 8/2/02

save the order of a list of icons

*********************************************************************************/
void CChartOfAccountPreferences::SaveIconOrder(const TArray<LPane*> &iconArray,
TIconOrderArray &orderArray)
{
// if this is the first time custom sort is called, store the
// current order
TArrayIterator<LPane*> iterator(iconArray);
CAFWIcon *icon = nil;
LPane *pane = nil;
SIconOrderInfo info;
CParentBranch *parent;

DB_ObjectTempRemover remover (this); // TCS 8/26/03

if (remover.WasRemoved())
{
orderArray.RemoveAllItems();

TCS_TRY
{
while (iterator.Next(pane))
{
icon = TCS_SAFE_CAST(pane, CAFWIcon);
if (icon)
{
info.accountID = icon->GetAccountID();
info.classID = icon->GetAccountClassID();

parent = icon->GetParent();

if (parent)
info.folderID = parent->GetFolderID();
else
info.folderID = 0;

orderArray.Append(info);
}
}
}
TCS_CATCH
{
orderArray.RemoveAllItems();
}
}
}
#if CAN_USE_MARK
#pragma mark -
#endif
/*********************************************************************************

FillDataReport TCS 9/7/02

fill in a diagnostic table that shows data field values.

*********************************************************************************/
void CChartOfAccountPreferences::FillDataReport(CTCS_Table *table, CNeoStream *stream) const
{
TCS_FailNILMsg(table, TCS_GetErrString(errID_BadTable));
TCS_FailNILMsg(stream, TCS_GetErrString(errID_BadStream));

THE_SUPERCLASS::FillDataReport(table, stream);

FillFieldArrayRow(table, stream, "mAFWFolderArray", mAFWFolderArray);
FillFieldArrayRow(table, stream, "mAFWJobIconArray", mAFWJobIconArray);
FillFieldArrayRow(table, stream, "mAFWAssetIconArray", mAFWAssetIconArray);
FillFieldArrayRow(table, stream, "mAFWLiabilityIconArray", mAFWLiabilityIconArray);
FillFieldArrayRow(table, stream, "mAFWCostIconArray", mAFWCostIconArray);

FillFieldObjectIDRow(table, stream, tag_bottomjobs, mBottomJobs, mBottomJobsClass);
FillFieldObjectIDRow(table, stream, tag_bottomassets, mBottomAssets, mBottomAssetsClass);
FillFieldObjectIDRow(table, stream, tag_bottomliabilities, mBottomLiabilities, mBottomLiabilitiesClass);
FillFieldObjectIDRow(table, stream, tag_bottomcosts, mBottomCosts, mBottomCostsClass);

FillFieldTagRow(table, stream, tag_font, cShortSize, SInt32(mFont));

FillFieldTagRow(table, stream, tag_fontsize, cCharSize, SInt32(mFontSize));
FillFieldEnumRow(table, stream, tag_bottomjobsclass, mBottomJobsClass, MENU_CalcSources);
FillFieldEnumRow(table, stream, tag_bottomassetsclass, mBottomAssetsClass, MENU_CalcSources);
FillFieldEnumRow(table, stream, tag_bottomliabilitiesclass, mBottomLiabilitiesClass, MENU_CalcSources);
FillFieldEnumRow(table, stream, tag_bottomcostsclass, mBottomCostsClass, MENU_CalcSources);

FillFieldBitRow(table, stream, "mShowFolderLines", mShowFolderLines, true);
FillFieldBitRow(table, stream, "mDragStartsTransaction", mDragStartsTransaction);
FillFieldBitRow(table, stream, "mDoubleClickForSnapshot", mDoubleClickForSnapshot);
FillFieldStockRow(table, stream, stockID_Padding, -5, SInt32(mCofAFiller));

FillFieldStockRow(table, stream, stockID_Expansion, cCharSize, SInt32(mFutureExpansion));
FillFieldStockRow(table, stream, stockID_Expansion, cCharSize, SInt32(mMoreExpansion));

FillFieldTableRow(table, stream, "mAFWJobSettings", sizeof(SAFWColInfo), cTwoDashString);
FillFieldTableRow(table, stream, "mAFWAssetSettings", sizeof(SAFWColInfo), cTwoDashString);
FillFieldTableRow(table, stream, "mAFWLiabilitySettings", sizeof(SAFWColInfo), cTwoDashString);
FillFieldTableRow(table, stream, "mAFWCostSettings", sizeof(SAFWColInfo), cTwoDashString);

FillEndSafetyTag(table, stream, mEndSafetyTag);
}