VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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>
22 #include <vrvCoreQt/DtDockable.h>
23 #include <vrvCoreQt/DtMenuItem.h>
26 
27 #include <QtGui/QIcon>
28 #include <QtGui/QPixmap>
29 #include <QtWidgets/QWidget>
30 #include <QtWidgets/QDockWidget>
31 #include <QtWidgets/QPushButton>
32 #include <QtWidgets/QHeaderView>
33 #include <QtCore/QTimer>
34 #include <map>
35 
36 class QVBoxLayout;
37 
38 namespace makVrv
39 {
40  class DtDe;
41  class DtChannelManager;
42  class DtChannel;
43  class DtObserverObject;
44 }
45 
46 namespace makVrf
47 {
48  class DtAutoHidePanelItem;
49  class DtPropCreatePalette;
50  class DtEntityCreatePalette;
51  class DtTacticalGraphicCreatePalette;
52 
57  {
58 
59  Q_OBJECT
60 
61  public:
62 
64  DtAutoHideDockViewItem(makVrv::DtDe& de, const std::string& dockName, DtAutoHidePanelItem* item);
65 
67  virtual ~DtAutoHideDockViewItem();
68 
70  virtual QAction* createAction(makVrv::DtDe& de, QWidget* parent);
71 
72  protected:
73 
75  virtual void on_triggered();
76 
78  virtual void on_aboutToShow();
79 
80  protected:
81 
85  };
86 
92  {
93  Q_OBJECT
94 
95  public:
96 
99  DtAutoHidePanelItem(makVrv::DtDe& de, QWidget* parent, QString title, const std::string& className);
100 
102  virtual ~DtAutoHidePanelItem();
103 
105  DtAutoHideDock* dockToManage();
106  virtual void setDockToManage(DtAutoHideDock* widget);
107 
109  virtual const QPixmap& icon() const;
110  virtual void setIcon(const QIcon& p);
111 
113  const std::string& className() const { return myClassName; };
114 
116  virtual QString iconText();
117  virtual void setIconText(const QString& s);
118 
121  virtual bool toggled() const;
122  virtual void setToggled(bool flag);
123 
125  virtual void setSelected(bool flag);
126 
129  virtual void setAvailable(bool visible, bool updateVisibilityState = true);
130  virtual bool available() const;
131 
133  virtual void setAboutToBeShown(bool flag);
134 
137  virtual void refreshSize(int minsize=-1);
138 
140  virtual void setToggle(bool flag);
141 
142  protected:
143 
145  virtual void enterEvent(QEvent* e);
146 
148  virtual void leaveEvent(QEvent *);
149 
151  virtual void mouseReleaseEvent( QMouseEvent * event );
152 
154  virtual void paintEvent(QPaintEvent* p);
155 
156  signals:
157 
159  void signal_enter(DtAutoHidePanelItem*);
160 
162  void signal_leave(DtAutoHidePanelItem*);
163 
166  void signal_toggled(DtAutoHidePanelItem*);
167 
170  void signal_clicked(DtAutoHidePanelItem*);
171 
173  void signal_availabilityChanged(DtAutoHidePanelItem*);
174 
175  protected:
176 
177  QPixmap myIcon;
178  QString myIconText;
191  std::string myClassName;
192  };
193 
195  {
196  public:
198  virtual ~DtAutoHidePanelItemCreator();
199 
201  static DtAutoHidePanelItemCreator& instance(makVrv::DtDe&);
202 
204  static void registerInstance(makVrv::DtDe& de, DtAutoHidePanelItemCreator* instance);
205 
206  virtual DtAutoHidePanelItem* create(makVrv::DtDe&, QWidget* parent, const QString& title, const std::string& className);
207  };
208 
214  {
215  Q_OBJECT
216 
217  public:
218 
220  {
221  Hidden = 0,
224  Floating
225  };
226 
227  typedef std::list<DtAutoHidePanelItem*> DtAutoHidePanelItemList;
228  typedef DtAutoHidePanelItemList::iterator DtAutoHidePanelItemListIterator;
229 
230  typedef std::list<DtAutoHideDock*> DtAutoHideDockList;
231  typedef DtAutoHideDockList::iterator DtAutoHideDockListIterator;
232 
233  typedef std::map<std::string, DtAppearanceOptions> DtAppearanceList;
234  typedef std::map<std::string, DtAppearanceOptions>::iterator DtAppearanceListIterator;
235 
236  public:
237 
238  DtAutoHidePanel(makVrv::DtDe& de, const std::string& name, makVrv::DtQtDeMainWindow* parent);
239 
240  virtual ~DtAutoHidePanel();
241 
245  virtual DtAutoHidePanelItem* addItem(DtAutoHideDock* dock, bool forceVisible=false, bool initiallVisible = true) ;
246 
248  virtual void clear();
249 
251  virtual DtAutoHidePanelItem* findItemForClass( const std::string& s );
252  virtual DtAutoHidePanelItem* findItemForDock( const DtAutoHideDock* dock );
253 
255  virtual void setPanelItemVisible(const std::string& panelClassName, bool, bool updateVisibilityState = false);
256 
259  virtual void hideAllDocks();
260 
262  virtual int itemCount();
263 
265  virtual void placeItems();
266 
268  virtual void removeItem(DtAutoHidePanelItem* item);
269 
271  virtual void showDockForItem( DtAutoHidePanelItem* item, bool animate=true);
272 
274  virtual void hideDockForItem( DtAutoHidePanelItem* item, bool animate=true);
275 
277  static DtAutoHidePanel* instance(makVrv::DtDe&);
278 
281  virtual std::vector< std::pair<DtString, QString> > panelsThatCanBeUsedOnCreateMenu() const;
282 
283  virtual void changeVisibility(bool);
284 
286  virtual bool findDock(DtAutoHideDock* dock);
287 
289 
292 
294  virtual void changeFloatingGeometry(int px, int py, int width, int height) {};
295 
298 
300  virtual void changeDockedGeometry(int px, int py, int width, int height) {};
301 
304 
306  virtual void selectPage(const std::string& pageClassName) {};
307 
308  const DtAutoHideDockList& docks() const
309  {
310  return myDocks;
311  }
312 
313  template <typename PaletteClass>
314  PaletteClass* createPalette()
315  {
316  DtAutoHideDockList::iterator iter = myDocks.begin();
317 
318  while (iter != myDocks.end())
319  {
320  PaletteClass* p = dynamic_cast<PaletteClass*>((*iter)->widget());
321 
322  if (p)
323  {
324  return p;
325  }
326 
327  ++iter;
328  }
329 
330  return 0;
331  }
332 
333  template <typename PaletteClass>
334  DtAutoHideDock* creationDock()
335  {
336  DtAutoHideDockList::iterator iter = myDocks.begin();
337 
338  while (iter != myDocks.end())
339  {
340  PaletteClass* p = dynamic_cast<PaletteClass*>((*iter)->widget());
341 
342  if (p)
343  {
344  return *iter;
345  }
346 
347  ++iter;
348  }
349 
350  return 0;
351  }
352 
354  virtual DtEntityCreatePalette* entityCreatePalette()
355  {
356  return createPalette<DtEntityCreatePalette>();
357  }
358 
359  virtual DtAutoHideDock* entityCreationDock()
360  {
361  return creationDock<DtEntityCreatePalette>();
362  }
363 
365  virtual DtTacticalGraphicCreatePalette* tacticalGraphicCreatePalette()
366  {
367  return createPalette<DtTacticalGraphicCreatePalette>();
368  }
369 
370  virtual DtAutoHideDock* tacticalGraphicCreationDock()
371  {
372  return creationDock<DtTacticalGraphicCreatePalette>();
373  }
374 
376  virtual DtPropCreatePalette* propCreatePalette()
377  {
378  return createPalette<DtPropCreatePalette>();
379  }
380 
381  virtual DtAutoHideDock* propCreationDock()
382  {
383  return creationDock<DtPropCreatePalette>();
384  }
385 
388  virtual void setItemPinned( DtAutoHidePanelItem*, bool );
389 
390  protected:
391 
393  virtual void setupGui();
394 
396  virtual bool eventFilter(QObject* p, QEvent* e);
397 
399  virtual void installEventFilters();
400 
402  virtual int maxItemWidth();
403 
405  virtual void removeDock(DtAutoHideDock* dock);
406 
408  virtual void relocateAnyPinnedDock();
409 
411  virtual void refreshItems(int minsize);
412 
414  virtual void refreshAppearanceOfItem(DtAutoHidePanelItem* autoHideItemWidget, bool forceVisible);
415 
417  virtual void addPageToGui(makVrv::DtPage*);
418 
420  virtual void removePageFromGui(makVrv::DtPage*);
421 
423  virtual void selectPageInGui(makVrv::DtPage* page) {};
424 
425  protected slots:
426 
429  virtual void slot_onItemToggled(DtAutoHidePanelItem*);
430 
433  virtual void slot_onItemClicked(DtAutoHidePanelItem*);
434 
436  virtual void slot_dockClosed(DtAutoHideDock* dockWidget);
437 
439  virtual void slot_dockEntered(DtAutoHideDock* dockWidget);
440 
442  virtual void slot_dockLeft(DtAutoHideDock* dockWidget);
443 
445  virtual void slot_dockResized(DtAutoHideDock* dockWidget);
446 
448  virtual void slot_dockDestroyed(DtAutoHideDock* dockWidget);
449 
451  virtual void slot_showDockOfCurrentItem(bool lockIt=false);
452 
454  virtual void slot_closeTimerTimeout();
455 
457  virtual void slot_onItemAvailabilityChanged(DtAutoHidePanelItem* dockWidget);
458 
459  virtual void slot_observerModeSettingChanged( makVrv::DtObserverObject*, int setting, bool value );
460  virtual void placeCompass();
461 
462  virtual void finalizeSetup();
463 
464  protected:
466  QWidget* myCentralWidget;
473  QTimer myTimer;
474  QTimer myCloseTimer;
475 
477  };
478 
481  {
482  public:
485 
487  virtual ~DtAutoHidePanelCreator();
488 
490  static DtAutoHidePanelCreator& instance(makVrv::DtDe&);
491 
493  static void registerInstance(makVrv::DtDe&, DtAutoHidePanelCreator*);
494 
496  virtual DtAutoHidePanel* create(const std::string& name, QWidget* parent);
497 
498  protected:
500  };
501 }

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)