VR-Forces 4.0.4 Class Documentation
include/tmqt/echHierarchy.h
Go to the documentation of this file.
00001 /*********************************************************************
00002 ** Copyright (c) 2002 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *********************************************************************/
00005 /*********************************************************************
00006 ** $RCSfile: echHierarchy.h,v $ $Revision: 1.16 $ $State: Exp $
00007 *********************************************************************/
00008 
00011 
00012 #ifndef DtEchelonHierarchy_H_
00013 #define DtEchelonHierarchy_H_
00014 
00015 #include "tmqt/echHierNode.h"
00016 #include "ngutil/dtqlist.h"
00017 #include <QtCore/QHash>
00018 #include <QtCore/QVector>
00019 
00020 class DtModelDataDict;
00021 
00027 #include "tmqt/tmqtDefines.h"
00028 class DT_DLL_tmqt DtEchelonHierarchy : public QObject
00029 {
00030    Q_OBJECT
00031 public:
00032 
00034    DtEchelonHierarchy(QObject *parent = NULL);
00035 
00037    virtual ~DtEchelonHierarchy();
00038 
00040    virtual void init(const DtModelDataDict* dict);
00041 
00043    virtual DtEchelonHierarchyNode* node(const QString& strKey) const;
00044 
00047    virtual void allDecendentsOf(const DtModelKey& key, 
00048       QVector<DtModelKey>& resultList) const;
00049 
00051    virtual void allImmediateDecendentsOf(const DtModelKey& key, 
00052       QVector<DtModelKey>& resultList) const;
00053 
00056    virtual bool isSuperiorOf(const DtModelKey& superior,
00057       const DtModelKey& subordinate) const;
00058 
00059   virtual const DtPtrQList<DtEchelonHierarchyNode*>& nodeList() const;
00060 
00061    virtual const DtModelDataDict* modelDataDict() const;
00062 
00066    virtual void setAlwaysReconnectAllNodes(bool value);
00067    virtual bool alwaysReconnectAllNodes() const;
00068 
00070    virtual void tick();
00071 
00072 public:
00073 
00075    static DtEchelonHierarchy* create(QObject *parent);
00076 
00077 public slots:
00079    virtual void addModelData(const DtModelKey& key);
00081    virtual void removeModelData(const DtModelKey& key);
00084    virtual void updateModelData(const DtModelKey& key, int changed);
00085 
00088    virtual void reconnectAllNodes();
00089 
00090 signals:
00092    void nodeAdded(const DtModelKey&);
00094    void nodeAboutToBeRemoved(const DtModelKey&);
00096    void nodeReparented(const DtModelKey&);
00097 
00098 protected:
00102    virtual bool shouldBeAdded(const DtModelKey& key);
00103 
00107    virtual DtEchelonHierarchyNode* addModelNode(const DtModelKey& key);
00108 
00112    virtual void removeModelNode(const DtModelKey& key);
00113 
00117    virtual void updateModelNode(const DtModelKey& key);
00118 
00121    virtual void connectNode(DtEchelonHierarchyNode* node);
00122 
00124    virtual void reconnectNode(DtEchelonHierarchyNode* node);
00125 
00128    virtual void connectChild(DtEchelonHierarchyNode* parentNode,
00129       DtEchelonHierarchyNode* childNode);
00130 
00136    virtual void disconnectNode(DtEchelonHierarchyNode* node);
00137 
00140    virtual int calculateLevelsFromNode(DtEchelonHierarchyNode* node);
00141 
00143    virtual void calculateAllLevels();
00144 
00145 protected slots:
00150    virtual void queueNodeReparentedSignal(const DtModelKey& key);
00151 
00152 protected:
00154    virtual void sendQueuedNodeReparentedSignals();
00155 
00156 protected:
00157    QHash<DtModelKey, DtEchelonHierarchyNode*> myNodeDict;    
00158    DtPtrQList<DtEchelonHierarchyNode*> myNodeList; 
00159 
00160    const DtModelDataDict *myModelDataDict;
00161    bool myAlwaysReconnectAllNodes;
00162 
00163    QVector<DtModelKey> myNodeReparentedQueue;
00164 
00165 private:
00167    DtEchelonHierarchy(const DtEchelonHierarchy& orig);
00168 
00170    DtEchelonHierarchy& operator=(const DtEchelonHierarchy& orig);
00171 
00172 };
00173 
00174 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)