VR-Forces 4.0.4 Class Documentation
include/vrfGuiCoreQt/autoHidePanel.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)