VR-Forces 5.0.3 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 
25 #include <QtCore/QPoint>
26 
27 #include <map>
28 
29 class QTreeWidgetItem;
30 
31 namespace makVrv
32 {
33  class DtDe;
34  class DtElementIDHierarchyNode;
35 };
36 
37 namespace makVrf
38 {
39  class DtVrfHierarchyPage;
40  class DtObjectListViewItem;
41  class DtVrfStateViewCollectionManager;
42  class DtExpandCollapseButton;
43 
47  {
48  public:
51 
52  void setParentItem(DtObjectListViewItem*);
53  void setForce(int) {};
54 
55  protected:
56  DtObjectListViewItem* myParentItem;
57  };
58 
60  {
61  public:
63  {
64  Aerodrome = 1,
65  UserStart = 16
66  };
67 
68  public:
71  virtual ~DtVrfHierarchyPageLogic();
72 
73  public:
74  virtual void slot_itemSelectionChanged();
75  virtual void slot_rightClickOnItem(QPoint global);
76  virtual QTreeWidgetItem* itemForState(const DtObjectListViewItem::DtVrfObjectState s) const;
77  virtual void expandToLevel(unsigned int i);
78  virtual void collapseToLevel(unsigned int i);
79  virtual void viewItemExpanded(QTreeWidgetItem* i);
80  virtual void viewItemCollapsed(QTreeWidgetItem* i);
81  virtual DtObjectListViewItem* itemByUUID(const DtUUID& uuid) const;
82 
83  virtual bool isForceRootNode(makVrv::DtUniqueID) const;
84  virtual bool isOrganizedRootNode(QTreeWidgetItem*) const;
85  virtual int forceForRootNode(makVrv::DtUniqueID) const;
86 
87  virtual void deparent(const QStringList&) = 0;
88  virtual void reparent(const QStringList& children, makVrv::DtUniqueID parentId) = 0;
89  virtual bool hierarchyStateFor(makVrv::DtUniqueID, makVrv::DtElementIDHierarchyState&) const = 0;
90 
92  virtual bool processHierarchyItem(makVrv::DtElementIDHierarchyNode*, bool force = false);
93 
94  virtual void setShowObjectConsoleWarning(bool b);
95  virtual bool showObjectConsoleWarningIcon() const;
96 
97  virtual void setTextFilter(const QString&);
98 
100  virtual void setShowEchelonIdColumn(bool);
101  virtual bool showEchelonIdColumn() const;
102  virtual QTreeWidgetItem* rootNodeForItem(DtObjectListViewItem*) const;
103  virtual QTreeWidgetItem* parentNodeForItem(DtObjectListViewItem*) const;
104 
106  virtual void activate();
107 
109  virtual int sortColumn() const;
110 
111  virtual int initialSortColumn() const;
112 
113  virtual void setDoubleClickAttachesAndCenters(bool b)
114  {
115  myDoubleClickAttachesAndCenters = b;
116  }
117 
119  {
120  return myDoubleClickAttachesAndCenters;
121  }
122 
123  virtual void setInitiallyExpand(bool);
124  bool initiallyExpand() const
125  {
126  return myInitiallyExpand;
127  }
128 
129  virtual void setGrayOutHiddenItems(bool);
130  bool grayOutHiddenItems() const
131  {
132  return myGrayOutHiddenItems;
133  }
134 
145  virtual DtObjectListViewItem* addOrganizedRootNode(const QString& name, const DtFilename& iconFile, const DtVrfSelectionFilter& filter, int index = -1,
146  const QString& beforeItem = "");
147 
150  virtual bool removeOrganizedRootNode(const QString&);
151 
158  virtual void addOrganizedParentNode(ParentNodeContext, const DtVrfSelectionFilter& potentialParent, const DtVrfSelectionFilter& potentialChild);
159  virtual void removeOrganizedParentNode(ParentNodeContext);
161 
162  boost::signals2::signal<void (makVrv::DtUniqueID)> signal_itemRemoved;
163 
164  protected:
165 
167  virtual bool handleStealthObjects() const;
168 
169  virtual void slot_gumballSettingsChanged(bool b);
170 
171  virtual void checkForInitialExpansion(DtObjectListViewItem*);
172  virtual bool passesFogOfWarFilters(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s) const;
173  virtual void scenarioClosed();
174  virtual void moveItemToNewForceNode(makVrv::DtUniqueID, int force);
176 
178  virtual void entityStateChanged(makVrv::DtElementID, DtSharedVrfVrlApplicationSettings::EntityStates, bool);
179 
180  virtual void slot_onTick();
181 
184  virtual void slot_onStateViewAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
185 
187  virtual bool addNode(makVrv::DtElementIDHierarchyNode*) const;
188 
191  virtual bool isValidState(makVrv::DtUniqueID) const;
192 
194  virtual void filterItems();
195 
197  virtual void filterTDLItems();
198 
199  virtual void stateViewUpdated();
200 
201  virtual void resorted();
202 
203  virtual DtVrfStateViewCollectionManager& vrfStateViewCollectionManager() const;
204 
212  virtual DtObjectListViewItem* addForceLevelRootNode(int, const DtString& forceName);
213 
215 
216  virtual void hookOrganizedParentToChildren();
217  virtual void onDataChanged(DtObjectListViewItem* item);
218 
219  protected:
220  virtual void forcesChanged();
221  virtual void unhandledStateView(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
222 
223  virtual void slot_itemDoubleClicked(QTreeWidgetItem*);
224 
225  virtual void clearExpansionStateFor(DtObjectListViewItem*);
226 
227  virtual void removeNode(makVrv::DtElementID);
228  virtual bool positionNodeInHierarchy(makVrv::DtElementIDHierarchyNode*, bool force = false);
229  virtual void hookChildToParent(makVrv::DtElementIDHierarchyNode*, bool forceUpdate = false);
230  virtual void hookParentToChildren(makVrv::DtElementIDHierarchyNode*, bool forceUpdate = false);
232  virtual QVariant echelonId(const DtObjectListViewItem*) const;
233  virtual void slot_stateViewAboutToBeRemoved(const makVrv::DtStateView<DtVrfObjectDataState>& s);
234 
235  virtual void cleanupHierarchyItem(DtObjectListViewItem* item);
236  virtual void createdHierarchyItem(DtObjectListViewItem* item);
237 
239  virtual void deferredItemSelectionChanged();
240 
241  protected:
242  virtual void addDataFunctions(DtObjectListViewItem* item);
243  virtual void addSortingFunctions(DtObjectListViewItem* item);
244  virtual void slot_externalSelectionChanged(
245  const makVrv::DtSelectionManager::IdSet& selected,
246  const makVrv::DtSelectionManager::IdSet& deselected );
247 
248  virtual void updateCollapseButtons();
249  virtual void updateCollapseButtons(QTreeWidgetItem*);
250 
251  virtual void createCollapseButton(unsigned int);
252  virtual void expandToLevel(unsigned int level, QTreeWidgetItem* lvi);
253  virtual void collapseToLevel(unsigned int level, QTreeWidgetItem* lvi);
254 
256  virtual void hierarchyItemsModified(const makVrv::DtElementAttributeManager::EntryAttributesList&) = 0;
257  virtual short supportsAttribute() const = 0;
258 
259  virtual void hierarchyItemsRemoved(const makVrv::DtElementData::UniqueIdList&);
260  virtual void setupForceRootNodes();
261  virtual bool sortBySubordinatePosition(const DtObjectListViewItem& rhs, const DtObjectListViewItem& lhs);
262 
263  virtual void checkPendingOperations();
264  virtual void checkFogOfWar(DtObjectListViewItem*, int oldForce = -1, int newForce = -1);
265  virtual void onForceChanged(DtObjectListViewItem*, int oldForce = -1, int newForce = -1);
266  virtual void onDamageStateChanged(DtObjectListViewItem*, bool isDestroyed = false);
267  virtual void onActivatedStateChanged(DtObjectListViewItem*, bool isActivated = true);
268  virtual void onMarkingTextFilterChanged(DtObjectListViewItem*);
269  virtual void slot_extendedApplicationOptionsChanged();
270  virtual void updateRootNodeVisibility(DtObjectListViewItem*);
271 
272  virtual void slot_onUpdateRateChanged(makVrv::DtUniqueID id, int rate);
273  virtual void completeRateChange(makVrv::DtUniqueID id);
274 
276  virtual void itemPositioned(DtObjectListViewItem*);
277 
280  virtual void checkParentVisibility(DtObjectListViewItem*);
281 
282  virtual void restoreExpansionState(QTreeWidgetItem*, bool expanded);
283 
284  virtual void initialize();
285 
286  virtual void resetVisuals();
288  virtual void resetIconColor(DtRwColor, const std::vector<makVrv::DtUniqueID>& ids);
289 
290  virtual void slot_uuidChanged(makVrv::DtUniqueID id, const DtUUID& oldUUID, const DtUUID& newUUID);
291 
292  virtual void slot_objectVisibilityChanged(makVrv::DtUniqueID id, bool);
293 
294  virtual void addToPotentialParents(DtObjectListViewItem*);
295  virtual void removeFromPotentialParents(DtObjectListViewItem*);
296 
297  protected:
298  typedef std::map<makVrv::DtElementID, DtObjectListViewItem*> DtHierarchyListItemMap;
299  typedef std::set<makVrv::DtElementID> PendingOperationsMap;
300 
303  std::vector<DtExpandCollapseButton*> myCollapseButtonVector;
304  boost::signals2::connection myGrayIfHiddenConnection;
306  std::set<DtObjectListViewItem*> myItemsToCheckForFurtherOrgainization;
307 
315  std::set<QTreeWidgetItem*> myRootNodesForVisibilityCheck;
316 
322  boost::signals2::scoped_connection myDeferredSelectionSignalConnection;
323  boost::signals2::scoped_connection myRightClickSignalConnection;
324 
326 
327  std::map<DtUUID, bool> myExpandedNodes;
328  std::map<DtUUID, DtObjectListViewItem*> myItemsByUUID;
329 
331  {
332  OrganizedRootNode() : selectionFilter(nullptr), stateData(nullptr), uniqueID(0), objectListViewItem(nullptr) {};
333 
334  DtVrfSelectionFilter* selectionFilter;
338  };
339 
340  typedef std::vector<OrganizedRootNode> OrganizationOrder;
342 
343  typedef std::map<makVrv::DtUniqueID, OrganizedRootNode> OrganizedRootNodes;
345 
346  typedef std::map<int, OrganizedRootNode> ForceRootNodes;
348 
350  {
351  OrganizedParentNode() : parentFilter(nullptr), childFilter(nullptr) {};
352  virtual ~OrganizedParentNode();
353 
354  std::shared_ptr<DtVrfSelectionFilter> parentFilter;
355  std::shared_ptr<DtVrfSelectionFilter> childFilter;
356  std::set<DtObjectListViewItem*> parentNodes;
357  };
358 
359  typedef std::map<ParentNodeContext, OrganizedParentNode> OrganizedParentNodes;
361 
362  std::map<makVrv::DtUniqueID, makVrv::DtSignalConnectionManager*> myRateChanges;
363 
365 
366  QString myTextFilter;
367 
371  };
372 }
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
OrganizedParentNodes myOrganizedParentNodes
Definition: vrfHierarchyPageLogic.h:360
DtObjectListViewItem * objectListViewItem
Definition: vrfHierarchyPageLogic.h:337
OrganizedParentNode()
Definition: vrfHierarchyPageLogic.h:351
class DtVrfSelectionFilter
Definition: vrfSelectionFilters.h:32
PendingOperationsMap myPendingOperations
Definition: vrfHierarchyPageLogic.h:320
std::set< makVrv::DtElementID > PendingOperationsMap
Definition: vrfHierarchyPageLogic.h:299
std::shared_ptr< DtVrfSelectionFilter > parentFilter
Definition: vrfHierarchyPageLogic.h:354
bool myShowEchelonIdColumn
Definition: vrfHierarchyPageLogic.h:309
boost::signals2::scoped_connection myDeferredSelectionSignalConnection
Definition: vrfHierarchyPageLogic.h:322
makVrv::DtUniqueID uniqueID
Definition: vrfHierarchyPageLogic.h:336
DtSimpleObjectDataState * stateData
Definition: vrfHierarchyPageLogic.h:335
int myDeferredSelectionCounter
Definition: vrfHierarchyPageLogic.h:370
std::map< int, OrganizedRootNode > ForceRootNodes
Definition: vrfHierarchyPageLogic.h:346
UpdateRate
Definition: DtSimEntryUpdater.h:31
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
bool myNeedsResort
Definition: vrfHierarchyPageLogic.h:313
OrganizationOrder myOrganizationOrder
Definition: vrfHierarchyPageLogic.h:341
std::map< makVrv::DtUniqueID, makVrv::DtSignalConnectionManager * > myRateChanges
Definition: vrfHierarchyPageLogic.h:362
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:59
std::map< makVrv::DtUniqueID, OrganizedRootNode > OrganizedRootNodes
Definition: vrfHierarchyPageLogic.h:343
bool myShowObjectConsoleWarningIcon
Definition: vrfHierarchyPageLogic.h:325
bool myFirstTick
Definition: vrfHierarchyPageLogic.h:310
Contains makVrv::DtElementData class.
ParentNodeContext
Definition: vrfHierarchyPageLogic.h:62
std::set< DtObjectListViewItem * > parentNodes
Definition: vrfHierarchyPageLogic.h:356
Definition: objectSettingsManager.h:49
OrganizedRootNodes myOrganizedRootNodes
Definition: vrfHierarchyPageLogic.h:344
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:319
bool initiallyExpand() const
Definition: vrfHierarchyPageLogic.h:124
makVrv::DtDe & myDe
Definition: vrfHierarchyPageLogic.h:301
Definition: vrfHierarchyPageLogic.h:330
std::set< DtObjectListViewItem * > myItemsToCheckForFurtherOrgainization
Definition: vrfHierarchyPageLogic.h:306
makVrv::DtSignalConnectionManager myConnectionManager
Definition: vrfHierarchyPageLogic.h:321
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:323
std::map< DtUUID, DtObjectListViewItem * > myItemsByUUID
Definition: vrfHierarchyPageLogic.h:328
DtVrfHierarchyPage * myInterface
Definition: vrfHierarchyPageLogic.h:302
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:46
Definition: vrfHierarchyPage.h:110
std::map< DtUUID, bool > myExpandedNodes
Definition: vrfHierarchyPageLogic.h:327
std::vector< EntryAttributes > EntryAttributesList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:45
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:314
This class is the central point for looking up information about a particular object in the VRF GUI...
Definition: vrfStateViewCollectionManager.h:139
bool myUpdateCollapseButtons
Definition: vrfHierarchyPageLogic.h:308
std::map< makVrv::DtElementID, DtObjectListViewItem * > DtHierarchyListItemMap
Definition: vrfHierarchyPageLogic.h:298
EntityStates
Definition: sharedVrfVrlApplicationSettings.h:30
void setForce(int)
Definition: vrfHierarchyPageLogic.h:53
boost::signals2::connection myGrayIfHiddenConnection
Definition: vrfHierarchyPageLogic.h:304
virtual void setDoubleClickAttachesAndCenters(bool b)
Definition: vrfHierarchyPageLogic.h:113
Base class to provide boost signal/slot management.
Data that is used for folders in the organized object list view.
Definition: simpleObjectDataState.h:18
std::set< QTreeWidgetItem * > myRootNodesForVisibilityCheck
Definition: vrfHierarchyPageLogic.h:315
std::vector< DtExpandCollapseButton * > myCollapseButtonVector
Definition: vrfHierarchyPageLogic.h:303
int myLastForceType
Definition: vrfHierarchyPageLogic.h:369
std::vector< DtElementID > UniqueIdList
Public Type Definitions.
Definition: DtElementData.h:49
bool myGrayOutHiddenItems
Definition: vrfHierarchyPageLogic.h:368
DtHierarchyListItemMap myItems
Definition: vrfHierarchyPageLogic.h:305
Contains the DtElementAttributeManager class declaration.
std::vector< OrganizedRootNode > OrganizationOrder
Definition: vrfHierarchyPageLogic.h:340
std::map< ParentNodeContext, OrganizedParentNode > OrganizedParentNodes
Definition: vrfHierarchyPageLogic.h:359
ForceRootNodes myForceRootNodes
Definition: vrfHierarchyPageLogic.h:347
Definition: vrfHierarchyPageLogic.h:349
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:70
QString myTextFilter
Definition: vrfHierarchyPageLogic.h:366
boost::signals2::signal< void(makVrv::DtUniqueID)> signal_itemRemoved
Definition: vrfHierarchyPageLogic.h:162
DtVrfStateViewCollectionManager * myVrfStateViewCollectionManager
Definition: vrfHierarchyPageLogic.h:364
std::shared_ptr< DtVrfSelectionFilter > childFilter
Definition: vrfHierarchyPageLogic.h:355
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:52
bool myDoubleClickAttachesAndCenters
Definition: vrfHierarchyPageLogic.h:312
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
bool doubleClickAttachesAndCenters() const
Definition: vrfHierarchyPageLogic.h:118
bool grayOutHiddenItems() const
Definition: vrfHierarchyPageLogic.h:130
bool myInitiallyExpand
Definition: vrfHierarchyPageLogic.h:311

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)