VR-Forces 4.5 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
autoHidePanel.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
13 #include <vrvUtil/signalslib.h>
23 #include <vrvCoreQt/DtDockable.h>
24 #include <vrvCoreQt/DtMenuItem.h>
27 
28 #include <QtGui/QIcon>
29 #include <QtGui/QPixmap>
30 #include <QtWidgets/QWidget>
31 #include <QtWidgets/QDockWidget>
32 #include <QtWidgets/QPushButton>
33 #include <QtWidgets/QHeaderView>
34 #include <QtCore/QTimer>
35 #include <map>
36 
37 class QVBoxLayout;
38 
39 namespace makVrv
40 {
41  class DtDe;
42  class DtChannelManager;
43  class DtChannel;
44  class DtObserverObject;
45 }
46 
47 namespace makVrf
48 {
49  class DtAutoHidePanelItem;
50  class DtPropCreatePalette;
51  class DtEntityCreatePalette;
52  class DtTacticalGraphicCreatePalette;
53  class DtHazardAreaCreatePalette;
54 
59  {
60 
61  Q_OBJECT
62 
63  public:
64 
66  DtAutoHideDockViewItem(makVrv::DtDe& de, const std::string& dockName, DtAutoHidePanelItem* item);
67 
69  virtual ~DtAutoHideDockViewItem();
70 
72  virtual QAction* createAction(makVrv::DtDe& de, QWidget* parent);
73 
74  protected:
75 
77  virtual void on_triggered();
78 
80  virtual void on_aboutToShow();
81 
82  protected:
83 
87  };
88 
94  {
95  Q_OBJECT
96 
97  public:
98 
101  DtAutoHidePanelItem(makVrv::DtDe& de, QWidget* parent, QString title, const std::string& className);
102 
104  virtual ~DtAutoHidePanelItem();
105 
107  DtAutoHideDock* dockToManage();
108  virtual void setDockToManage(DtAutoHideDock* widget);
109 
111  virtual const QPixmap& icon() const;
112  virtual void setIcon(const QIcon& p);
113 
115  const std::string& className() const { return myClassName; };
116 
118  virtual QString iconText();
119  virtual void setIconText(const QString& s);
120 
123  virtual bool toggled() const;
124  virtual void setToggled(bool flag);
125 
127  virtual void setSelected(bool flag);
128 
131  virtual void setAvailable(bool visible, bool updateVisibilityState = true);
132  virtual bool available() const;
133 
135  virtual void setAboutToBeShown(bool flag);
136 
139  virtual void refreshSize(int minsize=-1);
140 
142  virtual void setToggle(bool flag);
143 
144  protected:
145 
147  virtual void enterEvent(QEvent* e);
148 
150  virtual void leaveEvent(QEvent *);
151 
153  virtual void mouseReleaseEvent( QMouseEvent * event );
154 
156  virtual void paintEvent(QPaintEvent* p);
157 
158  signals:
159 
161  void signal_enter(DtAutoHidePanelItem*);
162 
164  void signal_leave(DtAutoHidePanelItem*);
165 
168  void signal_toggled(DtAutoHidePanelItem*);
169 
172  void signal_clicked(DtAutoHidePanelItem*);
173 
175  void signal_availabilityChanged(DtAutoHidePanelItem*);
176 
177  protected:
178 
179  QPixmap myIcon;
180  QString myIconText;
193  std::string myClassName;
194  };
195 
197  {
198  public:
200  virtual ~DtAutoHidePanelItemCreator();
201 
203  static DtAutoHidePanelItemCreator& instance(makVrv::DtDe&);
204 
206  static void registerInstance(makVrv::DtDe& de, DtAutoHidePanelItemCreator* instance);
207 
208  virtual DtAutoHidePanelItem* create(makVrv::DtDe&, QWidget* parent, const QString& title, const std::string& className);
209  };
210 
216  {
217  Q_OBJECT
218 
219  public:
220 
222  {
223  Hidden = 0,
226  Floating
227  };
228 
229  typedef std::list<DtAutoHidePanelItem*> DtAutoHidePanelItemList;
230  typedef DtAutoHidePanelItemList::iterator DtAutoHidePanelItemListIterator;
231 
232  typedef std::list<DtAutoHideDock*> DtAutoHideDockList;
233  typedef DtAutoHideDockList::iterator DtAutoHideDockListIterator;
234 
235  typedef std::map<std::string, DtAppearanceOptions> DtAppearanceList;
236  typedef std::map<std::string, DtAppearanceOptions>::iterator DtAppearanceListIterator;
237 
238  public:
239 
240  DtAutoHidePanel(makVrv::DtDe& de, const std::string& name, makVrv::DtQtDeMainWindow* parent);
241 
242  virtual ~DtAutoHidePanel();
243 
247  virtual DtAutoHidePanelItem* addItem(DtAutoHideDock* dock, bool forceVisible=false, bool initiallVisible = true) ;
248 
250  virtual void clear();
251 
253  virtual DtAutoHidePanelItem* findItemForClass( const std::string& s );
254  virtual DtAutoHidePanelItem* findItemForDock( const DtAutoHideDock* dock );
255 
257  virtual void setPanelItemVisible(const std::string& panelClassName, bool, bool updateVisibilityState = false);
258 
261  virtual void hideAllDocks();
262 
264  virtual int itemCount();
265 
267  virtual void placeItems();
268 
270  virtual void removeItem(DtAutoHidePanelItem* item);
271 
273  virtual void showDockForItem( DtAutoHidePanelItem* item, bool animate=true);
274 
276  virtual void hideDockForItem( DtAutoHidePanelItem* item, bool animate=true);
277 
279  static DtAutoHidePanel* instance(makVrv::DtDe&);
280 
283  virtual std::vector< std::pair<DtString, QString> > panelsThatCanBeUsedOnCreateMenu() const;
284 
285  virtual void changeVisibility(bool);
286 
288  virtual bool findDock(DtAutoHideDock* dock);
289 
291 
294 
296  virtual void changeFloatingGeometry(int px, int py, int width, int height) {};
297 
300 
302  virtual void changeDockedGeometry(int px, int py, int width, int height) {};
303 
306 
308  virtual void selectPage(const std::string& pageClassName) {};
309 
310  const DtAutoHideDockList& docks() const
311  {
312  return myDocks;
313  }
314 
315  template <typename PaletteClass>
316  PaletteClass* createPalette()
317  {
318  DtAutoHideDockList::iterator iter = myDocks.begin();
319 
320  while (iter != myDocks.end())
321  {
322  PaletteClass* p = dynamic_cast<PaletteClass*>((*iter)->widget());
323 
324  if (p)
325  {
326  return p;
327  }
328 
329  ++iter;
330  }
331 
332  return 0;
333  }
334 
335  template <typename PaletteClass>
336  DtAutoHideDock* creationDock()
337  {
338  DtAutoHideDockList::iterator iter = myDocks.begin();
339 
340  while (iter != myDocks.end())
341  {
342  PaletteClass* p = dynamic_cast<PaletteClass*>((*iter)->widget());
343 
344  if (p)
345  {
346  return *iter;
347  }
348 
349  ++iter;
350  }
351 
352  return 0;
353  }
354 
356  virtual DtEntityCreatePalette* entityCreatePalette()
357  {
358  return createPalette<DtEntityCreatePalette>();
359  }
360 
361  virtual DtAutoHideDock* entityCreationDock()
362  {
363  return creationDock<DtEntityCreatePalette>();
364  }
365 
367  virtual DtHazardAreaCreatePalette* hazardAreaCreatePalette()
368  {
369  return createPalette<DtHazardAreaCreatePalette>();
370  }
371 
372  virtual DtAutoHideDock* hazardAreaCreationDock()
373  {
374  return creationDock<DtHazardAreaCreatePalette>();
375  }
376 
378  virtual DtTacticalGraphicCreatePalette* tacticalGraphicCreatePalette()
379  {
380  return createPalette<DtTacticalGraphicCreatePalette>();
381  }
382 
383  virtual DtAutoHideDock* tacticalGraphicCreationDock()
384  {
385  return creationDock<DtTacticalGraphicCreatePalette>();
386  }
387 
389  virtual DtPropCreatePalette* propCreatePalette()
390  {
391  return createPalette<DtPropCreatePalette>();
392  }
393 
394  virtual DtAutoHideDock* propCreationDock()
395  {
396  return creationDock<DtPropCreatePalette>();
397  }
398 
401  virtual void setItemPinned( DtAutoHidePanelItem*, bool );
402 
403  protected:
404 
406  virtual void setupGui();
407 
409  virtual bool eventFilter(QObject* p, QEvent* e);
410 
412  virtual void installEventFilters();
413 
415  virtual int maxItemWidth();
416 
418  virtual void removeDock(DtAutoHideDock* dock);
419 
421  virtual void relocateAnyPinnedDock();
422 
424  virtual void refreshItems(int minsize);
425 
427  virtual void refreshAppearanceOfItem(DtAutoHidePanelItem* autoHideItemWidget, bool forceVisible);
428 
430  virtual void addPageToGui(makVrv::DtPage*);
431 
433  virtual void removePageFromGui(makVrv::DtPage*);
434 
436  virtual void selectPageInGui(makVrv::DtPage* page) {};
437 
438  protected slots:
439 
442  virtual void slot_onItemToggled(DtAutoHidePanelItem*);
443 
446  virtual void slot_onItemClicked(DtAutoHidePanelItem*);
447 
449  virtual void slot_dockClosed(DtAutoHideDock* dockWidget);
450 
452  virtual void slot_dockEntered(DtAutoHideDock* dockWidget);
453 
455  virtual void slot_dockLeft(DtAutoHideDock* dockWidget);
456 
458  virtual void slot_dockResized(DtAutoHideDock* dockWidget);
459 
461  virtual void slot_dockDestroyed(DtAutoHideDock* dockWidget);
462 
464  virtual void slot_showDockOfCurrentItem(bool lockIt=false);
465 
467  virtual void slot_closeTimerTimeout();
468 
470  virtual void slot_onItemAvailabilityChanged(DtAutoHidePanelItem* dockWidget);
471 
472  virtual void slot_observerModeSettingChanged( makVrv::DtObserverObject*, int setting, bool value );
473  virtual void placeCompass();
474 
475  virtual void finalizeSetup();
476 
477  protected:
485  QTimer myTimer;
486  QTimer myCloseTimer;
487 
489  };
490 
493  {
494  public:
497 
499  virtual ~DtAutoHidePanelCreator();
500 
502  static DtAutoHidePanelCreator& instance(makVrv::DtDe&);
503 
505  static void registerInstance(makVrv::DtDe&, DtAutoHidePanelCreator*);
506 
508  virtual DtAutoHidePanel* create(const std::string& name, QWidget* parent);
509 
510  protected:
512  };
513 }

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)