Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

osg::QFCItem Class Reference

#include <OSGQNodeTreeView_qt.h>

Inheritance diagram for osg::QFCItem:

osg::QSceneGraphItem osg::QNodeCoreItem osg::QNodeItem List of all members.

Public Member Functions

 QFCItem (QListView *parent, const FieldContainerPtr &pFC)
 QFCItem (QListViewItem *parent, const FieldContainerPtr &pFC)
virtual ~QFCItem (void)
virtual FieldContainerPtr getFC (void) const
virtual void setup (void)
virtual void expand (void)
virtual void collapse (void)
virtual void setOpen (bool bOpen)

Static Public Member Functions

static QFCItemdcast (QListViewItem *pItem)

Protected Member Functions

UInt32 getAspect (void)

Private Types

typedef QSceneGraphItem Inherited

Private Member Functions

void addRefedContainer (SFFieldContainerPtr *pSFFCPtr)
void addRefedContainer (MFFieldContainerPtr *pMFFCPtr, FieldDescription *pFieldDesc)
void addAttachments (SFAttachmentMap *pSFAttMap)
void addParents (MFFieldContainerPtr *pMFFCPtr)

Private Attributes

FieldContainerPtr _pFC

Detailed Description

Definition at line 95 of file OSGQNodeTreeView_qt.h.


Member Typedef Documentation

typedef QSceneGraphItem osg::QFCItem::Inherited [private]
 

Reimplemented from osg::QSceneGraphItem.

Reimplemented in osg::QNodeItem, and osg::QNodeCoreItem.

Definition at line 113 of file OSGQNodeTreeView_qt.h.


Constructor & Destructor Documentation

QFCItem::QFCItem QListView *  parent,
const FieldContainerPtr pFC
 

Definition at line 135 of file OSGQNodeTreeView_qt.cpp.

References osg::AttachmentContainerPtr::dcast(), getFC(), osg::getName(), and osg::NullFC.

Referenced by addAttachments(), addParents(), and addRefedContainer().

00136     : Inherited(parent),
00137       _pFC     (pFC   )
00138 {
00139     if(getFC() != NullFC)
00140     {
00141         setText(0, QString(getFC()->getType().getCName()));
00142 
00143         if(getName(AttachmentContainerPtr::dcast(getFC())))
00144             setText(1, 
00145                     QString(getName(AttachmentContainerPtr::dcast(getFC()))));
00146         else
00147             setText(1, QString("unnamed")       );
00148     }
00149 }

QFCItem::QFCItem QListViewItem *  parent,
const FieldContainerPtr pFC
 

Definition at line 151 of file OSGQNodeTreeView_qt.cpp.

References osg::AttachmentContainerPtr::dcast(), getFC(), osg::getName(), and osg::NullFC.

00152     : Inherited(parent),
00153       _pFC     (pFC   )
00154 {
00155     if(getFC() != NullFC)
00156     {
00157         setText(0, QString(getFC()->getType().getCName()));
00158 
00159         if(getName(AttachmentContainerPtr::dcast(getFC())))
00160             setText(1, 
00161                     QString(getName(AttachmentContainerPtr::dcast(getFC()))));
00162         else
00163             setText(1, QString("unnamed")       );
00164     }
00165 }

QFCItem::~QFCItem void   )  [virtual]
 

Definition at line 167 of file OSGQNodeTreeView_qt.cpp.

00168 {
00169 }


Member Function Documentation

QFCItem * QFCItem::dcast QListViewItem *  pItem  )  [static]
 

Reimplemented from osg::QSceneGraphItem.

Reimplemented in osg::QNodeItem, and osg::QNodeCoreItem.

Definition at line 172 of file OSGQNodeTreeView_qt.cpp.

00173 {
00174     return dynamic_cast<QFCItem *>(pItem);
00175 }

FieldContainerPtr QFCItem::getFC void   )  const [virtual]
 

Implements osg::QSceneGraphItem.

Definition at line 178 of file OSGQNodeTreeView_qt.cpp.

References _pFC.

Referenced by addParents(), expand(), QFCItem(), and setup().

00179 {
00180     return _pFC;
00181 }

void QFCItem::setup void   )  [virtual]
 

Definition at line 184 of file OSGQNodeTreeView_qt.cpp.

References osg::QSceneGraphItem::getAspect(), osg::FieldContainerPtrBase::getAspectCPtr(), osg::FieldDescription::getCName(), getFC(), osg::FieldContainer::getField(), osg::FieldContainerType::getFieldDescription(), osg::FieldContainerType::getNumFieldDescs(), osg::FieldContainer::getType(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::isMFFieldContainerPtr(), osg::isSFFieldContainerPtr(), osg::NullFC, setup(), osg::MField< FieldTypeT, fieldNameSpace >::size(), and osg::stringcmp().

00185 {
00186     FieldContainer *pFCAsp = getFC().getAspectCPtr(getAspect());
00187 
00188     if(!pFCAsp)
00189         return;
00190 
00191     UInt32 uiNumFields = pFCAsp->getType().getNumFieldDescs();
00192     
00193     for(UInt32  fieldId = 1; fieldId <= uiNumFields; ++fieldId)
00194     {
00195         FieldDescription *pDesc     = 
00196             pFCAsp->getType().getFieldDescription     (fieldId);
00197         Field            *pField    = pFCAsp->getField(fieldId);
00198         
00199         if(isSFFieldContainerPtr(pField))
00200         {
00201             if(stringcmp(pDesc->getCName(), "parent" ) == 0)
00202                 continue;
00203 
00204             SFFieldContainerPtr *pSFFCPtr = 
00205                 reinterpret_cast<SFFieldContainerPtr *>(pField);
00206 
00207             if(pSFFCPtr->getValue() != NullFC)
00208             {
00209                 setExpandable(this);
00210                 break;
00211             }
00212         }
00213         else if(isMFFieldContainerPtr(pField))
00214         {
00215             MFFieldContainerPtr *pMFFCPtr =
00216                 reinterpret_cast<MFFieldContainerPtr *>(pField);
00217 
00218             if(stringcmp(pDesc->getCName(), "parents") == 0)
00219             {
00220                 if(pMFFCPtr->size() > 1)
00221                 {
00222                     setExpandable(this);
00223                     break;
00224                 }
00225             }
00226             else
00227             {
00228                 if(pMFFCPtr->size() > 0)
00229                 {
00230                     setExpandable(this);
00231                     break;
00232                 }
00233             }
00234         }
00235     }
00236 
00237     Inherited::setup();
00238 }

void QFCItem::expand void   )  [virtual]
 

Implements osg::QSceneGraphItem.

Definition at line 241 of file OSGQNodeTreeView_qt.cpp.

References addAttachments(), addParents(), addRefedContainer(), osg::endLog(), osg::QSceneGraphItem::getAspect(), osg::FieldContainerPtrBase::getAspectCPtr(), osg::FieldDescription::getCName(), getFC(), osg::FieldContainer::getField(), osg::FieldContainerType::getFieldDescription(), osg::FieldContainerType::getNumFieldDescs(), osg::FieldContainer::getType(), osg::isMFFieldContainerPtr(), osg::isSFFieldContainerPtr(), PNOTICE, and osg::stringcmp().

00242 {
00243     if(childCount() != 0)
00244         return;
00245 
00246     FieldContainer *pFCAsp = getFC().getAspectCPtr(getAspect());
00247 
00248     if(!pFCAsp)
00249         return;
00250 
00251     FieldContainerType &fcType      = pFCAsp->getType();
00252     UInt32              uiNumFields = fcType.getNumFieldDescs();
00253 
00254     for(UInt32 fieldId = 1; fieldId <= uiNumFields; ++fieldId)
00255     {
00256         FieldDescription *pFieldDesc = fcType.getFieldDescription(fieldId);
00257         Field            *pField     = pFCAsp->getField          (fieldId);
00258         
00259         //add Items for all referenced containers (except parents)
00260         if(isSFFieldContainerPtr(pField))
00261         {
00262             if(stringcmp(pFieldDesc->getCName(), "parent" ) == 0)
00263                 continue;
00264 
00265             addRefedContainer(
00266                 reinterpret_cast<SFFieldContainerPtr *>(pField));
00267         }
00268         else if(isMFFieldContainerPtr(pField))
00269         {
00270             if(stringcmp(pFieldDesc->getCName(), "parents") == 0)
00271             {
00272                 addParents(
00273                     reinterpret_cast<MFFieldContainerPtr *>(pField));
00274             }
00275             else
00276             {
00277                 addRefedContainer(
00278                     reinterpret_cast<MFFieldContainerPtr *>(pField), 
00279                     pFieldDesc   );
00280             }
00281         }
00282 
00283         //add attachments
00284         if(stringcmp(pFieldDesc->getCName(), "attachments") == 0)
00285         {
00286             addAttachments(dynamic_cast<SFAttachmentMap *>(pField));
00287         }
00288     }
00289 
00290     PNOTICE << endLog;
00291 }

void QFCItem::collapse void   )  [virtual]
 

Implements osg::QSceneGraphItem.

Definition at line 294 of file OSGQNodeTreeView_qt.cpp.

00295 {
00296 }

void QFCItem::addRefedContainer SFFieldContainerPtr pSFFCPtr  )  [private]
 

Definition at line 299 of file OSGQNodeTreeView_qt.cpp.

References osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), osg::SField< FieldTypeT, fieldNameSpace >::getValue(), osg::NullFC, and QFCItem().

Referenced by expand().

00300 {
00301     if(!pSFFCPtr || (pSFFCPtr->getValue() == NullFC))
00302         return;
00303 
00304     if(pSFFCPtr->getValue()->getType().isNode())
00305     {
00306         new QNodeItem(this, NodePtr::dcast(pSFFCPtr->getValue()));
00307     }
00308     else if(pSFFCPtr->getValue()->getType().isNodeCore())
00309     {
00310         new QNodeCoreItem(this, NodeCorePtr::dcast(pSFFCPtr->getValue()));
00311     }
00312     else
00313     {
00314         new QFCItem(this, pSFFCPtr->getValue());
00315     }
00316 }

void QFCItem::addRefedContainer MFFieldContainerPtr pMFFCPtr,
FieldDescription pFieldDesc
[private]
 

Definition at line 319 of file OSGQNodeTreeView_qt.cpp.

References osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), osg::FieldDescription::getCName(), QFCItem(), osg::MField< FieldTypeT, fieldNameSpace >::rbegin(), and osg::MField< FieldTypeT, fieldNameSpace >::rend().

00321 {
00322     if(!pMFFCPtr || !pFieldDesc)
00323         return;
00324 
00325     MFFieldContainerPtr::reverse_iterator mfIter = pMFFCPtr->rbegin();
00326     MFFieldContainerPtr::reverse_iterator mfEnd  = pMFFCPtr->rend();
00327 
00328     QHeaderItem *pHeaderItem;
00329 
00330     if(mfIter != mfEnd)
00331         pHeaderItem = new QHeaderItem(this, pFieldDesc->getCName());
00332 
00333     for(; mfIter != mfEnd; ++mfIter)
00334     {
00335         if((*mfIter)->getType().isNode())
00336         {
00337             new QNodeItem(pHeaderItem, NodePtr::dcast(*mfIter));
00338         }
00339         else if((*mfIter)->getType().isNodeCore())
00340         {
00341             new QNodeCoreItem(pHeaderItem, NodeCorePtr::dcast(*mfIter));
00342         }
00343         else
00344         {
00345             new QFCItem(pHeaderItem, *mfIter);
00346         }
00347     }
00348 }

void QFCItem::addAttachments SFAttachmentMap pSFAttMap  )  [private]
 

Definition at line 351 of file OSGQNodeTreeView_qt.cpp.

References osg::SField< FieldTypeT, fieldNameSpace >::getValue(), and QFCItem().

Referenced by expand().

00352 {
00353     AttachmentMap::reverse_iterator mapIter = pSFAttMap->getValue().rbegin();
00354     AttachmentMap::reverse_iterator mapEnd  = pSFAttMap->getValue().rend();
00355 
00356     if(mapIter == mapEnd)
00357         return;
00358         
00359     QHeaderItem *pHeaderItem = new QHeaderItem(this, "attachments");
00360 
00361     for(; mapIter != mapEnd; ++mapIter)
00362     {
00363         new QFCItem(pHeaderItem, (*mapIter).second);
00364     }
00365 }

void QFCItem::addParents MFFieldContainerPtr pMFFCPtr  )  [private]
 

Definition at line 368 of file OSGQNodeTreeView_qt.cpp.

References osg::AttachmentContainerPtr::dcast(), osg::NodePtr::dcast(), getFC(), QFCItem(), osg::MField< FieldTypeT, fieldNameSpace >::rbegin(), osg::MField< FieldTypeT, fieldNameSpace >::rend(), and osg::MField< FieldTypeT, fieldNameSpace >::size().

Referenced by expand().

00369 {
00370     if(!pMFFCPtr)
00371         return;
00372 
00373     MFFieldContainerPtr::reverse_iterator mfIter = pMFFCPtr->rbegin();
00374     MFFieldContainerPtr::reverse_iterator mfEnd  = pMFFCPtr->rend();
00375 
00376     if((mfIter == mfEnd) || (pMFFCPtr->size() <= 1))
00377         return;
00378 
00379     QHeaderItem *pHeaderItem = new QHeaderItem(this, "parents");  
00380 
00381     for( ; mfIter != mfEnd; ++mfIter)
00382     {
00383         if(*mfIter == getFC())
00384             continue;
00385         
00386         if((*mfIter)->getType().isNode())
00387         {
00388             new QNodeItem(pHeaderItem, NodePtr::dcast(*mfIter));
00389         }
00390         else if((*mfIter)->getType().isNodeCore())
00391         {
00392             new QNodeCoreItem(pHeaderItem, NodeCorePtr::dcast(*mfIter));
00393         }
00394         else
00395         {
00396             new QFCItem(pHeaderItem, *mfIter);
00397         }
00398     }   
00399 }    

void QSceneGraphItem::setOpen bool  bOpen  )  [virtual, inherited]
 

Definition at line 107 of file OSGQNodeTreeView_qt.cpp.

References osg::QSceneGraphItem::collapse(), and osg::QSceneGraphItem::expand().

00108 {
00109     if(bOpen)
00110         expand();
00111     else
00112         collapse();
00113 
00114     Inherited::setOpen(bOpen);
00115 }

UInt32 QSceneGraphItem::getAspect void   )  [protected, inherited]
 

Definition at line 118 of file OSGQNodeTreeView_qt.cpp.

References osg::QNodeTreeView::dcast(), and osg::QNodeTreeView::getAspect().

Referenced by expand(), and setup().

00119 {
00120     if(!this->listView())
00121         return 0;
00122 
00123     QNodeTreeView *pView = QNodeTreeView::dcast(this->listView());
00124 
00125     if(!pView)
00126         return 0;
00127 
00128     return pView->getAspect();
00129 }


Member Data Documentation

FieldContainerPtr osg::QFCItem::_pFC [private]
 

Definition at line 121 of file OSGQNodeTreeView_qt.h.

Referenced by getFC().


The documentation for this class was generated from the following files:
Generated on Thu Aug 25 04:31:13 2005 for OpenSG by  doxygen 1.4.3