void QFCItem::setup(void) { FieldContainer *pFCAsp = getFC().getAspectCPtr(getAspect()); if(!pFCAsp) return; UInt32 uiNumFields = pFCAsp->getType().getNumFieldDescs(); for(UInt32 fieldId = 1; fieldId <= uiNumFields; ++fieldId) { FieldDescription *pDesc = pFCAsp->getType().getFieldDescription (fieldId); Field *pField = pFCAsp->getField(fieldId); if(isSFFieldContainerPtr(pField)) { if(stringcmp(pDesc->getCName(), "parent" ) == 0) continue; SFFieldContainerPtr *pSFFCPtr = reinterpret_cast<SFFieldContainerPtr *>(pField); if(pSFFCPtr->getValue() != NullFC) { setExpandable(this); break; } } else if(isMFFieldContainerPtr(pField)) { MFFieldContainerPtr *pMFFCPtr = reinterpret_cast<MFFieldContainerPtr *>(pField); if(stringcmp(pDesc->getCName(), "parents") == 0) { if(pMFFCPtr->size() > 1) { setExpandable(this); break; } } else { if(pMFFCPtr->size() > 0) { setExpandable(this); break; } } } } Inherited::setup(); }
void QFCItem::expand(void) { if(childCount() != 0) return; FieldContainer *pFCAsp = getFC().getAspectCPtr(getAspect()); if(!pFCAsp) return; FieldContainerType &fcType = pFCAsp->getType(); UInt32 uiNumFields = fcType.getNumFieldDescs(); for(UInt32 fieldId = 1; fieldId <= uiNumFields; ++fieldId) { FieldDescription *pFieldDesc = fcType.getFieldDescription(fieldId); Field *pField = pFCAsp->getField (fieldId); //add Items for all referenced containers (except parents) if(isSFFieldContainerPtr(pField)) { if(stringcmp(pFieldDesc->getCName(), "parent" ) == 0) continue; addRefedContainer( reinterpret_cast<SFFieldContainerPtr *>(pField)); } else if(isMFFieldContainerPtr(pField)) { if(stringcmp(pFieldDesc->getCName(), "parents") == 0) { addParents( reinterpret_cast<MFFieldContainerPtr *>(pField)); } else { addRefedContainer( reinterpret_cast<MFFieldContainerPtr *>(pField), pFieldDesc ); } } //add attachments if(stringcmp(pFieldDesc->getCName(), "attachments") == 0) { addAttachments(dynamic_cast<SFAttachmentMap *>(pField)); } } PNOTICE << endLog; }