VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfHierarchyPageLogic.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
16 #include <vrvCore/DtElementData.h>
22 #include <boost/signals2.hpp>
23 #include <vrfutil/rwColor.h>
24 #include <vlutil/vlPerformanceStats.h>
25 
26 #include <QtCore/QPoint>
27 #include <QtCore/QObject>
28 
29 #include <map>
30 #include <unordered_map>
31 #include <unordered_set>
32 
33 class QTreeWidgetItem;
34 class QModelIndex;
35 
36 namespace makVrv
37 {
38  class DtDe;
39  class DtElementIDHierarchyNode;
40 };
41 
42 namespace makVrf
43 {
44  class DtVrfHierarchyPage;
45  class DtObjectListViewItem;
46  class DtVrfGuiSimObjectManager;
47  class DtExpandCollapseButton;
48 
52  {
53  public:
56 
57  void setParentItem(DtObjectListViewItem*);
58  virtual void setForce(int) override {};
59 
60  protected:
61  DtObjectListViewItem* myParentItem;
62  };
63 
65  {
66  Q_OBJECT
67 
68  public:
70  {
71  Aerodrome = 1,
72  UserStart = 16
73  };
74 
75  public:
78  virtual ~DtVrfHierarchyPageLogic() override;
79 
80  public:
81  virtual void slot_itemSelectionChanged();
82  virtual void slot_rightClickOnItem(QPoint global);
83  virtual QTreeWidgetItem* itemForState(const DtSimObjectReference s) const;
84  virtual void expandToLevel(unsigned int i);
85  virtual void collapseToLevel(unsigned int i);
86  virtual void viewItemExpanded(QTreeWidgetItem* i);
87  virtual void viewItemCollapsed(QTreeWidgetItem* i);
88  virtual DtObjectListViewItem* itemByUUID(const DtUUID& uuid) const;
89 
90  virtual bool isForceRootNode(makVrv::DtUniqueID) const;
91  virtual bool isOrganizedRootNode(QTreeWidgetItem*) const;
92  virtual int forceForRootNode(makVrv::DtUniqueID) const;
93 
94  virtual void deparent(const QStringList&) = 0;
95  virtual void reparent(const QStringList& children, makVrv::DtUniqueID parentId) = 0;
96  virtual bool hierarchyStateFor(makVrv::DtUniqueID, makVrv::DtElementIDHierarchyState&) const = 0;
97 
99  virtual bool processHierarchyItem(makVrv::DtElementIDHierarchyNode*, bool force = false);
100 
101  virtual void setShowObjectConsoleWarning(bool b);
102  virtual bool showObjectConsoleWarningIcon() const;
103 
104  virtual void setTextFilter(const QString&);
105 
107  virtual void setShowCountsOnObjectList(bool);
108 
110  virtual void setShowEchelonIdColumn(bool);
111  virtual bool showEchelonIdColumn() const;
112  virtual QTreeWidgetItem* rootNodeForItem(DtObjectListViewItem*) const;
113  virtual QTreeWidgetItem* parentNodeForItem(DtObjectListViewItem*) const;
114 
116  virtual void activate();
117 
119  virtual int sortColumn() const;
120 
121  virtual int initialSortColumn() const;
122 
123  virtual void setDoubleClickAttachesAndCenters(bool b)
124  {
125  myDoubleClickAttachesAndCenters = b;
126  }
127 
129  {
130  return myDoubleClickAttachesAndCenters;
131  }
132 
133  virtual void setInitiallyExpand(bool);
134  bool initiallyExpand() const
135  {
136  return myInitiallyExpand;
137  }
138 
139  virtual void setGrayOutHiddenItems(bool);
140  bool grayOutHiddenItems() const
141  {
142  return myGrayOutHiddenItems;
143  }
144 
155  virtual DtObjectListViewItem* addOrganizedRootNode(const QString& name, const DtFilename& iconFile, const DtVrfSelectionFilter& filter, int index = -1,
156  const QString& beforeItem = "", bool keepUnderThisNodeIfTacticalGraphic = false);
157 
160  virtual bool removeOrganizedRootNode(const QString&);
161 
168  virtual void addOrganizedParentNode(ParentNodeContext, const DtVrfSelectionFilter& potentialParent, const DtVrfSelectionFilter& potentialChild);
169  virtual void removeOrganizedParentNode(ParentNodeContext);
171 
177  virtual bool showCountsOnObjectList() const;
178 
180  virtual bool canDisplayChildCounts() const;
182 
183  boost::signals2::signal<void (makVrv::DtUniqueID)> signal_itemRemoved;
184 
185  protected slots:
186  virtual void addToChildCount(const QModelIndex&, int, int);
187  virtual void removeFromChildCount(const QModelIndex&, int, int);
188 
189  protected:
190  virtual void enableChildCount();
191  virtual void disableChildCount();
192 
194  virtual bool handleStealthObjects() const;
195 
196  virtual void slot_gumballSettingsChanged(bool b);
197 
198  virtual void checkForInitialExpansion(DtObjectListViewItem*);
199  virtual bool passesFogOfWarFilters(DtSimObjectReference s) const;
200  virtual void scenarioClosed();
201  virtual void moveItemToNewForceNode(makVrv::DtUniqueID, int force);
202  void clearChildrenInAdvanceOfDelete(DtObjectListViewItem* item);
203 
205  virtual void entityStateChanged(makVrv::DtElementID, DtSharedVrfVrlApplicationSettings::EntityStates, bool);
206 
207  virtual void slot_onTick();
208 
211  virtual void slot_onStateViewAdded(DtSimObjectReference s);
212 
214  virtual bool addNode(makVrv::DtElementIDHierarchyNode*) const;
215 
218  virtual bool isValidState(makVrv::DtUniqueID) const;
219  virtual bool isValidState(DtSimObjectReference s) const;
220 
222  virtual void filterItems();
223 
225  virtual void filterTDLItems();
226 
227  virtual void stateViewUpdated();
228 
229  virtual void resorted();
230 
231  virtual DtVrfGuiSimObjectManager& vrfStateViewCollectionManager() const;
232 
240  virtual DtObjectListViewItem* addForceLevelRootNode(int, const DtString& forceName, bool includeUnkownForForce = false);
241 
243 
244  virtual void hookOrganizedParentToChildren();
245  virtual void onDataChanged(DtObjectListViewItem* item);
246 
247  protected:
248  virtual void forcesChanged();
249  virtual void unhandledStateView(DtSimObjectReference);
250 
251  virtual void slot_itemDoubleClicked(QTreeWidgetItem*);
252 
253  virtual void clearExpansionStateFor(DtObjectListViewItem*);
254 
255  virtual void removeNode(makVrv::DtElementID);
256  virtual bool positionNodeInHierarchy(makVrv::DtElementIDHierarchyNode*, bool force = false);
257  virtual void hookChildToParent(makVrv::DtElementIDHierarchyNode*);
258  virtual void hookParentToChildren(makVrv::DtElementIDHierarchyNode*);
260  virtual QVariant echelonId(const DtObjectListViewItem*) const;
261 
262  virtual void cleanupHierarchyItem(DtObjectListViewItem* item);
263  virtual void createdHierarchyItem(DtObjectListViewItem* item);
264 
266  virtual void deferredItemSelectionChanged();
267 
268  protected:
269  virtual bool performOperationsImmediately() const;
270  virtual void addDataFunctions(DtObjectListViewItem* item);
271  virtual void addSortingFunctions(DtObjectListViewItem* item);
272  virtual void slot_externalSelectionChanged(
273  const makVrv::DtSelectionManager::IdSet& selected,
274  const makVrv::DtSelectionManager::IdSet& deselected );
275 
276  virtual void updateCollapseButtons();
277  virtual void updateCollapseButtons(QTreeWidgetItem*);
278 
279  virtual void createCollapseButton(unsigned int);
280  virtual void expandToLevel(unsigned int level, QTreeWidgetItem* lvi);
281  virtual void collapseToLevel(unsigned int level, QTreeWidgetItem* lvi);
282 
284  virtual void hierarchyItemsModified(const makVrv::DtElementAttributeManager::EntryAttributesList&) = 0;
285  virtual short supportsAttribute() const = 0;
286 
287  virtual void hierarchyItemsRemoved(const makVrv::DtElementData::UniqueIdList&);
288  virtual void setupForceRootNodes();
289  virtual bool sortBySubordinatePosition(const DtObjectListViewItem& rhs, const DtObjectListViewItem& lhs);
290 
291  virtual void checkPendingOperations();
292  virtual void checkFogOfWar(DtObjectListViewItem*, int oldForce = -1, int newForce = -1);
293  virtual void onForceChanged(DtObjectListViewItem*, int oldForce = -1, int newForce = -1);
294  virtual void onDamageStateChanged(DtObjectListViewItem*, bool isDestroyed = false);
295  virtual void onActivatedStateChanged(DtObjectListViewItem*, bool isActivated = true);
296  virtual void onMarkingTextFilterChanged(DtObjectListViewItem*);
297  virtual void slot_extendedApplicationOptionsChanged();
298  virtual void updateRootNodeVisibility(DtObjectListViewItem*);
299 
302  virtual DtObjectListViewItem* itemFor(makVrv::DtElementIDHierarchyNode* node) const;
303 
305  virtual void itemPositioned(DtObjectListViewItem*);
306 
309  virtual void checkParentVisibility(DtObjectListViewItem*);
310 
311  virtual void restoreExpansionState(QTreeWidgetItem*, bool expanded);
312 
313  virtual void initialize();
314 
315  virtual void resetVisuals();
317  virtual void resetIconColor(DtRwColor, const std::vector<makVrv::DtUniqueID>& ids);
318 
319  virtual void slot_uuidChanged(const DtUUID& oldUUID, const DtUUID& newUUID, DtSimObjectReference);
320 
321  virtual void slot_objectVisibilityChanged(makVrv::DtUniqueID id, bool);
322 
323  virtual void addToPotentialParents(DtObjectListViewItem*);
324  virtual void removeFromPotentialParents(DtObjectListViewItem*);
325  virtual void cleanStaleOrganizedNodes();
326 
327  protected:
328  typedef std::unordered_map<makVrv::DtElementID, DtObjectListViewItem*> DtHierarchyListItemMap;
329  typedef std::unordered_map<makVrv::DtElementID, double> PendingOperationsMap;
330 
333  std::vector<DtExpandCollapseButton*> myCollapseButtonVector;
334  boost::signals2::connection myGrayIfHiddenConnection;
336  std::set<DtObjectListViewItem*> myItemsToCheckForFurtherOrgainization;
337 
345  std::set<QTreeWidgetItem*> myRootNodesForVisibilityCheck;
346  std::set<QTreeWidgetItem*> myUnitNodesForVisibilityCheck;
347 
353  boost::signals2::scoped_connection myDeferredSelectionSignalConnection;
354  boost::signals2::scoped_connection myRightClickSignalConnection;
355 
357  bool myWaitForStateAddition = false;
358 
359  std::map<DtUUID, bool> myExpandedNodes;
360  std::map<DtUUID, DtObjectListViewItem*> myItemsByUUID;
361 
363  {
364  OrganizedRootNode() : selectionFilter(nullptr), stateData(nullptr), objectListViewItem(nullptr), keepUnderThisNodeIfTacticalGraphic(false) {};
365 
366  std::unique_ptr<DtVrfSelectionFilter> selectionFilter;
367  std::shared_ptr<DtGuiLocalObject> stateData;
371  };
372 
373  typedef std::vector<std::shared_ptr<OrganizedRootNode>> OrganizationOrder;
375 
376  typedef std::map<makVrv::DtUniqueID, std::shared_ptr<OrganizedRootNode>> OrganizedRootNodes;
378 
379  typedef std::map<int, std::shared_ptr<OrganizedRootNode>> ForceRootNodes;
381 
383  {
384  OrganizedParentNode() : parentFilter(nullptr), childFilter(nullptr) {};
385  virtual ~OrganizedParentNode();
386 
387  std::shared_ptr<DtVrfSelectionFilter> parentFilter;
388  std::shared_ptr<DtVrfSelectionFilter> childFilter;
389  std::set<DtObjectListViewItem*> parentNodes;
390  };
391 
392  typedef std::map<ParentNodeContext, OrganizedParentNode> OrganizedParentNodes;
394 
395  std::map<makVrv::DtUniqueID, makVrv::DtSignalConnectionManager*> myRateChanges;
396 
398 
399  QString myTextFilter;
400 
404  int myLastPendingOperationsSize = 0;
405  };
406 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
OrganizedParentNodes myOrganizedParentNodes
Definition: vrfHierarchyPageLogic.h:393
std::vector< std::shared_ptr< OrganizedRootNode > > OrganizationOrder
Definition: vrfHierarchyPageLogic.h:373
DtObjectListViewItem * objectListViewItem
Definition: vrfHierarchyPageLogic.h:368
OrganizedParentNode()
Definition: vrfHierarchyPageLogic.h:384
std::set< QTreeWidgetItem * > myUnitNodesForVisibilityCheck
Definition: vrfHierarchyPageLogic.h:346
class DtVrfSelectionFilter
Definition: vrfSelectionFilters.h:28
std::map< int, std::shared_ptr< OrganizedRootNode > > ForceRootNodes
Definition: vrfHierarchyPageLogic.h:379
PendingOperationsMap myPendingOperations
Definition: vrfHierarchyPageLogic.h:351
std::shared_ptr< DtVrfSelectionFilter > parentFilter
Definition: vrfHierarchyPageLogic.h:387
bool myShowEchelonIdColumn
Definition: vrfHierarchyPageLogic.h:339
boost::signals2::scoped_connection myDeferredSelectionSignalConnection
Definition: vrfHierarchyPageLogic.h:353
std::map< makVrv::DtUniqueID, std::shared_ptr< OrganizedRootNode > > OrganizedRootNodes
Definition: vrfHierarchyPageLogic.h:376
int myDeferredSelectionCounter
Definition: vrfHierarchyPageLogic.h:403
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
bool myNeedsResort
Definition: vrfHierarchyPageLogic.h:343
OrganizationOrder myOrganizationOrder
Definition: vrfHierarchyPageLogic.h:374
std::map< makVrv::DtUniqueID, makVrv::DtSignalConnectionManager * > myRateChanges
Definition: vrfHierarchyPageLogic.h:395
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
Contains makVrv:DtSelectionManager class.
Definition: vrfHierarchyPageLogic.h:64
DtSimObjectReference stateView
Definition: vrfHierarchyPageLogic.h:369
bool myShowObjectConsoleWarningIcon
Definition: vrfHierarchyPageLogic.h:356
bool myFirstTick
Definition: vrfHierarchyPageLogic.h:340
Contains makVrv::DtElementData class.
ParentNodeContext
Definition: vrfHierarchyPageLogic.h:69
std::set< DtObjectListViewItem * > parentNodes
Definition: vrfHierarchyPageLogic.h:389
Definition: objectSettingsManager.h:50
DtVrfGuiSimObjectManager * myVrfStateViewCollectionManager
Definition: vrfHierarchyPageLogic.h:397
OrganizedRootNodes myOrganizedRootNodes
Definition: vrfHierarchyPageLogic.h:377
The DtElementIDHierarchyState class contains information about the element and its place in the eleme...
Definition: DtElementIDHierarchyState.h:20
bool myUseForceRootOrganization
Default is false. Before initialization set to true in order to use force root nodes for organization...
Definition: vrfHierarchyPageLogic.h:350
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
std::shared_ptr< DtGuiLocalObject > stateData
Definition: vrfHierarchyPageLogic.h:367
bool initiallyExpand() const
Definition: vrfHierarchyPageLogic.h:134
makVrv::DtDe & myDe
Definition: vrfHierarchyPageLogic.h:331
Definition: vrfHierarchyPageLogic.h:362
std::set< DtObjectListViewItem * > myItemsToCheckForFurtherOrgainization
Definition: vrfHierarchyPageLogic.h:336
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfHierarchyPageLogic.h:352
Contains makVrf:DtSharedVrfVrlApplicationSettings class. This class will share settings between the d...
Reader-Writer color specified by red, green, blue components.
Definition: rwColor.h:19
boost::signals2::scoped_connection myRightClickSignalConnection
Definition: vrfHierarchyPageLogic.h:354
std::map< DtUUID, DtObjectListViewItem * > myItemsByUUID
Definition: vrfHierarchyPageLogic.h:360
DtVrfHierarchyPage * myInterface
Definition: vrfHierarchyPageLogic.h:332
Contains makVrv::DtElementIDHierarchy class. This is an arbitrary hierarchy class that will allow hie...
The DtVrfChildToParentSelectionFilter specialized filter that must be used as a child filter when org...
Definition: vrfHierarchyPageLogic.h:51
Definition: vrfHierarchyPage.h:111
std::map< DtUUID, bool > myExpandedNodes
Definition: vrfHierarchyPageLogic.h:359
std::vector< EntryAttributes > EntryAttributesList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:44
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
The DtElementIDHierarchyNode class will contain information about an element, its children and its pa...
Definition: DtElementIDHierarchy.h:33
bool myHideForceLevelNodesWhenNoChildren
Definition: vrfHierarchyPageLogic.h:344
virtual void setForce(int) override
Definition: vrfHierarchyPageLogic.h:58
bool myUpdateCollapseButtons
Definition: vrfHierarchyPageLogic.h:338
EntityStates
Definition: sharedVrfVrlApplicationSettings.h:30
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
boost::signals2::connection myGrayIfHiddenConnection
Definition: vrfHierarchyPageLogic.h:334
virtual void setDoubleClickAttachesAndCenters(bool b)
Definition: vrfHierarchyPageLogic.h:123
Base class to provide boost signal/slot management.
std::set< QTreeWidgetItem * > myRootNodesForVisibilityCheck
Definition: vrfHierarchyPageLogic.h:345
The DtVrfGuiSimObjectManager class is a wrapper around the DtStateDataManager created in the network ...
Definition: vrfGuiSimObjectManager.h:36
std::vector< DtExpandCollapseButton * > myCollapseButtonVector
Definition: vrfHierarchyPageLogic.h:333
int myLastForceType
Definition: vrfHierarchyPageLogic.h:402
bool keepUnderThisNodeIfTacticalGraphic
Definition: vrfHierarchyPageLogic.h:370
std::vector< DtElementID > UniqueIdList
Public Type Definitions.
Definition: DtElementData.h:49
bool myGrayOutHiddenItems
Definition: vrfHierarchyPageLogic.h:401
DtHierarchyListItemMap myItems
Definition: vrfHierarchyPageLogic.h:335
Contains the DtElementAttributeManager class declaration.
std::map< ParentNodeContext, OrganizedParentNode > OrganizedParentNodes
Definition: vrfHierarchyPageLogic.h:392
ForceRootNodes myForceRootNodes
Definition: vrfHierarchyPageLogic.h:380
Definition: vrfHierarchyPageLogic.h:382
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
QString myTextFilter
Definition: vrfHierarchyPageLogic.h:399
boost::signals2::signal< void(makVrv::DtUniqueID)> signal_itemRemoved
Definition: vrfHierarchyPageLogic.h:183
std::unordered_map< makVrv::DtElementID, DtObjectListViewItem * > DtHierarchyListItemMap
Definition: vrfHierarchyPageLogic.h:328
std::shared_ptr< DtVrfSelectionFilter > childFilter
Definition: vrfHierarchyPageLogic.h:388
This tree widget item can be used in any tree that wants to display an icon next to the name of an ob...
Definition: objectListViewItem.h:45
bool myDoubleClickAttachesAndCenters
Definition: vrfHierarchyPageLogic.h:342
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
bool doubleClickAttachesAndCenters() const
Definition: vrfHierarchyPageLogic.h:128
std::unordered_map< makVrv::DtElementID, double > PendingOperationsMap
Definition: vrfHierarchyPageLogic.h:329
bool grayOutHiddenItems() const
Definition: vrfHierarchyPageLogic.h:140
bool myInitiallyExpand
Definition: vrfHierarchyPageLogic.h:341

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)