VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
informationDialogPage.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvUtil/signalslib.h>
13 
16 
17 #include <vrvCoreQt/DtPage.h>
19 #include <vrvCore/DtStateView.h>
20 #include <vrvCore/DtEntityState.h>
21 #include <vrvCore/DtSimEntry.h>
22 
24 
25 #include <QtWidgets/QTreeWidget>
26 
27 class QLabel;
28 class QVBoxLayout;
29 class DtFrame;
30 
31 namespace makVrv
32 {
33  class DtDe;
34  class DtPersistenceToolbarWidget;
35 }
36 
37 namespace makVrf
38 {
39  namespace makVrfGuiObjectInformationQt
40  {
41  class DtInformationDialogPageLogic;
42  class DtInformationTreeWidgetItem;
43  class DtInformationDialog;
44 
46  {
47  public:
48  DtLineBreakWidget(QWidget* parent, QWidget* containing);
49 
50  virtual bool eventFilter(QObject*, QEvent*);
51 
52  virtual void setLineBreak(int);
53 
54  void setSelectable(bool b) { mySelectable = b; };
55  bool selectable() const { return mySelectable; };
56 
57  public:
58  QWidget* myContaining;
59  QFrame* myLine;
60 
61  protected:
63  };
64 
66  {
67  public:
68  DtShadedWidget(QWidget*);
69  virtual ~DtShadedWidget();
70 
71  void setDown(bool);
72  bool down() const { return myDown; };
73 
74  void setSelectable(bool);
75  bool selectable() const { return mySelectable && isEnabled(); };
76 
77  virtual void paintEvent(QPaintEvent*);
78 
79  protected:
80  bool myDown;
82  };
83 
85  public QObject
86  {
87  public:
90 
91  virtual ~DtItemUpdateFunction();
92 
94  virtual QWidget* createWidgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*,
95  const std::string& keywords);
96  virtual QWidget* widgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
97 
98  virtual void setLogic(DtInformationDialogPageLogic* l);
100  {
101  return myLogic;
102  }
103 
104  virtual void setTreeWidgetItem(DtInformationTreeWidgetItem*);
105 
107  virtual void stateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
108 
109  virtual void adjustWidgetForColumnSpan(int colSpan);
110  virtual void adjustWidgetForRowSpan(int rowSpan);
111 
112  virtual void slot_onStateViewUpdated()
113  {
114  stateViewUpdated(myState);
115  }
116 
117  virtual QVariant value(int col, int role, const QTreeWidgetItem*,
119  virtual bool valueNeedsUpdate(int col, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) = 0;
120 
121  virtual bool shouldBeHidden() const;
122 
124 
126  {
127  deactivate();
128  }
129 
130  makVrv::DtDe* de() const;
131 
132  virtual void deactivate();
133 
135  virtual std::string icon() const;
136 
137  DtInformationTreeWidgetItem* treeWidgetItem()
138  {
139  return myTreeWidgetItem;
140  }
141 
142  virtual void setFixedItemWidth(int);
143  virtual void setFixedItemHeight(int);
144 
145  virtual DtFilename pixmapFile() const;
146 
147  virtual QSize minimumSizeHint() const;
148  virtual void setMaximumSize(const QSize&);
149  virtual void setMinimumSize(const QSize&);
150  virtual QRect geometry() const;
151 
152  virtual void setMinimumHeight(int);
153  virtual void setMinimumWidth(int);
154  virtual void setMaximumHeight(int);
155  virtual void setMaximumWidth(int);
156 
157  virtual bool eventFilter(QObject*, QEvent*);
158 
159  virtual bool mouseEnterEvent();
160  virtual bool mouseLeaveEvent();
161 
162  virtual void stateViewUpdated();
163 
164  virtual void setItemParameters(const std::vector<std::string>& params);
165  virtual const std::vector<std::string>& itemParameters() const;
166 
168  virtual QVariant widgetValue(int col, int role, QTreeWidgetItem* item, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
170 
172  virtual bool needsPageLogicForWidgetRepresentation() const;
173 
174  QWidget* container() const
175  {
176  return myContainer;
177  }
178 
179  virtual QWidget* createContainerData() const;
180 
181  boost::signal<void ()> signal_needsUpdate;
182 
183  protected:
184  virtual void fixupPixmapsOnResize();
185 
186  protected:
190 
191  std::vector<std::string> myItemParams;
192 
193  public:
194  QWidget* myDefaultText;
196  QWidget* myContainer;
197  };
198 
200  {
201  public:
204  {
205  }
206 
209  {
210  }
211 
213  virtual void setFixedItemWidth(int i)
214  {
215  myFixedItemWidth = i;
216  }
217 
219  virtual void setFixedItemHeight(int i)
220  {
221  myFixedItemHeight = i;
222  }
223 
224  virtual void adjustWidgetForColumnSpan(int colSpan)
225  {
226  myColSpan = colSpan;
227  }
228 
229  virtual void adjustWidgetForRowSpan(int rowSpan)
230  {
231  myRowSpan = rowSpan;
232  }
233  };
234 
236  {
237  public:
239  virtual std::string creatorName() = 0;
242  };
243 
245  {
246  public:
249 
250  virtual std::string creatorName() { return T::creatorName(); };
251  virtual DtItemUpdateFunction* create(DtInformationDialogPageLogic* l) { return new T(l); };
252  virtual DtItemUpdateFunction* create(makVrv::DtDe& de) { return new T(de); };
253  };
254 
257  {
258  Q_OBJECT
259 
260  public:
262  {
263  AlwaysShow = 0,
264  NeverShow = 1,
265  InitiallyHideAndCheckToShow = 2
266  };
267 
269  DtInformationDialogPage(makVrv::DtDe& de, QWidget* parent, Qt::WindowFlags f = Qt::SubWindow);
270 
272  virtual ~DtInformationDialogPage();
273 
274  virtual ShowStatus setupGui(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
275 
276  virtual QTreeWidget* dataItems();
277 
279  virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
280 
282  virtual void deactivate();
283 
284  virtual void stateViewRemoved();
285 
286  virtual void updateData();
287  virtual bool mouseEnterEvent();
288  virtual bool mouseLeaveEvent();
289 
290  virtual void setFixedItemHeight(int);
291  virtual void setFixedItemWidth(int);
292 
293  virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList&);
294 
297  virtual bool selectElement(const std::string&);
298 
300  virtual bool isSubElementSelected(const std::string&) const;
301 
303  virtual void unknownDataItem(const std::string&);
304 
305  virtual const makVrv::DtPageConfiguration::PagePathList& informationItems() const
306  {
307  return myInformationItems;
308  }
309 
311  virtual QWidget* createWidgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*,
312  const std::string& keywords);
313  virtual QWidget* widgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
314  virtual QSize minimumSizeHint() const;
315  virtual void setMaximumSize(const QSize& size);
316  virtual void setMinimumSize(const QSize& size);
317  virtual QRect geometry() const;
318 
319  virtual void setMinimumHeight(int);
320  virtual void setMinimumWidth(int);
321  virtual void setMaximumHeight(int);
322  virtual void setMaximumWidth(int);
323 
324  virtual void removeTitle();
325 
326  virtual void adjustWidgetForColumnSpan(int colSpan);
327  virtual void adjustWidgetForRowSpan(int rowSpan);
328 
331  virtual void setLineBreak(int);
332 
333  virtual DtInformationDialogPageLogic* createLogic()
334  {
335  return 0;
336  }
337 
339  virtual void dialogAboutToShow(DtInformationDialog*);
340 
342  {
343  return myLogic;
344  }
345 
346  virtual void setLogic(DtInformationDialogPageLogic*);
347 
348  virtual void forceRemove();
349 
351  virtual void signalToAddWhenReady(bool, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
352 
354  virtual void setSizeHint(const QSize&);
355  virtual QSize sizeHint() const;
356 
357  virtual void mainWindowHidden();
358  virtual void mainWindowShown();
359 
360  boost::signal<void (DtInformationDialogPage*)> signal_readyToShow;
361  boost::signal<void ()> signal_stateViewUpdated;
362  boost::signal<void (std::string, DtInformationSectionDisplayHandler*)> signal_showInformationPage;
363  boost::signal<void (std::string, bool)> signal_expandSection;
364 
365  protected slots:
366  virtual void lineBreakDestroyed();
367 
368  protected:
370  virtual QWidget* createPageContents(ShowStatus& status);
371  virtual void updateShowState(const std::string& s, bool b);
372 
374  virtual void activate();
375 
376  virtual bool keepInformationDialogUpOnRewind() const { return true; };
377 
378  protected:
383  QSize mySizeHint;
384 
385  public:
386  QVBoxLayout* myMainLayout;
387  QVBoxLayout* myContentsLayout;
391  };
392 
394  {
395  public:
396  enum AddFlags
397  {
398  Before = 1,
399  ChildOf = 2
400  };
401 
402  public:
404 
405  virtual ~DtInformationDialogPageLogic();
406 
407  virtual void updateData();
408  virtual void clearInterface();
409 
411  {
412  return myDe;
413  }
414 
415  void setInterface(DtInformationDialogPage* iFace)
416  {
417  myInterface = iFace;
418  }
419 
420  makVrv::DtElementID elementId() const
421  {
422  return myStateId;
423  }
424 
426  {
427  return myState;
428  }
429 
430  virtual void setState(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
431 
432  virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList& pathList);
433  virtual void forceRemove();
434 
435  public:
437  virtual DtInformationTreeWidgetItem* addDataItem(const std::string& name, DtItemUpdateFunction* function,
438  const std::string& before = "", int flags = Before);
439 
441  virtual void replaceUpdateFunction(const std::string& name, DtItemUpdateFunction* function);
442 
444  virtual void removeDataItem(const std::string& name);
445 
447  virtual void setDataItemVisible(const std::string&, bool);
448 
450  virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
451  virtual void deactivate();
452 
453  virtual void stateViewRemoved();
454  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
455 
457  virtual void slot_onUpdateRateChanged(makVrv::DtUniqueID id, int rate);
458 
459  virtual void setFixedItemHeight(int);
460  int fixedItemHeight() const
461  {
462  return myFixedItemHeight;
463  }
464 
465  virtual void setFixedItemWidth(int);
466  int fixedItemWidth() const
467  {
468  return myFixedItemWidth;
469  }
470 
471  virtual void slot_itemRequestedUpdate(DtItemUpdateFunction*);
472 
473  protected:
474  virtual void slot_defaultIconListChanged();
475 
476  virtual DtInformationTreeWidgetItem* createTreeWidgetItem();
477 
478  virtual void completeRateChange();
479  virtual void slot_onStateViewAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& state);
480 
482  virtual makVrv::DtSimEntryUpdater::UpdateRate defaultUpdateRate() const;
483 
484  virtual makVrv::DtSimEntryUpdater::UpdateRate currentUpdateRate() const;
486 
487  protected:
494  std::map<std::string, DtInformationTreeWidgetItem*> myItems;
498  boost::signalslib::connection myStateUpdateConnection;
499  };
500 
502  {
503  public:
505  virtual ~DtInformationTreeWidgetItem();
506 
508  {
509  DtItemUpdateFunction* old = myUpdater;
510 
511  myUpdater = f;
512 
513  return old;
514  }
515 
516  virtual bool needsUpdate(int col) const;
517 
518  const std::string& internalName() const
519  {
520  return myInternalName;
521  }
522 
523  void setInternalName(const std::string& n)
524  {
525  myInternalName = n;
526  }
527 
529  {
530  myState = s;
531  }
532 
534  {
535  myUpdater->activate(s);
536  }
537 
539  {
540  myUpdater->deactivate(s);
541  }
542 
544  {
545  return myUpdater;
546  }
547 
549  {
550  myUpdater->stateViewUpdated(s);
551  }
552 
553  protected:
554  virtual QVariant data(int col, int role) const;
555 
556  protected:
558  std::string myInternalName;
560  };
561  }
562 }

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)