VR-Forces Developer's Guide
 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 #if !defined(Q_MOC_RUN)
21 #include <vrvCoreQt/DtDockable.h>
22 #include <vrvCoreQt/DtMenuItem.h>
26 #endif
27 
28 #include <QtGui/QIcon>
29 #include <QtGui/QPixmap>
30 #include <QtWidgets/QWidget>
31 #include <QtWidgets/QDockWidget>
32 #include <QtWidgets/QPushButton>
33 #include <QtWidgets/QToolButton>
34 #include <QtWidgets/QHeaderView>
35 #include <QtCore/QTimer>
36 #include <map>
37 
38 class QVBoxLayout;
39 
40 namespace makVrv
41 {
42  class DtDe;
43  class DtChannelManager;
44  class DtChannel;
45  class DtObserverObject;
46 }
47 
48 namespace makVrf
49 {
50  class DtAutoHidePanelItem;
51  class DtPropCreatePalette;
52  class DtCreateObjectPalette;
53 
58  {
59 
60  Q_OBJECT
61 
62  public:
63 
65  DtAutoHideDockViewItem(makVrv::DtDe& de, const std::string& dockName, DtAutoHidePanelItem* item);
66 
68  virtual ~DtAutoHideDockViewItem() override;
69 
71  virtual QAction* createAction(makVrv::DtDe& de, QWidget* parent) override;
72 
73  protected:
74 
76  virtual void on_triggered() override;
77 
79  virtual void on_aboutToShow() override;
80 
81  protected:
82 
86  };
87 
93  {
94  Q_OBJECT
95 
96  public:
97 
100  DtAutoHidePanelItem(makVrv::DtDe& de, QWidget* parent, QString title, const std::string& className);
101 
103  virtual ~DtAutoHidePanelItem() override;
104 
106  DtAutoHideDock* dockToManage();
107  virtual void setDockToManage(DtAutoHideDock* widget);
108 
110  virtual const makVrv::DtQIconConfigurations& icon() const;
111  virtual void setIcon(const makVrv::DtQIconConfigurations& p);
112 
114  const std::string& className() const { return myClassName; };
115 
117  virtual QString iconText();
118  virtual void setIconText(const QString& s);
119 
122  virtual bool toggled() const;
123  virtual void setToggled(bool flag);
124 
127  virtual void setAvailable(bool visible, bool updateVisibilityState = true);
128  virtual bool available() const;
129 
131  virtual void setAboutToBeShown(bool flag);
132 
135  virtual void refreshSize(int minsize=-1);
136 
138  virtual void setToggle(bool flag);
139 
140  protected:
141  virtual bool eventFilter(QObject* o, QEvent* e) override;
142 
144  virtual void enterEvent(QEvent* e) override;
145 
147  virtual void leaveEvent(QEvent*) override;
148 
150  virtual void paintEvent(QPaintEvent* p) override;
151 
152  virtual void refreshIcon();
153 
154  signals:
155 
157  void signal_enter(DtAutoHidePanelItem*);
158 
160  void signal_leave(DtAutoHidePanelItem*);
161 
164  void signal_toggled(DtAutoHidePanelItem*);
165 
168  void signal_clicked(DtAutoHidePanelItem*);
169 
171  void signal_availabilityChanged(DtAutoHidePanelItem*);
172 
173  protected slots:
175  virtual void toggleItem();
176 
177  protected:
178 
180  QIcon myIcon;
182  QString myIconText;
193  std::string myClassName;
195  };
196 
198  {
199  public:
201  virtual ~DtAutoHidePanelItemCreator() override;
202 
204  static DtAutoHidePanelItemCreator& instance(makVrv::DtDe&);
205 
207  static void registerInstance(makVrv::DtDe& de, DtAutoHidePanelItemCreator* instance);
208 
209  virtual DtAutoHidePanelItem* create(makVrv::DtDe&, QWidget* parent, const QString& title, const std::string& className);
210  };
211 
217  {
218  Q_OBJECT
219 
220  public:
221 
223  {
224  Hidden = 0,
227  Floating
228  };
229 
230  typedef std::list<DtAutoHidePanelItem*> DtAutoHidePanelItemList;
231  typedef DtAutoHidePanelItemList::iterator DtAutoHidePanelItemListIterator;
232 
233  typedef std::list<DtAutoHideDock*> DtAutoHideDockList;
234  typedef DtAutoHideDockList::iterator DtAutoHideDockListIterator;
235 
236  typedef std::map<std::string, DtAppearanceOptions> DtAppearanceList;
237  typedef std::map<std::string, DtAppearanceOptions>::iterator DtAppearanceListIterator;
238 
239  public:
240 
241  DtAutoHidePanel(makVrv::DtDe& de, const std::string& name, makVrv::DtQtDeMainWindow* parent);
242 
243  virtual ~DtAutoHidePanel() override;
244 
248  virtual DtAutoHidePanelItem* addItem(DtAutoHideDock* dock, bool forceVisible=false, bool initiallVisible = true) ;
249 
251  virtual void clear();
252 
254  virtual DtAutoHidePanelItem* findItemForClass( const std::string& s );
255  virtual DtAutoHidePanelItem* findItemForDock( const DtAutoHideDock* dock );
256 
258  virtual void setPanelItemVisible(const std::string& panelClassName, bool, bool updateVisibilityState = false);
259 
262  virtual void hideAllDocks();
263 
265  virtual int itemCount();
266 
268  virtual void placeItems();
269 
271  virtual void removeItem(DtAutoHidePanelItem* item);
272 
274  virtual void showDockForItem( DtAutoHidePanelItem* item, bool animate=true);
275 
277  virtual void hideDockForItem( DtAutoHidePanelItem* item, bool animate=true);
278 
280  static DtAutoHidePanel* instance(makVrv::DtDe&);
281 
284  virtual std::vector< std::pair<DtString, QString> > panelsThatCanBeUsedOnCreateMenu() const;
285 
286  virtual void changeVisibility(bool) override;
287 
289  virtual bool findDock(DtAutoHideDock* dock);
290 
292 
295 
297  virtual void changeFloatingGeometry(int px, int py, int width, int height) override {};
298 
301  const makVrv::DtPageConfiguration::PageCollectionGeometry& geometry) override {};
302 
304  virtual void changeDockedGeometry(int px, int py, int width, int height) override {};
305 
307  virtual void changeDockedGeometry(
308  const makVrv::DtPageConfiguration::PageCollectionGeometry& geometry) override {};
309 
311  virtual void selectPage(const std::string& pageClassName) override {};
312 
313  const DtAutoHideDockList& docks() const
314  {
315  return myDocks;
316  }
317 
318  template <typename PaletteClass>
319  PaletteClass* createPalette()
320  {
321  DtAutoHideDockList::iterator iter = myDocks.begin();
322 
323  while (iter != myDocks.end())
324  {
325  PaletteClass* p = dynamic_cast<PaletteClass*>((*iter)->widget());
326 
327  if (p)
328  {
329  return p;
330  }
331 
332  ++iter;
333  }
334 
335  return 0;
336  }
337 
338  template <typename PaletteClass>
340  {
341  DtAutoHideDockList::iterator iter = myDocks.begin();
342 
343  while (iter != myDocks.end())
344  {
345  PaletteClass* p = dynamic_cast<PaletteClass*>((*iter)->widget());
346 
347  if (p)
348  {
349  return *iter;
350  }
351 
352  ++iter;
353  }
354 
355  return 0;
356  }
357 
360  {
361  return createPalette<DtCreateObjectPalette>();
362  }
363 
365  {
366  return creationDock<DtCreateObjectPalette>();
367  }
368 
371  {
372  return createPalette<DtPropCreatePalette>();
373  }
374 
376  {
377  return creationDock<DtPropCreatePalette>();
378  }
379 
382  virtual void setItemPinned( DtAutoHidePanelItem*, bool );
383 
385  virtual int maxItemWidth();
386 
387  protected:
388 
390  virtual void setupGui();
391 
393  virtual bool eventFilter(QObject* p, QEvent* e) override;
394 
396  virtual void installEventFilters();
397 
399  virtual void removeDock(DtAutoHideDock* dock);
400 
402  virtual void relocateAnyPinnedDock();
403 
405  virtual void refreshItems(int minsize);
406 
408  virtual void refreshAppearanceOfItem(DtAutoHidePanelItem* autoHideItemWidget, bool forceVisible);
409 
411  virtual void addPageToGui(makVrv::DtPage*) override;
412 
414  virtual void removePageFromGui(makVrv::DtPage*) override;
415 
417  virtual void selectPageInGui(makVrv::DtPage* page) override {};
418 
419  protected slots:
420 
423  virtual void slot_onItemToggled(DtAutoHidePanelItem*);
424 
427  virtual void slot_onItemClicked(DtAutoHidePanelItem*);
428 
430  virtual void slot_dockClosed(DtAutoHideDock* dockWidget);
431 
433  virtual void slot_dockEntered(DtAutoHideDock* dockWidget);
434 
436  virtual void slot_dockLeft(DtAutoHideDock* dockWidget);
437 
439  virtual void slot_dockResized(DtAutoHideDock* dockWidget);
440 
442  virtual void slot_dockDestroyed(DtAutoHideDock* dockWidget);
443 
445  virtual void slot_showDockOfCurrentItem(bool lockIt=false);
446 
448  virtual void slot_closeTimerTimeout();
449 
451  virtual void slot_onItemAvailabilityChanged(DtAutoHidePanelItem* dockWidget);
452 
453  virtual void slot_observerModeSettingChanged( makVrv::DtObserverObject*, int setting, bool value );
454  virtual void placeCompass();
455 
456  virtual void finalizeSetup();
457 
458  protected:
460  QWidget* myCentralWidget;
467  QTimer myTimer;
468  QTimer myCloseTimer;
469 
472  };
473 
476  {
477  public:
480 
482  virtual ~DtAutoHidePanelCreator() override;
483 
485  static DtAutoHidePanelCreator& instance(makVrv::DtDe&);
486 
488  static void registerInstance(makVrv::DtDe&, DtAutoHidePanelCreator*);
489 
491  virtual DtAutoHidePanel* create(const std::string& name, QWidget* parent);
492 
493  protected:
495  };
496 }
int myTopMargin
Definition: autoHidePanel.h:185
std::list< DtAutoHidePanelItem * > DtAutoHidePanelItemList
Definition: autoHidePanel.h:230
Definition: autoHidePanel.h:225
std::string myClassName
Definition: autoHidePanel.h:193
Contains makVrv::DtUserInterfaceAssembler class.
Builder for menu items.
Definition: DtMenuItem.h:23
The DtQtPageCollection is an abstract class which implements the page collection interface, and can be used extended by specific Qt implementations such as a tabbed panel or dialog.
Definition: DtQtPageCollection.h:23
DtAutoHideDock * creationDock()
Definition: autoHidePanel.h:339
DtAutoHideDockList myDocks
List with all the items currently on display.
Definition: autoHidePanel.h:462
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
QTimer myTimer
The item that wants to be closed.
Definition: autoHidePanel.h:467
Represents a new kind of dock widget: it has a &quot;pin&quot; button that allows the widget to pin/unpin from ...
Definition: autoHideDock.h:35
virtual DtAutoHideDock * propCreationDock()
Definition: autoHidePanel.h:375
virtual void selectPageInGui(makVrv::DtPage *page) override
Implement selecting a page in the GUI.
Definition: autoHidePanel.h:417
Contains makVrv::DtQtPageCollection class.
#define DT_DLL_VRFGUICOREQT
Definition: vrfGuiCoreQt.h:26
PageCollectionLocation
Definition: DtPageConfiguration.h:42
Definition: DtPageConfiguration.h:56
DtAutoHideDock * myCloseIfMousePressOutside
Definition: autoHidePanel.h:471
makVrv::DtSignalConnectionManager myConnections
Definition: autoHidePanel.h:194
virtual void selectPage(const std::string &pageClassName) override
Implement selecting a page by name.
Definition: autoHidePanel.h:311
bool myIsToggleType
Definition: autoHidePanel.h:190
makVrv::DtQIconConfigurations myIconConfigurations
Definition: autoHidePanel.h:179
Represents a menu item associated with an autoHidePanelItem widget.
Definition: autoHidePanel.h:57
Contains makVrv::DtWidgetIconStyleManager class declaration.
Represents an element of the autoHidePanel. This element is represented as an icon + an icon text...
Definition: autoHidePanel.h:92
virtual DtPropCreatePalette * propCreatePalette()
Return the prop create palette.
Definition: autoHidePanel.h:370
This class implements the panel where auto hide dialogs are placed when they are hidden. This panel is located on the right side of the app.
Definition: autoHidePanel.h:215
QTimer myCloseTimer
Controls the 1 second delay before showing a dock.
Definition: autoHidePanel.h:468
QWidget * myCentralWidget
Definition: autoHidePanel.h:460
bool myAboutToBeShown
Definition: autoHidePanel.h:189
virtual DtAutoHideDock * createObjectDock()
Definition: autoHidePanel.h:364
DtAutoHideDock * myAutoHideDock
Definition: autoHidePanel.h:188
int myRightMargin
Definition: autoHidePanel.h:184
QIcon myIcon
Definition: autoHidePanel.h:180
QString myIconText
Definition: autoHidePanel.h:182
Contains makVrv::DtVirtualBaseClass class.
std::map< std::string, DtAppearanceOptions >::iterator DtAppearanceListIterator
Definition: autoHidePanel.h:237
DtAutoHidePanelItem * myPanelItem
Definition: autoHidePanel.h:83
DtAutoHidePanelItem * myCurrentItem
Animates the display of a dock.
Definition: autoHidePanel.h:465
Contains makVrv::DtDockable class.
int myIconSize
Definition: autoHidePanel.h:181
Creator for the auto hide panel.
Definition: autoHidePanel.h:475
This abstract base class defines the interface for OS-specific keyboard and mouse event listeners...
Definition: DtObserverObject.h:35
virtual void changeFloatingGeometry(int px, int py, int width, int height) override
Implement changing the floating geometry of the collection.
Definition: autoHidePanel.h:297
makVrv::DtDe & myDe
Definition: autoHidePanel.h:494
bool myIsAvailable
Definition: autoHidePanel.h:191
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
makVrv::DtDe & myDe
Definition: autoHidePanel.h:85
DtAutoHidePanelItemList::iterator DtAutoHidePanelItemListIterator
Definition: autoHidePanel.h:231
QAction * myAction
Definition: autoHidePanel.h:84
int myBottomMargin
Definition: autoHidePanel.h:186
The page is a single widget component which is viewed in a page collection.
Definition: DtPage.h:51
DtAutoHidePanelItemList myItems
Definition: autoHidePanel.h:461
virtual void changeDockedGeometry(const makVrv::DtPageConfiguration::PageCollectionGeometry &geometry) override
Implement changing the docked geometry of the collection.
Definition: autoHidePanel.h:307
const DtAutoHideDockList & docks() const
Definition: autoHidePanel.h:313
Definition: autoHidePanel.h:197
makVrv::DtSignalConnectionManager myConnections
Controls the 1 second delay before hiding a dock.
Definition: autoHidePanel.h:470
DtWidgetAnimator * myWidgetAnimator
Keeps track of the last appearance of the items (hidden, pinned, docked, floating) ...
Definition: autoHidePanel.h:464
DtAutoHideDockList::iterator DtAutoHideDockListIterator
Definition: autoHidePanel.h:234
Represents a widget that can animate the movement of other widgets.
Definition: widgetAnimator.h:53
makVrv::DtDe & myDe
Definition: autoHidePanel.h:192
A widget class for showing different items of supplied types to the logic tthat can be created...
Definition: createObjectPalette.h:71
std::list< DtAutoHideDock * > DtAutoHideDockList
Definition: autoHidePanel.h:233
Base class to provide boost signal/slot management.
int mySpacing
Definition: autoHidePanel.h:187
virtual void changeFloatingGeometry(const makVrv::DtPageConfiguration::PageCollectionGeometry &geometry) override
Implement changing the floating geometry of the collection.
Definition: autoHidePanel.h:300
const std::string & className() const
Class name.
Definition: autoHidePanel.h:114
std::map< std::string, DtAppearanceOptions > DtAppearanceList
Definition: autoHidePanel.h:236
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:76
virtual void changeDockedGeometry(int px, int py, int width, int height) override
Implement changing the docked geometry of the collection.
Definition: autoHidePanel.h:304
A collection of icon configurations. The collection maintains flags indicating whether to generate ic...
Definition: DtQIconConfiguration.h:131
PaletteClass * createPalette()
Definition: autoHidePanel.h:319
virtual void changeLocation(makVrv::DtPageConfiguration::PageCollectionLocation) override
No-op. Cannot change location or geometry.
Definition: autoHidePanel.h:294
QMainWindow * myMainWindow
Definition: autoHidePanel.h:459
DtAppearanceOptions
Definition: autoHidePanel.h:222
virtual DtCreateObjectPalette * createObjectPalette()
Return the entity create palette.
Definition: autoHidePanel.h:359
Definition: autoHidePanel.h:226
The Qt main window. There will be only one of these per DtDe instance. Note, this window will be dest...
Definition: DtQtDeMainWindow.h:44
int myLeftMargin
Definition: autoHidePanel.h:183
DtAppearanceList myItemsAppearance
List with all the docks registered with this panel.
Definition: autoHidePanel.h:463
DtAutoHidePanelItem * myDockToClose
Current item to be shown.
Definition: autoHidePanel.h:466
A widget class for managing different camera views the currently selected observer can be placed in...
Definition: propCreatePalette.h:40

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)