VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectListViewItem.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
16 
17 #include <vrvUtil/signalslib.h>
25 #include <vrfGuiCore/orbatState.h>
26 #include <vrfutil/rwUUID.h>
28 
29 #include <string>
30 
31 #include <vrvCore/DtStateView.h>
32 #include <vrvCore/DtEntityState.h>
34 
35 #include <QtWidgets/QTreeWidget>
36 #include <QtCore/QVariant>
37 
38 #include <boost/function.hpp>
39 
40 namespace makVrv
41 {
42  class DtDe;
43  class DtGlobalIDHierarchyNode;
44 }
45 
46 namespace makVrf
47 {
49  {
50  public:
52 
54  {
55  FogOfWar = 1,
56  NotInOrbat = 2,
57  NoStateView = 3,
58  NoChildren = 4,
59  TextFilter = 5
60  };
61 
62  public:
63  DtVrfObjectListViewItem(makVrv::DtDe& de, DtVrfObjectState state);
64 
65  virtual ~DtVrfObjectListViewItem();
66 
67  public:
68  virtual bool isMatchingItem(const DtVrfObjectState state) const;
69  virtual bool isDestroyed() const;
70  bool isTDLItem() const
71  {
72  return myIsVrfTDLData;
73  }
74 
75  bool isSpotReport() const
76  {
77  return myIsSpotReport;
78  }
79 
80  bool isLaserDesignator() const
81  {
82  return myIsLaserDesignator;
83  }
84 
85  bool isAggregate() const
86  {
87  return myIsAggregate;
88  }
89 
90  virtual QVariant data(int iCol, int iRole) const;
91  virtual void clearIcon();
92 
93  virtual void updateHiddenState(bool iterateChildren = false);
94 
95  virtual void setStateView(DtVrfObjectState);
96 
97  void clearStateView()
98  {
99  myStateView = 0;
100  }
101 
102  bool isStealthObserver() const;
103  bool isInactive() const;
104 
105  virtual bool canBeAttachedTo() const;
106 
107  void setStealthType(const std::string& s)
108  {
109  myStealthType = s;
110  DtEntityType t(s.c_str());
111  t.setExtra(t.extra() + 256);
112  myObserverStealthType = t.string();
113  t.setExtra(t.extra() + 1);
114  mySpecificStealthType = t.string();
115  }
116 
117  virtual bool sortByNameNumerical(const DtVrfObjectListViewItem&, const DtVrfObjectListViewItem&) const;
118  virtual bool sortByEchelonId(const DtVrfObjectListViewItem& lhs, const DtVrfObjectListViewItem& rhs) const;
119  virtual bool sortByForce(const DtVrfObjectListViewItem& lhs, const DtVrfObjectListViewItem& rhs) const;
120 
122  virtual bool sortByOrbatOrder(const DtVrfObjectListViewItem& lhs, const DtVrfObjectListViewItem& rhs) const;
123 
124  virtual void setShowObjectConsoleWarningIcon(bool, bool refresh = true);
125  virtual void setHasMessagesAwaiting(bool, bool refresh = true);
126  virtual void setHasQuestionsAwaiting(bool, bool refresh = true);
127  virtual void setSignalOnForceChange(bool);
128 
129  virtual void checkTextFilter();
130 
132  virtual void checkTextFilterUpToParent();
133 
134  virtual void setShowGumballs(bool b);
135  bool showGumballs() const
136  {
137  return myShowGumball;
138  }
139 
140  virtual void setTextFilter(const QString&);
141  const QString& textFilter() const
142  {
143  return myTextFilter;
144  }
145 
146  virtual void setHidden(bool, ShowHideFlags);
147  virtual bool isHidden() const;
148  virtual bool isHiddenBy(ShowHideFlags f) const
149  {
150  return (myShowHideFlags.find(f) != myShowHideFlags.end());
151  }
152 
153  virtual bool parseNumber(const DtVrfObjectListViewItem&, int& number, QString& name) const;
154 
155  virtual int force() const;
156 
157  const DtUUID& uuid() const
158  {
159  return myUUID;
160  }
161 
162  virtual void setUUID(const DtUUID&);
163  bool signalOnForceChange() const;
164 
165  DtVrfObjectState stateView() const
166  {
167  return myStateView;
168  }
169 
170  void addSortingFunction(int col, const boost::function<bool (const DtVrfObjectListViewItem& rhs, const DtVrfObjectListViewItem& lhs)>& f)
171  {
172  mySortingFunctions[col] = f;
173  }
174 
175  void removeSortingFunction(int col)
176  {
177  DtSortingFunctionMap::iterator iter = mySortingFunctions.find(col);
178 
179  if (iter != mySortingFunctions.end())
180  {
181  mySortingFunctions.erase(iter);
182  }
183  }
184 
185  void addDataFunction(short col, short role, const boost::function<QVariant (const DtVrfObjectListViewItem*)>& func)
186  {
187  myDataFunctionMap[makeKey(col, role)] = func;
188  }
189 
190  void removeDataFunction(short col, short role)
191  {
192  DtDataFunctionMap::iterator iter = myDataFunctionMap.find(makeKey(col, role));
193 
194  if (iter != myDataFunctionMap.end())
195  {
196  myDataFunctionMap.erase(iter);
197  }
198  }
199 
201  virtual void addNameFunction(short col);
202  virtual void removeNameFunction(short col);
203 
204  virtual void addToolTipFunction(short col);
205  virtual void removeToolTipFunction(short col);
206 
207  virtual void addIconFunction(short col);
208  virtual void removeIconFunction(short col);
209 
210  virtual void addIconSizeHintFunction(short col);
211  virtual void removeIconSizeHintFunction(short col);
212 
213  virtual void addIconAndGumballFunction(short col);
214  virtual void removeIconAndGumballFunction(short col);
215 
216  virtual void forceUpdate();
217 
218  virtual void addIconAndGumballSizeHintFunction(short col);
219  virtual void removeIconAndGumballSizeHintFunction(short col);
220 
221  virtual bool operator<(const QTreeWidgetItem & other ) const;
222 
223  virtual bool hasGumball() const;
224 
225  virtual QString markingText() const;
226 
227  virtual void slot_stateViewAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& s);
228 
230  virtual void setIsOrbatEnabled(bool);
231  virtual bool isOrbatEnabled() const;
232 
234  virtual void setShowNotInOrbat(bool);
235  virtual bool showNotInOrbat() const;
236 
238  virtual void setOrderByOrbatOrder(bool);
239  virtual bool orderByOrbatOrder() const;
240 
241  virtual void setEditText(const QString& s);
242  virtual const QString& editText() const;
243 
244  virtual void updateOrbatState();
245  virtual bool isOrbatViewOnly() const;
246  virtual bool isCreated() const;
247  virtual bool isInOrbatOnly() const;
248  virtual QVariant iconFunction(const DtVrfObjectListViewItem*) const;
249 
250  virtual void setDisplayType(const DtEntityType&, int force);
251  virtual void clearDisplayType();
252 
253  DtVrfObjectDataState* objectDataState() const
254  {
255  return myObjectDataState;
256  }
257 
259  virtual bool isInOrbatView() const;
260 
261  boost::signal<void (DtVrfObjectListViewItem*, int, int)> signal_forceChanged;
262  boost::signal<void (DtVrfObjectListViewItem*)> signal_itemUpdated;
263  boost::signal<void (DtVrfObjectListViewItem*)> signal_destroyed;
264  boost::signal<void (DtVrfObjectListViewItem*)> signal_markingTextFilterChanged;
265 
266  protected:
267  virtual void slot_onStateViewUpdated(const DtVrfObjectState s);
268  virtual void setLastState(const DtVrfObjectState s);
269  virtual bool statesAreEqual(const DtVrfObjectState s) const;
270  virtual bool objectDataStatesAreEqual(const DtVrfObjectState s) const;
271  virtual std::string iconKeyString() const;
272  virtual std::string gumballKeyString() const;
273 
274  virtual bool needsIconUpdate(std::string* resultKey = 0) const;
275  virtual bool needsGumballUpdate(std::string* resultKey = 0) const;
276  virtual void slot_orbatStateChanged(makVrv::DtUniqueID, bool);
277  virtual int getDesignator(const std::string& echelon) const;
278 
279  protected:
280  virtual QVariant name(const DtVrfObjectListViewItem*) const;
281 
282  virtual QVariant editRole(const DtVrfObjectListViewItem* i) const;
283 
284  virtual QVariant iconSizeHint(const DtVrfObjectListViewItem*) const;
285 
286  virtual QVariant gumball(const DtVrfObjectListViewItem*) const;
287  virtual QVariant iconAndGumball(const DtVrfObjectListViewItem*) const;
288  virtual QVariant iconAndGumballSizeHint(const DtVrfObjectListViewItem*) const;
289 
290  int makeKey(short col, short role) const
291  {
292  return (col << 16) | role;
293  }
294 
295  virtual QVariant textColorForOrbatItem(const DtVrfObjectListViewItem* item) const;
296 
297  protected:
298  typedef std::map<int, boost::function<QVariant (const DtVrfObjectListViewItem*)> > DtDataFunctionMap;
299  typedef std::map<int, boost::function<bool (const DtVrfObjectListViewItem& rhs, const DtVrfObjectListViewItem& lhs)> > DtSortingFunctionMap;
300 
303  std::string myStealthType;
307 
308  union States
309  {
319  };
320 
327  bool myIsOrbat;
339 
348 
349  QString myEditText;
350 
351  mutable QPixmap myIcon;
352  mutable QPixmap myGumball;
353  mutable QPixmap myPixmap;
354  mutable std::string myIconString;
355  mutable std::string myGumballString;
356 
357  std::set<ShowHideFlags> myShowHideFlags;
358 
359  DtEntityType myDisplayType;
362 
363  QString myTextFilter;
364  };
365 
368  {
369  public:
372 
375 
377 
378  static DtVrfObjectListViewItemCreator& instance(makVrv::DtDe& de);
379  static void registerInstance(makVrv::DtDe& de, DtVrfObjectListViewItemCreator*);
380 
381  protected:
383  };
384 }

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)