![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrfHierarchyPageLogic.h,v $ $Revision: 1.2 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #pragma once 00015 00016 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00017 #include <vrfGuiCoreQt/DtVrfObjectListViewItem.h> 00018 #include <vrvCore/DtElementIDHierarchy.h> 00019 #include <vrvCore/DtElementData.h> 00020 #include <vrvCore/DtSelectionManager.h> 00021 00022 #include <QtCore/QPoint> 00023 00024 #include <map> 00025 00026 class QTreeWidgetItem; 00027 00028 namespace makVrv 00029 { 00030 class DtDe; 00031 class DtElementIDHierarchyNode; 00032 }; 00033 00034 namespace makVrf 00035 { 00036 class DtVrfHierarchyPage; 00037 class DtVrfObjectListViewItem; 00038 class DtExpandCollapseButton; 00039 00040 class DT_DLL_VRFGUICOREQT DtVrfHierarchyPageLogic 00041 { 00042 public: 00044 DtVrfHierarchyPageLogic( makVrv::DtDe& de, DtVrfHierarchyPage* iface ); 00045 virtual ~DtVrfHierarchyPageLogic(); 00046 00047 public: 00048 virtual void slot_itemSelectionChanged(); 00049 virtual void slot_rightClickOnItem(QPoint global); 00050 virtual QTreeWidgetItem* itemForState(const DtVrfObjectListViewItem::DtVrfObjectState s) const; 00051 virtual void expandToLevel(unsigned int i); 00052 virtual void collapseToLevel(unsigned int i); 00053 virtual void viewItemExpanded(QTreeWidgetItem* i); 00054 virtual void viewItemCollapsed(QTreeWidgetItem* i); 00055 00056 virtual void deparent(const QStringList&) = 0; 00057 virtual void reparent(const QStringList& children, makVrv::DtUniqueID parentId) = 0; 00058 00060 virtual void processHierarchyItem(makVrv::DtElementIDHierarchyNode*); 00061 00062 protected: 00063 00064 virtual void slot_onTick(makVrv::DtDe&); 00065 00068 virtual void slot_onStateViewAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& s); 00069 00071 virtual bool addNode(makVrv::DtElementIDHierarchyNode*) const; 00072 00073 protected: 00074 virtual void removeNode(makVrv::DtElementID); 00075 virtual void positionNodeInHierarchy(makVrv::DtElementIDHierarchyNode*); 00076 virtual void hookChildToParent(makVrv::DtElementIDHierarchyNode*); 00077 virtual void hookParentToChildren(makVrv::DtElementIDHierarchyNode*); 00078 virtual DtVrfObjectListViewItem* createItemFor(makVrv::DtElementIDHierarchyNode*); 00079 virtual QVariant echelonId(const DtVrfObjectListViewItem*) const; 00080 00081 virtual bool sortByEchelonId(const DtVrfObjectListViewItem& rhs, const DtVrfObjectListViewItem& lhs); 00082 virtual int getDesignator(const std::string& echelon) const; 00083 00084 protected: 00085 virtual void addDataFunctions(DtVrfObjectListViewItem* item); 00086 virtual void addSortingFunctions(DtVrfObjectListViewItem* item); 00087 virtual void slot_externalSelectionChanged( 00088 const makVrv::DtSelectionManager::IdSet& selected, 00089 const makVrv::DtSelectionManager::IdSet& deselected ); 00090 00091 virtual void updateCollapseButtons(); 00092 virtual void updateCollapseButtons(QTreeWidgetItem*); 00093 00094 virtual void createCollapseButton(unsigned int); 00095 virtual void expandToLevel(unsigned int level, QTreeWidgetItem* lvi); 00096 virtual void collapseToLevel(unsigned int level, QTreeWidgetItem* lvi); 00097 00099 virtual void hierarchyItemsModified(const makVrv::DtElementData::EntryAttributesList&) = 0; 00100 00101 virtual void hierarchyItemsRemoved(const makVrv::DtElementData::UniqueIdList&); 00102 00103 protected: 00104 typedef std::map<makVrv::DtElementID, DtVrfObjectListViewItem*> DtHierarchyListItemMap; 00105 typedef std::map<makVrv::DtUniqueID, DtVrfObjectListViewItem*> DtHierarchyStateIDListItemMap; 00106 typedef std::map<makVrv::DtElementID, makVrv::DtElementIDHierarchyNode> PendingOperationsMap; 00107 00108 makVrv::DtDe& myDe; 00109 DtVrfHierarchyPage* myInterface; 00110 std::vector<DtExpandCollapseButton*> myCollapseButtonVector; 00111 00112 DtHierarchyListItemMap myItems; 00113 DtHierarchyStateIDListItemMap myStateIdMap; 00114 bool myDirty; 00115 bool myUpdateCollapseButtons; 00116 bool myShowEchelonId; 00117 bool myFirstTick; 00118 PendingOperationsMap myPendingOperations; 00119 }; 00120 }