VR-Forces 4.6 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>
24 #include <vrfGuiCore/orbatState.h>
25 #include <vrfutil/rwUUID.h>
27 
28 #include <string>
29 
30 #include <vrvCore/DtStateView.h>
31 #include <vrvCore/DtEntityState.h>
33 
34 #include <QtWidgets/QTreeWidget>
35 #include <QtCore/QVariant>
36 
37 #include <boost/function.hpp>
38 
39 namespace makVrv
40 {
41  class DtDe;
42  class DtGlobalIDHierarchyNode;
43 }
44 
45 namespace makVrf
46 {
48  {
49  public:
51 
53  {
54  FogOfWar = 1,
55  NotInOrbat = 2,
56  NoStateView = 3,
57  NoChildren = 4
58  };
59 
60  public:
61  DtVrfObjectListViewItem(makVrv::DtDe& de, DtVrfObjectState state);
62 
63  virtual ~DtVrfObjectListViewItem();
64 
65  public:
66  virtual bool isMatchingItem(const DtVrfObjectState state) const;
67  virtual bool isDestroyed() const;
68  bool isTDLItem() const
69  {
70  return myIsVrfTDLData;
71  }
72 
73  bool isSpotReport() const
74  {
75  return myIsSpotReport;
76  }
77 
78  bool isAggregate() const
79  {
80  return myIsAggregate;
81  }
82 
83  virtual QVariant data(int iCol, int iRole) const;
84  virtual void clearIcon();
85 
86  virtual void updateHiddenState(bool iterateChildren = false);
87 
88  virtual void setStateView(DtVrfObjectState);
89 
90  void clearStateView()
91  {
92  myStateView = 0;
93  }
94 
95  bool isStealthObserver() const;
96  bool isInactive() const;
97 
98  virtual bool canBeAttachedTo() const;
99 
100  void setStealthType(const std::string& s)
101  {
102  myStealthType = s;
103  DtEntityType t(s.c_str());
104  t.setExtra(t.extra() + 256);
105  myObserverStealthType = t.string();
106  t.setExtra(t.extra() + 1);
107  mySpecificStealthType = t.string();
108  }
109 
110  virtual bool sortByNameNumerical(const DtVrfObjectListViewItem&, const DtVrfObjectListViewItem&) const;
111  virtual bool sortByEchelonId(const DtVrfObjectListViewItem& lhs, const DtVrfObjectListViewItem& rhs) const;
112  virtual bool sortByForce(const DtVrfObjectListViewItem& lhs, const DtVrfObjectListViewItem& rhs) const;
113 
115  virtual bool sortByOrbatOrder(const DtVrfObjectListViewItem& lhs, const DtVrfObjectListViewItem& rhs) const;
116 
117  virtual void setShowObjectConsoleWarningIcon(bool, bool refresh = true);
118  virtual void setHasMessagesAwaiting(bool, bool refresh = true);
119  virtual void setHasQuestionsAwaiting(bool, bool refresh = true);
120  virtual void setSignalOnForceChange(bool);
121 
122  virtual void setHidden(bool, ShowHideFlags);
123  virtual bool isHidden() const;
124 
125  virtual bool parseNumber(const DtVrfObjectListViewItem&, int& number, QString& name) const;
126 
127  virtual int force() const;
128 
129  const DtUUID& uuid() const
130  {
131  return myUUID;
132  }
133 
134  virtual void setUUID(const DtUUID&);
135  bool signalOnForceChange() const;
136 
137  DtVrfObjectState stateView() const
138  {
139  return myStateView;
140  }
141 
142  void addSortingFunction(int col, const boost::function<bool (const DtVrfObjectListViewItem& rhs, const DtVrfObjectListViewItem& lhs)>& f)
143  {
144  mySortingFunctions[col] = f;
145  }
146 
147  void removeSortingFunction(int col)
148  {
149  DtSortingFunctionMap::iterator iter = mySortingFunctions.find(col);
150 
151  if (iter != mySortingFunctions.end())
152  {
153  mySortingFunctions.erase(iter);
154  }
155  }
156 
157  void addDataFunction(short col, short role, const boost::function<QVariant (const DtVrfObjectListViewItem*)>& func)
158  {
159  myDataFunctionMap[makeKey(col, role)] = func;
160  }
161 
162  void removeDataFunction(short col, short role)
163  {
164  DtDataFunctionMap::iterator iter = myDataFunctionMap.find(makeKey(col, role));
165 
166  if (iter != myDataFunctionMap.end())
167  {
168  myDataFunctionMap.erase(iter);
169  }
170  }
171 
173  virtual void addNameFunction(short col);
174  virtual void removeNameFunction(short col);
175 
176  virtual void addToolTipFunction(short col);
177  virtual void removeToolTipFunction(short col);
178 
179  virtual void addIconFunction(short col);
180  virtual void removeIconFunction(short col);
181 
182  virtual void addIconSizeHintFunction(short col);
183  virtual void removeIconSizeHintFunction(short col);
184 
185  virtual void addIconAndGumballFunction(short col);
186  virtual void removeIconAndGumballFunction(short col);
187 
188  virtual void forceUpdate();
189 
190  virtual void addIconAndGumballSizeHintFunction(short col);
191  virtual void removeIconAndGumballSizeHintFunction(short col);
192 
193  virtual bool operator<(const QTreeWidgetItem & other ) const;
194 
195  virtual bool hasGumball() const;
196 
197  virtual QString markingText() const;
198 
199  virtual void slot_stateViewAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& s);
200 
202  virtual void setIsOrbatEnabled(bool);
203  virtual bool isOrbatEnabled() const;
204 
206  virtual void setShowNotInOrbat(bool);
207  virtual bool showNotInOrbat() const;
208 
210  virtual void setOrderByOrbatOrder(bool);
211  virtual bool orderByOrbatOrder() const;
212 
213  virtual void setEditText(const QString& s);
214  virtual const QString& editText() const;
215 
216  virtual void updateOrbatState();
217  virtual bool isOrbatViewOnly() const;
218  virtual bool isCreated() const;
219  virtual bool isInOrbatOnly() const;
220  virtual QVariant iconFunction(const DtVrfObjectListViewItem*) const;
221 
222  virtual void setDisplayType(const DtEntityType&, int force);
223  virtual void clearDisplayType();
224 
225  DtVrfObjectDataState* objectDataState() const
226  {
227  return myObjectDataState;
228  }
229 
231  virtual bool isInOrbatView() const;
232 
233  boost::signal<void (DtVrfObjectListViewItem*, int, int)> signal_forceChanged;
234  boost::signal<void (DtVrfObjectListViewItem*)> signal_itemUpdated;
235  boost::signal<void ()> signal_destroyed;
236 
237  protected:
238  virtual void slot_onStateViewUpdated(const DtVrfObjectState s);
239  virtual void setLastState(const DtVrfObjectState s);
240  virtual bool statesAreEqual(const DtVrfObjectState s) const;
241  virtual bool objectDataStatesAreEqual(const DtVrfObjectState s) const;
242  virtual std::string iconKeyString() const;
243  virtual std::string gumballKeyString() const;
244 
245  virtual bool needsIconUpdate(std::string* resultKey = 0) const;
246  virtual bool needsGumballUpdate(std::string* resultKey = 0) const;
247  virtual void slot_orbatStateChanged(makVrv::DtUniqueID, bool);
248  virtual int getDesignator(const std::string& echelon) const;
249 
250  protected:
251  virtual QVariant name(const DtVrfObjectListViewItem*) const;
252 
253  virtual QVariant editRole(const DtVrfObjectListViewItem* i) const;
254 
255  virtual QVariant iconSizeHint(const DtVrfObjectListViewItem*) const;
256 
257  virtual QVariant gumball(const DtVrfObjectListViewItem*) const;
258  virtual QVariant iconAndGumball(const DtVrfObjectListViewItem*) const;
259  virtual QVariant iconAndGumballSizeHint(const DtVrfObjectListViewItem*) const;
260 
261  int makeKey(short col, short role) const
262  {
263  return (col << 16) | role;
264  }
265 
266  virtual QVariant textColorForOrbatItem(const DtVrfObjectListViewItem* item) const;
267 
268  protected:
269  typedef std::map<int, boost::function<QVariant (const DtVrfObjectListViewItem*)> > DtDataFunctionMap;
270  typedef std::map<int, boost::function<bool (const DtVrfObjectListViewItem& rhs, const DtVrfObjectListViewItem& lhs)> > DtSortingFunctionMap;
271 
274  std::string myStealthType;
278 
279  union States
280  {
289  };
290 
297  bool myIsOrbat;
306 
315 
316  QString myEditText;
317 
318  mutable QPixmap myIcon;
319  mutable QPixmap myGumball;
320  mutable QPixmap myPixmap;
321  mutable std::string myIconString;
322  mutable std::string myGumballString;
323 
324  std::set<ShowHideFlags> myShowHideFlags;
325 
326  DtEntityType myDisplayType;
329  };
330 
333  {
334  public:
337 
340 
342 
343  static DtVrfObjectListViewItemCreator& instance(makVrv::DtDe& de);
344  static void registerInstance(makVrv::DtDe& de, DtVrfObjectListViewItemCreator*);
345 
346  protected:
348  };
349 }

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)