1 #include "STD_MDIDesktop.h"
3 #include <SUIT_Session.h>
4 #include <SUIT_ViewWindow.h>
5 #include <SUIT_ResourceMgr.h>
8 #include <QtxActionMenuMgr.h>
9 #include <QtxWorkspaceAction.h>
13 #include <qworkspace.h>
14 #include <qobjectlist.h>
19 STD_MDIDesktop::STD_MDIDesktop()
22 myWorkspaceAction( 0 )
24 QVBox* base = new QVBox( this );
25 base->setFrameStyle( QFrame::Panel | QFrame::Sunken );
27 setCentralWidget( base );
29 myWorkspace = new QWorkspace( base );
31 connect( myWorkspace, SIGNAL( windowActivated( QWidget* ) ),
32 this, SLOT( onWindowActivated( QWidget* ) ) );
38 STD_MDIDesktop::~STD_MDIDesktop()
42 /*!\retval SUIT_ViewWindow - return const active window.*/
43 SUIT_ViewWindow* STD_MDIDesktop::activeWindow() const
45 SUIT_ViewWindow* wnd = 0;
47 QWidget* wid = myWorkspace->activeWindow();
48 if ( wid && wid->inherits( "SUIT_ViewWindow" ) )
49 wnd = (SUIT_ViewWindow*)wid;
54 /*!\retval QPtrList<SUIT_ViewWindow> - return const active window list.*/
55 QPtrList<SUIT_ViewWindow> STD_MDIDesktop::windows() const
57 QPtrList<SUIT_ViewWindow> winList;
59 QWidgetList children = myWorkspace->windowList();
60 for ( QWidgetListIt it( children ); it.current(); ++it )
62 if ( it.current()->inherits( "SUIT_ViewWindow" ) )
63 winList.append( (SUIT_ViewWindow*)it.current() );
69 /*!\retval QWidget - pointer to work space.*/
70 QWidget* STD_MDIDesktop::parentArea() const
75 /*!Call method perform for operation \a type.*/
76 void STD_MDIDesktop::windowOperation( const int type )
78 myWorkspaceAction->perform( operationFlag( type ) );
81 /*!Sets window operations by \a first ... parameters.*/
82 void STD_MDIDesktop::setWindowOperations( const int first, ... )
85 va_start( ints, first );
87 QValueList<int> typeList;
92 typeList.append( cur );
93 cur = va_arg( ints, int );
96 setWindowOperations( typeList );
99 /*!Sets window operations by variable \a opList - operation list.*/
100 void STD_MDIDesktop::setWindowOperations( const QValueList<int>& opList )
104 for ( QValueList<int>::const_iterator it = opList.begin(); it != opList.end(); ++it )
105 flags = flags | operationFlag( *it );
107 myWorkspaceAction->setItems( flags );
110 /*!\retval QWorkspace pointer - work space.*/
111 QWorkspace* STD_MDIDesktop::workspace() const
116 /*!Emit window activated.*/
117 void STD_MDIDesktop::onWindowActivated( QWidget* w )
119 if ( w && w->inherits( "SUIT_ViewWindow" ) )
120 emit windowActivated( (SUIT_ViewWindow*)w );
123 /*!Create actions: cascade, Tile, Tile Horizontal, Tile Vertical*/
124 void STD_MDIDesktop::createActions()
126 if ( myWorkspaceAction )
129 SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
133 myWorkspaceAction = new QtxWorkspaceAction( workspace(), this );
135 myWorkspaceAction->setItems( QtxWorkspaceAction::Cascade | QtxWorkspaceAction::Tile |
136 QtxWorkspaceAction::HTile | QtxWorkspaceAction::VTile |
137 QtxWorkspaceAction::Windows );
140 myWorkspaceAction->setIconSet( QtxWorkspaceAction::Cascade,
141 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_CASCADE" ) ) );
142 myWorkspaceAction->setMenuText( QtxWorkspaceAction::Cascade, tr( "MEN_DESK_WINDOW_CASCADE" ) );
143 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::Cascade, tr( "PRP_DESK_WINDOW_CASCADE" ) );
146 myWorkspaceAction->setIconSet( QtxWorkspaceAction::Tile,
147 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_TILE" ) ) );
148 myWorkspaceAction->setMenuText( QtxWorkspaceAction::Tile, tr( "MEN_DESK_WINDOW_TILE" ) );
149 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::Tile, tr( "PRP_DESK_WINDOW_TILE" ) );
152 myWorkspaceAction->setIconSet( QtxWorkspaceAction::HTile,
153 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_HTILE" ) ) );
154 myWorkspaceAction->setMenuText( QtxWorkspaceAction::HTile, tr( "MEN_DESK_WINDOW_HTILE" ) );
155 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::HTile, tr( "PRP_DESK_WINDOW_HTILE" ) );
158 myWorkspaceAction->setIconSet( QtxWorkspaceAction::VTile,
159 resMgr->loadPixmap( "STD", tr( "ICON_DESK_WINDOW_VTILE" ) ) );
160 myWorkspaceAction->setMenuText( QtxWorkspaceAction::VTile, tr( "MEN_DESK_WINDOW_VTILE" ) );
161 myWorkspaceAction->setStatusTip( QtxWorkspaceAction::VTile, tr( "PRP_DESK_WINDOW_VTILE" ) );
164 QtxActionMenuMgr* mMgr = menuMgr();
168 int winMenuId = mMgr->insert( tr( "MEN_DESK_WINDOW" ), -1, 100 );
169 mMgr->insert( myWorkspaceAction, winMenuId, -1 );
170 mMgr->insert( QtxActionMenuMgr::separator(), winMenuId, -1 );
173 /*!Convert STD_MDIDesktop enumerations to QtxWorkspaceAction.*/
174 int STD_MDIDesktop::operationFlag( const int type ) const
180 res = QtxWorkspaceAction::Cascade;
183 res = QtxWorkspaceAction::Tile;
186 res = QtxWorkspaceAction::HTile;
189 res = QtxWorkspaceAction::VTile;