VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objectListViewItem.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
7 
8 #pragma once
9 
13 
14 
16 #include <vrfutil/rwUUID.h>
19 
20 #include <string>
21 
23 
24 #include <QtWidgets/QTreeWidget>
25 #include <QtCore/QVariant>
26 
27 #include <boost/function.hpp>
28 
29 namespace makVrv
30 {
31  class DtDe;
32  class DtGlobalIDHierarchyNode;
33 }
34 
35 namespace makVrf
36 {
37  class DtObjectVisibilityManager;
38 
46  {
47  public:
49  {
50  FogOfWar = 1,
51  NotInOrbat = 2,
52  NoStateView = 3,
53  NoChildren = 4,
54  TextFilter = 5
55  };
56 
57  enum Roles
58  {
59  AddedToChildCountRole = Qt::UserRole + 1022
60  };
61 
62  public:
64 
65  virtual ~DtObjectListViewItem() override;
66 
67  public:
68  virtual bool isMatchingItem(DtSimObjectReference state) const;
69  virtual bool isDestroyed() const;
70  virtual void setGrayIfHidden(bool);
71  bool grayIfHidden() const
72  {
73  return myGrayIfHidden;
74  }
75 
76  virtual QVariant data(int iCol, int iRole) const override;
77  virtual void clearIcon();
78 
79  virtual void updateHiddenState(bool iterateChildren = false);
80 
81  virtual void setStateView(DtSimObjectReference);
82 
84  {
85  myStateView.reset();
86  }
87 
88  bool isStealthObserver() const;
89  bool isInactive() const;
90 
91  virtual bool canBeAttachedTo() const;
92 
93  void setStealthType(const DtEntityType& s)
94  {
95  myStealthType = s;
96  }
97 
98  virtual bool isTDLItem() const;
99  virtual bool sortByNameNumerical(const DtObjectListViewItem&, const DtObjectListViewItem&) const;
100  virtual bool sortByEchelonId(const DtObjectListViewItem& lhs, const DtObjectListViewItem& rhs) const;
101  virtual bool sortByForce(const DtObjectListViewItem& lhs, const DtObjectListViewItem& rhs) const;
102 
104  virtual bool sortByOrbatOrder(const DtObjectListViewItem& lhs, const DtObjectListViewItem& rhs) const;
105 
106  virtual void setShowObjectConsoleWarningIcon(bool, bool refresh = true);
107  virtual void setHasMessagesAwaiting(bool, bool refresh = true);
108  virtual void setHasQuestionsAwaiting(bool, bool refresh = true);
109  virtual void setSignalOnForceChange(bool);
110  virtual void setSignalOnActivatedStateChanged(bool);
111  virtual void setSignalOnDamageStateChange(bool);
112 
113  virtual void checkTextFilter();
114 
116  virtual void checkTextFilterUpToParent();
117 
118  virtual void setShowGumballs(bool b);
119  bool showGumballs() const
120  {
121  return myShowGumball;
122  }
123 
124  virtual void setTextFilter(const QString&);
125  const QString& textFilter() const
126  {
127  return myTextFilter;
128  }
129 
130  virtual void setHidden(bool, ShowHideFlags);
131  virtual bool isHidden() const;
132  virtual bool isHiddenBy(ShowHideFlags f) const
133  {
134  return (myShowHideFlags.find(f) != myShowHideFlags.end());
135  }
136 
137  virtual bool parseNumber(const DtObjectListViewItem&, int& number, QString& name) const;
138  virtual bool parseNumber(const QString&, int& number, QString& name) const;
139 
140  virtual int force() const;
141 
142  const DtUUID& uuid() const
143  {
144  return myUUID;
145  }
146 
147  virtual void setUUID(const DtUUID&);
148  bool signalOnActivatedStateChanged() const;
149  bool signalOnForceChange() const;
150  bool signalOnDamageStateChange() const;
151 
152  const QString& markingTextWithoutNumber() const
153  {
154  return myMarkingTextWithoutNumber;
155  }
156 
157  int markingTextNumber() const
158  {
159  return myMarkingTextNumber;
160  }
161 
162  bool hasMarkingTextNumber() const
163  {
164  return myHasMarkingTextNumber;
165  }
166 
168  {
169  return myStateViewId;
170  }
171 
173  {
174  return myStateView;
175  }
176 
177  virtual std::map<std::string, std::string> extendedData() const;
178 
179  typedef boost::function<void (DtObjectListViewItem*, std::string)> DataChangedNotifyFunction;
182  virtual void notifyOnExtendedDataChanged(const std::string&, DataChangedNotifyFunction f, bool onlyOnce = true);
183 
184  void addSortingFunction(int col, const boost::function<bool (const DtObjectListViewItem& rhs, const DtObjectListViewItem& lhs)>& f)
185  {
186  mySortingFunctions[col] = f;
187  }
188 
189  void removeSortingFunction(int col)
190  {
191  DtSortingFunctionMap::iterator iter = mySortingFunctions.find(col);
192 
193  if (iter != mySortingFunctions.end())
194  {
195  mySortingFunctions.erase(iter);
196  }
197  }
198 
199  virtual bool blockChildCountDisplay(bool b);
200 
201  void addDataFunction(short col, short role, const boost::function<QVariant (const DtObjectListViewItem*)>& func)
202  {
203  myDataFunctionMap[makeKey(col, role)] = func;
204  }
205 
206  void removeDataFunction(short col, short role)
207  {
208  DtDataFunctionMap::iterator iter = myDataFunctionMap.find(makeKey(col, role));
209 
210  if (iter != myDataFunctionMap.end())
211  {
212  myDataFunctionMap.erase(iter);
213  }
214  }
215 
216  virtual void setBaseIcon(QString);
217  virtual void setBaseIcon(const QPixmap&);
218  const QPixmap& baseIcon() const
219  {
220  return myBaseIcon;
221  }
222 
223  virtual void setPrependToName(const QString&);
224  const QString& prependToName() const
225  {
226  return myPrependToName;
227  }
228 
229  virtual void setPrependPixmap(const QPixmap&);
230  const QPixmap& prependPixmap() const
231  {
232  return myPrependPixmap;
233  }
234 
235  virtual void enableChildCount();
236  bool childCountEnabled() const
237  {
238  return myChildCountEnabled;
239  }
240 
241  virtual void setDisplayChildCount(bool);
242  bool displayChildCount() const
243  {
244  return myDisplayChildCount;
245  }
246 
247  virtual void addToChildCount(int);
248 
249  virtual void setAppendToName(const QString&);
250  virtual QString appendToName() const;
251 
252  virtual void setAppendPixmap(const QPixmap&);
253  const QPixmap& appendPixmap() const
254  {
255  return myAppendPixmap;
256  }
257 
258  virtual void setCanBeOrganized(bool);
259  bool canBeOrganized() const
260  {
261  return myCanBeOrganized;
262  }
263 
264  virtual void setSignalOnDataUpdates(bool);
265  bool signalOnDataUpdates() const
266  {
267  return mySignalOnDataUpdates;
268  }
269 
271  {
272  return myObjectVisibilityManager;
273  }
274 
276  virtual void addNameFunction(short col);
277  virtual void removeNameFunction(short col);
278 
279  virtual void addTextColorIfHiddenFunction(short col);
280  virtual void removeTextColorIfHiddenFunction(short col);
281 
282  virtual void addToolTipFunction(short col);
283  virtual void removeToolTipFunction(short col);
284 
285  virtual void addIconFunction(short col);
286  virtual void removeIconFunction(short col);
287 
288  virtual void addIconSizeHintFunction(short col);
289  virtual void removeIconSizeHintFunction(short col);
290 
291  virtual void addIconAndGumballFunction(short col);
292  virtual void removeIconAndGumballFunction(short col);
293 
294  virtual void addIconAndGumballSizeHintFunction(short col);
295  virtual void removeIconAndGumballSizeHintFunction(short col);
296 
297  virtual bool operator<(const QTreeWidgetItem& other) const override;
298 
299  virtual bool hasGumball() const;
300 
301  virtual QString markingText() const;
302 
303  virtual void slot_stateViewAboutToBeRemoved();
304 
306  virtual void setIsOrbatEnabled(bool);
307  virtual bool isOrbatEnabled() const;
308 
309  virtual void setSortOrder(int i);
310  int sortOrder() const
311  {
312  return mySortOrder;
313  }
314 
316  virtual void setShowNotInOrbat(bool);
317  virtual bool showNotInOrbat() const;
318 
320  virtual void setOrderByOrbatOrder(bool);
321  virtual bool orderByOrbatOrder() const;
322 
323  virtual void setEditText(const QString& s);
324  virtual const QString& editText() const;
325 
326  virtual void updateOrbatState();
327  virtual bool isOrbatViewOnly() const;
328  virtual bool isCreated() const;
329  virtual bool isInOrbatOnly() const;
330  virtual QVariant iconFunction(const DtObjectListViewItem*) const;
331  virtual void setIcon(const QPixmap&);
332  virtual void setIcon(int column, const QPixmap&);
333 
334  virtual void setDisplayType(const DtEntityType&, int force);
335  virtual void clearDisplayType();
336 
338  virtual bool isInOrbatView() const;
339  virtual void updateChildCount();
340 
341  virtual QVariant laserDesignatorName(const DtObjectListViewItem*) const;
342 
343  virtual QVariant iconSizeHint(const DtObjectListViewItem*) const;
344 
345  boost::signals2::signal<void (DtObjectListViewItem*, int, int)> signal_forceChanged;
346  boost::signals2::signal<void (DtObjectListViewItem*)> signal_itemUpdated;
347  boost::signals2::signal<void (DtObjectListViewItem*)> signal_destroyed;
348  boost::signals2::signal<void (DtObjectListViewItem*)> signal_markingTextFilterChanged;
349  boost::signals2::signal<void (DtObjectListViewItem*)> signal_extendedDataChanged;
350  boost::signals2::signal<void (DtObjectListViewItem*)> signal_statePropertiesChanged;
351  boost::signals2::signal<void (DtObjectListViewItem*, bool)> signal_damageStateChanged;
352  boost::signals2::signal<void (DtObjectListViewItem*, bool)> signal_activateStateChanged;
353 
354  protected:
355  virtual void updateMarkingTextInformation();
356 
357  virtual void resetBaseIcon(QString);
358  virtual void slot_onStateViewUpdated(DtSimObjectReference s);
359  virtual std::string iconKeyString() const;
360  virtual std::string gumballKeyString() const;
361 
362  virtual bool needsIconUpdate(std::string* resultKey = 0) const;
363  virtual bool needsGumballUpdate(std::string* resultKey = 0) const;
364  virtual void slot_orbatStateChanged(makVrv::DtUniqueID, bool);
365  virtual int getDesignator(const std::string& echelon) const;
366  virtual void updateChildCount(QTreeWidgetItem*);
367 
368  protected:
369  virtual QVariant name(const DtObjectListViewItem*) const;
370 
371  virtual QVariant editRole(const DtObjectListViewItem* i) const;
372 
373  virtual QVariant gumball(const DtObjectListViewItem*) const;
374  virtual QVariant iconAndGumball(const DtObjectListViewItem*) const;
375  virtual QVariant iconAndGumballSizeHint(const DtObjectListViewItem*) const;
376  virtual void finishUpdate();
377 
378  int makeKey(short col, short role) const
379  {
380  return (col << 16) | role;
381  }
382 
383  virtual QVariant textColorForHiddenItem(const DtObjectListViewItem* item) const;
384 
385  virtual QPixmap adjustForHidden(const QPixmap&) const;
386  virtual QImage adjustForHidden(const QImage&) const;
387 
388  public:
391 
392  protected:
393  typedef std::map<int, boost::function<QVariant (const DtObjectListViewItem*)> > DtDataFunctionMap;
394  typedef std::map<int, boost::function<bool (const DtObjectListViewItem& rhs, const DtObjectListViewItem& lhs)> > DtSortingFunctionMap;
395 
397  DtEntityType myStealthType;
401  int mySortOrder = 0;
409  bool myBlockChildCountDisplay = false;
416  boost::signals2::connection myUpdateConnection;
417 
426 
427  QString myEditText;
428 
429  mutable QPixmap myIcon;
430  mutable QPixmap myGumball;
431  mutable QPixmap myPixmap;
432  mutable std::string myIconString;
433  mutable std::string myGumballString;
434 
435  std::set<ShowHideFlags> myShowHideFlags;
436 
437  DtEntityType myDisplayType;
441 
442  QString myTextFilter;
445  QString myAppendToName;
446  QPixmap myAppendPixmap;
447  QPixmap myBaseIcon;
448 
449  mutable int myRightMargin;
450 
451  double myLastTimeStatePropertiesUpdated = 0.;
454 
455  bool myHasMarkingTextNumber = false;
456  QString myMarkingText;
458  int myMarkingTextNumber = 0;
460 
461  bool myChildCountEnabled = false;
462  bool myDisplayChildCount = false;
463  int myChildCount = 0;
464 
465  typedef std::map<std::string, std::pair<DataChangedNotifyFunction, bool> > NotifyOnExtendedDataChangedMap;
467 
469  {
470  std::string objectName;
471  int forceType = -1;
472  bool isDestroyed = false;
473  bool activated = false;
474  std::map<std::string, std::string> extendedData;
475  };
476 
478  };
479 
482  {
483  public:
486 
488  virtual ~DtObjectListViewItemCreator() override;
489 
491 
492  static DtObjectListViewItemCreator& instance(makVrv::DtDe& de);
493  static void registerInstance(makVrv::DtDe& de, DtObjectListViewItemCreator*);
494 
495  protected:
497  };
498 }
const QPixmap & baseIcon() const
Definition: objectListViewItem.h:218
UUID is a unique ID wrapper class.
Definition: uuid.h:59
Registered creator for this class.
Definition: objectListViewItem.h:481
virtual bool isHiddenBy(ShowHideFlags f) const
Definition: objectListViewItem.h:132
static bool theShowUUIDForBlankName
Show &quot;Blank Name (UUID)&quot; for blanke named items. Default is true. Set to false to show no name...
Definition: objectListViewItem.h:390
QString myMarkingTextWithoutNumber
Definition: objectListViewItem.h:457
bool myShowGumball
Definition: objectListViewItem.h:407
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
makVrv::DtSignalConnectionManager myIconConnections
Definition: objectListViewItem.h:413
QPixmap myBaseIcon
Definition: objectListViewItem.h:447
boost::function< void(DtObjectListViewItem *, std::string)> DataChangedNotifyFunction
Definition: objectListViewItem.h:179
void setStealthType(const DtEntityType &s)
Definition: objectListViewItem.h:93
boost::signals2::signal< void(DtObjectListViewItem *)> signal_statePropertiesChanged
Definition: objectListViewItem.h:350
bool myUseDisplayType
Definition: objectListViewItem.h:439
makVrv::DtUniqueID myStateViewId
Definition: objectListViewItem.h:399
QString myMarkingText
Definition: objectListViewItem.h:456
NotifyOnExtendedDataChangedMap myNotifyOnExtendedDataChangedMap
Definition: objectListViewItem.h:466
int myRightMargin
Definition: objectListViewItem.h:449
int makeKey(short col, short role) const
Definition: objectListViewItem.h:378
bool mySignalOnDataUpdates
Definition: objectListViewItem.h:453
std::string myIconString
Definition: objectListViewItem.h:432
DtObjectVisibilityManager & objectVisibilityManager() const
Definition: objectListViewItem.h:270
std::map< std::string, std::pair< DataChangedNotifyFunction, bool > > NotifyOnExtendedDataChangedMap
Definition: objectListViewItem.h:465
Contains the DtUUID class declaration.
int sortOrder() const
Definition: objectListViewItem.h:310
boost::signals2::signal< void(DtObjectListViewItem *)> signal_markingTextFilterChanged
Definition: objectListViewItem.h:348
boost::signals2::signal< void(DtObjectListViewItem *, int, int)> signal_forceChanged
Definition: objectListViewItem.h:345
const QPixmap & appendPixmap() const
Definition: objectListViewItem.h:253
std::map< int, boost::function< bool(const DtObjectListViewItem &rhs, const DtObjectListViewItem &lhs)> > DtSortingFunctionMap
Definition: objectListViewItem.h:394
bool grayIfHidden() const
Definition: objectListViewItem.h:71
bool myIsInOrbatView
Definition: objectListViewItem.h:423
std::map< std::string, std::string > extendedData
Definition: objectListViewItem.h:474
std::string objectName
Definition: objectListViewItem.h:470
bool mySignalOnDamageStateChanged
Definition: objectListViewItem.h:404
Definition: objectVisibilityManager.h:32
boost::signals2::signal< void(DtObjectListViewItem *, bool)> signal_damageStateChanged
Definition: objectListViewItem.h:351
bool hasMarkingTextNumber() const
Definition: objectListViewItem.h:162
Contains makVrv::DtVirtualBaseClass class.
bool myGrayIfHidden
Definition: objectListViewItem.h:440
int markingTextNumber() const
Definition: objectListViewItem.h:157
bool myIsOrbatEnabled
Definition: objectListViewItem.h:421
QPixmap myGumball
Definition: objectListViewItem.h:430
bool myHasQuestionsAwaiting
Definition: objectListViewItem.h:420
DtEntityType myDisplayType
Definition: objectListViewItem.h:437
QString myTextFilter
Definition: objectListViewItem.h:442
makVrv::DtDe & myDe
Definition: objectListViewItem.h:496
DtSimObjectReference myStateView
Definition: objectListViewItem.h:400
DtDataFunctionMap myDataFunctionMap
Definition: objectListViewItem.h:410
DtSimObjectReference stateView() const
Definition: objectListViewItem.h:172
bool canBeOrganized() const
Definition: objectListViewItem.h:259
const QString & markingTextWithoutNumber() const
Definition: objectListViewItem.h:152
makVrv::DtSignalConnectionManager myStateViewUpdateConnections
Definition: objectListViewItem.h:415
bool myHasGumball
Definition: objectListViewItem.h:408
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool mySignalOnForceChange
Definition: objectListViewItem.h:403
bool myIsDestroyed
Definition: objectListViewItem.h:402
bool myShowObjectConsoleWarningIcon
Definition: objectListViewItem.h:418
boost::signals2::signal< void(DtObjectListViewItem *)> signal_destroyed
Definition: objectListViewItem.h:347
std::set< ShowHideFlags > myShowHideFlags
Definition: objectListViewItem.h:435
QPixmap myPixmap
Definition: objectListViewItem.h:431
const DtUUID & uuid() const
Definition: objectListViewItem.h:142
ShowHideFlags
Definition: objectListViewItem.h:48
bool myIsSimpleObjectDataState
Definition: objectListViewItem.h:406
const QString & prependToName() const
Definition: objectListViewItem.h:224
QString myPrependToName
Definition: objectListViewItem.h:443
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:20
makVrv::DtSignalConnectionManager myOrbatConnections
Definition: objectListViewItem.h:414
QString myEditText
Definition: objectListViewItem.h:427
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
makVrv::DtDe & myDe
Definition: objectListViewItem.h:396
bool myUpdateForced
Definition: objectListViewItem.h:425
Roles
Definition: objectListViewItem.h:57
QString myAppendToName
Definition: objectListViewItem.h:445
void addDataFunction(short col, short role, const boost::function< QVariant(const DtObjectListViewItem *)> &func)
Definition: objectListViewItem.h:201
QPixmap myPrependPixmap
Definition: objectListViewItem.h:444
Base class to provide boost signal/slot management.
std::map< int, boost::function< QVariant(const DtObjectListViewItem *)> > DtDataFunctionMap
Definition: objectListViewItem.h:393
bool myHasMessagesAwaiting
Definition: objectListViewItem.h:419
boost::signals2::signal< void(DtObjectListViewItem *)> signal_extendedDataChanged
Definition: objectListViewItem.h:349
bool myShowNotInOrbat
Definition: objectListViewItem.h:422
makVrv::DtUniqueID stateViewId() const
Definition: objectListViewItem.h:167
DtObjectVisibilityManager & myObjectVisibilityManager
Definition: objectListViewItem.h:459
bool myOrderByOrbatOrder
Definition: objectListViewItem.h:424
Definition: objectListViewItem.h:468
LastObjectUpdateData myLastObjectUpdateData
Definition: objectListViewItem.h:477
QPixmap myAppendPixmap
Definition: objectListViewItem.h:446
makVrv::DtSignalConnectionManager myConnections
Definition: objectListViewItem.h:412
void removeDataFunction(short col, short role)
Definition: objectListViewItem.h:206
bool displayChildCount() const
Definition: objectListViewItem.h:242
void clearStateView()
Definition: objectListViewItem.h:83
bool signalOnDataUpdates() const
Definition: objectListViewItem.h:265
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
int myDisplayForce
Definition: objectListViewItem.h:438
bool myCanBeOrganized
Definition: objectListViewItem.h:452
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
DtSortingFunctionMap mySortingFunctions
Definition: objectListViewItem.h:411
DtUUID myUUID
Definition: objectListViewItem.h:398
bool mySignalOnActivatedStateChanged
Definition: objectListViewItem.h:405
boost::signals2::connection myUpdateConnection
Definition: objectListViewItem.h:416
boost::signals2::signal< void(DtObjectListViewItem *, bool)> signal_activateStateChanged
Definition: objectListViewItem.h:352
const QPixmap & prependPixmap() const
Definition: objectListViewItem.h:230
bool childCountEnabled() const
Definition: objectListViewItem.h:236
std::string myGumballString
Definition: objectListViewItem.h:433
bool showGumballs() const
Definition: objectListViewItem.h:119
void addSortingFunction(int col, const boost::function< bool(const DtObjectListViewItem &rhs, const DtObjectListViewItem &lhs)> &f)
Definition: objectListViewItem.h:184
void removeSortingFunction(int col)
Definition: objectListViewItem.h:189
const QString & textFilter() const
Definition: objectListViewItem.h:125
boost::signals2::signal< void(DtObjectListViewItem *)> signal_itemUpdated
Definition: objectListViewItem.h:346
QPixmap myIcon
Definition: objectListViewItem.h:429
DtEntityType myStealthType
Definition: objectListViewItem.h:397

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)