VR-Forces 5.0.3 Developer's Guide
 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 #if !defined(Q_MOC_RUN)
13 
14 
18 
19 #include <vrvCoreQt/DtPage.h>
21 #include <vrvCore/DtStateView.h>
22 #include <vrvCore/DtEntityState.h>
23 #include <vrvCore/DtSimEntry.h>
24 
26 #endif
27 #include <boost/signals2.hpp>
28 
29 #include <QtWidgets/QTreeWidget>
30 
31 class QLabel;
32 class QVBoxLayout;
33 class DtFrame;
34 
35 namespace makVrv
36 {
37  class DtDe;
38  class DtPersistenceToolbarWidget;
39 }
40 
41 namespace makVrf
42 {
43  namespace makVrfGuiObjectInformationQt
44  {
45  class DtInformationDialogPageLogic;
46  class DtInformationTreeWidgetItem;
47  class DtInformationDialog;
48 
50  {
51  public:
52  DtLineBreakWidget(QWidget* parent, QWidget* containing);
53 
54  virtual bool eventFilter(QObject*, QEvent*);
55 
56  virtual void setLineBreak(int);
57 
58  void setSelectable(bool b) { mySelectable = b; };
59  bool selectable() const { return mySelectable; };
60 
61  public:
62  QWidget* myContaining;
63  QFrame* myLine;
64 
65  protected:
67  };
68 
70  {
71  public:
72  DtShadedWidget(QWidget*);
73  virtual ~DtShadedWidget();
74 
75  void setDown(bool);
76  bool down() const { return myDown; };
77 
78  void setSelectable(bool);
79  bool selectable() const { return mySelectable && isEnabled(); };
80 
81  virtual void paintEvent(QPaintEvent*);
82 
83  protected:
84  bool myDown;
86  };
87 
89  public QObject
90  {
91  public:
94 
95  virtual ~DtItemUpdateFunction();
96 
98  virtual QWidget* createWidgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*,
99  const std::string& keywords);
100  virtual QWidget* widgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
101 
102  virtual void setLogic(DtInformationDialogPageLogic* l);
104  {
105  return myLogic;
106  }
107 
108  virtual void setTreeWidgetItem(DtInformationTreeWidgetItem*);
109 
111  virtual void stateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
112 
113  virtual void adjustWidgetForColumnSpan(int colSpan);
114  virtual void adjustWidgetForRowSpan(int rowSpan);
115 
116  virtual void slot_onStateViewUpdated()
117  {
118  stateViewUpdated(myState);
119  }
120 
121  virtual QVariant value(int col, int role, const QTreeWidgetItem*,
123  virtual bool valueNeedsUpdate(int col, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*) = 0;
124 
125  virtual bool shouldBeHidden() const;
126 
128 
130  {
131  deactivate();
132  }
133 
134  makVrv::DtDe* de() const;
135 
136  virtual void deactivate();
137 
139  virtual std::string icon() const;
140 
142  {
143  return myTreeWidgetItem;
144  }
145 
146  virtual void setFixedItemWidth(int);
147  virtual void setFixedItemHeight(int);
148 
149  virtual DtFilename pixmapFile() const;
150 
151  virtual QSize minimumSizeHint() const;
152  virtual void setMaximumSize(const QSize&);
153  virtual void setMinimumSize(const QSize&);
154  virtual QRect geometry() const;
155 
156  virtual void setMinimumHeight(int);
157  virtual void setMinimumWidth(int);
158  virtual void setMaximumHeight(int);
159  virtual void setMaximumWidth(int);
160 
161  virtual bool eventFilter(QObject*, QEvent*);
162 
163  virtual bool mouseEnterEvent();
164  virtual bool mouseLeaveEvent();
165 
166  virtual void stateViewUpdated();
167 
168  virtual void setItemParameters(const std::vector<std::string>& params);
169  virtual const std::vector<std::string>& itemParameters() const;
170 
172  virtual QVariant widgetValue(int col, int role, QTreeWidgetItem* item, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
175 
177  virtual bool needsPageLogicForWidgetRepresentation() const;
178 
179  QWidget* container() const
180  {
181  return myContainer;
182  }
183 
184  virtual QWidget* createContainerData() const;
185 
186  boost::signals2::signal<void ()> signal_needsUpdate;
187 
188  protected:
189  virtual void fixupPixmapsOnResize();
190 
191  protected:
195 
196  std::vector<std::string> myItemParams;
197 
198  public:
199  QWidget* myDefaultText;
201  QWidget* myContainer;
202  };
203 
205  {
206  public:
209  {
210  }
211 
214  {
215  }
216 
218  virtual void setFixedItemWidth(int i)
219  {
220  myFixedItemWidth = i;
221  }
222 
224  virtual void setFixedItemHeight(int i)
225  {
226  myFixedItemHeight = i;
227  }
228 
229  virtual void adjustWidgetForColumnSpan(int colSpan)
230  {
231  myColSpan = colSpan;
232  }
233 
234  virtual void adjustWidgetForRowSpan(int rowSpan)
235  {
236  myRowSpan = rowSpan;
237  }
238  };
239 
241  {
242  public:
244  virtual std::string creatorName() = 0;
247  };
248 
250  {
251  public:
254 
255  virtual std::string creatorName() { return T::creatorName(); };
256  virtual DtItemUpdateFunction* create(DtInformationDialogPageLogic* l) { return new T(l); };
257  virtual DtItemUpdateFunction* create(makVrv::DtDe& de) { return new T(de); };
258  };
259 
262  {
263  Q_OBJECT
264 
265  public:
267  {
268  AlwaysShow = 0,
269  NeverShow = 1,
270  InitiallyHideAndCheckToShow = 2
271  };
272 
274  DtInformationDialogPage(makVrv::DtDe& de, QWidget* parent, Qt::WindowFlags f = Qt::SubWindow);
275 
277  virtual ~DtInformationDialogPage();
278 
279  virtual ShowStatus setupGui(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
280 
281  virtual QTreeWidget* dataItems();
282 
284  virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
285 
287  virtual void deactivate();
288 
289  virtual void stateViewRemoved();
290 
291  virtual void updateData();
292  virtual bool mouseEnterEvent();
293  virtual bool mouseLeaveEvent();
294 
295  virtual void setFixedItemHeight(int);
296  virtual void setFixedItemWidth(int);
297 
298  virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList&);
299 
302  virtual bool selectElement(const std::string&);
303 
305  virtual bool isSubElementSelected(const std::string&) const;
306 
308  virtual void unknownDataItem(const std::string&);
309 
311  {
312  return myInformationItems;
313  }
314 
316  virtual QWidget* createWidgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*,
317  const std::string& keywords);
318  virtual QWidget* widgetRepresentation(QWidget* parent, makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
319  virtual QSize minimumSizeHint() const;
320  virtual void setMaximumSize(const QSize& size);
321  virtual void setMinimumSize(const QSize& size);
322  virtual QRect geometry() const;
323 
324  virtual void setMinimumHeight(int);
325  virtual void setMinimumWidth(int);
326  virtual void setMaximumHeight(int);
327  virtual void setMaximumWidth(int);
328 
329  virtual void removeTitle();
330 
331  virtual void adjustWidgetForColumnSpan(int colSpan);
332  virtual void adjustWidgetForRowSpan(int rowSpan);
333 
336  virtual void setLineBreak(int);
337 
339  {
340  return 0;
341  }
342 
344  virtual void dialogAboutToShow(DtInformationDialog*);
345 
347  {
348  return myLogic;
349  }
350 
351  virtual void setSectionName(const std::string&);
352 
353  const std::string& sectionName() const
354  {
355  return mySectionName;
356  }
357 
358  virtual void setLogic(DtInformationDialogPageLogic*);
359 
360  virtual void forceRemove();
361 
363  virtual void signalToAddWhenReady(bool, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
364 
366  virtual void setSizeHint(const QSize&);
367  virtual QSize sizeHint() const;
368 
369  virtual void mainWindowHidden();
370  virtual void mainWindowShown();
371 
372  boost::signals2::signal<void (DtInformationDialogPage*)> signal_readyToShow;
373  boost::signals2::signal<void ()> signal_stateViewUpdated;
374  boost::signals2::signal<void (std::string, DtInformationSectionDisplayHandler*)> signal_showInformationPage;
375  boost::signals2::signal<void (std::string, bool)> signal_expandSection;
376 
377  protected slots:
378  virtual void lineBreakDestroyed();
379 
380  protected:
382  virtual QWidget* createPageContents(ShowStatus& status);
383  virtual void updateShowState(const std::string& s, bool b);
384 
386  virtual void activate();
387 
388  virtual bool keepInformationDialogUpOnRewind() const { return true; };
389 
390  protected:
395  QSize mySizeHint;
396  std::string mySectionName;
397 
398  public:
399  QVBoxLayout* myMainLayout;
400  QVBoxLayout* myContentsLayout;
404  };
405 
407  {
408  public:
409  enum AddFlags
410  {
411  Before = 1,
412  ChildOf = 2
413  };
414 
415  public:
417 
418  virtual ~DtInformationDialogPageLogic();
419 
420  virtual void updateData();
421  virtual void clearInterface();
422 
424  {
425  return myDe;
426  }
427 
429  {
430  myInterface = iFace;
431  }
432 
434  {
435  return myStateId;
436  }
437 
439  {
440  return myState;
441  }
442 
443  virtual void setState(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
444 
445  virtual void addDataItems(const makVrv::DtPageConfiguration::PagePathList& pathList);
446  virtual void forceRemove();
447 
448  public:
450  virtual DtInformationTreeWidgetItem* addDataItem(const std::string& name, DtItemUpdateFunction* function,
451  const std::string& before = "", int flags = Before);
452 
454  virtual void replaceUpdateFunction(const std::string& name, DtItemUpdateFunction* function);
455 
457  virtual void removeDataItem(const std::string& name);
458 
460  virtual void setDataItemVisible(const std::string&, bool);
461 
463  virtual void activate(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state);
464  virtual void deactivate();
465 
466  virtual void stateViewRemoved();
467  virtual void slot_onStateViewUpdated(makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
468 
470  virtual void slot_onUpdateRateChanged(makVrv::DtUniqueID id, int rate);
471 
472  virtual void setFixedItemHeight(int);
473  int fixedItemHeight() const
474  {
475  return myFixedItemHeight;
476  }
477 
478  virtual void setFixedItemWidth(int);
479  int fixedItemWidth() const
480  {
481  return myFixedItemWidth;
482  }
483 
484  virtual void slot_itemRequestedUpdate(DtItemUpdateFunction*);
485 
486  virtual const std::set<makVrv::DtUniqueID>& elementIDs() const;
487 
488  protected:
489  virtual void slot_defaultIconListChanged();
490 
491  virtual DtInformationTreeWidgetItem* createTreeWidgetItem();
492 
493  virtual void completeRateChange();
494  virtual void slot_onStateViewAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>& state);
495 
497  virtual makVrv::DtSimEntryUpdater::UpdateRate defaultUpdateRate() const;
498 
499  virtual makVrv::DtSimEntryUpdater::UpdateRate currentUpdateRate() const;
501  virtual bool setUpdateRateFor(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* state) const;
502 
503  protected:
510  std::map<std::string, DtInformationTreeWidgetItem*> myItems;
514  mutable std::set<makVrv::DtUniqueID> myElementIDs;
515  boost::signals2::connection myStateUpdateConnection;
516  };
517 
519  {
520  public:
522  virtual ~DtInformationTreeWidgetItem();
523 
525  {
526  DtItemUpdateFunction* old = myUpdater;
527 
528  myUpdater = f;
529 
530  return old;
531  }
532 
533  virtual bool needsUpdate(int col) const;
534 
535  const std::string& internalName() const
536  {
537  return myInternalName;
538  }
539 
540  void setInternalName(const std::string& n)
541  {
542  myInternalName = n;
543  }
544 
546  {
547  myState = s;
548  }
549 
551  {
552  myUpdater->activate(s);
553  }
554 
556  {
557  myUpdater->deactivate(s);
558  }
559 
561  {
562  return myUpdater;
563  }
564 
566  {
567  myUpdater->stateViewUpdated(s);
568  }
569 
570  protected:
571  virtual QVariant data(int col, int role) const;
572 
573  protected:
575  std::string myInternalName;
577  };
578 
581  {
582  public:
585 
586  virtual DtInformationTreeWidgetItem* create();
587 
588  static DtInformationTreeWidgetItemCreator& instance(makVrv::DtDe& de);
589  static void registerInstance(makVrv::DtDe& de, DtInformationTreeWidgetItemCreator*);
590 
591  protected:
593  };
594  }
595 }
int myFixedItemWidth
Definition: informationDialogPage.h:513
std::list< DtPagePath > PagePathList
Definition: DtPageConfiguration.h:30
std::string mySectionName
Definition: informationDialogPage.h:396
DtItemUpdateFunctionCreator()
Definition: informationDialogPage.h:252
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Registered creator for this class.
Definition: informationDialogPage.h:580
makVrv::DtElementID elementId() const
Definition: informationDialogPage.h:433
makVrv::DtSignalConnectionManager myConnections
Definition: informationDialogPage.h:508
QWidget * myDefaultText
Definition: informationDialogPage.h:199
makVrv::DtPageConfiguration::PagePathList myInformationItems
Definition: informationDialogPage.h:392
void setSelectable(bool b)
Definition: informationDialogPage.h:58
DtInformationDialogPageLogic * myLogic
Definition: informationDialogPage.h:192
Contains makVrv::DtPage class.
makVrv::DtDe & myDe
Definition: informationDialogPage.h:505
virtual DtItemUpdateFunction * create(DtInformationDialogPageLogic *l)
Definition: informationDialogPage.h:256
makVrv::DtElementID myStateId
Definition: informationDialogPage.h:507
UpdateRate
Definition: DtSimEntryUpdater.h:31
std::string myInternalName
Definition: informationDialogPage.h:575
void stateViewUpdated(makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > *s)
Definition: informationDialogPage.h:565
makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > * state()
Definition: informationDialogPage.h:438
std::map< std::string, DtInformationTreeWidgetItem * > myItems
Definition: informationDialogPage.h:510
int myFixedItemHeight
Definition: informationDialogPage.h:512
DtItemUpdateFunction * myUpdater
Definition: informationDialogPage.h:574
virtual std::string creatorName()
Definition: informationDialogPage.h:255
voidpf void uLong size
Definition: ioapi.h:39
boost::signals2::signal< void()> signal_stateViewUpdated
Definition: informationDialogPage.h:373
DtItemUpdateFunction * setUpdateFunction(DtItemUpdateFunction *f)
Definition: informationDialogPage.h:524
Contains makVrv::DtStateView class.
virtual void setFixedItemHeight(int i)
Override to allow subclasses to set their own height.
Definition: informationDialogPage.h:224
virtual ~DtItemUpdateFunctionCreatorInterface()
Definition: informationDialogPage.h:243
bool down() const
Definition: informationDialogPage.h:76
makVrv::DtDe & myDe
Definition: informationDialogPage.h:592
QFrame * myLine
Definition: informationDialogPage.h:63
std::vector< std::string > myItemParams
Definition: informationDialogPage.h:196
bool mySelectable
Definition: informationDialogPage.h:85
bool myDeleting
Definition: informationDialogPage.h:394
DtItemUpdateFunction * updater()
Definition: informationDialogPage.h:560
QWidget * container() const
Definition: informationDialogPage.h:179
DtInfoIconItem(DtInformationDialogPageLogic *l)
Definition: informationDialogPage.h:212
const std::string & sectionName() const
Definition: informationDialogPage.h:353
Definition: informationDialogPage.h:204
QWidget * myContainer
Definition: informationDialogPage.h:201
makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > * myState
Definition: informationDialogPage.h:576
QWidget * myWidgetRepresentation
Definition: informationDialogPage.h:402
bool myFirstUpdate
Definition: informationDialogPage.h:511
QLabel * myIconTitle
Definition: informationDialogPage.h:200
boost::signals2::connection myStateUpdateConnection
Definition: informationDialogPage.h:515
DtInformationDialogPageLogic * logic() const
Definition: informationDialogPage.h:346
Sections that are added in an information dialog section dialog need to be subclasses of this...
Definition: informationDialogHandler.h:109
boost::signals2::signal< void(std::string, bool)> signal_expandSection
Definition: informationDialogPage.h:375
int myLineBreak
Definition: informationDialogPage.h:393
Contains makVrv::DtPageConfiguration class.
virtual void deactivate(makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > *s)
Definition: informationDialogPage.h:129
Contains makVrv::DtSimEntry class.
makVrv::DtSignalConnectionManager myConnections
Definition: informationDialogPage.h:194
void deactivate(makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > *s)
Definition: informationDialogPage.h:555
bool selectable() const
Definition: informationDialogPage.h:59
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtInformationDialogPage * myInterface
Definition: informationDialogPage.h:504
Contains makVrv::DtVrlinkSimulatedEntityState class.
void activate(makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > *s)
Definition: informationDialogPage.h:550
std::set< makVrv::DtUniqueID > myElementIDs
Definition: informationDialogPage.h:514
The page is a single widget component which is viewed in a page collection.
Definition: DtPage.h:30
boost::signals2::signal< void(DtInformationDialogPage *)> signal_readyToShow
Definition: informationDialogPage.h:372
bool mySelectable
Definition: informationDialogPage.h:66
int fixedItemWidth() const
Definition: informationDialogPage.h:479
DtInformationDialogPageLogic * logic()
Definition: informationDialogPage.h:103
QVBoxLayout * myMainLayout
Definition: informationDialogPage.h:399
virtual const makVrv::DtPageConfiguration::PagePathList & informationItems() const
Definition: informationDialogPage.h:310
void setState(makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > *s)
Definition: informationDialogPage.h:545
DtInformationTreeWidgetItem * treeWidgetItem()
Definition: informationDialogPage.h:141
DtInfoIconItem(makVrv::DtDe &de)
Definition: informationDialogPage.h:207
virtual void setFixedItemWidth(int i)
Override to allow subclasses to set their own width.
Definition: informationDialogPage.h:218
DtInformationTreeWidgetItem * myTreeWidgetItem
Definition: informationDialogPage.h:193
Allows for setting of icons that will switch with the theme.
Definition: treeWidget.h:190
Base class to provide boost signal/slot management.
#define DT_DLL_VRFGUIOBJECTINFORMATIONQT
Contains DLL export macros.
Definition: vrfGuiObjectInformationQt.h:24
virtual void slot_onStateViewUpdated()
Definition: informationDialogPage.h:116
int fixedItemHeight() const
Definition: informationDialogPage.h:473
virtual DtInformationDialogPageLogic * createLogic()
Definition: informationDialogPage.h:338
makVrv::DtStateView< makVrv::DtVrlinkSimulatedBaseState > * myState
Definition: informationDialogPage.h:506
virtual void adjustWidgetForColumnSpan(int colSpan)
Definition: informationDialogPage.h:229
const std::string & internalName() const
Definition: informationDialogPage.h:535
QVBoxLayout * myContentsLayout
Definition: informationDialogPage.h:400
DtLineBreakWidget * myLineBreakWidget
Definition: informationDialogPage.h:403
void setInternalName(const std::string &n)
Definition: informationDialogPage.h:540
ShowStatus
Definition: informationDialogPage.h:266
virtual ~DtItemUpdateFunctionCreator()
Definition: informationDialogPage.h:253
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
Definition: informationDialogPage.h:49
QSize mySizeHint
Definition: informationDialogPage.h:395
makVrv::DtSignalConnectionManager myActivatedConnections
Definition: informationDialogPage.h:509
bool selectable() const
Definition: informationDialogPage.h:79
Contains makVrv::DtInformationDialogHandler class.
boost::signals2::signal< void()> signal_needsUpdate
Definition: informationDialogPage.h:186
virtual void adjustWidgetForRowSpan(int rowSpan)
Definition: informationDialogPage.h:234
makVrv::DtDe & de()
Definition: informationDialogPage.h:423
bool myDown
Definition: informationDialogPage.h:84
virtual DtItemUpdateFunction * create(DtInformationDialogPageLogic *l)=0
QTreeWidget * myDataItems
Definition: informationDialogPage.h:401
Simple handler that defines mouse events that can be handled by something added to a sectioned dialog...
Definition: informationDialogHandler.h:39
Definition: informationDialogPage.h:69
boost::signals2::signal< void(std::string, DtInformationSectionDisplayHandler *)> signal_showInformationPage
Definition: informationDialogPage.h:374
void setInterface(DtInformationDialogPage *iFace)
Definition: informationDialogPage.h:428
virtual DtItemUpdateFunction * create(makVrv::DtDe &de)
Definition: informationDialogPage.h:257

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)