1 // File: QtxDockAction.h
2 // Author: Sergey TELKOV
4 #ifndef QTX_DOCKACTION_H
5 #define QTX_DOCKACTION_H
11 #include <qpopupmenu.h>
20 #pragma warning( disable:4251 )
23 class QTX_EXPORT QtxDockAction : public QtxAction
27 Q_PROPERTY( bool autoAdd READ isAutoAdd WRITE setAutoAdd )
28 Q_PROPERTY( bool autoPlace READ isAutoPlace WRITE setAutoPlace )
29 Q_PROPERTY( bool separate READ isSeparate WRITE setSeparate )
32 QtxDockAction( QMainWindow*, const char* = 0 );
33 QtxDockAction( const QString&, const QString&, QMainWindow*, const char* = 0 );
34 QtxDockAction( const QString&, const QIconSet&, const QString&, QMainWindow*, const char* = 0 );
35 virtual ~QtxDockAction();
37 QMainWindow* mainWindow() const;
39 bool isAutoAdd() const;
40 void setAutoAdd( const bool );
42 bool isAutoPlace() const;
43 void setAutoPlace( const bool );
45 bool isSeparate() const;
46 void setSeparate( const bool );
48 virtual bool addTo( QWidget* );
49 virtual bool addTo( QWidget*, const int );
50 virtual bool removeFrom( QWidget* );
51 virtual void setMenuText( const QString& );
53 bool addDockWindow( QDockWindow* );
54 bool removeDockWindow( QDockWindow* );
56 virtual bool eventFilter( QObject*, QEvent* );
58 virtual void storeGeometry( QDockWindow* = 0 );
59 virtual void restoreGeometry( QDockWindow* = 0 ) const;
61 virtual void loadGeometry( QtxResourceMgr*, const QString&, const bool = true );
62 virtual void saveGeometry( QtxResourceMgr*, const QString&, const bool = true ) const;
66 void onToggled( bool );
67 void onVisibilityChanged( bool );
68 void onPopupDestroyed( QObject* );
69 void onWindowDestroyed( QObject* );
70 void onDockWindowPositionChanged( QDockWindow* );
73 virtual bool event( QEvent* );
76 QAction* action( QDockWindow* ) const;
77 QDockWindow* dockWindow( const QAction* ) const;
79 void checkPopup( QPopupMenu* );
80 void fillPopup( QPopupMenu* ) const;
81 int findId( QPopupMenu*, QPopupMenu* ) const;
83 void initialize( QMainWindow* );
84 void updateInfo( QDockWindow* );
85 bool isToolBar( QDockWindow* ) const;
86 void dockWindows( QPtrList<QDockWindow>&, QMainWindow* = 0 ) const;
88 QString windowName( QDockWindow* ) const;
89 void savePlaceInfo( QDockWindow* );
90 void loadPlaceInfo( QDockWindow* ) const;
91 void loadPlaceInfo() const;
93 bool autoAddDockWindow( QDockWindow* );
94 void autoLoadPlaceInfo( QDockWindow* );
96 void splitMenuText( QString&, QString& ) const;
97 QStringList splitText( const QString&, const QString& ) const;
99 QDockArea* dockArea( const int ) const;
100 int dockPlace( const QString& ) const;
102 void collectNames( const int, QStringList& ) const;
107 enum { AutoAdd = QEvent::User, LoadArea };
109 typedef struct { bool vis, newLine;
110 int place, index, offset;
111 int x, y, w, h, fixW, fixH; } GeomInfo;
112 typedef struct { QString name; QAction* a; } DockInfo;
113 typedef struct { QPopupMenu *dock, *tool; } MenuInfo;
115 typedef QMap<QDockWindow*, DockInfo> InfoMap;
116 typedef QMap<QString, GeomInfo> GeomMap;
117 typedef QMap<QPopupMenu*, MenuInfo> MenuMap;
120 bool loadGeometry( QtxResourceMgr*, const QString&,
121 const QString&, GeomInfo& ) const;
122 bool saveGeometry( QtxResourceMgr*, const QString&,
123 const QString&, const GeomInfo& ) const;
124 void loadPlaceArea( const int, QMainWindow*, QDockArea*,
125 const QPtrList<QDockWindow>&,
126 const QMap<QDockWindow*, GeomInfo*>& ) const;
141 #pragma warning( default:4251 )