![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2009 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 00008 00010 00011 #pragma once 00012 00013 #include <vrvUtil/signalslib.h> 00014 #include <vrvUtil/DtVirtualBaseClass.h> 00015 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00016 #include <vrfGuiCoreQt/autoHideDock.h> 00017 #include <vrfGuiCoreQt/widgetAnimator.h> 00018 #include <vrvCore/DtUserInterfaceAssembler.h> 00019 #include <vrvCoreQt/DtDockable.h> 00020 #include <vrvCoreQt/DtMenuItem.h> 00021 #include <vrvUtil/DtSignalConnectionManager.h> 00022 00023 #include <QtGui/QPixmap> 00024 #include <QtGui/QWidget> 00025 #include <QtGui/QDockWidget> 00026 #include <QtGui/QPushButton> 00027 #include <QtGui/QSpacerItem> 00028 #include <QtCore/QTimer> 00029 #include <map> 00030 00031 class QVBoxLayout; 00032 00033 namespace makVrv 00034 { 00035 class DtDe; 00036 class DtChannelManager; 00037 class DtChannel; 00038 class DtObserverObject; 00039 } 00040 00041 namespace makVrf 00042 { 00043 class DtAutoHidePanelItem; 00044 class DtPropCreatePalette; 00045 class DtEntityCreatePalette; 00046 00050 class DT_DLL_VRFGUICOREQT DtAutoHideDockViewItem : public makVrv::DtMenuItem 00051 { 00052 00053 Q_OBJECT 00054 00055 public: 00056 00058 DtAutoHideDockViewItem(makVrv::DtDe& de, const std::string& dockName, DtAutoHidePanelItem* item); 00059 00061 virtual ~DtAutoHideDockViewItem(); 00062 00064 virtual QAction* createAction(makVrv::DtDe& de, QWidget* parent); 00065 00066 protected: 00067 00069 virtual void on_triggered(); 00070 00071 protected: 00072 00073 DtAutoHidePanelItem* myPanelItem; 00074 QAction* myAction; 00075 makVrv::DtDe& myDe; 00076 }; 00077 00082 class DT_DLL_VRFGUICOREQT DtAutoHidePanelItem : public QWidget 00083 { 00084 Q_OBJECT 00085 00086 public: 00087 00090 DtAutoHidePanelItem(makVrv::DtDe& de, QWidget* parent, QString title); 00091 00093 virtual ~DtAutoHidePanelItem(); 00094 00096 DtAutoHideDock* dockToManage(); 00097 virtual void setDockToManage(DtAutoHideDock* widget); 00098 00100 virtual const QPixmap& icon() const; 00101 virtual void setIcon(const QPixmap& p); 00102 00104 virtual QString iconText(); 00105 virtual void setIconText(const QString& s); 00106 00109 virtual bool toggled() const; 00110 virtual void setToggled(bool flag); 00111 00113 virtual void setSelected(bool flag); 00114 00116 virtual void setAvailable(bool visible); 00117 virtual bool available() const; 00118 00120 virtual void setAboutToBeShown(bool flag); 00121 00124 virtual void refreshSize(int minsize=-1); 00125 00127 virtual void setToggle(bool flag); 00128 00129 protected: 00130 00132 virtual void enterEvent(QEvent* e); 00133 00135 virtual void leaveEvent(QEvent *); 00136 00138 virtual void mouseReleaseEvent( QMouseEvent * event ); 00139 00141 virtual void paintEvent(QPaintEvent* p); 00142 00143 signals: 00144 00146 void signal_enter(DtAutoHidePanelItem*); 00147 00149 void signal_leave(DtAutoHidePanelItem*); 00150 00153 void signal_toggled(DtAutoHidePanelItem*); 00154 00157 void signal_clicked(DtAutoHidePanelItem*); 00158 00160 void signal_availabilityChanged(DtAutoHidePanelItem*); 00161 00162 protected: 00163 00164 QPixmap myIcon; 00165 QString myIconText; 00166 int myLeftMargin; 00167 int myRightMargin; 00168 int myTopMargin; 00169 int myBottomMargin; 00170 int mySpacing; 00171 bool myIsSelected; 00172 bool myIsToggled; 00173 DtAutoHideDock* myAutoHideDock; 00174 bool myAboutToBeShown; 00175 bool myIsToggleType; 00176 bool myIsAvailable; 00177 makVrv::DtDe& myDe; 00178 }; 00179 00183 class DT_DLL_VRFGUICOREQT DtAutoHidePanel : public QObject, public makVrv::DtVirtualBaseClass 00184 { 00185 public: 00186 00187 enum DtAppearanceOptions 00188 { 00189 Hidden = 0, 00190 Pinned, 00191 Docked, 00192 Floating 00193 }; 00194 00195 typedef std::list<DtAutoHidePanelItem*> DtAutoHidePanelItemList; 00196 typedef std::list<DtAutoHidePanelItem*>::iterator DtAutoHidePanelItemListIterator; 00197 00198 typedef std::list<DtAutoHideDock*> DtAutoHideDockList; 00199 typedef std::list<DtAutoHideDock*>::iterator DtAutoHideDockListIterator; 00200 00201 typedef std::map<std::string, DtAppearanceOptions> DtAppearanceList; 00202 typedef std::map<std::string, DtAppearanceOptions>::iterator DtAppearanceListIterator; 00203 00204 Q_OBJECT 00205 00206 public: 00207 00208 DtAutoHidePanel(makVrv::DtDe& de, makVrv::DtQtDeMainWindow* parent); 00209 00210 ~DtAutoHidePanel(); 00211 00215 virtual void addItem(DtAutoHideDock* dock, bool forceVisible=false) ; 00216 00218 virtual void clear(); 00219 00221 virtual DtAutoHidePanelItem* findItemForDock( const DtAutoHideDock* dock ); 00222 00225 virtual void hideAllDocks(); 00226 00228 virtual int itemCount(); 00229 00231 virtual void placeItems(); 00232 00234 virtual void removeItem(DtAutoHidePanelItem* item); 00235 00237 virtual void showDockForItem( DtAutoHidePanelItem* item, bool animate=true); 00238 00240 virtual void hideDockForItem( DtAutoHidePanelItem* item, bool animate=true); 00241 00243 static DtAutoHidePanel* instance(makVrv::DtDe&); 00244 00246 virtual DtEntityCreatePalette* entityCreatePalette(); 00247 00249 virtual DtPropCreatePalette* propCreatePalette(); 00250 00251 protected: 00252 00254 virtual void setupGui(); 00255 00257 virtual bool eventFilter(QObject* p, QEvent* e); 00258 00260 virtual void installEventFilters(); 00261 00263 virtual int maxItemWidth(); 00264 00266 virtual int findDock(const DtAutoHideDock* dock); 00267 00269 virtual void removeDock(DtAutoHideDock* dock); 00270 00272 virtual void relocateAnyPinnedDock(); 00273 00275 virtual void refreshItems(int minsize); 00276 00278 virtual void refreshAppearanceOfItem(DtAutoHidePanelItem* autoHideItemWidget, bool forceVisible); 00279 00280 protected slots: 00281 00284 virtual void slot_onItemToggled(DtAutoHidePanelItem*); 00285 00288 virtual void slot_onItemClicked(DtAutoHidePanelItem*); 00289 00291 virtual void slot_dockClosed(DtAutoHideDock* dockWidget); 00292 00294 virtual void slot_dockEntered(DtAutoHideDock* dockWidget); 00295 00297 virtual void slot_dockLeft(DtAutoHideDock* dockWidget); 00298 00300 virtual void slot_dockResized(DtAutoHideDock* dockWidget); 00301 00303 virtual void slot_dockDestroyed(DtAutoHideDock* dockWidget); 00304 00306 virtual void slot_showDockOfCurrentItem(bool lockIt=false); 00307 00309 virtual void slot_closeTimerTimeout(); 00310 00312 virtual void slot_onItemAvailabilityChanged(DtAutoHidePanelItem* dockWidget); 00313 00314 virtual void slot_observerModeSettingChanged( makVrv::DtObserverObject*, int setting, bool value ); 00315 virtual void placeCompass(); 00316 00317 virtual void finalizeSetup(); 00318 00319 protected: 00320 00321 makVrv::DtDe& myDe; 00322 QMainWindow* myMainWindow; 00323 QWidget* myCentralWidget; 00324 DtAutoHidePanelItemList myItems; 00325 DtAutoHideDockList myDocks; 00326 DtAppearanceList myItemsAppearance; 00327 DtWidgetAnimator* myWidgetAnimator; 00328 DtAutoHidePanelItem* myCurrentItem; 00329 QTimer myTimer; 00330 QTimer myCloseTimer; 00331 00332 makVrv::DtSignalConnectionManager myConnections; 00333 }; 00334 00338 class DT_DLL_VRFGUICOREQT DtAutoHidePanelBuilder : public makVrv::DtUserInterfaceBuilder 00339 { 00340 00341 public: 00342 00343 DtAutoHidePanelBuilder(); 00344 00345 virtual ~DtAutoHidePanelBuilder(); 00346 00347 virtual void build(makVrv::DtDe& de, makVrv::DtDeMainWindow& mainWindow); 00348 }; 00349 }