VR-Forces 5.0.3 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) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
7 
8 #pragma once
9 
13 
14 
23 #include <vrfGuiCore/orbatState.h>
24 #include <vrfutil/rwUUID.h>
26 
27 #include <string>
28 
29 #include <vrvCore/DtStateView.h>
30 #include <vrvCore/DtEntityState.h>
32 
33 #include <QtWidgets/QTreeWidget>
34 #include <QtCore/QVariant>
35 
36 #include <boost/function.hpp>
37 
38 namespace makVrv
39 {
40  class DtDe;
41  class DtGlobalIDHierarchyNode;
42 }
43 
44 namespace makVrf
45 {
53  {
54  public:
56 
58  {
59  FogOfWar = 1,
60  NotInOrbat = 2,
61  NoStateView = 3,
62  NoChildren = 4,
63  TextFilter = 5
64  };
65 
66  public:
67  DtObjectListViewItem(makVrv::DtDe& de, DtVrfObjectState state);
68 
69  virtual ~DtObjectListViewItem();
70 
71  public:
72  virtual bool isMatchingItem(const DtVrfObjectState state) const;
73  virtual bool isDestroyed() const;
74  bool isTDLItem() const
75  {
76  return myIsVrfTDLData;
77  }
78 
79  bool isEnvironmental() const
80  {
81  return myIsEnvironmental;
82  }
83 
84  bool isSpotReport() const
85  {
86  return myIsSpotReport;
87  }
88 
89  bool isLaserDesignator() const
90  {
91  return myIsLaserDesignator;
92  }
93 
94  bool isAggregate() const
95  {
96  return myIsAggregate;
97  }
98 
99  virtual void setGrayIfHidden(bool);
100  bool grayIfHidden() const
101  {
102  return myGrayIfHidden;
103  }
104 
105  virtual QVariant data(int iCol, int iRole) const;
106  virtual void clearIcon();
107 
108  virtual void updateHiddenState(bool iterateChildren = false);
109 
110  virtual void setStateView(DtVrfObjectState);
111 
113  {
114  myStateView = 0;
115  }
116 
117  bool isStealthObserver() const;
118  bool isInactive() const;
119 
120  virtual bool canBeAttachedTo() const;
121 
122  void setStealthType(const std::string& s)
123  {
124  myStealthType = s;
125  DtEntityType t(s.c_str());
126  t.setExtra(t.extra() + 256);
127  myObserverStealthType = t.string();
128  t.setExtra(t.extra() + 1);
129  mySpecificStealthType = t.string();
130  }
131 
132  virtual bool sortByNameNumerical(const DtObjectListViewItem&, const DtObjectListViewItem&) const;
133  virtual bool sortByEchelonId(const DtObjectListViewItem& lhs, const DtObjectListViewItem& rhs) const;
134  virtual bool sortByForce(const DtObjectListViewItem& lhs, const DtObjectListViewItem& rhs) const;
135 
137  virtual bool sortByOrbatOrder(const DtObjectListViewItem& lhs, const DtObjectListViewItem& rhs) const;
138 
139  virtual void setShowObjectConsoleWarningIcon(bool, bool refresh = true);
140  virtual void setHasMessagesAwaiting(bool, bool refresh = true);
141  virtual void setHasQuestionsAwaiting(bool, bool refresh = true);
142  virtual void setSignalOnForceChange(bool);
143  virtual void setSignalOnActivatedStateChanged(bool);
144  virtual void setSignalOnDamageStateChange(bool);
145 
146  virtual void checkTextFilter();
147 
149  virtual void checkTextFilterUpToParent();
150 
151  virtual void setShowGumballs(bool b);
152  bool showGumballs() const
153  {
154  return myShowGumball;
155  }
156 
157  virtual void setTextFilter(const QString&);
158  const QString& textFilter() const
159  {
160  return myTextFilter;
161  }
162 
163  virtual void setHidden(bool, ShowHideFlags);
164  virtual bool isHidden() const;
165  virtual bool isHiddenBy(ShowHideFlags f) const
166  {
167  return (myShowHideFlags.find(f) != myShowHideFlags.end());
168  }
169 
170  virtual bool parseNumber(const DtObjectListViewItem&, int& number, QString& name) const;
171 
172  virtual int force() const;
173 
174  const DtUUID& uuid() const
175  {
176  return myUUID;
177  }
178 
179  virtual void setUUID(const DtUUID&);
180  bool signalOnActivatedStateChanged() const;
181  bool signalOnForceChange() const;
182  bool signalOnDamageStateChange() const;
183 
185  {
186  return myStateViewId;
187  }
188 
190  {
191  return myStateView;
192  }
193 
194  void addSortingFunction(int col, const boost::function<bool (const DtObjectListViewItem& rhs, const DtObjectListViewItem& lhs)>& f)
195  {
196  mySortingFunctions[col] = f;
197  }
198 
199  void removeSortingFunction(int col)
200  {
201  DtSortingFunctionMap::iterator iter = mySortingFunctions.find(col);
202 
203  if (iter != mySortingFunctions.end())
204  {
205  mySortingFunctions.erase(iter);
206  }
207  }
208 
209  void addDataFunction(short col, short role, const boost::function<QVariant (const DtObjectListViewItem*)>& func)
210  {
211  myDataFunctionMap[makeKey(col, role)] = func;
212  }
213 
214  void removeDataFunction(short col, short role)
215  {
216  DtDataFunctionMap::iterator iter = myDataFunctionMap.find(makeKey(col, role));
217 
218  if (iter != myDataFunctionMap.end())
219  {
220  myDataFunctionMap.erase(iter);
221  }
222  }
223 
224  virtual void setBaseIcon(QString);
225  virtual void setBaseIcon(const QPixmap&);
226  const QPixmap& baseIcon() const
227  {
228  return myBaseIcon;
229  }
230 
231  virtual void setPrependToName(const QString&);
232  const QString& prependToName() const
233  {
234  return myPrependToName;
235  }
236 
237  virtual void setPrependPixmap(const QPixmap&);
238  const QPixmap& prependPixmap() const
239  {
240  return myPrependPixmap;
241  }
242 
243  virtual void setAppendToName(const QString&);
244  const QString& appendToName() const
245  {
246  return myAppendToName;
247  }
248 
249  virtual void setAppendPixmap(const QPixmap&);
250  const QPixmap& appendPixmap() const
251  {
252  return myAppendPixmap;
253  }
254 
255  virtual void setCanBeOrganized(bool);
256  bool canBeOrganized() const
257  {
258  return myCanBeOrganized;
259  }
260 
261  virtual void setSignalOnDataUpdates(bool);
262  bool signalOnDataUpdates() const
263  {
264  return mySignalOnDataUpdates;
265  }
266 
268  virtual void addNameFunction(short col);
269  virtual void removeNameFunction(short col);
270 
271  virtual void addTextColorIfHiddenFunction(short col);
272  virtual void removeTextColorIfHiddenFunction(short col);
273 
274  virtual void addToolTipFunction(short col);
275  virtual void removeToolTipFunction(short col);
276 
277  virtual void addIconFunction(short col);
278  virtual void removeIconFunction(short col);
279 
280  virtual void addIconSizeHintFunction(short col);
281  virtual void removeIconSizeHintFunction(short col);
282 
283  virtual void addIconAndGumballFunction(short col);
284  virtual void removeIconAndGumballFunction(short col);
285 
286  virtual void forceUpdate();
287 
288  virtual void addIconAndGumballSizeHintFunction(short col);
289  virtual void removeIconAndGumballSizeHintFunction(short col);
290 
291  virtual bool operator<(const QTreeWidgetItem & other ) const;
292 
293  virtual bool hasGumball() const;
294 
295  virtual QString markingText() const;
296 
297  virtual void slot_stateViewAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& s);
298 
300  virtual void setIsOrbatEnabled(bool);
301  virtual bool isOrbatEnabled() const;
302 
304  virtual void setShowNotInOrbat(bool);
305  virtual bool showNotInOrbat() const;
306 
308  virtual void setOrderByOrbatOrder(bool);
309  virtual bool orderByOrbatOrder() const;
310 
311  virtual void setEditText(const QString& s);
312  virtual const QString& editText() const;
313 
314  virtual void updateOrbatState();
315  virtual bool isOrbatViewOnly() const;
316  virtual bool isCreated() const;
317  virtual bool isInOrbatOnly() const;
318  virtual QVariant iconFunction(const DtObjectListViewItem*) const;
319 
320  virtual void setDisplayType(const DtEntityType&, int force);
321  virtual void clearDisplayType();
322 
324  {
325  return myObjectDataState;
326  }
327 
329  virtual bool isInOrbatView() const;
330 
331  boost::signals2::signal<void (DtObjectListViewItem*, int, int)> signal_forceChanged;
332  boost::signals2::signal<void (DtObjectListViewItem*)> signal_itemUpdated;
333  boost::signals2::signal<void (DtObjectListViewItem*)> signal_destroyed;
334  boost::signals2::signal<void (DtObjectListViewItem*)> signal_markingTextFilterChanged;
335  boost::signals2::signal<void (DtObjectListViewItem*)> signal_extendedDataChanged;
336  boost::signals2::signal<void (DtObjectListViewItem*)> signal_statePropertiesChanged;
337  boost::signals2::signal<void (DtObjectListViewItem*, bool)> signal_damageStateChanged;
338  boost::signals2::signal<void (DtObjectListViewItem*, bool)> signal_activateStateChanged;
339 
340  protected:
341  virtual void resetBaseIcon(QString);
342  virtual void slot_onStateViewUpdated(const DtVrfObjectState s);
343  virtual void slot_onAggStateViewUpdated(const makVrv::DtStateView<DtVrlinkSimulatedAggregateState>* s);
344  virtual void slot_onEnvironmentalStateViewUpdated(const makVrv::DtStateView<DtVrlinkSimulatedEnvironmentProcess>* s);
345  virtual void slot_onWeatherStateViewUpdated(const makVrv::DtStateView<DtVrlinkSimulatedWeatherState>* s);
346  virtual void setLastState(const DtVrfObjectState s);
347  virtual bool statesAreEqual(const DtVrfObjectState s) const;
348  virtual bool objectDataStatesAreEqual(const DtVrfObjectState s) const;
349  virtual std::string iconKeyString() const;
350  virtual std::string gumballKeyString() const;
351 
352  virtual bool needsIconUpdate(std::string* resultKey = 0) const;
353  virtual bool needsGumballUpdate(std::string* resultKey = 0) const;
354  virtual void slot_orbatStateChanged(makVrv::DtUniqueID, bool);
355  virtual int getDesignator(const std::string& echelon) const;
356 
357  protected:
358  virtual QVariant name(const DtObjectListViewItem*) const;
359 
360  virtual QVariant editRole(const DtObjectListViewItem* i) const;
361 
362  virtual QVariant iconSizeHint(const DtObjectListViewItem*) const;
363 
364  virtual QVariant gumball(const DtObjectListViewItem*) const;
365  virtual QVariant iconAndGumball(const DtObjectListViewItem*) const;
366  virtual QVariant iconAndGumballSizeHint(const DtObjectListViewItem*) const;
367 
368  int makeKey(short col, short role) const
369  {
370  return (col << 16) | role;
371  }
372 
373  virtual QVariant textColorForHiddenItem(const DtObjectListViewItem* item) const;
374 
375  virtual QPixmap adjustForHidden(const QPixmap&) const;
376  virtual QImage adjustForHidden(const QImage&) const;
377 
378  protected:
379  typedef std::map<int, boost::function<QVariant (const DtObjectListViewItem*)> > DtDataFunctionMap;
380  typedef std::map<int, boost::function<bool (const DtObjectListViewItem& rhs, const DtObjectListViewItem& lhs)> > DtSortingFunctionMap;
381 
384  std::string myStealthType;
389 
390  union States
391  {
401  };
402 
409  bool myIsOrbat;
425  boost::signals2::scoped_connection myStateViewUpdateConnection;
426 
435 
436  QString myEditText;
437 
438  mutable QPixmap myIcon;
439  mutable QPixmap myGumball;
440  mutable QPixmap myPixmap;
441  mutable std::string myIconString;
442  mutable std::string myGumballString;
443 
444  std::set<ShowHideFlags> myShowHideFlags;
445 
446  DtEntityType myDisplayType;
450 
451  QString myTextFilter;
454  QString myAppendToName;
455  QPixmap myAppendPixmap;
456  QPixmap myBaseIcon;
457 
458  mutable int myRightMargin;
459 
460  std::map<std::string, std::string> myExtendedData;
464  };
465 
468  {
469  public:
472 
474  virtual ~DtObjectListViewItemCreator();
475 
477 
478  static DtObjectListViewItemCreator& instance(makVrv::DtDe& de);
479  static void registerInstance(makVrv::DtDe& de, DtObjectListViewItemCreator*);
480 
481  protected:
483  };
484 }
const QPixmap & baseIcon() const
Definition: objectListViewItem.h:226
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
makVrv::DtVrlinkSimulatedEntityState * entityState
Definition: objectListViewItem.h:393
DtVrfObjectDataState * objectDataState() const
Definition: objectListViewItem.h:323
Registered creator for this class.
Definition: objectListViewItem.h:467
virtual bool isHiddenBy(ShowHideFlags f) const
Definition: objectListViewItem.h:165
bool myShowGumball
Definition: objectListViewItem.h:417
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
bool isAggregate() const
Definition: objectListViewItem.h:94
bool myIsOrbat
Definition: objectListViewItem.h:409
makVrv::DtSignalConnectionManager myIconConnections
Definition: objectListViewItem.h:423
QPixmap myBaseIcon
Definition: objectListViewItem.h:456
boost::signals2::signal< void(DtObjectListViewItem *)> signal_statePropertiesChanged
Definition: objectListViewItem.h:336
bool myUseDisplayType
Definition: objectListViewItem.h:448
DtVrfObjectDataState * myObjectDataState
Definition: objectListViewItem.h:404
DtVrlinkSimulatedAggregateState * aggregateState
Definition: objectListViewItem.h:398
bool myLastActivated
Definition: objectListViewItem.h:418
makVrv::DtUniqueID myStateViewId
Definition: objectListViewItem.h:388
void setStealthType(const std::string &s)
Definition: objectListViewItem.h:122
int myRightMargin
Definition: objectListViewItem.h:458
bool isSpotReport() const
Definition: objectListViewItem.h:84
int makeKey(short col, short role) const
Definition: objectListViewItem.h:368
Contains makVrv::DtStateView class.
DtVrfObjectState stateView() const
Definition: objectListViewItem.h:189
bool mySignalOnDataUpdates
Definition: objectListViewItem.h:463
std::string myIconString
Definition: objectListViewItem.h:441
Contains the DtUUID class declaration.
bool myIsEnvironmental
Definition: objectListViewItem.h:412
boost::signals2::signal< void(DtObjectListViewItem *)> signal_markingTextFilterChanged
Definition: objectListViewItem.h:334
boost::signals2::signal< void(DtObjectListViewItem *, int, int)> signal_forceChanged
Definition: objectListViewItem.h:331
DtVrfTDLMessageDataState * vrfTDLDataState
Definition: objectListViewItem.h:395
const QPixmap & appendPixmap() const
Definition: objectListViewItem.h:250
std::map< int, boost::function< bool(const DtObjectListViewItem &rhs, const DtObjectListViewItem &lhs)> > DtSortingFunctionMap
Definition: objectListViewItem.h:380
bool grayIfHidden() const
Definition: objectListViewItem.h:100
bool myIsInOrbatView
Definition: objectListViewItem.h:432
boost::signals2::scoped_connection myStateViewUpdateConnection
Definition: objectListViewItem.h:425
bool myIsAggregate
Definition: objectListViewItem.h:411
bool mySignalOnDamageStateChanged
Definition: objectListViewItem.h:414
Note that the &quot;protocol&quot; keyword is used by by the TDL manager to allow users to filter out messages ...
Definition: vrfTDLMessageDataState.h:34
boost::signals2::signal< void(DtObjectListViewItem *, bool)> signal_damageStateChanged
Definition: objectListViewItem.h:337
DtVrlinkSimulatedEnvironmentProcess * environmentalState
Definition: objectListViewItem.h:399
std::string myStealthType
Definition: objectListViewItem.h:384
bool myGrayIfHidden
Definition: objectListViewItem.h:449
bool myIsOrbatEnabled
Definition: objectListViewItem.h:430
bool isLaserDesignator() const
Definition: objectListViewItem.h:89
DtSpotReportState * spotReportState
Definition: objectListViewItem.h:394
QPixmap myGumball
Definition: objectListViewItem.h:439
bool myHasQuestionsAwaiting
Definition: objectListViewItem.h:429
DtEntityType myDisplayType
Definition: objectListViewItem.h:446
States myLastState
Definition: objectListViewItem.h:403
QString myTextFilter
Definition: objectListViewItem.h:451
makVrv::DtDe & myDe
Definition: objectListViewItem.h:482
makVrv::DtVrlinkSimulatedBaseState * vrlinkState
Definition: objectListViewItem.h:392
DtDataFunctionMap myDataFunctionMap
Definition: objectListViewItem.h:420
bool canBeOrganized() const
Definition: objectListViewItem.h:256
bool myHasGumball
Definition: objectListViewItem.h:419
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
bool mySignalOnForceChange
Definition: objectListViewItem.h:413
Contains makVrv::DtVrlinkSimulatedEntityState class.
bool myIsDestroyed
Definition: objectListViewItem.h:405
bool myShowObjectConsoleWarningIcon
Definition: objectListViewItem.h:427
bool myIsLaserDesignator
Definition: objectListViewItem.h:410
boost::signals2::signal< void(DtObjectListViewItem *)> signal_destroyed
Definition: objectListViewItem.h:333
std::set< ShowHideFlags > myShowHideFlags
Definition: objectListViewItem.h:444
QPixmap myPixmap
Definition: objectListViewItem.h:440
const DtUUID & uuid() const
Definition: objectListViewItem.h:174
ShowHideFlags
Definition: objectListViewItem.h:57
bool myIsSimpleObjectDataState
Definition: objectListViewItem.h:416
std::map< std::string, std::string > myExtendedData
Definition: objectListViewItem.h:460
const QString & prependToName() const
Definition: objectListViewItem.h:232
QString myPrependToName
Definition: objectListViewItem.h:452
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:20
makVrv::DtSignalConnectionManager myOrbatConnections
Definition: objectListViewItem.h:424
QString myEditText
Definition: objectListViewItem.h:436
makVrv::DtDe & myDe
Definition: objectListViewItem.h:382
bool myUpdateForced
Definition: objectListViewItem.h:434
bool isTDLItem() const
Definition: objectListViewItem.h:74
QString myAppendToName
Definition: objectListViewItem.h:454
void addDataFunction(short col, short role, const boost::function< QVariant(const DtObjectListViewItem *)> &func)
Definition: objectListViewItem.h:209
bool myIsSpotReport
Definition: objectListViewItem.h:407
DtVrfObjectState myStateView
Definition: objectListViewItem.h:383
bool myIsEntity
Definition: objectListViewItem.h:406
bool myIsVrfTDLData
Definition: objectListViewItem.h:408
QPixmap myPrependPixmap
Definition: objectListViewItem.h:453
std::string myObserverStealthType
Definition: objectListViewItem.h:385
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::map< int, boost::function< QVariant(const DtObjectListViewItem *)> > DtDataFunctionMap
Definition: objectListViewItem.h:379
bool myHasMessagesAwaiting
Definition: objectListViewItem.h:428
boost::signals2::signal< void(DtObjectListViewItem *)> signal_extendedDataChanged
Definition: objectListViewItem.h:335
bool myShowNotInOrbat
Definition: objectListViewItem.h:431
Definition: spotReportState.h:42
makVrv::DtUniqueID stateViewId() const
Definition: objectListViewItem.h:184
bool myOrderByOrbatOrder
Definition: objectListViewItem.h:433
QPixmap myAppendPixmap
Definition: objectListViewItem.h:455
makVrv::DtSignalConnectionManager myConnections
Definition: objectListViewItem.h:422
void removeDataFunction(short col, short role)
Definition: objectListViewItem.h:214
void clearStateView()
Definition: objectListViewItem.h:112
bool isEnvironmental() const
Definition: objectListViewItem.h:79
Definition: objectListViewItem.h:390
bool signalOnDataUpdates() const
Definition: objectListViewItem.h:262
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
const QString & appendToName() const
Definition: objectListViewItem.h:244
int myDisplayForce
Definition: objectListViewItem.h:447
Definition: orbatState.h:23
DtSimpleObjectDataState * simpleObjectDataState
Definition: objectListViewItem.h:400
std::string mySpecificStealthType
Definition: objectListViewItem.h:386
bool myCanBeOrganized
Definition: objectListViewItem.h:462
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
DtLaserDesignatorState * laserDesignatorState
Definition: objectListViewItem.h:397
DtOrbatState * orbatState
Definition: objectListViewItem.h:396
DtSortingFunctionMap mySortingFunctions
Definition: objectListViewItem.h:421
DtUUID myUUID
Definition: objectListViewItem.h:387
Definition: laserDesignatorState.h:26
bool mySignalOnActivatedStateChanged
Definition: objectListViewItem.h:415
boost::signals2::signal< void(DtObjectListViewItem *, bool)> signal_activateStateChanged
Definition: objectListViewItem.h:338
const QPixmap & prependPixmap() const
Definition: objectListViewItem.h:238
makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > * DtVrfObjectState
Definition: objectListViewItem.h:55
std::string myGumballString
Definition: objectListViewItem.h:442
bool showGumballs() const
Definition: objectListViewItem.h:152
void addSortingFunction(int col, const boost::function< bool(const DtObjectListViewItem &rhs, const DtObjectListViewItem &lhs)> &f)
Definition: objectListViewItem.h:194
void removeSortingFunction(int col)
Definition: objectListViewItem.h:199
const QString & textFilter() const
Definition: objectListViewItem.h:158
boost::signals2::signal< void(DtObjectListViewItem *)> signal_itemUpdated
Definition: objectListViewItem.h:332
QPixmap myIcon
Definition: objectListViewItem.h:438
Definition: vrfObjectDataState.h:87
double myLastTimeStatePropertiesUpdated
Definition: objectListViewItem.h:461

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)