<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US"> <head> <title>kmdi: kmdimainfrm.cpp Source File (kmdi)</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org" r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org" r (n 0 s 0 v 0 l 0))' /> <meta name="trademark" content="KDE e.V." /> <meta name="description" content="K Desktop Environment Homepage, KDE.org" /> <meta name="MSSmartTagsPreventParsing" content="true" /> <meta name="robots" content="all" /> <link rel="shortcut icon" href="../../favicon.ico" /> <link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" /> </head> <body> <div id="nav_header_top" align="right"> <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a> <a href="../.."><img id="nav_header_logo" alt="Home" align="left" src="../../kde_gear_64.png" border="0" /></a> <span class="doNotDisplay">::</span> <div id="nav_header_title" align="left">KDE API Reference</div> </div> <div id="nav_header_bottom" align="right"> <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span> <div id="nav_header_bottom_right" style="text-align: left;"> / <a href="../..">API Reference</a> / <a href=".">kmdi</a> </div> </div> <table id="main" border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td valign="top" class="menuheader" height="0"></td> <td id="contentcolumn" valign="top" rowspan="2" > <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;"> <a name="content"></a> <!-- Generated by Doxygen 1.7.4 --> <div class="header"> <div class="headertitle"> <div class="title">kmdimainfrm.cpp</div> </div> </div> <div class="contents"> <div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//----------------------------------------------------------------------------</span> <a name="l00002"></a>00002 <span class="comment">// filename : kmdimainfrm.cpp</span> <a name="l00003"></a>00003 <span class="comment">//----------------------------------------------------------------------------</span> <a name="l00004"></a>00004 <span class="comment">// Project : KDE MDI extension</span> <a name="l00005"></a>00005 <span class="comment">//</span> <a name="l00006"></a>00006 <span class="comment">// begin : 07/1999 by Szymon Stefanek as part of kvirc</span> <a name="l00007"></a>00007 <span class="comment">// (an IRC application)</span> <a name="l00008"></a>00008 <span class="comment">// changes : 09/1999 by Falk Brettschneider to create an</span> <a name="l00009"></a>00009 <span class="comment">// - 06/2000 stand-alone Qt extension set of</span> <a name="l00010"></a>00010 <span class="comment">// classes and a Qt-based library</span> <a name="l00011"></a>00011 <span class="comment">// 2000-2003 maintained by the KDevelop project</span> <a name="l00012"></a>00012 <span class="comment">// patches : 02/2000 by Massimo Morin (mmorin@schedsys.com)</span> <a name="l00013"></a>00013 <span class="comment">// */2000 by Lars Beikirch (Lars.Beikirch@gmx.net)</span> <a name="l00014"></a>00014 <span class="comment">// 01/2003 by Jens Zurheide (jens.zurheide@gmx.de)</span> <a name="l00015"></a>00015 <span class="comment">//</span> <a name="l00016"></a>00016 <span class="comment">// copyright : (C) 1999-2003 by Szymon Stefanek (stefanek@tin.it)</span> <a name="l00017"></a>00017 <span class="comment">// and</span> <a name="l00018"></a>00018 <span class="comment">// Falk Brettschneider</span> <a name="l00019"></a>00019 <span class="comment">// email : falkbr@kdevelop.org (Falk Brettschneider)</span> <a name="l00020"></a>00020 <span class="comment">//----------------------------------------------------------------------------</span> <a name="l00021"></a>00021 <span class="comment">//</span> <a name="l00022"></a>00022 <span class="comment">//----------------------------------------------------------------------------</span> <a name="l00023"></a>00023 <span class="comment">//</span> <a name="l00024"></a>00024 <span class="comment">// This program is free software; you can redistribute it and/or modify</span> <a name="l00025"></a>00025 <span class="comment">// it under the terms of the GNU Library General Public License as</span> <a name="l00026"></a>00026 <span class="comment">// published by the Free Software Foundation; either version 2 of the</span> <a name="l00027"></a>00027 <span class="comment">// License, or (at your option) any later version.</span> <a name="l00028"></a>00028 <span class="comment">//</span> <a name="l00029"></a>00029 <span class="comment">//----------------------------------------------------------------------------</span> <a name="l00030"></a>00030 <a name="l00031"></a>00031 <a name="l00032"></a>00032 <span class="comment">/*</span> <a name="l00033"></a>00033 <span class="comment"> * ATTENTION: please do you part to try to make this file legible. It's</span> <a name="l00034"></a>00034 <span class="comment"> * extremely hard to read already. Especially follow the indenting rules.</span> <a name="l00035"></a>00035 <span class="comment"> */</span> <a name="l00036"></a>00036 <span class="preprocessor">#include "config.h"</span> <a name="l00037"></a>00037 <a name="l00038"></a>00038 <span class="preprocessor">#include <assert.h></span> <a name="l00039"></a>00039 <a name="l00040"></a>00040 <span class="preprocessor">#include <qcursor.h></span> <a name="l00041"></a>00041 <span class="preprocessor">#include <qclipboard.h></span> <a name="l00042"></a>00042 <span class="preprocessor">#include <qobjectlist.h></span> <a name="l00043"></a>00043 <span class="preprocessor">#include <qpopupmenu.h></span> <a name="l00044"></a>00044 <span class="preprocessor">#include <qmenubar.h></span> <a name="l00045"></a>00045 <a name="l00046"></a>00046 <span class="preprocessor">#include <kmenubar.h></span> <a name="l00047"></a>00047 <span class="preprocessor">#include <kapplication.h></span> <a name="l00048"></a>00048 <span class="preprocessor">#include <kdebug.h></span> <a name="l00049"></a>00049 <span class="preprocessor">#include <kdeversion.h></span> <a name="l00050"></a>00050 <span class="preprocessor">#include <qtabwidget.h></span> <a name="l00051"></a>00051 <span class="preprocessor">#include <klocale.h></span> <a name="l00052"></a>00052 <span class="preprocessor">#include <kstdaccel.h></span> <a name="l00053"></a>00053 <a name="l00054"></a>00054 <span class="preprocessor">#include <kiconloader.h></span> <a name="l00055"></a>00055 <span class="preprocessor">#include <kmdidockcontainer.h></span> <a name="l00056"></a>00056 <a name="l00057"></a>00057 <a name="l00058"></a>00058 <span class="preprocessor">#include <qtoolbutton.h></span> <a name="l00059"></a>00059 <span class="preprocessor">#include <qdockarea.h></span> <a name="l00060"></a>00060 <span class="preprocessor">#include <qlayout.h></span> <a name="l00061"></a>00061 <span class="preprocessor">#include <qtimer.h></span> <a name="l00062"></a>00062 <span class="preprocessor">#include <qtextstream.h></span> <a name="l00063"></a>00063 <span class="preprocessor">#include <qstring.h></span> <a name="l00064"></a>00064 <span class="preprocessor">#include <qmap.h></span> <a name="l00065"></a>00065 <span class="preprocessor">#include <qvaluelist.h></span> <a name="l00066"></a>00066 <a name="l00067"></a>00067 <span class="preprocessor">#include "kmdimainfrm.h"</span> <a name="l00068"></a>00068 <span class="preprocessor">#include "kmditaskbar.h"</span> <a name="l00069"></a>00069 <span class="preprocessor">#include "kmdichildfrm.h"</span> <a name="l00070"></a>00070 <span class="preprocessor">#include "kmdichildarea.h"</span> <a name="l00071"></a>00071 <span class="preprocessor">#include "kmdichildview.h"</span> <a name="l00072"></a>00072 <span class="preprocessor">#include "kmdidockcontainer.h"</span> <a name="l00073"></a>00073 <span class="preprocessor">#include "kmditoolviewaccessor_p.h"</span> <a name="l00074"></a>00074 <span class="preprocessor">#include "kmdifocuslist.h"</span> <a name="l00075"></a>00075 <span class="preprocessor">#include "kmdidocumentviewtabwidget.h"</span> <a name="l00076"></a>00076 <span class="preprocessor">#include "kmdiguiclient.h"</span> <a name="l00077"></a>00077 <a name="l00078"></a>00078 <span class="preprocessor">#include "win_undockbutton.xpm"</span> <a name="l00079"></a>00079 <span class="preprocessor">#include "win_minbutton.xpm"</span> <a name="l00080"></a>00080 <span class="preprocessor">#include "win_restorebutton.xpm"</span> <a name="l00081"></a>00081 <span class="preprocessor">#include "win_closebutton.xpm"</span> <a name="l00082"></a>00082 <span class="preprocessor">#include "kde_undockbutton.xpm"</span> <a name="l00083"></a>00083 <span class="preprocessor">#include "kde_minbutton.xpm"</span> <a name="l00084"></a>00084 <span class="preprocessor">#include "kde_restorebutton.xpm"</span> <a name="l00085"></a>00085 <span class="preprocessor">#include "kde_closebutton.xpm"</span> <a name="l00086"></a>00086 <span class="preprocessor">#include "kde2_undockbutton.xpm"</span> <a name="l00087"></a>00087 <span class="preprocessor">#include "kde2_minbutton.xpm"</span> <a name="l00088"></a>00088 <span class="preprocessor">#include "kde2_restorebutton.xpm"</span> <a name="l00089"></a>00089 <span class="preprocessor">#include "kde2_closebutton.xpm"</span> <a name="l00090"></a>00090 <span class="preprocessor">#include "kde2laptop_undockbutton.xpm"</span> <a name="l00091"></a>00091 <span class="preprocessor">#include "kde2laptop_minbutton.xpm"</span> <a name="l00092"></a>00092 <span class="preprocessor">#include "kde2laptop_restorebutton.xpm"</span> <a name="l00093"></a>00093 <span class="preprocessor">#include "kde2laptop_closebutton.xpm"</span> <a name="l00094"></a>00094 <span class="preprocessor">#include "kde2laptop_closebutton_menu.xpm"</span> <a name="l00095"></a>00095 <a name="l00096"></a>00096 <span class="preprocessor">#ifdef Q_WS_X11</span> <a name="l00097"></a>00097 <span class="preprocessor"></span><span class="preprocessor">#ifndef NO_KDE</span> <a name="l00098"></a>00098 <span class="preprocessor"></span><span class="preprocessor">#include <X11/X.h></span> <span class="comment">// schroder</span> <a name="l00099"></a>00099 <span class="preprocessor">#include <X11/Xlib.h></span> <span class="comment">// schroder</span> <a name="l00100"></a>00100 <span class="preprocessor">#endif</span> <a name="l00101"></a>00101 <span class="preprocessor"></span> <a name="l00102"></a>00102 <span class="preprocessor">#ifdef KeyRelease </span> <a name="l00103"></a>00103 <span class="preprocessor"></span><span class="comment">/* I hate the defines in the X11 header files. Get rid of one of them */</span> <a name="l00104"></a>00104 <span class="preprocessor">#undef KeyRelease</span> <a name="l00105"></a>00105 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00106"></a>00106 <span class="preprocessor"></span> <a name="l00107"></a>00107 <span class="preprocessor">#ifdef KeyPress </span> <a name="l00108"></a>00108 <span class="preprocessor"></span><span class="comment">/* I hate the defines in the X11 header files. Get rid of one of them */</span> <a name="l00109"></a>00109 <span class="preprocessor">#undef KeyPress</span> <a name="l00110"></a>00110 <span class="preprocessor"></span><span class="preprocessor">#endif</span> <a name="l00111"></a>00111 <span class="preprocessor"></span><span class="preprocessor">#endif // Q_WS_X11 && ! K_WS_QTONLY</span> <a name="l00112"></a>00112 <span class="preprocessor"></span> <a name="l00113"></a>00113 <span class="keyword">using namespace </span>KParts; <a name="l00114"></a>00114 <a name="l00115"></a>00115 KMdi::FrameDecor KMdiMainFrm::m_frameDecoration = KMdi::KDELook; <a name="l00116"></a>00116 <a name="l00117"></a>00117 <span class="keyword">class </span>KMdiMainFrmPrivate <a name="l00118"></a>00118 { <a name="l00119"></a>00119 <span class="keyword">public</span>: <a name="l00120"></a>00120 KMdiMainFrmPrivate() : focusList( 0 ) <a name="l00121"></a>00121 { <a name="l00122"></a>00122 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0;i < 4;i++ ) <a name="l00123"></a>00123 { <a name="l00124"></a>00124 activeDockPriority[ i ] = 0; <a name="l00125"></a>00125 m_styleIDEAlMode = 0; <a name="l00126"></a>00126 m_toolviewStyle = 0; <a name="l00127"></a>00127 } <a name="l00128"></a>00128 } <a name="l00129"></a>00129 ~KMdiMainFrmPrivate() <a name="l00130"></a>00130 {} <a name="l00131"></a>00131 KMdiDockContainer* activeDockPriority[ 4 ]; <a name="l00132"></a>00132 KMdiFocusList *focusList; <a name="l00133"></a>00133 <span class="keywordtype">int</span> m_styleIDEAlMode; <a name="l00134"></a>00134 <span class="keywordtype">int</span> m_toolviewStyle; <a name="l00135"></a>00135 KAction *closeWindowAction; <a name="l00136"></a>00136 }; <a name="l00137"></a>00137 <a name="l00138"></a>00138 <span class="comment">//============ constructor ============//</span> <a name="l00139"></a>00139 KMdiMainFrm::KMdiMainFrm( <a class="codeRef" href="qwidget.html">QWidget</a>* parentWidget, <span class="keyword">const</span> <span class="keywordtype">char</span>* name, KMdi::MdiMode mdiMode, WFlags flags ) <a name="l00140"></a>00140 : KParts::DockMainWindow( parentWidget, name, flags ) <a name="l00141"></a>00141 , m_mdiMode( KMdi::UndefinedMode ) <a name="l00142"></a>00142 , m_pMdi( 0L ) <a name="l00143"></a>00143 , m_pTaskBar( 0L ) <a name="l00144"></a>00144 , m_pDocumentViews( 0L ) <a name="l00145"></a>00145 , m_pCurrentWindow( 0L ) <a name="l00146"></a>00146 , m_pWindowPopup( 0L ) <a name="l00147"></a>00147 , m_pTaskBarPopup( 0L ) <a name="l00148"></a>00148 , m_pWindowMenu( 0L ) <a name="l00149"></a>00149 , m_pDockMenu( 0L ) <a name="l00150"></a>00150 , m_pMdiModeMenu( 0L ) <a name="l00151"></a>00151 , m_pPlacingMenu( 0L ) <a name="l00152"></a>00152 , m_pMainMenuBar( 0L ) <a name="l00153"></a>00153 , m_pUndockButtonPixmap( 0L ) <a name="l00154"></a>00154 , m_pMinButtonPixmap( 0L ) <a name="l00155"></a>00155 , m_pRestoreButtonPixmap( 0L ) <a name="l00156"></a>00156 , m_pCloseButtonPixmap( 0L ) <a name="l00157"></a>00157 , m_pUndock( 0L ) <a name="l00158"></a>00158 , m_pMinimize( 0L ) <a name="l00159"></a>00159 , m_pRestore( 0L ) <a name="l00160"></a>00160 , m_pClose( 0L ) <a name="l00161"></a>00161 , m_bMaximizedChildFrmMode( false ) <a name="l00162"></a>00162 , m_oldMainFrmHeight( 0 ) <a name="l00163"></a>00163 , m_oldMainFrmMinHeight( 0 ) <a name="l00164"></a>00164 , m_oldMainFrmMaxHeight( 0 ) <a name="l00165"></a>00165 , m_bSDIApplication( false ) <a name="l00166"></a>00166 , m_pDockbaseAreaOfDocumentViews( 0L ) <a name="l00167"></a>00167 , m_pTempDockSession( 0L ) <a name="l00168"></a>00168 , m_bClearingOfWindowMenuBlocked( false ) <a name="l00169"></a>00169 , m_pDragEndTimer( 0L ) <a name="l00170"></a>00170 , m_bSwitching( false ) <a name="l00171"></a>00171 , m_leftContainer( 0 ) <a name="l00172"></a>00172 , m_rightContainer( 0 ) <a name="l00173"></a>00173 , m_topContainer( 0 ) <a name="l00174"></a>00174 , m_bottomContainer( 0 ) <a name="l00175"></a>00175 , d( new KMdiMainFrmPrivate() ) <a name="l00176"></a>00176 , m_mdiGUIClient( 0 ) <a name="l00177"></a>00177 , m_managedDockPositionMode( false ) <a name="l00178"></a>00178 , m_documentTabWidget( 0 ) <a name="l00179"></a>00179 { <a name="l00180"></a>00180 kdDebug(760) << k_funcinfo << endl; <a name="l00181"></a>00181 <span class="comment">// Create the local lists of windows</span> <a name="l00182"></a>00182 m_pDocumentViews = <span class="keyword">new</span> <a class="codeRef" href="qptrlist.html">QPtrList<KMdiChildView></a>; <a name="l00183"></a>00183 m_pDocumentViews-><a class="codeRef" href="qptrlist.html#setAutoDelete">setAutoDelete</a>( <span class="keyword">false</span> ); <a name="l00184"></a>00184 m_pToolViews = <span class="keyword">new</span> <a class="codeRef" href="qmap.html">QMap<QWidget*, KMdiToolViewAccessor*></a>; <a name="l00185"></a>00185 <a name="l00186"></a>00186 <span class="comment">// This seems to be needed (re-check it after Qt2.0 comed out)</span> <a name="l00187"></a>00187 setFocusPolicy( ClickFocus ); <a name="l00188"></a>00188 <a name="l00189"></a>00189 <span class="comment">// create the central widget</span> <a name="l00190"></a>00190 createMdiManager(); <a name="l00191"></a>00191 <a name="l00192"></a>00192 <span class="comment">// cover KMdi's childarea by a dockwidget</span> <a name="l00193"></a>00193 m_pDockbaseAreaOfDocumentViews = createDockWidget( <span class="stringliteral">"mdiAreaCover"</span>, <a class="codeRef" href="qpixmap.html">QPixmap</a>(), 0L, <span class="stringliteral">"mdi_area_cover"</span> ); <a name="l00194"></a>00194 m_pDockbaseAreaOfDocumentViews->setDockWindowTransient( <span class="keyword">this</span>, <span class="keyword">true</span> ); <a name="l00195"></a>00195 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockNone ); <a name="l00196"></a>00196 m_pDockbaseAreaOfDocumentViews->setDockSite( KDockWidget::DockCorner ); <a name="l00197"></a>00197 m_pDockbaseAreaOfDocumentViews->setWidget( m_pMdi ); <a name="l00198"></a>00198 <span class="comment">// set this dock to main view</span> <a name="l00199"></a>00199 setView( m_pDockbaseAreaOfDocumentViews ); <a name="l00200"></a>00200 setMainDockWidget( m_pDockbaseAreaOfDocumentViews ); <a name="l00201"></a>00201 <a name="l00202"></a>00202 <span class="comment">// Apply options for the MDI manager</span> <a name="l00203"></a>00203 applyOptions(); <a name="l00204"></a>00204 <a name="l00205"></a>00205 m_pTaskBarPopup = <span class="keyword">new</span> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>( <span class="keyword">this</span>, <span class="stringliteral">"taskbar_popup_menu"</span> ); <a name="l00206"></a>00206 m_pWindowPopup = <span class="keyword">new</span> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>( <span class="keyword">this</span>, <span class="stringliteral">"window_popup_menu"</span> ); <a name="l00207"></a>00207 <a name="l00208"></a>00208 m_pWindowMenu = <span class="keyword">new</span> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>( <span class="keyword">this</span>, <span class="stringliteral">"window_menu"</span> ); <a name="l00209"></a>00209 m_pWindowMenu->setCheckable( <span class="keyword">true</span> ); <a name="l00210"></a>00210 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pWindowMenu, SIGNAL( aboutToShow() ), <span class="keyword">this</span>, SLOT( fillWindowMenu() ) ); <a name="l00211"></a>00211 <a name="l00212"></a>00212 m_pDockMenu = <span class="keyword">new</span> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>( <span class="keyword">this</span>, <span class="stringliteral">"dock_menu"</span> ); <a name="l00213"></a>00213 m_pDockMenu->setCheckable( <span class="keyword">true</span> ); <a name="l00214"></a>00214 <a name="l00215"></a>00215 m_pMdiModeMenu = <span class="keyword">new</span> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>( <span class="keyword">this</span>, <span class="stringliteral">"mdimode_menu"</span> ); <a name="l00216"></a>00216 m_pMdiModeMenu->setCheckable( <span class="keyword">true</span> ); <a name="l00217"></a>00217 <a name="l00218"></a>00218 m_pPlacingMenu = <span class="keyword">new</span> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>( <span class="keyword">this</span>, <span class="stringliteral">"placing_menu"</span> ); <a name="l00219"></a>00219 <a name="l00220"></a>00220 d->closeWindowAction = <span class="keyword">new</span> KAction(i18n(<span class="stringliteral">"&Close"</span>), KStdAccel::close(), <a name="l00221"></a>00221 <span class="keyword">this</span>, SLOT(closeActiveView()), actionCollection(), <span class="stringliteral">"window_close"</span>); <a name="l00222"></a>00222 <a name="l00223"></a>00223 <span class="comment">// the MDI view taskbar</span> <a name="l00224"></a>00224 createTaskBar(); <a name="l00225"></a>00225 <a name="l00226"></a>00226 <span class="comment">// this is only a hack, but prevents us from crash because the buttons are otherwise</span> <a name="l00227"></a>00227 <span class="comment">// not created before we switch the modes where we need them !!!</span> <a name="l00228"></a>00228 setMenuForSDIModeSysButtons( menuBar() ); <a name="l00229"></a>00229 <a name="l00230"></a>00230 <span class="keywordflow">switch</span> ( mdiMode ) <a name="l00231"></a>00231 { <a name="l00232"></a>00232 <span class="keywordflow">case</span> KMdi::IDEAlMode: <a name="l00233"></a>00233 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Switching to IDEAl mode"</span> << endl; <a name="l00234"></a>00234 switchToIDEAlMode(); <a name="l00235"></a>00235 <span class="keywordflow">break</span>; <a name="l00236"></a>00236 <span class="keywordflow">case</span> KMdi::TabPageMode: <a name="l00237"></a>00237 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Switching to tab page mode"</span> << endl; <a name="l00238"></a>00238 switchToTabPageMode(); <a name="l00239"></a>00239 <span class="keywordflow">break</span>; <a name="l00240"></a>00240 <span class="keywordflow">case</span> KMdi::ToplevelMode: <a name="l00241"></a>00241 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Switching to top level mode"</span> << endl; <a name="l00242"></a>00242 switchToToplevelMode(); <a name="l00243"></a>00243 <span class="keywordflow">break</span>; <a name="l00244"></a>00244 <span class="keywordflow">default</span>: <a name="l00245"></a>00245 m_mdiMode = KMdi::ChildframeMode; <a name="l00246"></a>00246 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Switching to child frame mode"</span> << endl; <a name="l00247"></a>00247 <span class="keywordflow">break</span>; <a name="l00248"></a>00248 } <a name="l00249"></a>00249 <a name="l00250"></a>00250 <span class="comment">// drag end timer</span> <a name="l00251"></a>00251 m_pDragEndTimer = <span class="keyword">new</span> <a class="codeRef" href="qtimer.html">QTimer</a>(); <a name="l00252"></a>00252 connect( m_pDragEndTimer, SIGNAL( timeout() ), <span class="keyword">this</span>, SLOT( dragEndTimeOut() ) ); <a name="l00253"></a>00253 connect( guiFactory(), SIGNAL( clientAdded( KXMLGUIClient* ) ), <a name="l00254"></a>00254 <span class="keyword">this</span>, SLOT( verifyToplevelHeight() ) ); <a name="l00255"></a>00255 connect( guiFactory(), SIGNAL( clientRemoved( KXMLGUIClient* ) ), <a name="l00256"></a>00256 <span class="keyword">this</span>, SLOT( verifyToplevelHeight() ) ); <a name="l00257"></a>00257 } <a name="l00258"></a>00258 <a name="l00259"></a>00259 <span class="keywordtype">void</span> KMdiMainFrm::verifyToplevelHeight() <a name="l00260"></a>00260 { <a name="l00261"></a>00261 <span class="keywordflow">if</span> ( m_mdiMode != KMdi::ToplevelMode ) <a name="l00262"></a>00262 <span class="keywordflow">return</span>; <a name="l00263"></a>00263 <a name="l00264"></a>00264 <span class="comment">//kdDebug(760) << k_funcinfo << endl;</span> <a name="l00265"></a>00265 <span class="keywordtype">int</span> topDockHeight = topDock() ? topDock()->height() : 0; <a name="l00266"></a>00266 <span class="keywordtype">int</span> menuBarHeight = hasMenuBar() ? menuBar()->height() : 0; <a name="l00267"></a>00267 setFixedHeight( topDockHeight + menuBarHeight ); <a name="l00268"></a>00268 resize( width(), height() ); <a name="l00269"></a>00269 } <a name="l00270"></a>00270 <a name="l00271"></a><a class="code" href="classKMdiMainFrm.html#a01fb1edb044317715c2784208ef8b879">00271</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a01fb1edb044317715c2784208ef8b879" title="Control whether or not the standard MDI menu is displayed when a context menu is displayed.">KMdiMainFrm::setStandardMDIMenuEnabled</a>( <span class="keywordtype">bool</span> showModeMenu ) <a name="l00272"></a>00272 { <a name="l00273"></a>00273 m_mdiGUIClient = <span class="keyword">new</span> <a class="code" href="classKMDIPrivate_1_1KMDIGUIClient.html" title="A class derived from KXMLGUIClient that handles the various KMDI modes.">KMDIPrivate::KMDIGUIClient</a>( <span class="keyword">this</span>, showModeMenu ); <a name="l00274"></a>00274 connect( m_mdiGUIClient, SIGNAL( toggleTop() ), <span class="keyword">this</span>, SIGNAL( toggleTop() ) ); <a name="l00275"></a>00275 connect( m_mdiGUIClient, SIGNAL( toggleLeft() ), <span class="keyword">this</span>, SIGNAL( toggleLeft() ) ); <a name="l00276"></a>00276 connect( m_mdiGUIClient, SIGNAL( toggleRight() ), <span class="keyword">this</span>, SIGNAL( toggleRight() ) ); <a name="l00277"></a>00277 connect( m_mdiGUIClient, SIGNAL( toggleBottom() ), <span class="keyword">this</span>, SIGNAL( toggleBottom() ) ); <a name="l00278"></a>00278 <a name="l00279"></a>00279 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode ) <a name="l00280"></a>00280 { <a name="l00281"></a>00281 <span class="keywordflow">if</span> ( m_topContainer ) <a name="l00282"></a>00282 connect( <span class="keyword">this</span>, SIGNAL( toggleTop() ), m_topContainer->getWidget(), SLOT( toggle() ) ); <a name="l00283"></a>00283 <span class="keywordflow">if</span> ( m_leftContainer ) <a name="l00284"></a>00284 connect( <span class="keyword">this</span>, SIGNAL( toggleLeft() ), m_leftContainer->getWidget(), SLOT( toggle() ) ); <a name="l00285"></a>00285 <span class="keywordflow">if</span> ( m_rightContainer ) <a name="l00286"></a>00286 connect( <span class="keyword">this</span>, SIGNAL( toggleRight() ), m_rightContainer->getWidget(), SLOT( toggle() ) ); <a name="l00287"></a>00287 <span class="keywordflow">if</span> ( m_bottomContainer ) <a name="l00288"></a>00288 connect( <span class="keyword">this</span>, SIGNAL( toggleBottom() ), m_bottomContainer->getWidget(), SLOT( toggle() ) ); <a name="l00289"></a>00289 } <a name="l00290"></a>00290 <a name="l00291"></a>00291 emit mdiModeHasBeenChangedTo( m_mdiMode ); <a name="l00292"></a>00292 } <a name="l00293"></a>00293 <a name="l00294"></a>00294 <span class="comment">//============ ~KMdiMainFrm ============//</span> <a name="l00295"></a>00295 KMdiMainFrm::~KMdiMainFrm() <a name="l00296"></a>00296 { <a name="l00297"></a>00297 <span class="comment">//save the children first to a list, as removing invalidates our iterator</span> <a name="l00298"></a>00298 <a class="codeRef" href="qvaluelist.html">QValueList<KMdiChildView*></a> children; <a name="l00299"></a>00299 <span class="keywordflow">for</span> ( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * w = m_pDocumentViews->first();w;w = m_pDocumentViews->next() ) <a name="l00300"></a>00300 children.<a class="codeRef" href="qvaluelist.html#append">append</a>( w ); <a name="l00301"></a>00301 <a name="l00302"></a>00302 <span class="comment">// safely close the windows so properties are saved...</span> <a name="l00303"></a>00303 <a class="codeRef" href="qvaluelistiterator.html">QValueListIterator<KMdiChildView*></a> childIt; <a name="l00304"></a>00304 <span class="keywordflow">for</span> ( childIt = children.<a class="codeRef" href="qvaluelist.html#begin">begin</a>(); childIt != children.<a class="codeRef" href="qvaluelist.html#end">end</a>(); ++childIt ) <a name="l00305"></a>00305 { <a name="l00306"></a>00306 closeWindow( *childIt, <span class="keyword">false</span> ); <span class="comment">// without re-layout taskbar!</span> <a name="l00307"></a>00307 } <a name="l00308"></a>00308 <a name="l00309"></a>00309 emit lastChildViewClosed(); <a name="l00310"></a>00310 <span class="keyword">delete</span> m_pDocumentViews; <a name="l00311"></a>00311 <span class="keyword">delete</span> m_pToolViews; <a name="l00312"></a>00312 m_pToolViews = 0; <a name="l00313"></a>00313 <span class="keyword">delete</span> m_pDragEndTimer; <a name="l00314"></a>00314 <a name="l00315"></a>00315 <span class="keyword">delete</span> m_pUndockButtonPixmap; <a name="l00316"></a>00316 <span class="keyword">delete</span> m_pMinButtonPixmap; <a name="l00317"></a>00317 <span class="keyword">delete</span> m_pRestoreButtonPixmap; <a name="l00318"></a>00318 <span class="keyword">delete</span> m_pCloseButtonPixmap; <a name="l00319"></a>00319 <a name="l00320"></a>00320 <span class="comment">//deletes added for Release-Version-Pop-Up-WinMenu-And-Go-Out-Problem</span> <a name="l00321"></a>00321 <span class="keyword">delete</span> m_pDockMenu; <a name="l00322"></a>00322 <span class="keyword">delete</span> m_pMdiModeMenu; <a name="l00323"></a>00323 <span class="keyword">delete</span> m_pPlacingMenu; <a name="l00324"></a>00324 <span class="keyword">delete</span> m_pTaskBarPopup; <a name="l00325"></a>00325 <span class="keyword">delete</span> m_pWindowPopup; <a name="l00326"></a>00326 <span class="keyword">delete</span> m_pWindowMenu; <a name="l00327"></a>00327 <span class="keyword">delete</span> m_mdiGUIClient; <a name="l00328"></a>00328 <span class="keyword">delete</span> m_pTempDockSession; <a name="l00329"></a>00329 m_mdiGUIClient = 0; <a name="l00330"></a>00330 <span class="keyword">delete</span> d; <a name="l00331"></a>00331 d = 0; <a name="l00332"></a>00332 } <a name="l00333"></a>00333 <a name="l00334"></a>00334 <span class="comment">//============ applyOptions ============//</span> <a name="l00335"></a>00335 <span class="comment">//FIXME something wrong with this function. dunno what though</span> <a name="l00336"></a><a class="code" href="classKMdiMainFrm.html#a8c9d204ad79f277186f83364414e78f7">00336</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a8c9d204ad79f277186f83364414e78f7" title="Called in the constructor (forces a resize of all MDI views)">KMdiMainFrm::applyOptions</a>() <a name="l00337"></a>00337 { <a name="l00338"></a>00338 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l00339"></a>00339 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l00340"></a>00340 { <a name="l00341"></a>00341 <a class="codeRef" href="qwidget.html">QWidget</a>* childFrame = 0L; <a name="l00342"></a>00342 <span class="keywordflow">if</span> ( ( *it )->mdiParent() ) <a name="l00343"></a>00343 { <a name="l00344"></a>00344 kdDebug(760) << k_funcinfo << <span class="stringliteral">"using child view's mdi parent for resize hack"</span> << endl; <a name="l00345"></a>00345 childFrame = ( *it )->mdiParent(); <a name="l00346"></a>00346 } <a name="l00347"></a>00347 <span class="keywordflow">else</span> <a name="l00348"></a>00348 { <a name="l00349"></a>00349 kdDebug(760) << k_funcinfo << <span class="stringliteral">"using child view for resize hack"</span> << endl; <a name="l00350"></a>00350 childFrame = ( *it ); <a name="l00351"></a>00351 } <a name="l00352"></a>00352 <a name="l00353"></a>00353 <span class="keywordtype">int</span> w = childFrame-><a class="codeRef" href="qwidget.html#width">width</a>(); <a name="l00354"></a>00354 <span class="keywordtype">int</span> h = childFrame-><a class="codeRef" href="qwidget.html#height">height</a>(); <a name="l00355"></a>00355 childFrame-><a class="codeRef" href="qwidget.html#resize">resize</a>( w + 1, h + 1 ); <a name="l00356"></a>00356 childFrame-><a class="codeRef" href="qwidget.html#resize">resize</a>( w - 1, h - 1 ); <a name="l00357"></a>00357 } <a name="l00358"></a>00358 } <a name="l00359"></a>00359 <a name="l00360"></a>00360 <span class="comment">//============ createMdiManager ============//</span> <a name="l00361"></a><a class="code" href="classKMdiMainFrm.html#ad121479ec28e3ca2c611c5f3a2fa79b0">00361</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ad121479ec28e3ca2c611c5f3a2fa79b0" title="Creates the MDI view area and connects some signals and slots with the KMdiMainFrm widget...">KMdiMainFrm::createMdiManager</a>() <a name="l00362"></a>00362 { <a name="l00363"></a>00363 kdDebug(760) << k_funcinfo << <span class="stringliteral">"creating MDI manager"</span> << endl; <a name="l00364"></a>00364 m_pMdi = <span class="keyword">new</span> <a class="code" href="classKMdiChildArea.html" title="Internal class.">KMdiChildArea</a>( <span class="keyword">this</span> ); <a name="l00365"></a>00365 setCentralWidget( m_pMdi ); <a name="l00366"></a>00366 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMdi, SIGNAL( nowMaximized( <span class="keywordtype">bool</span> ) ), <a name="l00367"></a>00367 <span class="keyword">this</span>, SLOT( setEnableMaximizedChildFrmMode( <span class="keywordtype">bool</span> ) ) ); <a name="l00368"></a>00368 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMdi, SIGNAL( noMaximizedChildFrmLeft( <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* ) ), <a name="l00369"></a>00369 <span class="keyword">this</span>, SLOT( switchOffMaximizeModeForMenu( <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* ) ) ); <a name="l00370"></a>00370 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMdi, SIGNAL( sysButtonConnectionsMustChange( <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>*, <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* ) ), <a name="l00371"></a>00371 <span class="keyword">this</span>, SLOT( updateSysButtonConnections( <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>*, <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* ) ) ); <a name="l00372"></a>00372 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMdi, SIGNAL( popupWindowMenu( <a class="codeRef" href="qpoint.html">QPoint</a> ) ), <a name="l00373"></a>00373 <span class="keyword">this</span>, SLOT( popupWindowMenu( <a class="codeRef" href="qpoint.html">QPoint</a> ) ) ); <a name="l00374"></a>00374 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMdi, SIGNAL( lastChildFrmClosed() ), <a name="l00375"></a>00375 <span class="keyword">this</span>, SIGNAL( lastChildFrmClosed() ) ); <a name="l00376"></a>00376 } <a name="l00377"></a>00377 <a name="l00378"></a>00378 <span class="comment">//============ createTaskBar ==============//</span> <a name="l00379"></a><a class="code" href="classKMdiMainFrm.html#ad00a6c4982995b75f263799542f7d86e">00379</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ad00a6c4982995b75f263799542f7d86e" title="Creates a new MDI taskbar (showing the MDI views as taskbar entries) and shows it.">KMdiMainFrm::createTaskBar</a>() <a name="l00380"></a>00380 { <a name="l00381"></a>00381 m_pTaskBar = <span class="keyword">new</span> <a class="code" href="classKMdiTaskBar.html" title="Internal class.">KMdiTaskBar</a>( <span class="keyword">this</span>, QMainWindow::DockBottom ); <a name="l00382"></a>00382 m_pTaskBar->installEventFilter( <span class="keyword">this</span> ); <a name="l00383"></a>00383 } <a name="l00384"></a>00384 <a name="l00385"></a><a class="code" href="classKMdiMainFrm.html#a9a655717a510bd509301585e54f51d72">00385</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a9a655717a510bd509301585e54f51d72" title="Switches the KMdiTaskBar on and off.">KMdiMainFrm::slot_toggleTaskBar</a>() <a name="l00386"></a>00386 { <a name="l00387"></a>00387 <span class="keywordflow">if</span> ( !m_pTaskBar ) <a name="l00388"></a>00388 <span class="keywordflow">return</span>; <a name="l00389"></a>00389 m_pTaskBar->switchOn( !m_pTaskBar->isSwitchedOn() ); <a name="l00390"></a>00390 } <a name="l00391"></a>00391 <a name="l00392"></a>00392 <span class="keywordtype">void</span> KMdiMainFrm::resizeEvent( <a class="codeRef" href="qresizeevent.html">QResizeEvent</a> *e ) <a name="l00393"></a>00393 { <a name="l00394"></a>00394 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::ToplevelMode ) && !parentWidget() ) <a name="l00395"></a>00395 { <a name="l00396"></a>00396 <span class="keywordflow">if</span> ( e-><a class="codeRef" href="qresizeevent.html#oldSize">oldSize</a>().height() != e-><a class="codeRef" href="qresizeevent.html#size">size</a>().height() ) <a name="l00397"></a>00397 <span class="keywordflow">return</span> ; <a name="l00398"></a>00398 } <a name="l00399"></a>00399 KParts::DockMainWindow::resizeEvent( e ); <a name="l00400"></a>00400 <span class="keywordflow">if</span> ( !m_mdiGUIClient ) <a name="l00401"></a>00401 return ; <a name="l00402"></a>00402 setSysButtonsAtMenuPosition(); <a name="l00403"></a>00403 } <a name="l00404"></a>00404 <a name="l00405"></a>00405 <span class="comment">//================ setMinimumSize ===============//</span> <a name="l00406"></a>00406 <a name="l00407"></a><a class="code" href="classKMdiMainFrm.html#af85cea0198e56a5d8b23a154fb0a1cf5">00407</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#af85cea0198e56a5d8b23a154fb0a1cf5" title="Do nothing when in Toplevel mode.">KMdiMainFrm::setMinimumSize</a>( <span class="keywordtype">int</span> minw, <span class="keywordtype">int</span> minh ) <a name="l00408"></a>00408 { <a name="l00409"></a>00409 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::ToplevelMode ) && !parentWidget() ) <a name="l00410"></a>00410 return ; <a name="l00411"></a>00411 DockMainWindow::setMinimumSize( minw, minh ); <a name="l00412"></a>00412 } <a name="l00413"></a>00413 <a name="l00414"></a>00414 <span class="comment">//================ wrapper ===============//</span> <a name="l00415"></a>00415 <a name="l00416"></a><a class="code" href="classKMdiMainFrm.html#a25aaa63cdba1334a863d77f68937cfe2">00416</a> <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* <a class="code" href="classKMdiMainFrm.html#a25aaa63cdba1334a863d77f68937cfe2" title="addWindow demands a KMdiChildView.">KMdiMainFrm::createWrapper</a>( <a class="codeRef" href="qwidget.html">QWidget</a> *view, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& name, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& shortName ) <a name="l00417"></a>00417 { <a name="l00418"></a>00418 Q_ASSERT( view ); <span class="comment">// if this assert fails, then some part didn't return a widget. Fix the part ;)</span> <a name="l00419"></a>00419 <a name="l00420"></a>00420 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pMDICover = <span class="keyword">new</span> <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>( name <span class="comment">/*caption*/</span>, 0L <span class="comment">/*parent*/</span>, <a name="l00421"></a>00421 name.<a class="codeRef" href="qstring.html#latin1">latin1</a>() ); <a name="l00422"></a>00422 <a class="codeRef" href="qboxlayout.html">QBoxLayout</a>* pLayout = <span class="keyword">new</span> <a class="codeRef" href="qhboxlayout.html">QHBoxLayout</a>( pMDICover, 0, -1, <span class="stringliteral">"layout"</span> ); <a name="l00423"></a>00423 view-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( pMDICover, <a class="codeRef" href="qpoint.html">QPoint</a>( 0, 0 ) ); <a name="l00424"></a>00424 pLayout->addWidget( view ); <a name="l00425"></a>00425 <span class="comment">// pMDICover->setName(name);</span> <a name="l00426"></a>00426 pMDICover-><a class="code" href="classKMdiChildView.html#a0526b4a104fd7e81b3043a0e2872db34" title="Sets the caption of the button referring to this window.">setTabCaption</a>( shortName ); <a name="l00427"></a>00427 pMDICover-><a class="code" href="classKMdiChildView.html#ad5206322b89efe6e1679a346acad8598" title="Sets the window caption string...">setCaption</a>( name ); <a name="l00428"></a>00428 <a name="l00429"></a>00429 <span class="keyword">const</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>* wndIcon = view-><a class="codeRef" href="qwidget.html#icon">icon</a>(); <a name="l00430"></a>00430 <span class="keywordflow">if</span> ( wndIcon ) <a name="l00431"></a>00431 pMDICover-><a class="codeRef" href="qwidget.html#setIcon">setIcon</a>( *wndIcon ); <a name="l00432"></a>00432 <a name="l00433"></a>00433 pMDICover->trackIconAndCaptionChanges( view ); <a name="l00434"></a>00434 <span class="keywordflow">return</span> pMDICover; <a name="l00435"></a>00435 } <a name="l00436"></a>00436 <a name="l00437"></a>00437 <span class="comment">//================ addWindow ===============//</span> <a name="l00438"></a>00438 <a name="l00439"></a><a class="code" href="classKMdiMainFrm.html#aadc92163fbb227bc5abe8df2c92b694e">00439</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#aadc92163fbb227bc5abe8df2c92b694e" title="Adds a KMdiChildView to the MDI system.">KMdiMainFrm::addWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pWnd, <span class="keywordtype">int</span> flags ) <a name="l00440"></a>00440 { <a name="l00441"></a>00441 addWindow( pWnd, flags, -1 ); <a name="l00442"></a>00442 } <a name="l00443"></a>00443 <a name="l00444"></a><a class="code" href="classKMdiMainFrm.html#a6b43b7c79e5a736cba6fb9b0e1c0361d">00444</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#aadc92163fbb227bc5abe8df2c92b694e" title="Adds a KMdiChildView to the MDI system.">KMdiMainFrm::addWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pWnd, <span class="keywordtype">int</span> flags, <span class="keywordtype">int</span> index ) <a name="l00445"></a>00445 { <a name="l00446"></a>00446 <span class="keywordflow">if</span> ( windowExists( pWnd, AnyView ) ) <span class="comment">//already added</span> <a name="l00447"></a>00447 <span class="keywordflow">return</span>; <a name="l00448"></a>00448 <a name="l00449"></a>00449 <span class="keywordflow">if</span> ( flags & KMdi::ToolWindow ) <a name="l00450"></a>00450 { <a name="l00451"></a>00451 addToolWindow( pWnd ); <a name="l00452"></a>00452 <span class="comment">// some kind of cascading</span> <a name="l00453"></a>00453 pWnd-><a class="codeRef" href="qwidget.html#move">move</a>( m_pMdi->mapToGlobal( m_pMdi->getCascadePoint() ) ); <a name="l00454"></a>00454 <a name="l00455"></a>00455 return ; <a name="l00456"></a>00456 } <a name="l00457"></a>00457 <a name="l00458"></a>00458 d->closeWindowAction->setEnabled(<span class="keyword">true</span>); <a name="l00459"></a>00459 <a name="l00460"></a>00460 <span class="comment">// common connections used when under MDI control</span> <a name="l00461"></a>00461 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( clickedInWindowMenu( <span class="keywordtype">int</span> ) ), <span class="keyword">this</span>, SLOT( windowMenuItemActivated( <span class="keywordtype">int</span> ) ) ); <a name="l00462"></a>00462 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( focusInEventOccurs( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ), <span class="keyword">this</span>, SLOT( activateView( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ) ); <a name="l00463"></a>00463 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( childWindowCloseRequest( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ), <span class="keyword">this</span>, SLOT( childWindowCloseRequest( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ) ); <a name="l00464"></a>00464 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( attachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ), <span class="keyword">this</span>, SLOT( attachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ) ); <a name="l00465"></a>00465 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( detachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ), <span class="keyword">this</span>, SLOT( detachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ) ); <a name="l00466"></a>00466 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( clickedInDockMenu( <span class="keywordtype">int</span> ) ), <span class="keyword">this</span>, SLOT( dockMenuItemActivated( <span class="keywordtype">int</span> ) ) ); <a name="l00467"></a>00467 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( activated( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ), <span class="keyword">this</span>, SIGNAL( viewActivated( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ) ); <a name="l00468"></a>00468 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( deactivated( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ), <span class="keyword">this</span>, SIGNAL( viewDeactivated( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ) ); <a name="l00469"></a>00469 <a name="l00470"></a>00470 <span class="keywordflow">if</span> ( index == -1 ) <a name="l00471"></a>00471 m_pDocumentViews->append( pWnd ); <a name="l00472"></a>00472 <span class="keywordflow">else</span> <a name="l00473"></a>00473 m_pDocumentViews->insert( index, pWnd ); <a name="l00474"></a>00474 <a name="l00475"></a>00475 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l00476"></a>00476 { <a name="l00477"></a>00477 <a class="code" href="classKMdiTaskBarButton.html" title="Internal class.">KMdiTaskBarButton</a>* but = m_pTaskBar->addWinButton( pWnd ); <a name="l00478"></a>00478 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( pWnd, SIGNAL( tabCaptionChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ), but, SLOT( setNewText( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ) ); <a name="l00479"></a>00479 } <a name="l00480"></a>00480 <a name="l00481"></a>00481 <span class="comment">// embed the view depending on the current MDI mode</span> <a name="l00482"></a>00482 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::TabPageMode || m_mdiMode == KMdi::IDEAlMode ) <a name="l00483"></a>00483 { <a name="l00484"></a>00484 <a class="codeRef" href="qpixmap.html">QPixmap</a> pixmap; <a name="l00485"></a>00485 <span class="keywordflow">if</span> ( pWnd-><a class="codeRef" href="qwidget.html#icon">icon</a>() ) <a name="l00486"></a>00486 pixmap = *( pWnd-><a class="codeRef" href="qwidget.html#icon">icon</a>() ); <a name="l00487"></a>00487 <a name="l00488"></a>00488 m_documentTabWidget->insertTab( pWnd, pixmap, pWnd-><a class="code" href="classKMdiChildView.html#ac0e1fd56dbf1f6d9659fb14ff8a1b0c5" title="Returns the caption of the button on the taskbar.">tabCaption</a>(), index ); <a name="l00489"></a>00489 <a name="l00490"></a>00490 connect( pWnd, SIGNAL( iconUpdated( <a class="codeRef" href="qwidget.html">QWidget</a>*, <a class="codeRef" href="qpixmap.html">QPixmap</a> ) ), m_documentTabWidget, SLOT( updateIconInView( <a class="codeRef" href="qwidget.html">QWidget</a>*, <a class="codeRef" href="qpixmap.html">QPixmap</a> ) ) ); <a name="l00491"></a>00491 connect( pWnd, SIGNAL( captionUpdated( <a class="codeRef" href="qwidget.html">QWidget</a>*, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ), m_documentTabWidget, SLOT( updateCaptionInView( <a class="codeRef" href="qwidget.html">QWidget</a>*, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ) ); <a name="l00492"></a>00492 } <a name="l00493"></a>00493 <span class="keywordflow">else</span> <a name="l00494"></a>00494 { <a name="l00495"></a>00495 <span class="keywordflow">if</span> ( ( flags & KMdi::Detach ) || ( m_mdiMode == KMdi::ToplevelMode ) ) <a name="l00496"></a>00496 { <a name="l00497"></a>00497 detachWindow( pWnd, !( flags & KMdi::Hide ) ); <a name="l00498"></a>00498 emit childViewIsDetachedNow( pWnd ); <span class="comment">// fake it because detach won't call it in this case of addWindow-to-MDI</span> <a name="l00499"></a>00499 } <a name="l00500"></a>00500 <span class="keywordflow">else</span> <a name="l00501"></a>00501 attachWindow( pWnd, !( flags & KMdi::Hide ), flags & KMdi::UseKMdiSizeHint ); <a name="l00502"></a>00502 <a name="l00503"></a>00503 <span class="keywordflow">if</span> ( ( m_bMaximizedChildFrmMode && ( !m_bSDIApplication && ( flags & KMdi::Detach ) ) <a name="l00504"></a>00504 && m_mdiMode != KMdi::ToplevelMode ) || ( flags & KMdi::Maximize ) ) <a name="l00505"></a>00505 { <a name="l00506"></a>00506 <span class="keywordflow">if</span> ( !pWnd-><a class="code" href="classKMdiChildView.html#ab571165055d79a106288053a09801459" title="Tells if the window is minimized when attached to the Mdi manager, otherwise returns false...">isMaximized</a>() ) <a name="l00507"></a>00507 pWnd-><a class="code" href="classKMdiChildView.html#a2dbaedf3391286e4126d2dc5ce70188c" title="Maximizes this window when it is attached to the Mdi manager.">maximize</a>(); <a name="l00508"></a>00508 } <a name="l00509"></a>00509 <a name="l00510"></a>00510 <span class="keywordflow">if</span> ( !m_bSDIApplication || ( flags & KMdi::Detach ) ) <a name="l00511"></a>00511 { <a name="l00512"></a>00512 <span class="keywordflow">if</span> ( flags & KMdi::Minimize ) <a name="l00513"></a>00513 pWnd-><a class="code" href="classKMdiChildView.html#a3b79ed01a8d357cf01cb90b4f0fe23b7" title="Minimizes this window when it is attached to the Mdi manager.">minimize</a>(); <a name="l00514"></a>00514 <a name="l00515"></a>00515 <span class="keywordflow">if</span> ( !( flags & KMdi::Hide ) ) <a name="l00516"></a>00516 { <a name="l00517"></a>00517 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00518"></a>00518 pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>()->show(); <a name="l00519"></a>00519 <span class="keywordflow">else</span> <a name="l00520"></a>00520 pWnd-><a class="code" href="classKMdiChildView.html#aa74d747107015dbd5d6f03ca70e13fe0" title="Calls QWidget::show but also for it's parent widget if attached.">show</a>(); <a name="l00521"></a>00521 } <a name="l00522"></a>00522 } <a name="l00523"></a>00523 } <a name="l00524"></a>00524 } <a name="l00525"></a>00525 <a name="l00526"></a>00526 <span class="comment">//============ addWindow ============//</span> <a name="l00527"></a><a class="code" href="classKMdiMainFrm.html#a2f0f5e5cd585567fb7204a140e0d6473">00527</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#aadc92163fbb227bc5abe8df2c92b694e" title="Adds a KMdiChildView to the MDI system.">KMdiMainFrm::addWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pWnd, <a class="codeRef" href="qrect.html">QRect</a> rectNormal, <span class="keywordtype">int</span> flags ) <a name="l00528"></a>00528 { <a name="l00529"></a>00529 addWindow( pWnd, flags ); <a name="l00530"></a>00530 <span class="keywordflow">if</span> ( m_bMaximizedChildFrmMode && pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00531"></a>00531 pWnd-><a class="code" href="classKMdiChildView.html#a5843354c7aa98ca0b062fa867de438ab" title="Sets the geometry that will be restored by calling restore().">setRestoreGeometry</a>( rectNormal ); <a name="l00532"></a>00532 <span class="keywordflow">else</span> <a name="l00533"></a>00533 pWnd-><a class="codeRef" href="qwidget.html#setGeometry">setGeometry</a>( rectNormal ); <a name="l00534"></a>00534 } <a name="l00535"></a>00535 <a name="l00536"></a>00536 <span class="comment">//============ addWindow ============//</span> <a name="l00537"></a><a class="code" href="classKMdiMainFrm.html#a21bccdb9306bfceed3f0eb956f18c785">00537</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#aadc92163fbb227bc5abe8df2c92b694e" title="Adds a KMdiChildView to the MDI system.">KMdiMainFrm::addWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pWnd, <a class="codeRef" href="qpoint.html">QPoint</a> pos, <span class="keywordtype">int</span> flags ) <a name="l00538"></a>00538 { <a name="l00539"></a>00539 addWindow( pWnd, flags ); <a name="l00540"></a>00540 <span class="keywordflow">if</span> ( m_bMaximizedChildFrmMode && pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00541"></a>00541 pWnd-><a class="code" href="classKMdiChildView.html#a5843354c7aa98ca0b062fa867de438ab" title="Sets the geometry that will be restored by calling restore().">setRestoreGeometry</a>( <a class="codeRef" href="qrect.html">QRect</a>( pos, pWnd-><a class="code" href="classKMdiChildView.html#a96a67df9fb99d71376f192033ce5d004" title="Returns the geometry that will be restored by calling restore().">restoreGeometry</a>().<a class="codeRef" href="qrect.html#size">size</a>() ) ); <a name="l00542"></a>00542 <span class="keywordflow">else</span> <a name="l00543"></a>00543 pWnd-><a class="codeRef" href="qwidget.html#move">move</a>( pos ); <a name="l00544"></a>00544 } <a name="l00545"></a>00545 <a name="l00546"></a>00546 <a name="l00547"></a>00547 <a name="l00548"></a><a class="code" href="classKMdiMainFrm.html#a71566ec1b3c2d9d2b685bfc0ef376bc0">00548</a> KMdiToolViewAccessor *<a class="code" href="classKMdiMainFrm.html#a71566ec1b3c2d9d2b685bfc0ef376bc0" title="Using this method you have to use the setWidget method of the access object, and it is very recommend...">KMdiMainFrm::createToolWindow</a>() <a name="l00549"></a>00549 { <a name="l00550"></a>00550 <span class="keywordflow">return</span> <span class="keyword">new</span> KMdiToolViewAccessor( <span class="keyword">this</span> ); <a name="l00551"></a>00551 } <a name="l00552"></a>00552 <a name="l00553"></a>00553 <a name="l00554"></a>00554 <span class="keywordtype">void</span> KMdiMainFrm::deleteToolWindow( <a class="codeRef" href="qwidget.html">QWidget</a>* pWnd ) <a name="l00555"></a>00555 { <a name="l00556"></a>00556 <span class="keywordflow">if</span> ( m_pToolViews->contains( pWnd ) ) <a name="l00557"></a>00557 deleteToolWindow( ( *m_pToolViews ) [ pWnd ] ); <a name="l00558"></a>00558 } <a name="l00559"></a>00559 <a name="l00560"></a>00560 <span class="keywordtype">void</span> KMdiMainFrm::deleteToolWindow( KMdiToolViewAccessor *accessor ) <a name="l00561"></a>00561 { <a name="l00562"></a>00562 <span class="keyword">delete</span> accessor; <a name="l00563"></a>00563 } <a name="l00564"></a>00564 <a name="l00565"></a>00565 <span class="comment">//============ addWindow ============//</span> <a name="l00566"></a><a class="code" href="classKMdiMainFrm.html#a62007cbd05571459b3ab5ae2e2a41af4">00566</a> KMdiToolViewAccessor *<a class="code" href="classKMdiMainFrm.html#a62007cbd05571459b3ab5ae2e2a41af4" title="Usually called from addWindow() when adding a tool view window.">KMdiMainFrm::addToolWindow</a>( <a class="codeRef" href="qwidget.html">QWidget</a>* pWnd, KDockWidget::DockPosition pos, <a class="codeRef" href="qwidget.html">QWidget</a>* pTargetWnd, <a name="l00567"></a>00567 <span class="keywordtype">int</span> percent, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& tabToolTip, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& tabCaption ) <a name="l00568"></a>00568 { <a name="l00569"></a>00569 <a class="codeRef" href="qwidget.html">QWidget</a>* tvta = pWnd; <a name="l00570"></a>00570 KDockWidget* pDW = dockManager->getDockWidgetFromName( pWnd->name() ); <a name="l00571"></a>00571 <span class="keywordflow">if</span> ( pDW ) <a name="l00572"></a>00572 { <a name="l00573"></a>00573 <span class="comment">// probably readDockConfig already created the widgetContainer, use that</span> <a name="l00574"></a>00574 pDW->setWidget( pWnd ); <a name="l00575"></a>00575 <a name="l00576"></a>00576 <span class="keywordflow">if</span> ( pWnd-><a class="codeRef" href="qwidget.html#icon">icon</a>() ) <a name="l00577"></a>00577 pDW->setPixmap( *pWnd-><a class="codeRef" href="qwidget.html#icon">icon</a>() ); <a name="l00578"></a>00578 <a name="l00579"></a>00579 pDW->setTabPageLabel( ( tabCaption == 0 ) ? pWnd-><a class="codeRef" href="qwidget.html#caption">caption</a>() : tabCaption ); <a name="l00580"></a>00580 pDW->setToolTipString( tabToolTip ); <a name="l00581"></a>00581 dockManager->removeFromAutoCreateList( pDW ); <a name="l00582"></a>00582 pWnd = pDW; <a name="l00583"></a>00583 } <a name="l00584"></a>00584 <a name="l00585"></a>00585 <a class="codeRef" href="qrect.html">QRect</a> r = pWnd-><a class="codeRef" href="qwidget.html#geometry">geometry</a>(); <a name="l00586"></a>00586 <a name="l00587"></a>00587 KMdiToolViewAccessor *mtva = <span class="keyword">new</span> KMdiToolViewAccessor( <span class="keyword">this</span>, pWnd, tabToolTip, ( tabCaption == 0 ) ? pWnd-><a class="codeRef" href="qwidget.html#caption">caption</a>() : tabCaption ); <a name="l00588"></a>00588 m_pToolViews->insert( tvta, mtva ); <a name="l00589"></a>00589 <a name="l00590"></a>00590 <span class="keywordflow">if</span> ( pos == KDockWidget::DockNone ) <a name="l00591"></a>00591 { <a name="l00592"></a>00592 mtva->d->widgetContainer->setEnableDocking( KDockWidget::DockNone ); <a name="l00593"></a>00593 mtva->d->widgetContainer->reparent( <span class="keyword">this</span>, Qt::WType_TopLevel | Qt::WType_Dialog, r.<a class="codeRef" href="qrect.html#topLeft">topLeft</a>(), true ); <span class="comment">//pToolView->isVisible());</span> <a name="l00594"></a>00594 } <a name="l00595"></a>00595 <span class="keywordflow">else</span> <span class="comment">//add and dock the toolview as a dockwidget view</span> <a name="l00596"></a>00596 mtva->place( pos, pTargetWnd, percent ); <a name="l00597"></a>00597 <a name="l00598"></a>00598 <a name="l00599"></a>00599 <span class="keywordflow">return</span> mtva; <a name="l00600"></a>00600 } <a name="l00601"></a>00601 <a name="l00602"></a>00602 <span class="comment">//============ attachWindow ============//</span> <a name="l00603"></a><a class="code" href="classKMdiMainFrm.html#a1984d0d351014aefe90eb974428acbcc">00603</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a1984d0d351014aefe90eb974428acbcc" title="Makes a main frame controlled undocked KMdiChildView docked.">KMdiMainFrm::attachWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd, <span class="keywordtype">bool</span> bShow, <span class="keywordtype">bool</span> bAutomaticResize ) <a name="l00604"></a>00604 { <a name="l00605"></a>00605 pWnd->installEventFilter( <span class="keyword">this</span> ); <a name="l00606"></a>00606 <a name="l00607"></a>00607 <span class="comment">// decide whether window shall be cascaded</span> <a name="l00608"></a>00608 <span class="keywordtype">bool</span> bCascade = <span class="keyword">false</span>; <a name="l00609"></a>00609 <a class="codeRef" href="qapplication.html#sendPostedEvents-2">QApplication::sendPostedEvents</a>(); <a name="l00610"></a>00610 <a class="codeRef" href="qrect.html">QRect</a> frameGeo = pWnd-><a class="codeRef" href="qwidget.html#frameGeometry">frameGeometry</a>(); <a name="l00611"></a>00611 <a class="codeRef" href="qpoint.html">QPoint</a> topLeftScreen = pWnd-><a class="codeRef" href="qwidget.html#mapToGlobal">mapToGlobal</a>( <a class="codeRef" href="qpoint.html">QPoint</a>( 0, 0 ) ); <a name="l00612"></a>00612 <a class="codeRef" href="qpoint.html">QPoint</a> topLeftMdiChildArea = m_pMdi->mapFromGlobal( topLeftScreen ); <a name="l00613"></a>00613 <a class="codeRef" href="qrect.html">QRect</a> childAreaGeo = m_pMdi->geometry(); <a name="l00614"></a>00614 <span class="keywordflow">if</span> ( topLeftMdiChildArea.<a class="codeRef" href="qpoint.html#x">x</a>() < 0 || topLeftMdiChildArea.<a class="codeRef" href="qpoint.html#y">y</a>() < 0 || <a name="l00615"></a>00615 ( topLeftMdiChildArea.<a class="codeRef" href="qpoint.html#x">x</a>() + frameGeo.<a class="codeRef" href="qrect.html#width">width</a>() > childAreaGeo.<a class="codeRef" href="qrect.html#width">width</a>() ) || <a name="l00616"></a>00616 ( topLeftMdiChildArea.<a class="codeRef" href="qpoint.html#y">y</a>() + frameGeo.<a class="codeRef" href="qrect.html#height">height</a>() > childAreaGeo.<a class="codeRef" href="qrect.html#height">height</a>() ) ) <a name="l00617"></a>00617 { <a name="l00618"></a>00618 bCascade = <span class="keyword">true</span>; <a name="l00619"></a>00619 } <a name="l00620"></a>00620 <a name="l00621"></a>00621 <span class="comment">// create frame and insert child view</span> <a name="l00622"></a>00622 <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a> *lpC = <span class="keyword">new</span> <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>( m_pMdi ); <a name="l00623"></a>00623 pWnd-><a class="code" href="classKMdiChildView.html#aeec8fed523c02ce0a05f743af1559dd0" title="Calls QWidget::hide() or it's parent widget hide() if attached.">hide</a>(); <a name="l00624"></a>00624 <span class="keywordflow">if</span> ( !bCascade ) <a name="l00625"></a>00625 lpC->move( topLeftMdiChildArea ); <a name="l00626"></a>00626 <a name="l00627"></a>00627 lpC-><a class="code" href="classKMdiChildFrm.html#a3543c58013900e6c7c064580999cad93" title="Reparents the widget w to this KMdiChildFrm (if this is not already done) Installs an event filter to...">setClient</a>( pWnd, bAutomaticResize ); <a name="l00628"></a>00628 lpC->setFocus(); <a name="l00629"></a>00629 pWnd-><a class="code" href="classKMdiChildView.html#a02a2f145e1aa7f6d12b5d01dde93c6c9" title="Internally called, if KMdiMainFrm::attach is called.">youAreAttached</a>( lpC ); <a name="l00630"></a>00630 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::ToplevelMode ) && !parentWidget() ) <a name="l00631"></a>00631 { <a name="l00632"></a>00632 setMinimumHeight( m_oldMainFrmMinHeight ); <a name="l00633"></a>00633 setMaximumHeight( m_oldMainFrmMaxHeight ); <a name="l00634"></a>00634 resize( width(), m_oldMainFrmHeight ); <a name="l00635"></a>00635 m_oldMainFrmHeight = 0; <a name="l00636"></a>00636 switchToChildframeMode(); <a name="l00637"></a>00637 } <a name="l00638"></a>00638 <a name="l00639"></a>00639 m_pMdi->manageChild( lpC, <span class="keyword">false</span>, bCascade ); <a name="l00640"></a>00640 <span class="keywordflow">if</span> ( m_pMdi->topChild() && m_pMdi->topChild() ->isMaximized() ) <a name="l00641"></a>00641 { <a name="l00642"></a>00642 <a class="codeRef" href="qrect.html">QRect</a> r = lpC->geometry(); <a name="l00643"></a>00643 lpC->setGeometry( -lpC->m_pClient-><a class="codeRef" href="qwidget.html#x">x</a>(), -lpC->m_pClient-><a class="codeRef" href="qwidget.html#y">y</a>(), <a name="l00644"></a>00644 m_pMdi->width() + KMDI_CHILDFRM_DOUBLE_BORDER, <a name="l00645"></a>00645 m_pMdi->height() + lpC-><a class="code" href="classKMdiChildFrm.html#a693446976017051ffdad5067d8102688" title="Returns the caption bar height.">captionHeight</a>() + KMDI_CHILDFRM_SEPARATOR + KMDI_CHILDFRM_DOUBLE_BORDER ); <a name="l00646"></a>00646 lpC-><a class="code" href="classKMdiChildFrm.html#a63aa2a87dde5bcc709c96f7c0e180fed" title="Sets the geometry that will be restored by calling restore().">setRestoreGeometry</a>( r ); <a name="l00647"></a>00647 } <a name="l00648"></a>00648 <a name="l00649"></a>00649 <span class="keywordflow">if</span> ( bShow ) <a name="l00650"></a>00650 { <a name="l00651"></a>00651 lpC->show(); <a name="l00652"></a>00652 } <a name="l00653"></a>00653 <a name="l00654"></a>00654 <span class="preprocessor">#undef FocusIn</span> <a name="l00655"></a>00655 <span class="preprocessor"></span> <a class="codeRef" href="qfocusevent.html">QFocusEvent</a> fe( QEvent::FocusIn ); <a name="l00656"></a>00656 <a class="codeRef" href="qapplication.html#sendEvent">QApplication::sendEvent</a>( pWnd, &fe ); <a name="l00657"></a>00657 <a name="l00658"></a>00658 m_pCurrentWindow = pWnd; <span class="comment">// required for checking the active item</span> <a name="l00659"></a>00659 } <a name="l00660"></a>00660 <a name="l00661"></a>00661 <span class="comment">//============= detachWindow ==============//</span> <a name="l00662"></a><a class="code" href="classKMdiMainFrm.html#ac48a4dcd733e3813260e80b38453db44">00662</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ac48a4dcd733e3813260e80b38453db44" title="Makes a docked KMdiChildView undocked.">KMdiMainFrm::detachWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd, <span class="keywordtype">bool</span> bShow ) <a name="l00663"></a>00663 { <a name="l00664"></a>00664 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00665"></a>00665 { <a name="l00666"></a>00666 pWnd->removeEventFilter( <span class="keyword">this</span> ); <a name="l00667"></a>00667 pWnd-><a class="code" href="classKMdiChildView.html#a2bc6046f3523fd9b54254b2455ed54c9" title="Internally called, if KMdiMainFrm::detach is called.">youAreDetached</a>(); <a name="l00668"></a>00668 <span class="comment">// this is only if it was attached and you want to detach it</span> <a name="l00669"></a>00669 <span class="keywordflow">if</span> ( pWnd->parent() ) <a name="l00670"></a>00670 { <a name="l00671"></a>00671 <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a> * lpC = pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>(); <a name="l00672"></a>00672 <span class="keywordflow">if</span> ( lpC ) <a name="l00673"></a>00673 { <a name="l00674"></a>00674 <span class="keywordflow">if</span> ( lpC-><a class="code" href="classKMdiChildFrm.html#ac1c8354a76dde03b5aa52df2c689669f" title="Returns the child frame icon.">icon</a>() ) <a name="l00675"></a>00675 { <a name="l00676"></a>00676 <a class="codeRef" href="qpixmap.html">QPixmap</a> pixm( *( lpC-><a class="code" href="classKMdiChildFrm.html#ac1c8354a76dde03b5aa52df2c689669f" title="Returns the child frame icon.">icon</a>() ) ); <a name="l00677"></a>00677 pWnd-><a class="codeRef" href="qwidget.html#setIcon">setIcon</a>( pixm ); <a name="l00678"></a>00678 } <a name="l00679"></a>00679 <a class="codeRef" href="qstring.html">QString</a> capt( lpC-><a class="code" href="classKMdiChildFrm.html#ab9787ec1cb305810b5b105d994e562e8" title="Gets the caption of this mdi child.">caption</a>() ); <a name="l00680"></a>00680 <span class="keywordflow">if</span> ( !bShow ) <a name="l00681"></a>00681 lpC->hide(); <a name="l00682"></a>00682 lpC-><a class="code" href="classKMdiChildFrm.html#a052a9298168636743b51bcf1b8cca0ab" title="Reparents the client widget to 0 (desktop), moves with an offset from the original position Removes t...">unsetClient</a>( m_undockPositioningOffset ); <a name="l00683"></a>00683 m_pMdi->destroyChildButNotItsView( lpC, <span class="keyword">false</span> ); <span class="comment">//Do not focus the new top child , we loose focus...</span> <a name="l00684"></a>00684 pWnd-><a class="code" href="classKMdiChildView.html#ad5206322b89efe6e1679a346acad8598" title="Sets the window caption string...">setCaption</a>( capt ); <a name="l00685"></a>00685 } <a name="l00686"></a>00686 } <a name="l00687"></a>00687 } <a name="l00688"></a>00688 <span class="keywordflow">else</span> <a name="l00689"></a>00689 { <a name="l00690"></a>00690 <span class="keywordflow">if</span> ( pWnd-><a class="codeRef" href="qwidget.html#size">size</a>().isEmpty() || ( pWnd-><a class="codeRef" href="qwidget.html#size">size</a>() == <a class="codeRef" href="qsize.html">QSize</a>( 1, 1 ) ) ) <a name="l00691"></a>00691 { <a name="l00692"></a>00692 <span class="keywordflow">if</span> ( m_pCurrentWindow ) <a name="l00693"></a>00693 { <a name="l00694"></a>00694 pWnd-><a class="codeRef" href="qwidget.html#setGeometry">setGeometry</a>( <a class="codeRef" href="qrect.html">QRect</a>( m_pMdi->getCascadePoint( m_pDocumentViews->count() - 1 ), m_pCurrentWindow->size() ) ); <a name="l00695"></a>00695 } <a name="l00696"></a>00696 <span class="keywordflow">else</span> <a name="l00697"></a>00697 { <a name="l00698"></a>00698 pWnd-><a class="codeRef" href="qwidget.html#setGeometry">setGeometry</a>( <a class="codeRef" href="qrect.html">QRect</a>( m_pMdi->getCascadePoint( m_pDocumentViews->count() - 1 ), defaultChildFrmSize() ) ); <a name="l00699"></a>00699 } <a name="l00700"></a>00700 } <a name="l00701"></a>00701 <span class="preprocessor">#ifdef Q_WS_X11</span> <a name="l00702"></a>00702 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( mdiMode() == KMdi::ToplevelMode ) <a name="l00703"></a>00703 { <a name="l00704"></a>00704 XSetTransientForHint( qt_xdisplay(), pWnd-><a class="codeRef" href="qwidget.html#winId">winId</a>(), topLevelWidget() ->winId() ); <a name="l00705"></a>00705 } <a name="l00706"></a>00706 <span class="preprocessor">#endif</span> <a name="l00707"></a>00707 <span class="preprocessor"></span> <a name="l00708"></a>00708 return ; <a name="l00709"></a>00709 } <a name="l00710"></a>00710 <a name="l00711"></a>00711 <span class="preprocessor">#ifdef Q_WS_X11</span> <a name="l00712"></a>00712 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( mdiMode() == KMdi::ToplevelMode ) <a name="l00713"></a>00713 { <a name="l00714"></a>00714 XSetTransientForHint( qt_xdisplay(), pWnd-><a class="codeRef" href="qwidget.html#winId">winId</a>(), topLevelWidget() ->winId() ); <a name="l00715"></a>00715 } <a name="l00716"></a>00716 <span class="preprocessor">#endif</span> <a name="l00717"></a>00717 <span class="preprocessor"></span> <a name="l00718"></a>00718 <span class="comment">// this will show it...</span> <a name="l00719"></a>00719 <span class="keywordflow">if</span> ( bShow ) <a name="l00720"></a>00720 { <a name="l00721"></a>00721 activateView( pWnd ); <a name="l00722"></a>00722 } <a name="l00723"></a>00723 <a name="l00724"></a>00724 emit childViewIsDetachedNow( pWnd ); <a name="l00725"></a>00725 } <a name="l00726"></a>00726 <a name="l00727"></a>00727 <span class="comment">//============== removeWindowFromMdi ==============//</span> <a name="l00728"></a><a class="code" href="classKMdiMainFrm.html#a8b0f33436f49eecc9fd8dd8121b6eba5">00728</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a8b0f33436f49eecc9fd8dd8121b6eba5" title="Removes a KMdiChildView from the MDI system and from the main frame`s control.">KMdiMainFrm::removeWindowFromMdi</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd ) <a name="l00729"></a>00729 { <a name="l00730"></a>00730 Q_UNUSED( pWnd ); <a name="l00731"></a>00731 <span class="comment">//Closes a child window. sends no close event : simply deletes it</span> <a name="l00732"></a>00732 <span class="comment">//FIXME something wrong with this, but nobody knows whatcart</span> <a name="l00733"></a>00733 <span class="preprocessor">#if 0</span> <a name="l00734"></a>00734 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( !( m_pWinList->removeRef( pWnd ) ) ) <a name="l00735"></a>00735 return ; <a name="l00736"></a>00736 <span class="keywordflow">if</span> ( m_pWinList->count() == 0 ) <a name="l00737"></a>00737 m_pCurrentWindow = 0L; <a name="l00738"></a>00738 <a name="l00739"></a>00739 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( attachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ), <span class="keyword">this</span>, SLOT( attachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ) ); <a name="l00740"></a>00740 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( detachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ), <span class="keyword">this</span>, SLOT( detachWindow( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*, <span class="keywordtype">bool</span> ) ) ); <a name="l00741"></a>00741 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( focusInEventOccurs( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ), <span class="keyword">this</span>, SLOT( activateView( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ) ); <a name="l00742"></a>00742 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( childWindowCloseRequest( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ), <span class="keyword">this</span>, SLOT( childWindowCloseRequest( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ) ); <a name="l00743"></a>00743 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( clickedInWindowMenu( <span class="keywordtype">int</span> ) ), <span class="keyword">this</span>, SLOT( windowMenuItemActivated( <span class="keywordtype">int</span> ) ) ); <a name="l00744"></a>00744 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( clickedInDockMenu( <span class="keywordtype">int</span> ) ), <span class="keyword">this</span>, SLOT( dockMenuItemActivated( <span class="keywordtype">int</span> ) ) ); <a name="l00745"></a>00745 <a name="l00746"></a>00746 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l00747"></a>00747 { <a name="l00748"></a>00748 <a class="code" href="classKMdiTaskBarButton.html" title="Internal class.">KMdiTaskBarButton</a> * but = m_pTaskBar->getButton( pWnd ); <a name="l00749"></a>00749 <span class="keywordflow">if</span> ( but != 0L ) <a name="l00750"></a>00750 { <a name="l00751"></a>00751 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( pWnd, SIGNAL( tabCaptionChanged( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ), but, SLOT( setNewText( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ) ); <a name="l00752"></a>00752 } <a name="l00753"></a>00753 m_pTaskBar->removeWinButton( pWnd ); <a name="l00754"></a>00754 } <a name="l00755"></a>00755 <a name="l00756"></a>00756 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::TabPageMode ) <a name="l00757"></a>00757 { <a name="l00758"></a>00758 <span class="keywordflow">if</span> ( m_pWinList->count() == 0 ) <a name="l00759"></a>00759 { <a name="l00760"></a>00760 <span class="keywordflow">if</span> ( !m_pDockbaseAreaOfDocumentViews ) <a name="l00761"></a>00761 { <a name="l00762"></a>00762 m_pDockbaseAreaOfDocumentViews = createDockWidget( <span class="stringliteral">"mdiAreaCover"</span>, <a class="codeRef" href="qpixmap.html">QPixmap</a>(), 0L, <span class="stringliteral">"mdi_area_cover"</span> ); <a name="l00763"></a>00763 m_pDockbaseAreaOfDocumentViews->setDockWindowTransient( <span class="keyword">this</span>, <span class="keyword">true</span> ); <a name="l00764"></a>00764 <a name="l00765"></a>00765 m_pDockbaseAreaOfDocumentViews->setWidget( m_pMdi ); <a name="l00766"></a>00766 setMainDockWidget( m_pDockbaseAreaOfDocumentViews ); <a name="l00767"></a>00767 } <a name="l00768"></a>00768 m_pDockbaseOfTabPage->setDockSite( KDockWidget::DockFullSite ); <a name="l00769"></a>00769 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockCenter ); <a name="l00770"></a>00770 m_pDockbaseAreaOfDocumentViews->manualDock( m_pDockbaseOfTabPage, KDockWidget::DockCenter ); <a name="l00771"></a>00771 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockNone ); <a name="l00772"></a>00772 m_pDockbaseOfTabPage = m_pDockbaseAreaOfDocumentViews; <a name="l00773"></a>00773 m_pClose->hide(); <a name="l00774"></a>00774 } <a name="l00775"></a>00775 KDockWidget* pDockW = ( KDockWidget* ) pWnd-><a class="codeRef" href="qwidget.html#parentWidget">parentWidget</a>(); <a name="l00776"></a>00776 pWnd-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( 0L, <a class="codeRef" href="qpoint.html">QPoint</a>( 0, 0 ) ); <a name="l00777"></a>00777 pDockW->setWidget( 0L ); <a name="l00778"></a>00778 <span class="keywordflow">if</span> ( pDockW == m_pDockbaseOfTabPage ) <a name="l00779"></a>00779 { <a name="l00780"></a>00780 <a class="codeRef" href="qtabwidget.html">QTabWidget</a> * pTab = ( <a class="codeRef" href="qtabwidget.html">QTabWidget</a>* ) pDockW->parentWidget() ->parentWidget(); <a name="l00781"></a>00781 <span class="keywordtype">int</span> cnt = pTab-><a class="codeRef" href="qtabwidget.html#count">count</a>(); <a name="l00782"></a>00782 m_pDockbaseOfTabPage = ( KDockWidget* ) pTab-><a class="codeRef" href="qtabwidget.html#page">page</a>( cnt - 2 ); <a name="l00783"></a>00783 <span class="keywordflow">if</span> ( pDockW == m_pDockbaseOfTabPage ) <a name="l00784"></a>00784 { <a name="l00785"></a>00785 m_pDockbaseOfTabPage = ( KDockWidget* ) pTab-><a class="codeRef" href="qtabwidget.html#page">page</a>( cnt - 1 ); <span class="comment">// different to the one deleted next</span> <a name="l00786"></a>00786 } <a name="l00787"></a>00787 } <a name="l00788"></a>00788 <span class="keyword">delete</span> pDockW; <a name="l00789"></a>00789 <span class="keywordflow">if</span> ( m_pWinList->count() == 1 ) <a name="l00790"></a>00790 { <a name="l00791"></a>00791 m_pWinList->last() ->activate(); <span class="comment">// all other views are activated by tab switch</span> <a name="l00792"></a>00792 } <a name="l00793"></a>00793 } <a name="l00794"></a>00794 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00795"></a>00795 { <a name="l00796"></a>00796 pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() ->hide(); <a name="l00797"></a>00797 m_pMdi->destroyChildButNotItsView( pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() ); <a name="l00798"></a>00798 } <a name="l00799"></a>00799 <span class="keywordflow">else</span> <a name="l00800"></a>00800 { <a name="l00801"></a>00801 <span class="comment">// is not attached</span> <a name="l00802"></a>00802 <span class="keywordflow">if</span> ( m_pMdi->getVisibleChildCount() > 0 ) <a name="l00803"></a>00803 { <a name="l00804"></a>00804 setActiveWindow(); <a name="l00805"></a>00805 m_pCurrentWindow = 0L; <a name="l00806"></a>00806 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = m_pMdi->topChild() ->m_pClient; <a name="l00807"></a>00807 <span class="keywordflow">if</span> ( pView ) <a name="l00808"></a>00808 { <a name="l00809"></a>00809 pView-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l00810"></a>00810 } <a name="l00811"></a>00811 } <a name="l00812"></a>00812 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( m_pWinList->count() > 0 ) <a name="l00813"></a>00813 { <a name="l00814"></a>00814 <span class="comment">//crash? m_pWinList->last()->activate();</span> <a name="l00815"></a>00815 <span class="comment">//crash? m_pWinList->last()->setFocus();</span> <a name="l00816"></a>00816 } <a name="l00817"></a>00817 } <a name="l00818"></a>00818 <a name="l00819"></a>00819 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l00820"></a>00820 pWnd->m_bToolView = <span class="keyword">false</span>; <a name="l00821"></a>00821 <a name="l00822"></a>00822 if ( !m_pCurrentWindow ) <a name="l00823"></a>00823 emit lastChildViewClosed(); <a name="l00824"></a>00824 <span class="preprocessor">#endif</span> <a name="l00825"></a>00825 <span class="preprocessor"></span>} <a name="l00826"></a>00826 <a name="l00827"></a>00827 <span class="comment">//============== closeWindow ==============//</span> <a name="l00828"></a><a class="code" href="classKMdiMainFrm.html#a55ed256f67bdc9b5b74b76e59f3041c8">00828</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a55ed256f67bdc9b5b74b76e59f3041c8" title="Removes a KMdiChildView from the MDI system and from the main frame`s control.">KMdiMainFrm::closeWindow</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd, <span class="keywordtype">bool</span> layoutTaskBar ) <a name="l00829"></a>00829 { <a name="l00830"></a>00830 <span class="keywordflow">if</span> ( !pWnd ) <a name="l00831"></a>00831 return ; <a name="l00832"></a>00832 <span class="comment">//Closes a child window. sends no close event : simply deletes it</span> <a name="l00833"></a>00833 m_pDocumentViews->removeRef( pWnd ); <a name="l00834"></a>00834 <span class="keywordflow">if</span> ( m_pDocumentViews->count() == 0 ) <a name="l00835"></a>00835 m_pCurrentWindow = 0L; <a name="l00836"></a>00836 <a name="l00837"></a>00837 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l00838"></a>00838 { <a name="l00839"></a>00839 m_pTaskBar->removeWinButton( pWnd, layoutTaskBar ); <a name="l00840"></a>00840 } <a name="l00841"></a>00841 <a name="l00842"></a>00842 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::TabPageMode ) || ( m_mdiMode == KMdi::IDEAlMode ) ) <a name="l00843"></a>00843 { <a name="l00844"></a>00844 <span class="keywordflow">if</span> ( !m_documentTabWidget ) <a name="l00845"></a>00845 return ; <span class="comment">//oops</span> <a name="l00846"></a>00846 <span class="keywordflow">if</span> ( m_pDocumentViews->count() == 0 ) <a name="l00847"></a>00847 m_pClose->hide(); <a name="l00848"></a>00848 pWnd-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( 0L, <a class="codeRef" href="qpoint.html">QPoint</a>( 0, 0 ) ); <a name="l00849"></a>00849 kdDebug(760) << <span class="stringliteral">"-------- 1"</span> << endl; <a name="l00850"></a>00850 <span class="keywordflow">if</span> ( m_pDocumentViews->count() == 1 ) <a name="l00851"></a>00851 { <a name="l00852"></a>00852 m_pDocumentViews->last() ->activate(); <span class="comment">// all other views are activated by tab switch</span> <a name="l00853"></a>00853 } <a name="l00854"></a>00854 } <a name="l00855"></a>00855 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::TabPageMode ) || ( m_mdiMode == KMdi::IDEAlMode ) ) <a name="l00856"></a>00856 { <a name="l00857"></a>00857 <span class="keywordflow">if</span> ( m_pDocumentViews->count() == 0 ) <a name="l00858"></a>00858 { <a name="l00859"></a>00859 <span class="keywordflow">if</span> ( !m_pDockbaseAreaOfDocumentViews ) <a name="l00860"></a>00860 { <a name="l00861"></a>00861 m_pDockbaseAreaOfDocumentViews = createDockWidget( <span class="stringliteral">"mdiAreaCover"</span>, <a class="codeRef" href="qpixmap.html">QPixmap</a>(), 0L, <span class="stringliteral">"mdi_area_cover"</span> ); <a name="l00862"></a>00862 m_pDockbaseAreaOfDocumentViews->setDockWindowTransient( <span class="keyword">this</span>, <span class="keyword">true</span> ); <a name="l00863"></a>00863 m_pDockbaseAreaOfDocumentViews->setWidget( m_pMdi ); <a name="l00864"></a>00864 setMainDockWidget( m_pDockbaseAreaOfDocumentViews ); <a name="l00865"></a>00865 } <a name="l00866"></a>00866 <span class="preprocessor">#if 0</span> <a name="l00867"></a>00867 <span class="preprocessor"></span> m_pDockbaseOfTabPage->setDockSite( KDockWidget::DockFullSite ); <a name="l00868"></a>00868 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockCenter ); <a name="l00869"></a>00869 m_pDockbaseAreaOfDocumentViews->manualDock( m_pDockbaseOfTabPage, KDockWidget::DockCenter ); <a name="l00870"></a>00870 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockNone ); <a name="l00871"></a>00871 m_pDockbaseOfTabPage = m_pDockbaseAreaOfDocumentViews; <a name="l00872"></a>00872 <span class="preprocessor">#endif</span> <a name="l00873"></a>00873 <span class="preprocessor"></span> <a name="l00874"></a>00874 m_pClose->hide(); <a name="l00875"></a>00875 } <a name="l00876"></a>00876 <span class="preprocessor">#if 0</span> <a name="l00877"></a>00877 <span class="preprocessor"></span> KDockWidget* pDockW = ( KDockWidget* ) pWnd-><a class="codeRef" href="qwidget.html#parentWidget">parentWidget</a>(); <a name="l00878"></a>00878 pWnd-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( 0L, <a class="codeRef" href="qpoint.html">QPoint</a>( 0, 0 ) ); <a name="l00879"></a>00879 pDockW->setWidget( 0L ); <a name="l00880"></a>00880 <span class="keywordflow">if</span> ( pDockW == m_pDockbaseOfTabPage ) <a name="l00881"></a>00881 { <a name="l00882"></a>00882 <a class="codeRef" href="qtabwidget.html">QTabWidget</a> * pTab = ( <a class="codeRef" href="qtabwidget.html">QTabWidget</a>* ) pDockW->parentWidget() ->parentWidget(); <a name="l00883"></a>00883 <span class="keywordtype">int</span> cnt = pTab-><a class="codeRef" href="qtabwidget.html#count">count</a>(); <a name="l00884"></a>00884 m_pDockbaseOfTabPage = ( KDockWidget* ) pTab-><a class="codeRef" href="qtabwidget.html#page">page</a>( cnt - 2 ); <a name="l00885"></a>00885 <span class="keywordflow">if</span> ( pDockW == m_pDockbaseOfTabPage ) <a name="l00886"></a>00886 { <a name="l00887"></a>00887 m_pDockbaseOfTabPage = ( KDockWidget* ) pTab-><a class="codeRef" href="qtabwidget.html#page">page</a>( cnt - 1 ); <span class="comment">// different to the one deleted next</span> <a name="l00888"></a>00888 } <a name="l00889"></a>00889 } <a name="l00890"></a>00890 <span class="keyword">delete</span> pDockW; <a name="l00891"></a>00891 <span class="preprocessor">#endif</span> <a name="l00892"></a>00892 <span class="preprocessor"></span> <a name="l00893"></a>00893 <span class="keyword">delete</span> pWnd; <a name="l00894"></a>00894 <span class="keywordflow">if</span> ( m_pDocumentViews->count() == 1 ) <a name="l00895"></a>00895 { <a name="l00896"></a>00896 m_pDocumentViews->last() -><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <span class="comment">// all other views are activated by tab switch</span> <a name="l00897"></a>00897 } <a name="l00898"></a>00898 } <a name="l00899"></a>00899 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00900"></a>00900 { <a name="l00901"></a>00901 m_pMdi->destroyChild( pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() ); <a name="l00902"></a>00902 } <a name="l00903"></a>00903 <span class="keywordflow">else</span> <a name="l00904"></a>00904 { <a name="l00905"></a>00905 <span class="keyword">delete</span> pWnd; <a name="l00906"></a>00906 <span class="comment">// is not attached</span> <a name="l00907"></a>00907 <span class="keywordflow">if</span> ( m_pMdi->getVisibleChildCount() > 0 ) <a name="l00908"></a>00908 { <a name="l00909"></a>00909 setActiveWindow(); <a name="l00910"></a>00910 m_pCurrentWindow = 0L; <a name="l00911"></a>00911 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = m_pMdi->topChild() ->m_pClient; <a name="l00912"></a>00912 <span class="keywordflow">if</span> ( pView ) <a name="l00913"></a>00913 { <a name="l00914"></a>00914 pView-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l00915"></a>00915 } <a name="l00916"></a>00916 } <a name="l00917"></a>00917 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( m_pDocumentViews->count() > 0 ) <a name="l00918"></a>00918 { <a name="l00919"></a>00919 <span class="keywordflow">if</span> ( m_pDocumentViews->current() ) <a name="l00920"></a>00920 { <a name="l00921"></a>00921 m_pDocumentViews->current() ->activate(); <a name="l00922"></a>00922 m_pDocumentViews->current() ->setFocus(); <a name="l00923"></a>00923 } <a name="l00924"></a>00924 <span class="keywordflow">else</span> <a name="l00925"></a>00925 { <a name="l00926"></a>00926 m_pDocumentViews->last() ->activate(); <a name="l00927"></a>00927 m_pDocumentViews->last() ->setFocus(); <a name="l00928"></a>00928 } <a name="l00929"></a>00929 } <a name="l00930"></a>00930 } <a name="l00931"></a>00931 <a name="l00932"></a>00932 <span class="keywordflow">if</span> ( !m_pCurrentWindow ) <a name="l00933"></a>00933 { <a name="l00934"></a>00934 d->closeWindowAction->setEnabled(<span class="keyword">false</span>); <a name="l00935"></a>00935 emit lastChildViewClosed(); <a name="l00936"></a>00936 } <a name="l00937"></a>00937 } <a name="l00938"></a>00938 <a name="l00939"></a>00939 <span class="comment">//================== findWindow =================//</span> <a name="l00940"></a><a class="code" href="classKMdiMainFrm.html#adce3d02b058f396fdcf9e4426779e2c6">00940</a> <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* <a class="code" href="classKMdiMainFrm.html#adce3d02b058f396fdcf9e4426779e2c6" title="Returns the KMdiChildView belonging to the given caption string.">KMdiMainFrm::findWindow</a>( <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& caption ) <a name="l00941"></a>00941 { <a name="l00942"></a>00942 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l00943"></a>00943 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l00944"></a>00944 { <a name="l00945"></a>00945 <span class="keywordflow">if</span> ( ( *it )->caption() == caption ) <a name="l00946"></a>00946 <span class="keywordflow">return</span> ( *it ); <a name="l00947"></a>00947 } <a name="l00948"></a>00948 <span class="keywordflow">return</span> 0L; <a name="l00949"></a>00949 } <a name="l00950"></a>00950 <a name="l00951"></a>00951 <span class="comment">//================== activeWindow ===================//</span> <a name="l00952"></a><a class="code" href="classKMdiMainFrm.html#a43b1964eda8dd6b87fbe2924bc2d5124">00952</a> <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* <a class="code" href="classKMdiMainFrm.html#a43b1964eda8dd6b87fbe2924bc2d5124" title="Returns the focused attached MDI view.">KMdiMainFrm::activeWindow</a>() <a name="l00953"></a>00953 { <a name="l00954"></a>00954 <span class="keywordflow">return</span> m_pCurrentWindow; <a name="l00955"></a>00955 } <a name="l00956"></a>00956 <a name="l00957"></a>00957 <span class="comment">//================== windowExists ? =================//</span> <a name="l00958"></a><a class="code" href="classKMdiMainFrm.html#a1def6783bb36b9bb1d843b371736e661">00958</a> <span class="keywordtype">bool</span> <a class="code" href="classKMdiMainFrm.html#a1def6783bb36b9bb1d843b371736e661" title="Returns whether this MDI child view is under MDI control (using addWindow() ) or not.">KMdiMainFrm::windowExists</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd, ExistsAs as ) <a name="l00959"></a>00959 { <a name="l00960"></a>00960 <span class="keywordflow">if</span> ( ( as == ToolView ) || ( as == AnyView ) ) <a name="l00961"></a>00961 { <a name="l00962"></a>00962 <span class="keywordflow">if</span> ( m_pToolViews->contains( pWnd ) ) <a name="l00963"></a>00963 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00964"></a>00964 <span class="keywordflow">if</span> ( as == ToolView ) <a name="l00965"></a>00965 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00966"></a>00966 } <a name="l00967"></a>00967 <a name="l00968"></a>00968 <span class="keywordflow">if</span> ( m_pDocumentViews->findRef( pWnd ) != -1 ) <a name="l00969"></a>00969 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00970"></a>00970 <a name="l00971"></a>00971 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00972"></a>00972 } <a name="l00973"></a>00973 <a name="l00974"></a><a class="code" href="classKMdiMainFrm.html#a869cd3e6c9968fee8479cc377f641a17">00974</a> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a> * <a class="code" href="classKMdiMainFrm.html#a869cd3e6c9968fee8479cc377f641a17" title="Returns a popup menu with only a title "Window".">KMdiMainFrm::windowPopup</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * pWnd, <span class="keywordtype">bool</span> bIncludeTaskbarPopup ) <a name="l00975"></a>00975 { <a name="l00976"></a>00976 m_pWindowPopup-><a class="codeRef" href="qpopupmenu.html#clear">clear</a>(); <a name="l00977"></a>00977 <span class="keywordflow">if</span> ( bIncludeTaskbarPopup ) <a name="l00978"></a>00978 { <a name="l00979"></a>00979 m_pWindowPopup->insertItem( i18n( <span class="stringliteral">"Window"</span> ), taskBarPopup( pWnd, <span class="keyword">false</span> ) ); <a name="l00980"></a>00980 m_pWindowPopup->insertSeparator(); <a name="l00981"></a>00981 } <a name="l00982"></a>00982 <span class="keywordflow">return</span> m_pWindowPopup; <a name="l00983"></a>00983 } <a name="l00984"></a>00984 <a name="l00985"></a>00985 <span class="comment">//================ taskBarPopup =================//</span> <a name="l00986"></a><a class="code" href="classKMdiMainFrm.html#a57968ceb654b6781560a42d0a727c479">00986</a> <a class="codeRef" href="qpopupmenu.html">QPopupMenu</a>* <a class="code" href="classKMdiMainFrm.html#a57968ceb654b6781560a42d0a727c479" title="Returns a popup menu filled according to the MDI view state.">KMdiMainFrm::taskBarPopup</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd, <span class="keywordtype">bool</span> <span class="comment">/*bIncludeWindowPopup*/</span> ) <a name="l00987"></a>00987 { <a name="l00988"></a>00988 <span class="comment">//returns the g_pTaskBarPopup filled according to the KMdiChildView state</span> <a name="l00989"></a>00989 m_pTaskBarPopup-><a class="codeRef" href="qpopupmenu.html#clear">clear</a>(); <a name="l00990"></a>00990 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l00991"></a>00991 { <a name="l00992"></a>00992 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Undock"</span> ), pWnd, SLOT( detach() ) ); <a name="l00993"></a>00993 m_pTaskBarPopup->insertSeparator(); <a name="l00994"></a>00994 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aa1e9a385eb97176fc126346d8a4889d5" title="Tells if the window is minimized when attached to the Mdi manager, or if it is VISIBLE when 'floating...">isMinimized</a>() || pWnd-><a class="code" href="classKMdiChildView.html#ab571165055d79a106288053a09801459" title="Tells if the window is minimized when attached to the Mdi manager, otherwise returns false...">isMaximized</a>() ) <a name="l00995"></a>00995 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Restore"</span> ), pWnd, SLOT( restore() ) ); <a name="l00996"></a>00996 <span class="keywordflow">if</span> ( !pWnd-><a class="code" href="classKMdiChildView.html#ab571165055d79a106288053a09801459" title="Tells if the window is minimized when attached to the Mdi manager, otherwise returns false...">isMaximized</a>() ) <a name="l00997"></a>00997 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Maximize"</span> ), pWnd, SLOT( maximize() ) ); <a name="l00998"></a>00998 <span class="keywordflow">if</span> ( !pWnd-><a class="code" href="classKMdiChildView.html#aa1e9a385eb97176fc126346d8a4889d5" title="Tells if the window is minimized when attached to the Mdi manager, or if it is VISIBLE when 'floating...">isMinimized</a>() ) <a name="l00999"></a>00999 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Minimize"</span> ), pWnd, SLOT( minimize() ) ); <a name="l01000"></a>01000 } <a name="l01001"></a>01001 <span class="keywordflow">else</span> <a name="l01002"></a>01002 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Dock"</span> ), pWnd, SLOT( attach() ) ); <a name="l01003"></a>01003 m_pTaskBarPopup->insertSeparator(); <a name="l01004"></a>01004 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Close"</span> ), pWnd, SLOT( close() ) ); <a name="l01005"></a>01005 <span class="comment">// the window has a view...get the window popup</span> <a name="l01006"></a>01006 m_pTaskBarPopup->insertSeparator(); <a name="l01007"></a>01007 m_pTaskBarPopup->insertItem( i18n( <span class="stringliteral">"Operations"</span> ), windowPopup( pWnd, <span class="keyword">false</span> ) ); <span class="comment">//alvoid recursion</span> <a name="l01008"></a>01008 <span class="keywordflow">return</span> m_pTaskBarPopup; <a name="l01009"></a>01009 } <a name="l01010"></a>01010 <a name="l01011"></a>01011 <span class="keywordtype">void</span> KMdiMainFrm::slotDocCurrentChanged( <a class="codeRef" href="qwidget.html">QWidget</a>* pWidget ) <a name="l01012"></a>01012 { <a name="l01013"></a>01013 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * pWnd = <span class="keyword">static_cast<</span><a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>*<span class="keyword">></span>( pWidget ); <a name="l01014"></a>01014 pWnd->m_bMainframesActivateViewIsPending = <span class="keyword">true</span>; <a name="l01015"></a>01015 <a name="l01016"></a>01016 <span class="keywordtype">bool</span> bActivateNecessary = <span class="keyword">true</span>; <a name="l01017"></a>01017 <span class="keywordflow">if</span> ( m_pCurrentWindow != pWnd ) <a name="l01018"></a>01018 m_pCurrentWindow = pWnd; <a name="l01019"></a>01019 <a name="l01020"></a>01020 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l01021"></a>01021 m_pTaskBar->setActiveButton( pWnd ); <a name="l01022"></a>01022 <a name="l01023"></a>01023 <span class="keywordflow">if</span> ( m_documentTabWidget && ( m_mdiMode == KMdi::TabPageMode || m_mdiMode == KMdi::IDEAlMode ) ) <a name="l01024"></a>01024 { <a name="l01025"></a>01025 m_documentTabWidget->showPage( pWnd ); <a name="l01026"></a>01026 pWnd-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l01027"></a>01027 } <a name="l01028"></a>01028 <span class="keywordflow">else</span> <a name="l01029"></a>01029 { <a name="l01030"></a>01030 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l01031"></a>01031 { <a name="l01032"></a>01032 <span class="keywordflow">if</span> ( bActivateNecessary && ( m_pMdi->topChild() == pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() ) ) <a name="l01033"></a>01033 pWnd-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l01034"></a>01034 <a name="l01035"></a>01035 pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>()-><a class="code" href="classKMdiChildFrm.html#a38f16bf011bd4d0f2de67d459d06e66b" title="Internally called from the signal focusInEventOccurs.">raiseAndActivate</a>(); <a name="l01036"></a>01036 } <a name="l01037"></a>01037 <span class="keywordflow">if</span> ( !pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l01038"></a>01038 { <a name="l01039"></a>01039 <span class="keywordflow">if</span> ( bActivateNecessary ) <a name="l01040"></a>01040 pWnd-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l01041"></a>01041 <a name="l01042"></a>01042 m_pMdi->setTopChild( 0L ); <span class="comment">// lose focus in the mainframe window</span> <a name="l01043"></a>01043 <span class="keywordflow">if</span> ( !pWnd-><a class="codeRef" href="qwidget.html#isActiveWindow">isActiveWindow</a>() ) <a name="l01044"></a>01044 pWnd-><a class="codeRef" href="qwidget.html#setActiveWindow">setActiveWindow</a>(); <a name="l01045"></a>01045 <a name="l01046"></a>01046 pWnd-><a class="code" href="classKMdiChildView.html#a6a75d503f562ccdd585e0d27ef7f76bb" title="Calls QWidget::raise() or it's parent widget raise() if attached.">raise</a>(); <a name="l01047"></a>01047 } <a name="l01048"></a>01048 } <a name="l01049"></a>01049 <span class="keywordflow">if</span> ( !switching() ) <a name="l01050"></a>01050 activeWindow()->updateTimeStamp(); <a name="l01051"></a>01051 emit collapseOverlapContainers(); <a name="l01052"></a>01052 pWnd->m_bMainframesActivateViewIsPending = <span class="keyword">false</span>; <a name="l01053"></a>01053 } <a name="l01054"></a>01054 <a name="l01055"></a>01055 <a name="l01056"></a><a class="code" href="classKMdiMainFrm.html#a6cb659291a3a9a9d63cd9b40c7e16108">01056</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a71008f9cc9304e0ac10404ec6ae3d541" title="Activates the view with the tab page index (TabPage mode only)">KMdiMainFrm::activateView</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pWnd ) <a name="l01057"></a>01057 { <a name="l01058"></a>01058 pWnd->m_bMainframesActivateViewIsPending = <span class="keyword">true</span>; <a name="l01059"></a>01059 <a name="l01060"></a>01060 <span class="keywordtype">bool</span> bActivateNecessary = <span class="keyword">true</span>; <a name="l01061"></a>01061 <span class="keywordflow">if</span> ( m_pCurrentWindow != pWnd ) <a name="l01062"></a>01062 m_pCurrentWindow = pWnd; <a name="l01063"></a>01063 <span class="keywordflow">else</span> <a name="l01064"></a>01064 { <a name="l01065"></a>01065 bActivateNecessary = <span class="keyword">false</span>; <a name="l01066"></a>01066 <span class="comment">// if this method is called as answer to view->activate(),</span> <a name="l01067"></a>01067 <span class="comment">// interrupt it because it's not necessary</span> <a name="l01068"></a>01068 pWnd->m_bInterruptActivation = <span class="keyword">true</span>; <a name="l01069"></a>01069 } <a name="l01070"></a>01070 <a name="l01071"></a>01071 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l01072"></a>01072 m_pTaskBar->setActiveButton( pWnd ); <a name="l01073"></a>01073 <a name="l01074"></a>01074 <span class="keywordflow">if</span> ( m_documentTabWidget && m_mdiMode == KMdi::TabPageMode || m_mdiMode == KMdi::IDEAlMode ) <a name="l01075"></a>01075 { <a name="l01076"></a>01076 m_documentTabWidget->showPage( pWnd ); <a name="l01077"></a>01077 pWnd-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l01078"></a>01078 } <a name="l01079"></a>01079 <span class="keywordflow">else</span> <a name="l01080"></a>01080 { <a name="l01081"></a>01081 <span class="keywordflow">if</span> ( pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l01082"></a>01082 { <a name="l01083"></a>01083 <span class="keywordflow">if</span> ( bActivateNecessary && ( m_pMdi->topChild() == pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() ) ) <a name="l01084"></a>01084 pWnd-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l01085"></a>01085 <a name="l01086"></a>01086 pWnd-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() -><a class="code" href="classKMdiChildFrm.html#a38f16bf011bd4d0f2de67d459d06e66b" title="Internally called from the signal focusInEventOccurs.">raiseAndActivate</a>(); <a name="l01087"></a>01087 } <a name="l01088"></a>01088 <span class="keywordflow">if</span> ( !pWnd-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l01089"></a>01089 { <a name="l01090"></a>01090 <span class="keywordflow">if</span> ( bActivateNecessary ) <a name="l01091"></a>01091 pWnd-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l01092"></a>01092 <a name="l01093"></a>01093 m_pMdi->setTopChild( 0L ); <span class="comment">// lose focus in the mainframe window</span> <a name="l01094"></a>01094 <span class="keywordflow">if</span> ( !pWnd-><a class="codeRef" href="qwidget.html#isActiveWindow">isActiveWindow</a>() ) <a name="l01095"></a>01095 pWnd-><a class="codeRef" href="qwidget.html#setActiveWindow">setActiveWindow</a>(); <a name="l01096"></a>01096 <a name="l01097"></a>01097 pWnd-><a class="code" href="classKMdiChildView.html#a6a75d503f562ccdd585e0d27ef7f76bb" title="Calls QWidget::raise() or it's parent widget raise() if attached.">raise</a>(); <a name="l01098"></a>01098 } <a name="l01099"></a>01099 } <a name="l01100"></a>01100 <a name="l01101"></a>01101 emit collapseOverlapContainers(); <a name="l01102"></a>01102 <a name="l01103"></a>01103 pWnd->m_bMainframesActivateViewIsPending = <span class="keyword">false</span>; <a name="l01104"></a>01104 } <a name="l01105"></a>01105 <a name="l01106"></a><a class="code" href="classKMdiMainFrm.html#a467105fba670936f2e3fdc905f52b708">01106</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a467105fba670936f2e3fdc905f52b708" title="Activates the MDI view (see activateView() ) and popups the taskBar popup menu (see taskBarPopup() )...">KMdiMainFrm::taskbarButtonRightClicked</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd ) <a name="l01107"></a>01107 { <a name="l01108"></a>01108 activateView( pWnd ); <span class="comment">// set focus</span> <a name="l01109"></a>01109 <span class="comment">//QApplication::sendPostedEvents();</span> <a name="l01110"></a>01110 taskBarPopup( pWnd, <span class="keyword">true</span> ) ->popup( <a class="codeRef" href="qcursor.html#pos">QCursor::pos</a>() ); <a name="l01111"></a>01111 } <a name="l01112"></a>01112 <a name="l01113"></a><a class="code" href="classKMdiMainFrm.html#a6d5c59c2023543819855bec79e9f21e8">01113</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a6d5c59c2023543819855bec79e9f21e8" title="Someone wants that the MDI view to be closed.">KMdiMainFrm::childWindowCloseRequest</a>( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pWnd ) <a name="l01114"></a>01114 { <a name="l01115"></a>01115 <a class="code" href="classKMdiViewCloseEvent.html" title="Internal class.">KMdiViewCloseEvent</a> * ce = <span class="keyword">new</span> <a class="code" href="classKMdiViewCloseEvent.html" title="Internal class.">KMdiViewCloseEvent</a>( pWnd ); <a name="l01116"></a>01116 <a class="codeRef" href="qapplication.html#postEvent">QApplication::postEvent</a>( <span class="keyword">this</span>, ce ); <a name="l01117"></a>01117 } <a name="l01118"></a>01118 <a name="l01119"></a><a class="code" href="classKMdiMainFrm.html#ab802078e29b8a063f295c3739f3feda9">01119</a> <span class="keywordtype">bool</span> <a class="code" href="classKMdiMainFrm.html#ab802078e29b8a063f295c3739f3feda9" title="Catches certain Qt events and processes it here.">KMdiMainFrm::event</a>( <a class="codeRef" href="qevent.html">QEvent</a>* e ) <a name="l01120"></a>01120 { <a name="l01121"></a>01121 <span class="keywordflow">if</span> ( e-><a class="codeRef" href="qevent.html#type">type</a>() == QEvent::User ) <a name="l01122"></a>01122 { <a name="l01123"></a>01123 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * pWnd = ( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* ) ( ( <a class="code" href="classKMdiViewCloseEvent.html" title="Internal class.">KMdiViewCloseEvent</a>* ) e )->data(); <a name="l01124"></a>01124 <span class="keywordflow">if</span> ( pWnd != 0L ) <a name="l01125"></a>01125 closeWindow( pWnd ); <a name="l01126"></a>01126 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l01127"></a>01127 <span class="comment">// A little hack: If MDI child views are moved implicietly by moving</span> <a name="l01128"></a>01128 <span class="comment">// the main widget they should know this too. Unfortunately there seems to</span> <a name="l01129"></a>01129 <span class="comment">// be no way to catch the move start / move stop situations for the main</span> <a name="l01130"></a>01130 <span class="comment">// widget in a clean way. (There is no MouseButtonPress/Release or</span> <a name="l01131"></a>01131 <span class="comment">// something like that.) Therefore we do the following: When we get the</span> <a name="l01132"></a>01132 <span class="comment">// "first" move event we start a timer and interprete it as "drag begin".</span> <a name="l01133"></a>01133 <span class="comment">// If we get the next move event and the timer is running we restart the</span> <a name="l01134"></a>01134 <span class="comment">// timer and don't do anything else. If the timer elapses (this meens we</span> <a name="l01135"></a>01135 <span class="comment">// haven't had any move event for a while) we interprete this as "drag</span> <a name="l01136"></a>01136 <span class="comment">// end". If the moving didn't stop actually, we will later get another</span> <a name="l01137"></a>01137 <span class="comment">// "drag begin", so we get a drag end too much, but this would be the same</span> <a name="l01138"></a>01138 <span class="comment">// as if the user would stop moving for a little while.</span> <a name="l01139"></a>01139 <span class="comment">// Actually we seem to be lucky that the timer does not elapse while we</span> <a name="l01140"></a>01140 <span class="comment">// are moving -> so we have no obsolete drag end / begin</span> <a name="l01141"></a>01141 } <a name="l01142"></a>01142 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( isVisible() && e-><a class="codeRef" href="qevent.html#type">type</a>() == QEvent::Move ) <a name="l01143"></a>01143 { <a name="l01144"></a>01144 <span class="keywordflow">if</span> ( m_pDragEndTimer->isActive() ) <a name="l01145"></a>01145 { <a name="l01146"></a>01146 <span class="comment">// this is not the first move -> stop old timer</span> <a name="l01147"></a>01147 m_pDragEndTimer->stop(); <a name="l01148"></a>01148 } <a name="l01149"></a>01149 <span class="keywordflow">else</span> <a name="l01150"></a>01150 { <a name="l01151"></a>01151 <span class="comment">// this is the first move -> send the drag begin to all concerned views</span> <a name="l01152"></a>01152 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l01153"></a>01153 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l01154"></a>01154 { <a name="l01155"></a>01155 <a class="code" href="classKMdiChildFrmDragBeginEvent.html" title="a QCustomEvent for begin of dragging This special event will be useful, to inform view about child fr...">KMdiChildFrmDragBeginEvent</a> dragBeginEvent( 0L ); <a name="l01156"></a>01156 <a class="codeRef" href="qapplication.html#sendEvent">QApplication::sendEvent</a>( ( *it ), &dragBeginEvent ); <a name="l01157"></a>01157 } <a name="l01158"></a>01158 } <a name="l01159"></a>01159 m_pDragEndTimer->start( 200, <span class="keyword">true</span> ); <span class="comment">// single shot after 200 ms</span> <a name="l01160"></a>01160 } <a name="l01161"></a>01161 <a name="l01162"></a>01162 <span class="keywordflow">return</span> DockMainWindow::event( e ); <a name="l01163"></a>01163 } <a name="l01164"></a>01164 <a name="l01165"></a><a class="code" href="classKMdiMainFrm.html#a692cdb3ac492738b2317a6a4dd54aac7">01165</a> <span class="keywordtype">bool</span> <a class="code" href="classKMdiMainFrm.html#a692cdb3ac492738b2317a6a4dd54aac7">KMdiMainFrm::eventFilter</a>( <a class="codeRef" href="qobject.html">QObject</a> * <span class="comment">/*obj*/</span>, <a class="codeRef" href="qevent.html">QEvent</a> *e ) <a name="l01166"></a>01166 { <a name="l01167"></a>01167 <span class="keywordflow">if</span> ( e-><a class="codeRef" href="qevent.html#type">type</a>() == QEvent::Resize && m_mdiMode == KMdi::ToplevelMode ) <a name="l01168"></a>01168 { <a name="l01169"></a>01169 verifyToplevelHeight(); <a name="l01170"></a>01170 <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">//let the rest of the resize magic do its work</span> <a name="l01171"></a>01171 } <a name="l01172"></a>01172 <a name="l01173"></a>01173 <span class="keywordflow">if</span> ( e-><a class="codeRef" href="qevent.html#type">type</a>() == QEvent::FocusIn ) <a name="l01174"></a>01174 { <a name="l01175"></a>01175 <a class="codeRef" href="qfocusevent.html">QFocusEvent</a> * pFE = ( <a class="codeRef" href="qfocusevent.html">QFocusEvent</a>* ) e; <a name="l01176"></a>01176 <span class="keywordflow">if</span> ( pFE-><a class="codeRef" href="qfocusevent.html#reason">reason</a>() == QFocusEvent::ActiveWindow ) <a name="l01177"></a>01177 { <a name="l01178"></a>01178 <span class="keywordflow">if</span> ( m_pCurrentWindow && !m_pCurrentWindow->isHidden() && <a name="l01179"></a>01179 !m_pCurrentWindow->isAttached() && m_pMdi->topChild() ) <a name="l01180"></a>01180 { <a name="l01181"></a>01181 <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// eat the event</span> <a name="l01182"></a>01182 } <a name="l01183"></a>01183 } <a name="l01184"></a>01184 <span class="keywordflow">if</span> ( m_pMdi ) <a name="l01185"></a>01185 { <a name="l01186"></a>01186 <span class="keyword">static</span> <span class="keywordtype">bool</span> focusTCIsPending = <span class="keyword">false</span>; <a name="l01187"></a>01187 <span class="keywordflow">if</span> ( !focusTCIsPending && m_mdiMode == KMdi::ChildframeMode ) <a name="l01188"></a>01188 { <a name="l01189"></a>01189 focusTCIsPending = <span class="keyword">true</span>; <a name="l01190"></a>01190 m_pMdi->focusTopChild(); <a name="l01191"></a>01191 focusTCIsPending = <span class="keyword">false</span>; <a name="l01192"></a>01192 } <a name="l01193"></a>01193 } <a name="l01194"></a>01194 } <a name="l01195"></a>01195 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( e-><a class="codeRef" href="qevent.html#type">type</a>() == QEvent::KeyRelease ) <a name="l01196"></a>01196 { <a name="l01197"></a>01197 <span class="keywordflow">if</span> ( switching() ) <a name="l01198"></a>01198 { <a name="l01199"></a>01199 KAction * a = actionCollection() ->action( <span class="stringliteral">"view_last_window"</span> ) ; <a name="l01200"></a>01200 <span class="keywordflow">if</span> ( a ) <a name="l01201"></a>01201 { <a name="l01202"></a>01202 <span class="keyword">const</span> KShortcut cut( a->shortcut() ); <a name="l01203"></a>01203 <span class="keyword">const</span> KKeySequence& seq = cut.seq( 0 ); <a name="l01204"></a>01204 <span class="keyword">const</span> KKey& key = seq.key( 0 ); <a name="l01205"></a>01205 <span class="keywordtype">int</span> modFlags = key.modFlags(); <a name="l01206"></a>01206 <span class="keywordtype">int</span> state = ( ( <a class="codeRef" href="qkeyevent.html">QKeyEvent</a> * ) e ) ->state(); <a name="l01207"></a>01207 KKey key2( ( <a class="codeRef" href="qkeyevent.html">QKeyEvent</a> * ) e ); <a name="l01208"></a>01208 <a name="l01213"></a>01213 <span class="keywordflow">if</span> ( state != ( ( <a class="codeRef" href="qkeyevent.html">QKeyEvent</a> * ) e ) ->stateAfter() && <a name="l01214"></a>01214 ( ( modFlags & KKey::CTRL ) > 0 ) == ( ( state & Qt::ControlButton ) > 0 ) && <a name="l01215"></a>01215 ( ( modFlags & KKey::ALT ) > 0 ) == ( ( state & Qt::AltButton ) > 0 ) && <a name="l01216"></a>01216 ( ( modFlags & KKey::WIN ) > 0 ) == ( ( state & Qt::MetaButton ) > 0 ) ) <a name="l01217"></a>01217 { <a name="l01218"></a>01218 activeWindow() ->updateTimeStamp(); <a name="l01219"></a>01219 setSwitching( <span class="keyword">false</span> ); <a name="l01220"></a>01220 } <a name="l01221"></a>01221 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l01222"></a>01222 } <a name="l01223"></a>01223 <span class="keywordflow">else</span> <a name="l01224"></a>01224 { <a name="l01225"></a>01225 kdDebug(760) << <span class="stringliteral">"KAction( \"view_last_window\") not found."</span> << endl; <a name="l01226"></a>01226 } <a name="l01227"></a>01227 } <a name="l01228"></a>01228 } <a name="l01229"></a>01229 <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// standard event processing</span> <a name="l01230"></a>01230 } <a name="l01231"></a>01231 <a name="l01235"></a><a class="code" href="classKMdiMainFrm.html#acafd8f421b95a1f6f510b9ae60003c32">01235</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#acafd8f421b95a1f6f510b9ae60003c32" title="Close all views.">KMdiMainFrm::closeAllViews</a>() <a name="l01236"></a>01236 { <a name="l01237"></a>01237 <span class="comment">//save the children first to a list, as removing invalidates our iterator</span> <a name="l01238"></a>01238 <a class="codeRef" href="qvaluelist.html">QValueList<KMdiChildView*></a> children; <a name="l01239"></a>01239 <span class="keywordflow">for</span> ( <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * w = m_pDocumentViews->first();w;w = m_pDocumentViews->next() ) <a name="l01240"></a>01240 { <a name="l01241"></a>01241 children.<a class="codeRef" href="qvaluelist.html#append">append</a>( w ); <a name="l01242"></a>01242 } <a name="l01243"></a>01243 <a class="codeRef" href="qvaluelistiterator.html">QValueListIterator<KMdiChildView *></a> childIt; <a name="l01244"></a>01244 <span class="keywordflow">for</span> ( childIt = children.<a class="codeRef" href="qvaluelist.html#begin">begin</a>(); childIt != children.<a class="codeRef" href="qvaluelist.html#end">end</a>(); ++childIt ) <a name="l01245"></a>01245 { <a name="l01246"></a>01246 ( *childIt )->close(); <a name="l01247"></a>01247 } <a name="l01248"></a>01248 } <a name="l01249"></a>01249 <a name="l01250"></a>01250 <a name="l01254"></a><a class="code" href="classKMdiMainFrm.html#a204ed5479c5d783bdb8ffaaca5755870">01254</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a204ed5479c5d783bdb8ffaaca5755870" title="Iconfiy all views.">KMdiMainFrm::iconifyAllViews</a>() <a name="l01255"></a>01255 { <a name="l01256"></a>01256 kdDebug(760) << k_funcinfo << <span class="stringliteral">"minimizing all the views"</span> << endl; <a name="l01257"></a>01257 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l01258"></a>01258 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l01259"></a>01259 ( *it )->minimize(); <a name="l01260"></a>01260 } <a name="l01261"></a>01261 <a name="l01265"></a><a class="code" href="classKMdiMainFrm.html#a6a4a3dd2fa4b7e5d043b24003f53e7da">01265</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a6a4a3dd2fa4b7e5d043b24003f53e7da" title="Closes the view of the active (topchild) window.">KMdiMainFrm::closeActiveView</a>() <a name="l01266"></a>01266 { <a name="l01267"></a>01267 kdDebug(760) << k_funcinfo << <span class="stringliteral">"closing the active view"</span> << endl; <a name="l01268"></a>01268 <span class="keywordflow">if</span> ( m_pCurrentWindow ) <a name="l01269"></a>01269 m_pCurrentWindow->close(); <a name="l01270"></a>01270 } <a name="l01271"></a>01271 <a name="l01273"></a><a class="code" href="classKMdiMainFrm.html#a21da19b228cf710c14a84ed1c1aaa4c9">01273</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a21da19b228cf710c14a84ed1c1aaa4c9" title="find the root dockwidgets and store their geometry">KMdiMainFrm::findRootDockWidgets</a>( <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a>* rootDockWidgetList, <a class="codeRef" href="qvaluelist.html">QValueList<QRect></a>* positionList ) <a name="l01274"></a>01274 { <a name="l01275"></a>01275 <span class="comment">//nothing is valid</span> <a name="l01276"></a>01276 <span class="keywordflow">if</span> ( !rootDockWidgetList && !positionList ) <a name="l01277"></a>01277 return ; <a name="l01278"></a>01278 <a name="l01279"></a>01279 <span class="comment">// since we set some windows to toplevel, we must consider the window manager's window frame</span> <a name="l01280"></a>01280 <span class="keyword">const</span> <span class="keywordtype">int</span> frameBorderWidth = 7; <span class="comment">// @todo: Can we / do we need to ask the window manager?</span> <a name="l01281"></a>01281 <span class="keyword">const</span> <span class="keywordtype">int</span> windowTitleHeight = 10; <span class="comment">// @todo: -"-</span> <a name="l01282"></a>01282 <a name="l01283"></a>01283 <a class="codeRef" href="qobjectlist.html">QObjectList</a>* pObjList = queryList( <span class="stringliteral">"KDockWidget"</span> ); <a name="l01284"></a>01284 <span class="keywordflow">if</span> ( pObjList->isEmpty() ) <a name="l01285"></a>01285 pObjList = queryList( <span class="stringliteral">"KDockWidget_Compat::KDockWidget"</span> ); <a name="l01286"></a>01286 <a name="l01287"></a>01287 QObjectListIt it( *pObjList ); <a name="l01288"></a>01288 <span class="comment">// for all dockwidgets (which are children of this mainwindow)</span> <a name="l01289"></a>01289 <span class="keywordflow">while</span> ( ( *it ) ) <a name="l01290"></a>01290 { <a name="l01291"></a>01291 KDockWidget* dockWindow = 0L; <span class="comment">/* pDockW */</span> <a name="l01292"></a>01292 KDockWidget* rootDockWindow = 0L; <span class="comment">/* pRootDockWindow */</span> <a name="l01293"></a>01293 KDockWidget* undockCandidate = 0L; <span class="comment">/* pUndockCandidate */</span> <a name="l01294"></a>01294 <a class="codeRef" href="qwidget.html">QWidget</a>* pW = <span class="keyword">static_cast<</span><a class="codeRef" href="qwidget.html">QWidget</a>*<span class="keyword">></span>( ( *it ) ); <a name="l01295"></a>01295 <a name="l01296"></a>01296 <span class="comment">// find the oldest ancestor of the current dockwidget that can be undocked</span> <a name="l01297"></a>01297 <span class="keywordflow">while</span> ( !pW-><a class="codeRef" href="qwidget.html#isTopLevel">isTopLevel</a>() ) <a name="l01298"></a>01298 { <a name="l01299"></a>01299 <span class="keywordflow">if</span> ( ::qt_cast<KDockWidget*>( pW ) || pW->inherits( <span class="stringliteral">"KDockWidget_Compat::KDockWidget"</span> ) ) <a name="l01300"></a>01300 { <a name="l01301"></a>01301 undockCandidate = <span class="keyword">static_cast<</span>KDockWidget*<span class="keyword">></span>( pW ); <a name="l01302"></a>01302 <span class="keywordflow">if</span> ( undockCandidate->enableDocking() != KDockWidget::DockNone ) <a name="l01303"></a>01303 rootDockWindow = undockCandidate; <a name="l01304"></a>01304 } <a name="l01305"></a>01305 pW = pW-><a class="codeRef" href="qwidget.html#parentWidget">parentWidget</a>(); <a name="l01306"></a>01306 } <a name="l01307"></a>01307 <a name="l01308"></a>01308 <span class="keywordflow">if</span> ( rootDockWindow ) <a name="l01309"></a>01309 { <a name="l01310"></a>01310 <span class="comment">// if that oldest ancestor is not already in the list, append it</span> <a name="l01311"></a>01311 <span class="keywordtype">bool</span> found = <span class="keyword">false</span>; <a name="l01312"></a>01312 <span class="keywordflow">if</span> ( !rootDockWidgetList-><a class="codeRef" href="qptrlist.html#isEmpty">isEmpty</a>() ) <a name="l01313"></a>01313 { <a name="l01314"></a>01314 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KDockWidget></a> it2( *rootDockWidgetList ); <a name="l01315"></a>01315 <span class="keywordflow">for</span> ( ; it2.<a class="codeRef" href="qptrlistiterator.html#current">current</a>() && !found; ++it2 ) <a name="l01316"></a>01316 { <a name="l01317"></a>01317 dockWindow = it2.<a class="codeRef" href="qptrlistiterator.html#current">current</a>(); <a name="l01318"></a>01318 <span class="keywordflow">if</span> ( dockWindow == rootDockWindow ) <a name="l01319"></a>01319 found = <span class="keyword">true</span>; <a name="l01320"></a>01320 } <a name="l01321"></a>01321 } <a name="l01322"></a>01322 <a name="l01323"></a>01323 <span class="keywordflow">if</span> ( !found || rootDockWidgetList-><a class="codeRef" href="qptrlist.html#isEmpty">isEmpty</a>() ) <a name="l01324"></a>01324 { <a name="l01325"></a>01325 rootDockWidgetList-><a class="codeRef" href="qptrlist.html#append">append</a>( dockWindow ); <a name="l01326"></a>01326 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Appending "</span> << rootDockWindow << <span class="stringliteral">" to our list of "</span> << <a name="l01327"></a>01327 <span class="stringliteral">"root dock windows"</span> << endl; <a name="l01328"></a>01328 <a class="codeRef" href="qpoint.html">QPoint</a> p = rootDockWindow->mapToGlobal( rootDockWindow->pos() ) - rootDockWindow->pos(); <a name="l01329"></a>01329 <a class="codeRef" href="qrect.html">QRect</a> r( p.<a class="codeRef" href="qpoint.html#x">x</a>(), p.<a class="codeRef" href="qpoint.html#y">y</a>() + m_undockPositioningOffset.y(), <a name="l01330"></a>01330 rootDockWindow->width() - windowTitleHeight - frameBorderWidth * 2, <a name="l01331"></a>01331 rootDockWindow->height() - windowTitleHeight - frameBorderWidth * 2 ); <a name="l01332"></a>01332 positionList-><a class="codeRef" href="qvaluelist.html#append">append</a>( r ); <a name="l01333"></a>01333 } <a name="l01334"></a>01334 } <a name="l01335"></a>01335 ++it; <a name="l01336"></a>01336 } <a name="l01337"></a>01337 <span class="keyword">delete</span> pObjList; <a name="l01338"></a>01338 } <a name="l01339"></a>01339 <a name="l01343"></a><a class="code" href="classKMdiMainFrm.html#a836d8978b024d964a389534edf12e9fb">01343</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a836d8978b024d964a389534edf12e9fb" title="Undocks all view windows (unix-like)">KMdiMainFrm::switchToToplevelMode</a>() <a name="l01344"></a>01344 { <a name="l01345"></a>01345 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::ToplevelMode ) <a name="l01346"></a>01346 { <a name="l01347"></a>01347 emit mdiModeHasBeenChangedTo( KMdi::ToplevelMode ); <a name="l01348"></a>01348 return ; <a name="l01349"></a>01349 } <a name="l01350"></a>01350 <a name="l01351"></a>01351 KMdi::MdiMode oldMdiMode = m_mdiMode; <a name="l01352"></a>01352 <a name="l01353"></a>01353 <span class="keyword">const</span> <span class="keywordtype">int</span> frameBorderWidth = 7; <span class="comment">// @todo: Can we / do we need to ask the window manager?</span> <a name="l01354"></a>01354 setUndockPositioningOffset( <a class="codeRef" href="qpoint.html">QPoint</a>( 0, ( m_pTaskBar ? m_pTaskBar->height() : 0 ) + frameBorderWidth ) ); <a name="l01355"></a>01355 <a name="l01356"></a>01356 <span class="comment">// 1.) select the dockwidgets to be undocked and store their geometry</span> <a name="l01357"></a>01357 <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a> rootDockWidgetList; <a name="l01358"></a>01358 <a class="codeRef" href="qvaluelist.html">QValueList<QRect></a> positionList; <a name="l01359"></a>01359 <a name="l01360"></a>01360 <span class="comment">// 2.) undock the MDI views of KMDI</span> <a name="l01361"></a>01361 <span class="keywordflow">switch</span>( oldMdiMode ) <a name="l01362"></a>01362 { <a name="l01363"></a>01363 <span class="keywordflow">case</span> KMdi::ChildframeMode: <a name="l01364"></a>01364 finishChildframeMode(); <a name="l01365"></a>01365 <span class="keywordflow">break</span>; <a name="l01366"></a>01366 <span class="keywordflow">case</span> KMdi::TabPageMode: <a name="l01367"></a>01367 finishTabPageMode(); <a name="l01368"></a>01368 <span class="keywordflow">break</span>; <a name="l01369"></a>01369 <span class="keywordflow">case</span> KMdi::IDEAlMode: <a name="l01370"></a>01370 finishIDEAlMode(); <a name="l01371"></a>01371 findRootDockWidgets( &rootDockWidgetList, &positionList ); <a name="l01372"></a>01372 <span class="keywordflow">break</span>; <a name="l01373"></a>01373 <span class="keywordflow">default</span>: <a name="l01374"></a>01374 <span class="keywordflow">break</span>; <span class="comment">//do nothing</span> <a name="l01375"></a>01375 } <a name="l01376"></a>01376 <a name="l01377"></a>01377 <span class="comment">// 3.) undock all these found oldest ancestors (being KDockWidgets)</span> <a name="l01378"></a>01378 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KDockWidget></a> kdwit( rootDockWidgetList ); <a name="l01379"></a>01379 <span class="keywordflow">for</span> ( ; ( *kdwit ); ++kdwit ) <a name="l01380"></a>01380 ( *kdwit )->undock(); <a name="l01381"></a>01381 <a name="l01382"></a>01382 <span class="comment">// 4.) recreate the MDI childframe area and hide it</span> <a name="l01383"></a>01383 <span class="keywordflow">if</span> ( oldMdiMode == KMdi::TabPageMode || oldMdiMode == KMdi::IDEAlMode ) <a name="l01384"></a>01384 { <a name="l01385"></a>01385 <span class="keywordflow">if</span> ( !m_pDockbaseAreaOfDocumentViews ) <a name="l01386"></a>01386 { <a name="l01387"></a>01387 m_pDockbaseAreaOfDocumentViews = createDockWidget( <span class="stringliteral">"mdiAreaCover"</span>, <a class="codeRef" href="qpixmap.html">QPixmap</a>(), 0L, <span class="stringliteral">"mdi_area_cover"</span> ); <a name="l01388"></a>01388 m_pDockbaseAreaOfDocumentViews->setDockWindowTransient( <span class="keyword">this</span>, <span class="keyword">true</span> ); <a name="l01389"></a>01389 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockNone ); <a name="l01390"></a>01390 m_pDockbaseAreaOfDocumentViews->setDockSite( KDockWidget::DockCorner ); <a name="l01391"></a>01391 m_pDockbaseAreaOfDocumentViews->setWidget( m_pMdi ); <a name="l01392"></a>01392 } <a name="l01393"></a>01393 <span class="comment">// set this dock to main view</span> <a name="l01394"></a>01394 setView( m_pDockbaseAreaOfDocumentViews ); <a name="l01395"></a>01395 setMainDockWidget( m_pDockbaseAreaOfDocumentViews ); <a name="l01396"></a>01396 } <a name="l01397"></a>01397 <span class="comment">// QApplication::sendPostedEvents(); //why do we need to empty the event queue?</span> <a name="l01398"></a>01398 <span class="keywordflow">if</span> ( !parentWidget() ) <a name="l01399"></a>01399 { <a name="l01400"></a>01400 <span class="comment">//if we don't have a parent widget ( which i expect we wouldn't )</span> <a name="l01401"></a>01401 <span class="comment">//make sure we take into account the size of the docks provided by</span> <a name="l01402"></a>01402 <span class="comment">//QMainWindow</span> <a name="l01403"></a>01403 <span class="keywordtype">int</span> topDockHeight = topDock() ? topDock()->height() : 0; <a name="l01404"></a>01404 <span class="keywordtype">int</span> bottomDockHeight = bottomDock() ? bottomDock()->height() : 0; <a name="l01405"></a>01405 <span class="keywordtype">int</span> menuBarHeight = hasMenuBar() ? menuBar()->height() : 0; <a name="l01406"></a>01406 <span class="keywordflow">if</span> ( m_pDocumentViews->count() != 0 ) <a name="l01407"></a>01407 setFixedHeight( height() - m_pDockbaseAreaOfDocumentViews->height() ); <a name="l01408"></a>01408 <span class="keywordflow">else</span> <a name="l01409"></a>01409 { <a name="l01410"></a>01410 kdDebug(760) << k_funcinfo << <span class="stringliteral">"height is: "</span> << height() << endl; <a name="l01411"></a>01411 kdDebug(760) << k_funcinfo << <span class="stringliteral">"top dock height: "</span> << topDockHeight << endl; <a name="l01412"></a>01412 kdDebug(760) << k_funcinfo << <span class="stringliteral">"bottom dock height: "</span> << bottomDockHeight << endl; <a name="l01413"></a>01413 kdDebug(760) << k_funcinfo << <span class="stringliteral">"menu bar height: "</span> << menuBarHeight << endl; <a name="l01414"></a>01414 kdDebug(760) << k_funcinfo << <span class="stringliteral">"dock base area height: "</span> << m_pDockbaseAreaOfDocumentViews->height() << endl; <a name="l01415"></a>01415 setFixedHeight( topDockHeight + menuBarHeight ); <a name="l01416"></a>01416 } <a name="l01417"></a>01417 } <a name="l01418"></a>01418 <a name="l01419"></a>01419 <span class="comment">//FIXME although i don't know what to fix</span> <a name="l01420"></a>01420 <span class="comment">// 5. show the child views again</span> <a name="l01421"></a>01421 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> kmdicvit( *m_pDocumentViews ); <a name="l01422"></a>01422 <span class="keywordflow">for</span> ( kmdicvit.<a class="codeRef" href="qptrlistiterator.html#toFirst">toFirst</a>(); ( *kmdicvit ); ++kmdicvit ) <a name="l01423"></a>01423 { <a name="l01424"></a>01424 <span class="preprocessor">#ifdef Q_WS_X11</span> <a name="l01425"></a>01425 <span class="preprocessor"></span> XSetTransientForHint( qt_xdisplay(), ( *kmdicvit )->winId(), winId() ); <a name="l01426"></a>01426 <span class="preprocessor">#endif</span> <a name="l01427"></a>01427 <span class="preprocessor"></span> ( *kmdicvit )->show(); <a name="l01428"></a>01428 } <a name="l01429"></a>01429 <a name="l01430"></a>01430 <span class="comment">// 6.) reset all memorized positions of the undocked ones and show them again</span> <a name="l01431"></a>01431 <a class="codeRef" href="qvaluelist.html">QValueList<QRect>::Iterator</a> qvlqrit; <a name="l01432"></a>01432 <a class="codeRef" href="qvaluelist.html">QValueList<QRect>::Iterator</a> qvlEnd = positionList.<a class="codeRef" href="qvaluelist.html#end">end</a>(); <a name="l01433"></a>01433 <span class="keywordflow">for</span> ( kmdicvit.<a class="codeRef" href="qptrlistiterator.html#toFirst">toFirst</a>(), qvlqrit = positionList.<a class="codeRef" href="qvaluelist.html#begin">begin</a>() ; ( *kmdicvit ) && qvlqrit != qvlEnd; ++kmdicvit, ++qvlqrit ) <a name="l01434"></a>01434 { <a name="l01435"></a>01435 ( *kmdicvit )->setGeometry( ( *qvlqrit ) ); <a name="l01436"></a>01436 ( *kmdicvit )->show(); <a name="l01437"></a>01437 } <a name="l01438"></a>01438 <a name="l01439"></a>01439 m_pDockbaseAreaOfDocumentViews->setDockSite( KDockWidget::DockNone ); <a name="l01440"></a>01440 m_mdiMode = KMdi::ToplevelMode; <a name="l01441"></a>01441 <a name="l01442"></a>01442 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Switch to toplevel mode completed"</span> << endl; <a name="l01443"></a>01443 emit mdiModeHasBeenChangedTo( KMdi::ToplevelMode ); <a name="l01444"></a>01444 <a name="l01445"></a>01445 } <a name="l01446"></a>01446 <a name="l01447"></a>01447 <span class="keywordtype">void</span> KMdiMainFrm::finishToplevelMode() <a name="l01448"></a>01448 { <a name="l01449"></a>01449 m_pDockbaseAreaOfDocumentViews->setDockSite( KDockWidget::DockCorner ); <a name="l01450"></a>01450 } <a name="l01451"></a>01451 <a name="l01455"></a><a class="code" href="classKMdiMainFrm.html#ac1cc1a4305a449d233601f636cb9a4f4">01455</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ac1cc1a4305a449d233601f636cb9a4f4" title="Docks all view windows (Windows-like)">KMdiMainFrm::switchToChildframeMode</a>() <a name="l01456"></a>01456 { <a name="l01457"></a>01457 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::ChildframeMode ) <a name="l01458"></a>01458 { <a name="l01459"></a>01459 emit mdiModeHasBeenChangedTo( KMdi::ChildframeMode ); <a name="l01460"></a>01460 return ; <a name="l01461"></a>01461 } <a name="l01462"></a>01462 <a name="l01463"></a>01463 <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a> rootDockWidgetList; <a name="l01464"></a>01464 <a class="codeRef" href="qvaluelist.html">QValueList<QRect></a> positionList; <a name="l01465"></a>01465 <a name="l01466"></a>01466 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::TabPageMode ) <a name="l01467"></a>01467 { <a name="l01468"></a>01468 kdDebug(760) << k_funcinfo << <span class="stringliteral">"finishing tab page mode"</span> << endl; <a name="l01469"></a>01469 <span class="comment">// select the dockwidgets to be undocked and store their geometry</span> <a name="l01470"></a>01470 findRootDockWidgets( &rootDockWidgetList, &positionList ); <a name="l01471"></a>01471 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Found "</span> << rootDockWidgetList.<a class="codeRef" href="qptrlist.html#count">count</a>() << <span class="stringliteral">" widgets to undock"</span> << endl; <a name="l01472"></a>01472 <a name="l01473"></a>01473 <span class="comment">// undock all these found oldest ancestors (being KDockWidgets)</span> <a name="l01474"></a>01474 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KDockWidget></a> it( rootDockWidgetList ); <a name="l01475"></a>01475 <span class="keywordflow">for</span> ( ; ( *it ) ; ++it ) <a name="l01476"></a>01476 ( *it )->undock(); <a name="l01477"></a>01477 <a name="l01478"></a>01478 finishTabPageMode(); <a name="l01479"></a>01479 } <a name="l01480"></a>01480 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( m_mdiMode == KMdi::ToplevelMode ) <a name="l01481"></a>01481 { <a name="l01482"></a>01482 finishToplevelMode(); <a name="l01483"></a>01483 } <a name="l01484"></a>01484 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode ) <a name="l01485"></a>01485 { <a name="l01486"></a>01486 kdDebug(760) << k_funcinfo << <span class="stringliteral">"finishing ideal mode"</span> << endl; <a name="l01487"></a>01487 finishIDEAlMode( <span class="keyword">false</span> ); <a name="l01488"></a>01488 <a name="l01489"></a>01489 <span class="comment">// select the dockwidgets to be undocked and store their geometry</span> <a name="l01490"></a>01490 findRootDockWidgets( &rootDockWidgetList, &positionList ); <a name="l01491"></a>01491 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Found "</span> << rootDockWidgetList.<a class="codeRef" href="qptrlist.html#count">count</a>() << <span class="stringliteral">" widgets to undock"</span> << endl; <a name="l01492"></a>01492 <a name="l01493"></a>01493 <span class="comment">// undock all these found oldest ancestors (being KDockWidgets)</span> <a name="l01494"></a>01494 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KDockWidget></a> it( rootDockWidgetList ); <a name="l01495"></a>01495 <span class="keywordflow">for</span> ( ; ( *it ) ; ++it ) <a name="l01496"></a>01496 ( *it )->undock(); <a name="l01497"></a>01497 <a name="l01498"></a>01498 m_mdiMode = KMdi::TabPageMode; <a name="l01499"></a>01499 finishTabPageMode(); <a name="l01500"></a>01500 m_mdiMode = KMdi::IDEAlMode; <a name="l01501"></a>01501 } <a name="l01502"></a>01502 <a name="l01503"></a>01503 <span class="keywordflow">if</span> ( !m_pDockbaseAreaOfDocumentViews ) <a name="l01504"></a>01504 { <a name="l01505"></a>01505 <span class="comment">// cover KMdi's childarea by a dockwidget</span> <a name="l01506"></a>01506 m_pDockbaseAreaOfDocumentViews = createDockWidget( <span class="stringliteral">"mdiAreaCover"</span>, <a class="codeRef" href="qpixmap.html">QPixmap</a>(), 0L, <span class="stringliteral">"mdi_area_cover"</span> ); <a name="l01507"></a>01507 m_pDockbaseAreaOfDocumentViews->setDockWindowTransient( <span class="keyword">this</span>, <span class="keyword">true</span> ); <a name="l01508"></a>01508 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockNone ); <a name="l01509"></a>01509 m_pDockbaseAreaOfDocumentViews->setDockSite( KDockWidget::DockCorner ); <a name="l01510"></a>01510 m_pDockbaseAreaOfDocumentViews->setWidget( m_pMdi ); <a name="l01511"></a>01511 kdDebug(760) << k_funcinfo << <span class="stringliteral">"childarea is now covered by a dockwidget"</span> << endl; <a name="l01512"></a>01512 } <a name="l01513"></a>01513 <a name="l01514"></a>01514 <span class="keywordflow">if</span> ( m_pDockbaseAreaOfDocumentViews->isTopLevel() ) <a name="l01515"></a>01515 { <a name="l01516"></a>01516 <span class="comment">// set this dock to main view</span> <a name="l01517"></a>01517 setView( m_pDockbaseAreaOfDocumentViews ); <a name="l01518"></a>01518 setMainDockWidget( m_pDockbaseAreaOfDocumentViews ); <a name="l01519"></a>01519 m_pDockbaseAreaOfDocumentViews->setEnableDocking( KDockWidget::DockNone ); <a name="l01520"></a>01520 m_pDockbaseAreaOfDocumentViews->setDockSite( KDockWidget::DockCorner ); <a name="l01521"></a>01521 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Dock base area has been set to the main view"</span> << endl; <a name="l01522"></a>01522 } <a name="l01523"></a>01523 m_pDockbaseAreaOfDocumentViews->setWidget( m_pMdi ); <span class="comment">//JW</span> <a name="l01524"></a>01524 m_pDockbaseAreaOfDocumentViews->show(); <a name="l01525"></a>01525 <a name="l01526"></a>01526 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::TabPageMode ) || ( m_mdiMode == KMdi::IDEAlMode ) ) <a name="l01527"></a>01527 { <a name="l01528"></a>01528 kdDebug(760) << k_funcinfo << <span class="stringliteral">"trying to dock back the undock toolviews"</span> << endl; <a name="l01529"></a>01529 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KDockWidget></a> it( rootDockWidgetList ); <a name="l01530"></a>01530 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l01531"></a>01531 ( *it )->dockBack(); <a name="l01532"></a>01532 } <a name="l01533"></a>01533 <a name="l01534"></a>01534 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::ToplevelMode && m_pTempDockSession ) <a name="l01535"></a>01535 { <a name="l01536"></a>01536 <span class="comment">// restore the old dock scenario which we memorized at the time we switched to toplevel mode</span> <a name="l01537"></a>01537 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Restoring old dock scenario memorized from toplevel mode"</span> << endl; <a name="l01538"></a>01538 <a class="codeRef" href="qdomelement.html">QDomElement</a> oldDockState = m_pTempDockSession->namedItem( <span class="stringliteral">"cur_dock_state"</span> ).toElement(); <a name="l01539"></a>01539 readDockConfig( oldDockState ); <a name="l01540"></a>01540 } <a name="l01541"></a>01541 <a name="l01542"></a>01542 KMdi::MdiMode oldMdiMode = m_mdiMode; <a name="l01543"></a>01543 m_mdiMode = KMdi::ChildframeMode; <a name="l01544"></a>01544 <a name="l01545"></a>01545 <span class="comment">//FIXME although i don't know what to fix.</span> <a name="l01546"></a>01546 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l01547"></a>01547 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l01548"></a>01548 { <a name="l01549"></a>01549 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = ( *it ); <a name="l01550"></a>01550 <span class="keywordflow">if</span> ( !pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() && pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l01551"></a>01551 attachWindow( pView, <span class="keyword">true</span> ); <a name="l01552"></a>01552 } <a name="l01553"></a>01553 <span class="keywordflow">for</span> ( it.<a class="codeRef" href="qptrlistiterator.html#toFirst">toFirst</a>(); ( *it ); ++it ) <a name="l01554"></a>01554 { <a name="l01555"></a>01555 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = ( *it ); <a name="l01556"></a>01556 <span class="keywordflow">if</span> ( !pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l01557"></a>01557 pView-><a class="code" href="classKMdiChildView.html#aa74d747107015dbd5d6f03ca70e13fe0" title="Calls QWidget::show but also for it's parent widget if attached.">show</a>(); <a name="l01558"></a>01558 } <a name="l01559"></a>01559 <span class="keywordflow">if</span> ( ( oldMdiMode == KMdi::ToplevelMode ) && !parentWidget() ) <a name="l01560"></a>01560 { <a name="l01561"></a>01561 setMinimumHeight( m_oldMainFrmMinHeight ); <a name="l01562"></a>01562 setMaximumHeight( m_oldMainFrmMaxHeight ); <a name="l01563"></a>01563 resize( width(), m_oldMainFrmHeight ); <a name="l01564"></a>01564 m_oldMainFrmHeight = 0; <a name="l01565"></a>01565 kdDebug(760) << k_funcinfo << <span class="stringliteral">"left top level mode completely"</span> << endl; <a name="l01566"></a>01566 emit leftTopLevelMode(); <a name="l01567"></a>01567 } <a name="l01568"></a>01568 emit mdiModeHasBeenChangedTo( KMdi::ChildframeMode ); <a name="l01569"></a>01569 } <a name="l01570"></a>01570 <a name="l01571"></a>01571 <span class="keywordtype">void</span> KMdiMainFrm::finishChildframeMode() <a name="l01572"></a>01572 { <a name="l01573"></a>01573 <span class="comment">// save the old dock scenario of the dockwidget-like tool views to a DOM tree</span> <a name="l01574"></a>01574 kdDebug(760) << k_funcinfo << <span class="stringliteral">"saving the current dock scenario"</span> << endl; <a name="l01575"></a>01575 <span class="keyword">delete</span> m_pTempDockSession; <a name="l01576"></a>01576 m_pTempDockSession = <span class="keyword">new</span> <a class="codeRef" href="qdomdocument.html">QDomDocument</a>( <span class="stringliteral">"docksession"</span> ); <a name="l01577"></a>01577 <a class="codeRef" href="qdomelement.html">QDomElement</a> curDockState = m_pTempDockSession->createElement( <span class="stringliteral">"cur_dock_state"</span> ); <a name="l01578"></a>01578 m_pTempDockSession->appendChild( curDockState ); <a name="l01579"></a>01579 writeDockConfig( curDockState ); <a name="l01580"></a>01580 <a name="l01581"></a>01581 <span class="comment">// detach all non-tool-views to toplevel</span> <a name="l01582"></a>01582 kdDebug(760) << k_funcinfo << <span class="stringliteral">"detaching all document views and moving them to toplevel"</span> << endl; <a name="l01583"></a>01583 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l01584"></a>01584 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l01585"></a>01585 { <a name="l01586"></a>01586 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = ( *it ); <a name="l01587"></a>01587 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l01588"></a>01588 <span class="keywordflow">continue</span>; <a name="l01589"></a>01589 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l01590"></a>01590 { <a name="l01591"></a>01591 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#ab571165055d79a106288053a09801459" title="Tells if the window is minimized when attached to the Mdi manager, otherwise returns false...">isMaximized</a>() ) <a name="l01592"></a>01592 pView-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>()->setGeometry( 0, 0, m_pMdi->width(), m_pMdi->height() ); <a name="l01593"></a>01593 detachWindow( pView, <span class="keyword">false</span> ); <a name="l01594"></a>01594 } <a name="l01595"></a>01595 } <a name="l01596"></a>01596 } <a name="l01597"></a>01597 <a name="l01601"></a><a class="code" href="classKMdiMainFrm.html#ace5c30f5986244846ba76942ea98bfa2">01601</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ace5c30f5986244846ba76942ea98bfa2" title="Docks all view windows (Windows-like)">KMdiMainFrm::switchToTabPageMode</a>() <a name="l01602"></a>01602 { <a name="l01603"></a>01603 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::TabPageMode ) <a name="l01604"></a>01604 { <a name="l01605"></a>01605 emit mdiModeHasBeenChangedTo( KMdi::TabPageMode ); <a name="l01606"></a>01606 return ; <span class="comment">// nothing need to be done</span> <a name="l01607"></a>01607 } <a name="l01608"></a>01608 <a name="l01609"></a>01609 <span class="keywordflow">switch</span>( m_mdiMode ) <a name="l01610"></a>01610 { <a name="l01611"></a>01611 <span class="keywordflow">case</span> KMdi::ChildframeMode: <a name="l01612"></a>01612 finishChildframeMode(); <a name="l01613"></a>01613 <span class="keywordflow">break</span>; <a name="l01614"></a>01614 <span class="keywordflow">case</span> KMdi::ToplevelMode: <a name="l01615"></a>01615 finishToplevelMode(); <a name="l01616"></a>01616 <span class="keywordflow">break</span>; <a name="l01617"></a>01617 <span class="keywordflow">case</span> KMdi::IDEAlMode: <a name="l01618"></a>01618 finishIDEAlMode( <span class="keyword">false</span> ); <a name="l01619"></a>01619 emit mdiModeHasBeenChangedTo( KMdi::TabPageMode ); <a name="l01620"></a>01620 m_mdiMode = KMdi::TabPageMode; <a name="l01621"></a>01621 <span class="keywordflow">return</span>; <a name="l01622"></a>01622 <span class="keywordflow">break</span>; <a name="l01623"></a>01623 <span class="keywordflow">default</span>: <a name="l01624"></a>01624 <span class="keywordflow">break</span>; <a name="l01625"></a>01625 } <a name="l01626"></a>01626 <a name="l01627"></a>01627 setupTabbedDocumentViewSpace(); <a name="l01628"></a>01628 m_mdiMode = KMdi::TabPageMode; <a name="l01629"></a>01629 <span class="keywordflow">if</span> ( m_pCurrentWindow ) <a name="l01630"></a>01630 m_pCurrentWindow->setFocus(); <a name="l01631"></a>01631 <a name="l01632"></a>01632 m_pTaskBar->switchOn( <span class="keyword">false</span> ); <a name="l01633"></a>01633 <a name="l01634"></a>01634 <span class="keywordflow">if</span> ( m_pClose ) <a name="l01635"></a>01635 { <a name="l01636"></a>01636 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pClose, SIGNAL( clicked() ), <span class="keyword">this</span>, SLOT( closeViewButtonPressed() ) ); <a name="l01637"></a>01637 <span class="keywordflow">if</span> ( m_pDocumentViews->count() > 0 ) <a name="l01638"></a>01638 m_pClose->show(); <a name="l01639"></a>01639 } <a name="l01640"></a>01640 <span class="keywordflow">else</span> <a name="l01641"></a>01641 kdDebug(760) << <span class="stringliteral">"close button nonexistant. strange things might happen"</span> << endl; <a name="l01642"></a>01642 <a name="l01643"></a>01643 kdDebug(760) << <span class="stringliteral">"Switch to tab page mode complete"</span> << endl; <a name="l01644"></a>01644 emit mdiModeHasBeenChangedTo( KMdi::TabPageMode ); <a name="l01645"></a>01645 } <a name="l01646"></a>01646 <a name="l01647"></a>01647 <span class="keywordtype">void</span> KMdiMainFrm::finishTabPageMode() <a name="l01648"></a>01648 { <a name="l01649"></a>01649 <span class="comment">// if tabified, release all views from their docking covers</span> <a name="l01650"></a>01650 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::TabPageMode ) <a name="l01651"></a>01651 { <a name="l01652"></a>01652 m_pClose->hide(); <a name="l01653"></a>01653 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pClose, SIGNAL( clicked() ), <span class="keyword">this</span>, SLOT( closeViewButtonPressed() ) ); <a name="l01654"></a>01654 <a name="l01655"></a>01655 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l01656"></a>01656 <span class="keywordflow">for</span> ( ; it.current(); ++it ) <a name="l01657"></a>01657 { <a name="l01658"></a>01658 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = it.current(); <a name="l01659"></a>01659 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l01660"></a>01660 <span class="keywordflow">continue</span>; <a name="l01661"></a>01661 kdDebug(760) << <span class="stringliteral">"KMdiMainFrm::finishTabPageMode: in loop"</span> << endl; <a name="l01662"></a>01662 <a class="codeRef" href="qsize.html">QSize</a> mins = pView-><a class="codeRef" href="qwidget.html#minimumSize">minimumSize</a>(); <a name="l01663"></a>01663 <a class="codeRef" href="qsize.html">QSize</a> maxs = pView-><a class="codeRef" href="qwidget.html#maximumSize">maximumSize</a>(); <a name="l01664"></a>01664 <a class="codeRef" href="qsize.html">QSize</a> sz = pView-><a class="codeRef" href="qwidget.html#size">size</a>(); <a name="l01665"></a>01665 <a class="codeRef" href="qwidget.html">QWidget</a>* pParent = pView-><a class="codeRef" href="qwidget.html#parentWidget">parentWidget</a>(); <a name="l01666"></a>01666 <a class="codeRef" href="qpoint.html">QPoint</a> p( pParent-><a class="codeRef" href="qwidget.html#mapToGlobal">mapToGlobal</a>( pParent-><a class="codeRef" href="qwidget.html#pos">pos</a>() ) - pParent-><a class="codeRef" href="qwidget.html#pos">pos</a>() + m_undockPositioningOffset ); <a name="l01667"></a>01667 m_documentTabWidget->removePage( pView ); <a name="l01668"></a>01668 pView-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( 0, 0, p ); <a name="l01669"></a>01669 <span class="comment">// pView->reparent(0,0,p);</span> <a name="l01670"></a>01670 pView-><a class="codeRef" href="qwidget.html#resize">resize</a>( sz ); <a name="l01671"></a>01671 pView-><a class="code" href="classKMdiChildView.html#ad80dba92dda841efcf2aba66b5e54a8b" title="Sets the minimum size of the widget to w by h pixels.">setMinimumSize</a>( mins.<a class="codeRef" href="qsize.html#width">width</a>(), mins.<a class="codeRef" href="qsize.html#height">height</a>() ); <a name="l01672"></a>01672 pView-><a class="code" href="classKMdiChildView.html#af8d5385c7c87dad91cad376eda8f2868" title="Sets the maximum size of the widget to w by h pixels.">setMaximumSize</a>( maxs.<a class="codeRef" href="qsize.html#width">width</a>(), maxs.<a class="codeRef" href="qsize.html#height">height</a>() ); <a name="l01673"></a>01673 <span class="comment">// ((KDockWidget*)pParent)->undock(); // this destroys the dockwiget cover, too</span> <a name="l01674"></a>01674 <span class="comment">// pParent->close();</span> <a name="l01675"></a>01675 <span class="comment">// delete pParent;</span> <a name="l01676"></a>01676 <span class="comment">// if (centralWidget() == pParent) {</span> <a name="l01677"></a>01677 <span class="comment">// setCentralWidget(0L); // avoid dangling pointer</span> <a name="l01678"></a>01678 <span class="comment">// }</span> <a name="l01679"></a>01679 } <a name="l01680"></a>01680 <span class="keyword">delete</span> m_documentTabWidget; <a name="l01681"></a>01681 m_documentTabWidget = 0; <a name="l01682"></a>01682 m_pTaskBar->switchOn( <span class="keyword">true</span> ); <a name="l01683"></a>01683 } <a name="l01684"></a>01684 } <a name="l01685"></a>01685 <a name="l01686"></a>01686 <a name="l01687"></a>01687 <a name="l01688"></a>01688 <span class="keywordtype">void</span> KMdiMainFrm::setupTabbedDocumentViewSpace() <a name="l01689"></a>01689 { <a name="l01690"></a>01690 <span class="comment">// resize to childframe mode size of the mainwindow if we were in toplevel mode</span> <a name="l01691"></a>01691 <span class="keywordflow">if</span> ( ( m_mdiMode == KMdi::ToplevelMode ) && !parentWidget() ) <a name="l01692"></a>01692 { <a name="l01693"></a>01693 setMinimumHeight( m_oldMainFrmMinHeight ); <a name="l01694"></a>01694 setMaximumHeight( m_oldMainFrmMaxHeight ); <a name="l01695"></a>01695 resize( width(), m_oldMainFrmHeight ); <a name="l01696"></a>01696 m_oldMainFrmHeight = 0; <a name="l01697"></a>01697 <span class="comment">//qDebug("TopLevelMode off");</span> <a name="l01698"></a>01698 emit leftTopLevelMode(); <a name="l01699"></a>01699 <a class="codeRef" href="qapplication.html#sendPostedEvents-2">QApplication::sendPostedEvents</a>(); <a name="l01700"></a>01700 <a name="l01701"></a>01701 <span class="comment">// restore the old dock szenario which we memorized at the time we switched to toplevel mode</span> <a name="l01702"></a>01702 <span class="keywordflow">if</span> ( m_pTempDockSession ) <a name="l01703"></a>01703 { <a name="l01704"></a>01704 <a class="codeRef" href="qdomelement.html">QDomElement</a> oldDockState = m_pTempDockSession->namedItem( <span class="stringliteral">"cur_dock_state"</span> ).toElement(); <a name="l01705"></a>01705 readDockConfig( oldDockState ); <a name="l01706"></a>01706 } <a name="l01707"></a>01707 } <a name="l01708"></a>01708 <a name="l01709"></a>01709 <span class="preprocessor">#if 0</span> <a name="l01710"></a>01710 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( m_pDockbaseOfTabPage != m_pDockbaseAreaOfDocumentViews ) <a name="l01711"></a>01711 { <a name="l01712"></a>01712 <span class="keyword">delete</span> m_pDockbaseOfTabPage; <a name="l01713"></a>01713 m_pDockbaseOfTabPage = m_pDockbaseAreaOfDocumentViews; <a name="l01714"></a>01714 } <a name="l01715"></a>01715 <span class="preprocessor">#endif</span> <a name="l01716"></a>01716 <span class="preprocessor"></span> <span class="keyword">delete</span> m_documentTabWidget; <a name="l01717"></a>01717 m_documentTabWidget = <span class="keyword">new</span> <a class="code" href="classKMdiDocumentViewTabWidget.html" title="A reimplementation of KTabWidget for KMDI.">KMdiDocumentViewTabWidget</a>( m_pDockbaseAreaOfDocumentViews ); <a name="l01718"></a>01718 connect( m_documentTabWidget, SIGNAL( currentChanged( <a class="codeRef" href="qwidget.html">QWidget</a>* ) ), <span class="keyword">this</span>, SLOT( slotDocCurrentChanged( <a class="codeRef" href="qwidget.html">QWidget</a>* ) ) ); <a name="l01719"></a>01719 m_pDockbaseAreaOfDocumentViews->setWidget( m_documentTabWidget ); <a name="l01720"></a>01720 m_documentTabWidget->show(); <a name="l01721"></a>01721 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it4( *m_pDocumentViews ); <a name="l01722"></a>01722 <span class="keywordflow">for</span> ( ; it4.current(); ++it4 ) <a name="l01723"></a>01723 { <a name="l01724"></a>01724 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = it4.current(); <a name="l01725"></a>01725 m_documentTabWidget->addTab( pView, pView-><a class="codeRef" href="qwidget.html#icon">icon</a>() ? *( pView-><a class="codeRef" href="qwidget.html#icon">icon</a>() ) : <a class="codeRef" href="qpixmap.html">QPixmap</a>(), pView-><a class="code" href="classKMdiChildView.html#ac0e1fd56dbf1f6d9659fb14ff8a1b0c5" title="Returns the caption of the button on the taskbar.">tabCaption</a>() ); <a name="l01726"></a>01726 <span class="comment">/*</span> <a name="l01727"></a>01727 <span class="comment"> connect(pView,SIGNAL(iconOrCaptionUdpated(QWidget*,QPixmap,const QString&)),</span> <a name="l01728"></a>01728 <span class="comment"> m_documentTabWidget,SLOT(updateView(QWidget*,QPixmap,const QString&)));</span> <a name="l01729"></a>01729 <span class="comment"> */</span> <a name="l01730"></a>01730 connect( pView, SIGNAL( iconUpdated( <a class="codeRef" href="qwidget.html">QWidget</a>*, <a class="codeRef" href="qpixmap.html">QPixmap</a> ) ), m_documentTabWidget, SLOT( updateIconInView( <a class="codeRef" href="qwidget.html">QWidget</a>*, <a class="codeRef" href="qpixmap.html">QPixmap</a> ) ) ); <a name="l01731"></a>01731 connect( pView, SIGNAL( captionUpdated( <a class="codeRef" href="qwidget.html">QWidget</a>*, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ), m_documentTabWidget, SLOT( updateCaptionInView( <a class="codeRef" href="qwidget.html">QWidget</a>*, <span class="keyword">const</span> <a class="codeRef" href="qstring.html">QString</a>& ) ) ); <a name="l01732"></a>01732 <a name="l01733"></a>01733 } <a name="l01734"></a>01734 } <a name="l01735"></a>01735 <a name="l01736"></a>01736 <a name="l01737"></a><a class="code" href="classKMdiMainFrm.html#a5eb6c1152ce986e8bab84bfe6f71b9b3">01737</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a5eb6c1152ce986e8bab84bfe6f71b9b3" title="Sets the appearance of the IDEAl mode.">KMdiMainFrm::setIDEAlModeStyle</a>( <span class="keywordtype">int</span> flags ) <a name="l01738"></a>01738 { <a name="l01739"></a>01739 d->m_styleIDEAlMode = flags; <span class="comment">// see KMultiTabBar for the first 3 bits</span> <a name="l01740"></a>01740 <span class="keywordflow">if</span> ( m_leftContainer ) <a name="l01741"></a>01741 { <a name="l01742"></a>01742 KMdiDockContainer * tmpL = ( KMdiDockContainer* ) ( m_leftContainer->getWidget()->qt_cast( <span class="stringliteral">"KMdiDockContainer"</span> ) ); <a name="l01743"></a>01743 <span class="keywordflow">if</span> ( tmpL ) <a name="l01744"></a>01744 tmpL->setStyle( flags ); <a name="l01745"></a>01745 } <a name="l01746"></a>01746 <a name="l01747"></a>01747 <span class="keywordflow">if</span> ( m_rightContainer ) <a name="l01748"></a>01748 { <a name="l01749"></a>01749 KMdiDockContainer * tmpR = ( KMdiDockContainer* ) ( m_rightContainer->getWidget()->qt_cast( <span class="stringliteral">"KMdiDockContainer"</span> ) ); <a name="l01750"></a>01750 <span class="keywordflow">if</span> ( tmpR ) <a name="l01751"></a>01751 tmpR->setStyle( flags ); <a name="l01752"></a>01752 } <a name="l01753"></a>01753 <a name="l01754"></a>01754 <span class="keywordflow">if</span> ( m_topContainer ) <a name="l01755"></a>01755 { <a name="l01756"></a>01756 KMdiDockContainer * tmpT = ( KMdiDockContainer* ) ( m_topContainer->getWidget()->qt_cast( <span class="stringliteral">"KMdiDockContainer"</span> ) ); <a name="l01757"></a>01757 <span class="keywordflow">if</span> ( tmpT ) <a name="l01758"></a>01758 tmpT->setStyle( flags ); <a name="l01759"></a>01759 } <a name="l01760"></a>01760 <a name="l01761"></a>01761 <span class="keywordflow">if</span> ( m_bottomContainer ) <a name="l01762"></a>01762 { <a name="l01763"></a>01763 KMdiDockContainer * tmpB = ( KMdiDockContainer* ) ( m_bottomContainer->getWidget()->qt_cast( <span class="stringliteral">"KMdiDockContainer"</span> ) ); <a name="l01764"></a>01764 <span class="keywordflow">if</span> ( tmpB ) <a name="l01765"></a>01765 tmpB->setStyle( flags ); <a name="l01766"></a>01766 } <a name="l01767"></a>01767 } <a name="l01768"></a>01768 <a name="l01769"></a><a class="code" href="classKMdiMainFrm.html#a0e827000413d0ddb1ce69a517913a75c">01769</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a0e827000413d0ddb1ce69a517913a75c" title="Sets the appearance of the toolview tabs.">KMdiMainFrm::setToolviewStyle</a>( <span class="keywordtype">int</span> flag ) <a name="l01770"></a>01770 { <a name="l01771"></a>01771 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode ) <a name="l01772"></a>01772 { <a name="l01773"></a>01773 setIDEAlModeStyle( flag ); <a name="l01774"></a>01774 } <a name="l01775"></a>01775 d->m_toolviewStyle = flag; <a name="l01776"></a>01776 <span class="keywordtype">bool</span> toolviewExists = <span class="keyword">false</span>; <a name="l01777"></a>01777 <a class="codeRef" href="qmap.html">QMap<QWidget*, KMdiToolViewAccessor*>::Iterator</a> it; <a name="l01778"></a>01778 <span class="keywordflow">for</span> ( it = m_pToolViews-><a class="codeRef" href="qmap.html#begin">begin</a>(); it != m_pToolViews-><a class="codeRef" href="qmap.html#end">end</a>(); ++it ) <a name="l01779"></a>01779 { <a name="l01780"></a>01780 KDockWidget *dockWidget = <span class="keyword">dynamic_cast<</span>KDockWidget*<span class="keyword">></span>( it.data()->wrapperWidget() ); <a name="l01781"></a>01781 <span class="keywordflow">if</span> ( dockWidget ) <a name="l01782"></a>01782 { <a name="l01783"></a>01783 <span class="keywordflow">switch</span> ( flag ) <a name="l01784"></a>01784 { <a name="l01785"></a>01785 <span class="keywordflow">case</span> <a class="code" href="namespaceKMdi.html#ab1cdbac6ebdb5548b1b50de89fd5db6aaa02d4549f758818bb873f121fd19ea90" title="Show only icons on the toolview tabs.">KMdi::IconOnly</a>: <a name="l01786"></a>01786 dockWidget->setTabPageLabel( QString::null ); <a name="l01787"></a>01787 dockWidget->setPixmap( *( it.data()->wrappedWidget()->icon() ) ); <a name="l01788"></a>01788 <span class="keywordflow">break</span>; <a name="l01789"></a>01789 <span class="keywordflow">case</span> <a class="code" href="namespaceKMdi.html#ab1cdbac6ebdb5548b1b50de89fd5db6aaf84c797f174eeebb902c45edc4d1706d" title="Show only the text description on the toolview tabs.">KMdi::TextOnly</a>: <a name="l01790"></a>01790 dockWidget->setPixmap(); <span class="comment">//FIXME: Does not hide the icon in the IDEAl mode.</span> <a name="l01791"></a>01791 dockWidget->setTabPageLabel( it.data()->wrappedWidget()->caption() ); <a name="l01792"></a>01792 <span class="keywordflow">break</span>; <a name="l01793"></a>01793 <span class="keywordflow">case</span> <a class="code" href="namespaceKMdi.html#ab1cdbac6ebdb5548b1b50de89fd5db6aa9b85b4d0f7c7608cc676ed81aeb893d6" title="Show both the icon and description on the toolview tabs.">KMdi::TextAndIcon</a>: <a name="l01794"></a>01794 dockWidget->setPixmap( *( it.data()->wrappedWidget()->icon() ) ); <a name="l01795"></a>01795 dockWidget->setTabPageLabel( it.data()->wrappedWidget()->caption() ); <a name="l01796"></a>01796 <span class="keywordflow">default</span>: <a name="l01797"></a>01797 <span class="keywordflow">break</span>; <a name="l01798"></a>01798 } <a name="l01799"></a>01799 toolviewExists = <span class="keyword">true</span>; <a name="l01800"></a>01800 } <a name="l01801"></a>01801 } <a name="l01802"></a>01802 <a name="l01803"></a>01803 <span class="keywordflow">if</span> ( toolviewExists ) <a name="l01804"></a>01804 { <a name="l01805"></a>01805 <span class="comment">//workaround for the above FIXME to make switching to TextOnly mode work in IDEAl as well. Be sure that this version of switch* is called.</span> <a name="l01806"></a>01806 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode && flag == <a class="code" href="namespaceKMdi.html#ab1cdbac6ebdb5548b1b50de89fd5db6aaf84c797f174eeebb902c45edc4d1706d" title="Show only the text description on the toolview tabs.">KMdi::TextOnly</a> ) <a name="l01807"></a>01807 { <a name="l01808"></a>01808 <a class="code" href="classKMdiMainFrm.html#ace5c30f5986244846ba76942ea98bfa2" title="Docks all view windows (Windows-like)">KMdiMainFrm::switchToTabPageMode</a>(); <a name="l01809"></a>01809 <a class="code" href="classKMdiMainFrm.html#a20a370f0bf6238919cbec1e83e562e97" title="Docks all view windows.">KMdiMainFrm::switchToIDEAlMode</a>(); <a name="l01810"></a>01810 } <a name="l01811"></a>01811 <span class="keywordflow">else</span> <a name="l01812"></a>01812 { <a name="l01813"></a>01813 writeDockConfig(); <a name="l01814"></a>01814 readDockConfig(); <a name="l01815"></a>01815 } <a name="l01816"></a>01816 } <a name="l01817"></a>01817 } <a name="l01818"></a>01818 <a name="l01822"></a><a class="code" href="classKMdiMainFrm.html#a20a370f0bf6238919cbec1e83e562e97">01822</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a20a370f0bf6238919cbec1e83e562e97" title="Docks all view windows.">KMdiMainFrm::switchToIDEAlMode</a>() <a name="l01823"></a>01823 { <a name="l01824"></a>01824 kdDebug(760) << k_funcinfo << <span class="stringliteral">"switching to IDEAl mode"</span> << endl; <a name="l01825"></a>01825 <a name="l01826"></a>01826 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode ) <a name="l01827"></a>01827 { <a name="l01828"></a>01828 emit mdiModeHasBeenChangedTo( KMdi::IDEAlMode ); <a name="l01829"></a>01829 return ; <span class="comment">// nothing need to be done</span> <a name="l01830"></a>01830 } <a name="l01831"></a>01831 <a name="l01832"></a>01832 <span class="keywordflow">switch</span>( m_mdiMode ) <a name="l01833"></a>01833 { <a name="l01834"></a>01834 <span class="keywordflow">case</span> KMdi::ChildframeMode: <a name="l01835"></a>01835 finishChildframeMode(); <a name="l01836"></a>01836 <span class="keywordflow">break</span>; <a name="l01837"></a>01837 <span class="keywordflow">case</span> KMdi::ToplevelMode: <a name="l01838"></a>01838 finishToplevelMode(); <a name="l01839"></a>01839 <span class="keywordflow">break</span>; <a name="l01840"></a>01840 <span class="keywordflow">case</span> KMdi::TabPageMode: <a name="l01841"></a>01841 m_mdiMode = KMdi::IDEAlMode; <a name="l01842"></a>01842 setupToolViewsForIDEALMode(); <a name="l01843"></a>01843 emit mdiModeHasBeenChangedTo( KMdi::IDEAlMode ); <a name="l01844"></a>01844 <span class="keywordflow">return</span>; <a name="l01845"></a>01845 <span class="keywordflow">break</span>; <a name="l01846"></a>01846 <span class="keywordflow">default</span>: <a name="l01847"></a>01847 <span class="keywordflow">break</span>; <a name="l01848"></a>01848 } <a name="l01849"></a>01849 <a name="l01850"></a>01850 setupTabbedDocumentViewSpace(); <a name="l01851"></a>01851 m_mdiMode = KMdi::IDEAlMode; <a name="l01852"></a>01852 setupToolViewsForIDEALMode(); <a name="l01853"></a>01853 <a name="l01854"></a>01854 <span class="keywordflow">if</span> ( m_pCurrentWindow ) <a name="l01855"></a>01855 m_pCurrentWindow->setFocus(); <a name="l01856"></a>01856 <a name="l01857"></a>01857 m_pTaskBar->switchOn( <span class="keyword">false</span> ); <a name="l01858"></a>01858 <a name="l01859"></a>01859 <span class="keywordflow">if</span> ( m_pClose ) <a name="l01860"></a>01860 { <a name="l01861"></a>01861 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pClose, SIGNAL( clicked() ), <span class="keyword">this</span>, SLOT( closeViewButtonPressed() ) ); <a name="l01862"></a>01862 <span class="keywordflow">if</span> ( m_pDocumentViews->count() > 0 ) <a name="l01863"></a>01863 m_pClose->show(); <a name="l01864"></a>01864 } <a name="l01865"></a>01865 <span class="keywordflow">else</span> <a name="l01866"></a>01866 kdWarning(760) << k_funcinfo << <span class="stringliteral">"close button pointer does not exist!"</span> << endl; <a name="l01867"></a>01867 <a name="l01868"></a>01868 kdDebug(760) << k_funcinfo << <span class="stringliteral">"switch to IDEAl mode complete"</span> << endl; <a name="l01869"></a>01869 <a name="l01870"></a>01870 emit mdiModeHasBeenChangedTo( KMdi::IDEAlMode ); <a name="l01871"></a>01871 } <a name="l01872"></a>01872 <a name="l01873"></a>01873 <a name="l01874"></a>01874 <span class="keywordtype">void</span> KMdiMainFrm::dockToolViewsIntoContainers( <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a>& widgetsToReparent, KDockWidget *container ) <a name="l01875"></a>01875 { <a name="l01876"></a>01876 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KDockWidget></a> it( widgetsToReparent ); <a name="l01877"></a>01877 <span class="keywordflow">for</span> ( ; ( *it ); ++it ) <a name="l01878"></a>01878 { <a name="l01879"></a>01879 ( *it )->manualDock( container, KDockWidget::DockCenter, 20 ); <a name="l01880"></a>01880 ( *it )->loseFormerBrotherDockWidget(); <a name="l01881"></a>01881 } <a name="l01882"></a>01882 } <a name="l01883"></a>01883 <a name="l01884"></a>01884 <span class="keywordtype">void</span> KMdiMainFrm::findToolViewsDockedToMain( <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a>* list, KDockWidget::DockPosition dprtmw ) <a name="l01885"></a>01885 { <a name="l01886"></a>01886 KDockWidget* mainDock = getMainDockWidget(); <a name="l01887"></a>01887 <span class="keywordflow">if</span> ( mainDock->parentDockTabGroup() ) <a name="l01888"></a>01888 { <a name="l01889"></a>01889 mainDock = <span class="keyword">dynamic_cast<</span>KDockWidget*<span class="keyword">></span>( mainDock->parentDockTabGroup()->parent() ); <a name="l01890"></a>01890 <span class="comment">// FIXME: will likely crash below due to unchecked cast</span> <a name="l01891"></a>01891 } <a name="l01892"></a>01892 <a name="l01893"></a>01893 <span class="keywordflow">if</span> ( !mainDock ) <a name="l01894"></a>01894 { <a name="l01895"></a>01895 kdDebug(760) << k_funcinfo << <span class="stringliteral">"mainDock invalid. No main dock widget found."</span> << endl; <a name="l01896"></a>01896 <span class="keywordflow">return</span>; <a name="l01897"></a>01897 } <a name="l01898"></a>01898 <a name="l01899"></a>01899 KDockWidget* widget = mainDock->findNearestDockWidget( dprtmw ); <a name="l01900"></a>01900 <span class="keywordflow">if</span> ( widget && widget->parentDockTabGroup() ) <a name="l01901"></a>01901 { <a name="l01902"></a>01902 widget = <span class="keyword">static_cast<</span>KDockWidget*<span class="keyword">></span>( widget->parentDockTabGroup() ->parent() ); <a name="l01903"></a>01903 <a name="l01904"></a>01904 <span class="keywordflow">if</span> ( widget ) <a name="l01905"></a>01905 { <a name="l01906"></a>01906 KDockTabGroup* tg = <span class="keyword">dynamic_cast<</span>KDockTabGroup*<span class="keyword">></span>( widget->getWidget() ); <a name="l01907"></a>01907 <span class="keywordflow">if</span> ( tg ) <a name="l01908"></a>01908 { <a name="l01909"></a>01909 kdDebug(760) << k_funcinfo << <span class="stringliteral">"KDockTabGroup found"</span> << endl; <a name="l01910"></a>01910 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0;i < tg->count();i++ ) <a name="l01911"></a>01911 list-><a class="codeRef" href="qptrlist.html#append">append</a>( static_cast<KDockWidget*>( tg->page( i ) ) ); <a name="l01912"></a>01912 } <a name="l01913"></a>01913 <span class="keywordflow">else</span> <a name="l01914"></a>01914 list-><a class="codeRef" href="qptrlist.html#append">append</a>( widget ); <a name="l01915"></a>01915 } <a name="l01916"></a>01916 <span class="keywordflow">else</span> <a name="l01917"></a>01917 kdDebug(760) << k_funcinfo << <span class="stringliteral">"no widget found"</span> << endl; <a name="l01918"></a>01918 } <a name="l01919"></a>01919 <span class="keywordflow">else</span> <a name="l01920"></a>01920 kdDebug(760) << <span class="stringliteral">"No main dock widget found"</span> << endl; <a name="l01921"></a>01921 } <a name="l01922"></a>01922 <a name="l01923"></a>01923 <a name="l01924"></a>01924 <span class="keywordtype">void</span> KMdiMainFrm::setupToolViewsForIDEALMode() <a name="l01925"></a>01925 { <a name="l01926"></a>01926 m_leftContainer = createDockWidget( <span class="stringliteral">"KMdiDock::leftDock"</span>, SmallIcon( <span class="stringliteral">"misc"</span> ), 0L, <span class="stringliteral">"Left Dock"</span> ); <a name="l01927"></a>01927 m_rightContainer = createDockWidget( <span class="stringliteral">"KMdiDock::rightDock"</span>, SmallIcon( <span class="stringliteral">"misc"</span> ), 0L, <span class="stringliteral">"Right Dock"</span> ); <a name="l01928"></a>01928 m_topContainer = createDockWidget( <span class="stringliteral">"KMdiDock::topDock"</span>, SmallIcon( <span class="stringliteral">"misc"</span> ), 0L, <span class="stringliteral">"Top Dock"</span> ); <a name="l01929"></a>01929 m_bottomContainer = createDockWidget( <span class="stringliteral">"KMdiDock::bottomDock"</span>, SmallIcon( <span class="stringliteral">"misc"</span> ), 0L, <span class="stringliteral">"Bottom Dock"</span> ); <a name="l01930"></a>01930 <a name="l01931"></a>01931 KDockWidget *mainDock = getMainDockWidget(); <a name="l01932"></a>01932 KDockWidget *w = mainDock; <a name="l01933"></a>01933 <span class="keywordflow">if</span> ( mainDock->parentDockTabGroup() ) <a name="l01934"></a>01934 w = static_cast<KDockWidget*>( mainDock->parentDockTabGroup()->parent() ); <a name="l01935"></a>01935 <a name="l01936"></a>01936 <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a> leftReparentWidgets; <a name="l01937"></a>01937 <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a> rightReparentWidgets; <a name="l01938"></a>01938 <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a> bottomReparentWidgets; <a name="l01939"></a>01939 <a class="codeRef" href="qptrlist.html">QPtrList<KDockWidget></a> topReparentWidgets; <a name="l01940"></a>01940 <a name="l01941"></a>01941 <span class="keywordflow">if</span> ( mainDock->parentDockTabGroup() ) <a name="l01942"></a>01942 mainDock = static_cast<KDockWidget*>( mainDock->parentDockTabGroup() ->parent() ); <a name="l01943"></a>01943 <a name="l01944"></a>01944 findToolViewsDockedToMain( &leftReparentWidgets, KDockWidget::DockLeft ); <a name="l01945"></a>01945 findToolViewsDockedToMain( &rightReparentWidgets, KDockWidget::DockRight ); <a name="l01946"></a>01946 findToolViewsDockedToMain( &bottomReparentWidgets, KDockWidget::DockBottom ); <a name="l01947"></a>01947 findToolViewsDockedToMain( &topReparentWidgets, KDockWidget::DockTop ); <a name="l01948"></a>01948 <a name="l01949"></a>01949 mainDock->setEnableDocking( KDockWidget::DockNone ); <span class="comment">//::DockCorner);</span> <a name="l01950"></a>01950 mainDock->setDockSite( KDockWidget::DockCorner ); <a name="l01951"></a>01951 <a name="l01952"></a>01952 <a name="l01953"></a>01953 KMdiDockContainer *tmpDC; <a name="l01954"></a>01954 m_leftContainer->setWidget( tmpDC = <span class="keyword">new</span> KMdiDockContainer( m_leftContainer, <span class="keyword">this</span>, KDockWidget::DockLeft, d->m_styleIDEAlMode ) ); <a name="l01955"></a>01955 m_leftContainer->setEnableDocking( KDockWidget::DockLeft ); <a name="l01956"></a>01956 m_leftContainer->manualDock( mainDock, KDockWidget::DockLeft, 20 ); <a name="l01957"></a>01957 tmpDC->init(); <a name="l01958"></a>01958 <span class="keywordflow">if</span> ( m_mdiGUIClient ) <a name="l01959"></a>01959 connect ( <span class="keyword">this</span>, SIGNAL( toggleLeft() ), tmpDC, SLOT( toggle() ) ); <a name="l01960"></a>01960 connect( <span class="keyword">this</span>, SIGNAL( collapseOverlapContainers() ), tmpDC, SLOT( collapseOverlapped() ) ); <a name="l01961"></a>01961 connect( tmpDC, SIGNAL( activated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( setActiveToolDock( KMdiDockContainer* ) ) ); <a name="l01962"></a>01962 connect( tmpDC, SIGNAL( deactivated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( removeFromActiveDockList( KMdiDockContainer* ) ) ); <a name="l01963"></a>01963 <a name="l01964"></a>01964 m_rightContainer->setWidget( tmpDC = <span class="keyword">new</span> KMdiDockContainer( m_rightContainer, <span class="keyword">this</span>, KDockWidget::DockRight, d->m_styleIDEAlMode ) ); <a name="l01965"></a>01965 m_rightContainer->setEnableDocking( KDockWidget::DockRight ); <a name="l01966"></a>01966 m_rightContainer->manualDock( mainDock, KDockWidget::DockRight, 80 ); <a name="l01967"></a>01967 tmpDC->init(); <a name="l01968"></a>01968 <span class="keywordflow">if</span> ( m_mdiGUIClient ) <a name="l01969"></a>01969 connect ( <span class="keyword">this</span>, SIGNAL( toggleRight() ), tmpDC, SLOT( toggle() ) ); <a name="l01970"></a>01970 connect( <span class="keyword">this</span>, SIGNAL( collapseOverlapContainers() ), tmpDC, SLOT( collapseOverlapped() ) ); <a name="l01971"></a>01971 connect( tmpDC, SIGNAL( activated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( setActiveToolDock( KMdiDockContainer* ) ) ); <a name="l01972"></a>01972 connect( tmpDC, SIGNAL( deactivated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( removeFromActiveDockList( KMdiDockContainer* ) ) ); <a name="l01973"></a>01973 <a name="l01974"></a>01974 m_topContainer->setWidget( tmpDC = <span class="keyword">new</span> KMdiDockContainer( m_topContainer, <span class="keyword">this</span>, KDockWidget::DockTop, d->m_styleIDEAlMode ) ); <a name="l01975"></a>01975 m_topContainer->setEnableDocking( KDockWidget::DockTop ); <a name="l01976"></a>01976 m_topContainer->manualDock( mainDock, KDockWidget::DockTop, 20 ); <a name="l01977"></a>01977 tmpDC->init(); <a name="l01978"></a>01978 <span class="keywordflow">if</span> ( m_mdiGUIClient ) <a name="l01979"></a>01979 connect ( <span class="keyword">this</span>, SIGNAL( toggleTop() ), tmpDC, SLOT( toggle() ) ); <a name="l01980"></a>01980 connect( <span class="keyword">this</span>, SIGNAL( collapseOverlapContainers() ), tmpDC, SLOT( collapseOverlapped() ) ); <a name="l01981"></a>01981 connect( tmpDC, SIGNAL( activated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( setActiveToolDock( KMdiDockContainer* ) ) ); <a name="l01982"></a>01982 connect( tmpDC, SIGNAL( deactivated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( removeFromActiveDockList( KMdiDockContainer* ) ) ); <a name="l01983"></a>01983 <a name="l01984"></a>01984 m_bottomContainer->setWidget( tmpDC = <span class="keyword">new</span> KMdiDockContainer( m_bottomContainer, <span class="keyword">this</span>, KDockWidget::DockBottom, d->m_styleIDEAlMode ) ); <a name="l01985"></a>01985 m_bottomContainer->setEnableDocking( KDockWidget::DockBottom ); <a name="l01986"></a>01986 m_bottomContainer->manualDock( mainDock, KDockWidget::DockBottom, 80 ); <a name="l01987"></a>01987 tmpDC->init(); <a name="l01988"></a>01988 <span class="keywordflow">if</span> ( m_mdiGUIClient ) <a name="l01989"></a>01989 connect ( <span class="keyword">this</span>, SIGNAL( toggleBottom() ), tmpDC, SLOT( toggle() ) ); <a name="l01990"></a>01990 connect( <span class="keyword">this</span>, SIGNAL( collapseOverlapContainers() ), tmpDC, SLOT( collapseOverlapped() ) ); <a name="l01991"></a>01991 connect( tmpDC, SIGNAL( activated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( setActiveToolDock( KMdiDockContainer* ) ) ); <a name="l01992"></a>01992 connect( tmpDC, SIGNAL( deactivated( KMdiDockContainer* ) ), <span class="keyword">this</span>, SLOT( removeFromActiveDockList( KMdiDockContainer* ) ) ); <a name="l01993"></a>01993 <a name="l01994"></a>01994 m_leftContainer->setDockSite( KDockWidget::DockCenter ); <a name="l01995"></a>01995 m_rightContainer->setDockSite( KDockWidget::DockCenter ); <a name="l01996"></a>01996 m_topContainer->setDockSite( KDockWidget::DockCenter ); <a name="l01997"></a>01997 m_bottomContainer->setDockSite( KDockWidget::DockCenter ); <a name="l01998"></a>01998 <a name="l01999"></a>01999 dockToolViewsIntoContainers( leftReparentWidgets, m_leftContainer ); <a name="l02000"></a>02000 dockToolViewsIntoContainers( rightReparentWidgets, m_rightContainer ); <a name="l02001"></a>02001 dockToolViewsIntoContainers( bottomReparentWidgets, m_bottomContainer ); <a name="l02002"></a>02002 dockToolViewsIntoContainers( topReparentWidgets, m_topContainer ); <a name="l02003"></a>02003 <a name="l02004"></a>02004 <a name="l02005"></a>02005 dockManager->setSpecialLeftDockContainer( m_leftContainer ); <a name="l02006"></a>02006 dockManager->setSpecialRightDockContainer( m_rightContainer ); <a name="l02007"></a>02007 dockManager->setSpecialTopDockContainer( m_topContainer ); <a name="l02008"></a>02008 dockManager->setSpecialBottomDockContainer( m_bottomContainer ); <a name="l02009"></a>02009 <a name="l02010"></a>02010 <a name="l02011"></a>02011 ( ( KMdiDockContainer* ) ( m_leftContainer->getWidget() ) ) ->hideIfNeeded(); <a name="l02012"></a>02012 ( ( KMdiDockContainer* ) ( m_rightContainer->getWidget() ) ) ->hideIfNeeded(); <a name="l02013"></a>02013 ( ( KMdiDockContainer* ) ( m_topContainer->getWidget() ) ) ->hideIfNeeded(); <a name="l02014"></a>02014 ( ( KMdiDockContainer* ) ( m_bottomContainer->getWidget() ) ) ->hideIfNeeded(); <a name="l02015"></a>02015 <a name="l02016"></a>02016 } <a name="l02017"></a>02017 <a name="l02018"></a>02018 <a name="l02019"></a>02019 <a name="l02020"></a>02020 <span class="keywordtype">void</span> KMdiMainFrm::finishIDEAlMode( <span class="keywordtype">bool</span> full ) <a name="l02021"></a>02021 { <a name="l02022"></a>02022 <span class="comment">// if tabified, release all views from their docking covers</span> <a name="l02023"></a>02023 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode ) <a name="l02024"></a>02024 { <a name="l02025"></a>02025 assert( m_pClose ); <a name="l02026"></a>02026 m_pClose->hide(); <a name="l02027"></a>02027 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pClose, SIGNAL( clicked() ), <span class="keyword">this</span>, SLOT( closeViewButtonPressed() ) ); <a name="l02028"></a>02028 <a name="l02029"></a>02029 <a name="l02030"></a>02030 <a class="codeRef" href="qstringlist.html">QStringList</a> leftNames; <a name="l02031"></a>02031 leftNames = prepareIdealToTabs( m_leftContainer ); <a name="l02032"></a>02032 <span class="keywordtype">int</span> leftWidth = m_leftContainer->width(); <a name="l02033"></a>02033 <a name="l02034"></a>02034 <a class="codeRef" href="qstringlist.html">QStringList</a> rightNames; <a name="l02035"></a>02035 rightNames = prepareIdealToTabs( m_rightContainer ); <a name="l02036"></a>02036 <span class="keywordtype">int</span> rightWidth = m_rightContainer->width(); <a name="l02037"></a>02037 <a name="l02038"></a>02038 <a class="codeRef" href="qstringlist.html">QStringList</a> topNames; <a name="l02039"></a>02039 topNames = prepareIdealToTabs( m_topContainer ); <a name="l02040"></a>02040 <span class="keywordtype">int</span> topHeight = m_topContainer->height(); <a name="l02041"></a>02041 <a name="l02042"></a>02042 <a class="codeRef" href="qstringlist.html">QStringList</a> bottomNames; <a name="l02043"></a>02043 bottomNames = prepareIdealToTabs( m_bottomContainer ); <a name="l02044"></a>02044 <span class="keywordtype">int</span> bottomHeight = m_bottomContainer->height(); <a name="l02045"></a>02045 <a name="l02046"></a>02046 <a name="l02047"></a>02047 kdDebug(760) << <span class="stringliteral">"leftNames"</span> << leftNames << endl; <a name="l02048"></a>02048 kdDebug(760) << <span class="stringliteral">"rightNames"</span> << rightNames << endl; <a name="l02049"></a>02049 kdDebug(760) << <span class="stringliteral">"topNames"</span> << topNames << endl; <a name="l02050"></a>02050 kdDebug(760) << <span class="stringliteral">"bottomNames"</span> << bottomNames << endl; <a name="l02051"></a>02051 <a name="l02052"></a>02052 <span class="keyword">delete</span> m_leftContainer; <a name="l02053"></a>02053 m_leftContainer = 0; <a name="l02054"></a>02054 <span class="keyword">delete</span> m_rightContainer; <a name="l02055"></a>02055 m_rightContainer = 0; <a name="l02056"></a>02056 <span class="keyword">delete</span> m_bottomContainer; <a name="l02057"></a>02057 m_bottomContainer = 0; <a name="l02058"></a>02058 <span class="keyword">delete</span> m_topContainer; <a name="l02059"></a>02059 m_topContainer = 0; <a name="l02060"></a>02060 <a name="l02061"></a>02061 <a name="l02062"></a>02062 idealToolViewsToStandardTabs( bottomNames, KDockWidget::DockBottom, bottomHeight ); <a name="l02063"></a>02063 idealToolViewsToStandardTabs( leftNames, KDockWidget::DockLeft, leftWidth ); <a name="l02064"></a>02064 idealToolViewsToStandardTabs( rightNames, KDockWidget::DockRight, rightWidth ); <a name="l02065"></a>02065 idealToolViewsToStandardTabs( topNames, KDockWidget::DockTop, topHeight ); <a name="l02066"></a>02066 <a name="l02067"></a>02067 <a class="codeRef" href="qapplication.html#sendPostedEvents-2">QApplication::sendPostedEvents</a>(); <a name="l02068"></a>02068 <a name="l02069"></a>02069 <span class="keywordflow">if</span> ( !full ) <a name="l02070"></a>02070 return ; <a name="l02071"></a>02071 <a name="l02072"></a>02072 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l02073"></a>02073 <span class="keywordflow">for</span> ( ; it.current(); ++it ) <a name="l02074"></a>02074 { <a name="l02075"></a>02075 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = it.current(); <a name="l02076"></a>02076 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l02077"></a>02077 <span class="keywordflow">continue</span>; <a name="l02078"></a>02078 <a class="codeRef" href="qsize.html">QSize</a> mins = pView-><a class="codeRef" href="qwidget.html#minimumSize">minimumSize</a>(); <a name="l02079"></a>02079 <a class="codeRef" href="qsize.html">QSize</a> maxs = pView-><a class="codeRef" href="qwidget.html#maximumSize">maximumSize</a>(); <a name="l02080"></a>02080 <a class="codeRef" href="qsize.html">QSize</a> sz = pView-><a class="codeRef" href="qwidget.html#size">size</a>(); <a name="l02081"></a>02081 <a class="codeRef" href="qwidget.html">QWidget</a>* pParent = pView-><a class="codeRef" href="qwidget.html#parentWidget">parentWidget</a>(); <a name="l02082"></a>02082 <a class="codeRef" href="qpoint.html">QPoint</a> p( pParent-><a class="codeRef" href="qwidget.html#mapToGlobal">mapToGlobal</a>( pParent-><a class="codeRef" href="qwidget.html#pos">pos</a>() ) - pParent-><a class="codeRef" href="qwidget.html#pos">pos</a>() + m_undockPositioningOffset ); <a name="l02083"></a>02083 pView-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( 0, 0, p ); <a name="l02084"></a>02084 pView-><a class="codeRef" href="qwidget.html#reparent">reparent</a>( 0, 0, p ); <a name="l02085"></a>02085 pView-><a class="codeRef" href="qwidget.html#resize">resize</a>( sz ); <a name="l02086"></a>02086 pView-><a class="code" href="classKMdiChildView.html#ad80dba92dda841efcf2aba66b5e54a8b" title="Sets the minimum size of the widget to w by h pixels.">setMinimumSize</a>( mins.<a class="codeRef" href="qsize.html#width">width</a>(), mins.<a class="codeRef" href="qsize.html#height">height</a>() ); <a name="l02087"></a>02087 pView-><a class="code" href="classKMdiChildView.html#af8d5385c7c87dad91cad376eda8f2868" title="Sets the maximum size of the widget to w by h pixels.">setMaximumSize</a>( maxs.<a class="codeRef" href="qsize.html#width">width</a>(), maxs.<a class="codeRef" href="qsize.html#height">height</a>() ); <a name="l02088"></a>02088 KDockWidget* pDockW = 0L; <a name="l02089"></a>02089 <span class="comment">// find the oldest ancestor of the current dockwidget that can be undocked</span> <a name="l02090"></a>02090 <span class="keywordflow">do</span> <a name="l02091"></a>02091 { <a name="l02092"></a>02092 <span class="keywordflow">if</span> ( pParent->inherits( <span class="stringliteral">"KDockWidget"</span> ) || pParent->inherits( <span class="stringliteral">"KDockWidget_Compat::KDockWidget"</span> ) ) <a name="l02093"></a>02093 { <a name="l02094"></a>02094 pDockW = ( KDockWidget* ) pParent; <a name="l02095"></a>02095 pDockW->undock(); <span class="comment">// this destroys the dockwiget cover, too</span> <a name="l02096"></a>02096 <span class="keywordflow">if</span> ( pParent != m_pDockbaseAreaOfDocumentViews ) <a name="l02097"></a>02097 { <a name="l02098"></a>02098 pParent-><a class="codeRef" href="qwidget.html#close">close</a>(); <a name="l02099"></a>02099 <span class="keyword">delete</span> pParent; <a name="l02100"></a>02100 } <a name="l02101"></a>02101 } <a name="l02102"></a>02102 <span class="keywordflow">else</span> <a name="l02103"></a>02103 { <a name="l02104"></a>02104 pParent = pParent-><a class="codeRef" href="qwidget.html#parentWidget">parentWidget</a>(); <a name="l02105"></a>02105 } <a name="l02106"></a>02106 } <a name="l02107"></a>02107 <span class="keywordflow">while</span> ( pParent && !pDockW ); <a name="l02108"></a>02108 <span class="keywordflow">if</span> ( centralWidget() == pParent ) <a name="l02109"></a>02109 { <a name="l02110"></a>02110 setCentralWidget( 0L ); <span class="comment">// avoid dangling pointer</span> <a name="l02111"></a>02111 } <a name="l02112"></a>02112 } <a name="l02113"></a>02113 m_pTaskBar->switchOn( <span class="keyword">true</span> ); <a name="l02114"></a>02114 <a name="l02115"></a>02115 } <a name="l02116"></a>02116 <a name="l02117"></a>02117 } <a name="l02118"></a>02118 <a name="l02119"></a>02119 <a class="codeRef" href="qstringlist.html">QStringList</a> KMdiMainFrm::prepareIdealToTabs( KDockWidget* container ) <a name="l02120"></a>02120 { <a name="l02121"></a>02121 KDockContainer * pDW = <span class="keyword">dynamic_cast<</span>KDockContainer*<span class="keyword">></span>( container->getWidget() ); <a name="l02122"></a>02122 <a class="codeRef" href="qstringlist.html">QStringList</a> widgetNames = ( ( KMdiDockContainer* ) pDW ) ->containedWidgets(); <a name="l02123"></a>02123 <span class="keywordflow">for</span> ( QStringList::iterator it = widgetNames.begin();it != widgetNames.end();++it ) <a name="l02124"></a>02124 { <a name="l02125"></a>02125 KDockWidget* dw = ( KDockWidget* ) manager() ->getDockWidgetFromName( *it ); <a name="l02126"></a>02126 dw->undock(); <a name="l02127"></a>02127 dw->setLatestKDockContainer( 0 ); <a name="l02128"></a>02128 dw->loseFormerBrotherDockWidget(); <a name="l02129"></a>02129 } <a name="l02130"></a>02130 <span class="keywordflow">return</span> widgetNames; <a name="l02131"></a>02131 } <a name="l02132"></a>02132 <a name="l02133"></a>02133 <span class="keywordtype">void</span> KMdiMainFrm::idealToolViewsToStandardTabs( <a class="codeRef" href="qstringlist.html">QStringList</a> widgetNames, KDockWidget::DockPosition pos, <span class="keywordtype">int</span> size ) <a name="l02134"></a>02134 { <a name="l02135"></a>02135 Q_UNUSED( size ) <a name="l02136"></a>02136 <a name="l02137"></a>02137 KDockWidget * mainDock = getMainDockWidget(); <a name="l02138"></a>02138 if ( mainDock->parentDockTabGroup() ) <a name="l02139"></a>02139 { <a name="l02140"></a>02140 mainDock = <span class="keyword">static_cast<</span>KDockWidget*<span class="keyword">></span>( mainDock->parentDockTabGroup() ->parent() ); <a name="l02141"></a>02141 } <a name="l02142"></a>02142 <a name="l02143"></a>02143 <span class="keywordflow">if</span> ( widgetNames.count() > 0 ) <a name="l02144"></a>02144 { <a name="l02145"></a>02145 QStringList::iterator it = widgetNames.begin(); <a name="l02146"></a>02146 KDockWidget *dwpd = manager() ->getDockWidgetFromName( *it ); <a name="l02147"></a>02147 <span class="keywordflow">if</span> ( !dwpd ) <a name="l02148"></a>02148 { <a name="l02149"></a>02149 kdDebug(760) << <span class="stringliteral">"Fatal error in finishIDEAlMode"</span> << endl; <a name="l02150"></a>02150 return ; <a name="l02151"></a>02151 } <a name="l02152"></a>02152 dwpd->manualDock( mainDock, pos, 20 ); <a name="l02153"></a>02153 ++it; <a name="l02154"></a>02154 <span class="keywordflow">for</span> ( ;it != widgetNames.end();++it ) <a name="l02155"></a>02155 { <a name="l02156"></a>02156 KDockWidget *tmpdw = manager() ->getDockWidgetFromName( *it ); <a name="l02157"></a>02157 <span class="keywordflow">if</span> ( !tmpdw ) <a name="l02158"></a>02158 { <a name="l02159"></a>02159 kdDebug(760) << <span class="stringliteral">"Fatal error in finishIDEAlMode"</span> << endl; <a name="l02160"></a>02160 return ; <a name="l02161"></a>02161 } <a name="l02162"></a>02162 tmpdw->manualDock( dwpd, KDockWidget::DockCenter, 20 ); <a name="l02163"></a>02163 } <a name="l02164"></a>02164 <a name="l02165"></a>02165 <span class="preprocessor">#if 0</span> <a name="l02166"></a>02166 <span class="preprocessor"></span> <a class="codeRef" href="qwidget.html">QWidget</a> *wid = dwpd->parentDockTabGroup(); <a name="l02167"></a>02167 <span class="keywordflow">if</span> ( !wid ) <a name="l02168"></a>02168 wid = dwpd; <a name="l02169"></a>02169 wid-><a class="codeRef" href="qwidget.html#setGeometry">setGeometry</a>( 0, 0, 20, 20 ); <a name="l02170"></a>02170 <span class="comment">/* wid->resize(</span> <a name="l02171"></a>02171 <span class="comment"> ((pos==KDockWidget::DockLeft) || (pos==KDockWidget::DockRight))?size:wid->width(),</span> <a name="l02172"></a>02172 <span class="comment"> ((pos==KDockWidget::DockLeft) || (pos==KDockWidget::DockRight))?wid->height():size);</span> <a name="l02173"></a>02173 <span class="comment"> */</span> <a name="l02174"></a>02174 <span class="preprocessor">#endif</span> <a name="l02175"></a>02175 <span class="preprocessor"></span> <a name="l02176"></a>02176 } <a name="l02177"></a>02177 <a name="l02178"></a>02178 } <a name="l02179"></a>02179 <a name="l02180"></a>02180 <a name="l02188"></a><a class="code" href="classKMdiMainFrm.html#a8d42ac5771fd824eb02c2ceb4311b3cb">02188</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a8d42ac5771fd824eb02c2ceb4311b3cb" title="Tells the MDI system a QMenu where it can insert buttons for the system menu, undock, minimize, restore actions.">KMdiMainFrm::setMenuForSDIModeSysButtons</a>( KMenuBar* pMenuBar ) <a name="l02189"></a>02189 { <a name="l02190"></a>02190 <span class="keywordflow">if</span> ( m_bSDIApplication ) <span class="comment">// there are no buttons in the menubar in this mode (although the view is always maximized)</span> <a name="l02191"></a>02191 return ; <a name="l02192"></a>02192 <a name="l02193"></a>02193 m_pMainMenuBar = pMenuBar; <a name="l02194"></a>02194 <span class="keywordflow">if</span> ( m_pMainMenuBar == 0L ) <a name="l02195"></a>02195 return ; <span class="comment">// use setMenuForSDIModeSysButtons( 0L) for unsetting the external main menu!</span> <a name="l02196"></a>02196 <a name="l02197"></a>02197 <span class="keywordflow">if</span> ( !m_pUndock ) <a name="l02198"></a>02198 m_pUndock = <span class="keyword">new</span> <a class="codeRef" href="qtoolbutton.html">QToolButton</a>( pMenuBar ); <a name="l02199"></a>02199 <span class="keywordflow">if</span> ( !m_pRestore ) <a name="l02200"></a>02200 m_pRestore = <span class="keyword">new</span> <a class="codeRef" href="qtoolbutton.html">QToolButton</a>( pMenuBar ); <a name="l02201"></a>02201 <span class="keywordflow">if</span> ( !m_pMinimize ) <a name="l02202"></a>02202 m_pMinimize = <span class="keyword">new</span> <a class="codeRef" href="qtoolbutton.html">QToolButton</a>( pMenuBar ); <a name="l02203"></a>02203 <span class="keywordflow">if</span> ( !m_pClose ) <a name="l02204"></a>02204 m_pClose = <span class="keyword">new</span> <a class="codeRef" href="qtoolbutton.html">QToolButton</a>( pMenuBar ); <a name="l02205"></a>02205 m_pUndock->setAutoRaise( <span class="keyword">false</span> ); <a name="l02206"></a>02206 m_pMinimize->setAutoRaise( <span class="keyword">false</span> ); <a name="l02207"></a>02207 m_pRestore->setAutoRaise( <span class="keyword">false</span> ); <a name="l02208"></a>02208 m_pClose->setAutoRaise( <span class="keyword">false</span> ); <a name="l02209"></a>02209 <a name="l02210"></a>02210 setSysButtonsAtMenuPosition(); <a name="l02211"></a>02211 <a name="l02212"></a>02212 <span class="keyword">delete</span> m_pUndockButtonPixmap; <a name="l02213"></a>02213 <span class="keyword">delete</span> m_pMinButtonPixmap; <a name="l02214"></a>02214 <span class="keyword">delete</span> m_pRestoreButtonPixmap; <a name="l02215"></a>02215 <span class="keyword">delete</span> m_pCloseButtonPixmap; <a name="l02216"></a>02216 <span class="comment">// create the decoration pixmaps</span> <a name="l02217"></a>02217 <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::Win95Look ) <a name="l02218"></a>02218 { <a name="l02219"></a>02219 m_pUndockButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( win_undockbutton ); <a name="l02220"></a>02220 m_pMinButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( win_minbutton ); <a name="l02221"></a>02221 m_pRestoreButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( win_restorebutton ); <a name="l02222"></a>02222 m_pCloseButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( win_closebutton ); <a name="l02223"></a>02223 } <a name="l02224"></a>02224 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDE1Look ) <a name="l02225"></a>02225 { <a name="l02226"></a>02226 m_pUndockButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde_undockbutton ); <a name="l02227"></a>02227 m_pMinButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde_minbutton ); <a name="l02228"></a>02228 m_pRestoreButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde_restorebutton ); <a name="l02229"></a>02229 m_pCloseButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde_closebutton ); <a name="l02230"></a>02230 m_pUndock->setAutoRaise( <span class="keyword">true</span> ); <a name="l02231"></a>02231 m_pMinimize->setAutoRaise( <span class="keyword">true</span> ); <a name="l02232"></a>02232 m_pRestore->setAutoRaise( <span class="keyword">true</span> ); <a name="l02233"></a>02233 m_pClose->setAutoRaise( <span class="keyword">true</span> ); <a name="l02234"></a>02234 } <a name="l02235"></a>02235 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDELook ) <a name="l02236"></a>02236 { <a name="l02237"></a>02237 m_pUndockButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2_undockbutton ); <a name="l02238"></a>02238 m_pMinButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2_minbutton ); <a name="l02239"></a>02239 m_pRestoreButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2_restorebutton ); <a name="l02240"></a>02240 m_pCloseButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2_closebutton ); <a name="l02241"></a>02241 } <a name="l02242"></a>02242 <span class="keywordflow">else</span> <a name="l02243"></a>02243 { <span class="comment">// kde2laptop look</span> <a name="l02244"></a>02244 m_pUndockButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2laptop_undockbutton ); <a name="l02245"></a>02245 m_pMinButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2laptop_minbutton ); <a name="l02246"></a>02246 m_pRestoreButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2laptop_restorebutton ); <a name="l02247"></a>02247 m_pCloseButtonPixmap = <span class="keyword">new</span> <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2laptop_closebutton ); <a name="l02248"></a>02248 } <a name="l02249"></a>02249 <a name="l02250"></a>02250 m_pUndock->hide(); <a name="l02251"></a>02251 m_pMinimize->hide(); <a name="l02252"></a>02252 m_pRestore->hide(); <a name="l02253"></a>02253 m_pClose->hide(); <a name="l02254"></a>02254 <a name="l02255"></a>02255 m_pUndock->setPixmap( *m_pUndockButtonPixmap ); <a name="l02256"></a>02256 m_pMinimize->setPixmap( *m_pMinButtonPixmap ); <a name="l02257"></a>02257 m_pRestore->setPixmap( *m_pRestoreButtonPixmap ); <a name="l02258"></a>02258 m_pClose->setPixmap( *m_pCloseButtonPixmap ); <a name="l02259"></a>02259 } <a name="l02260"></a>02260 <a name="l02261"></a><a class="code" href="classKMdiMainFrm.html#aed0cdce82bca641f64dab9390bdf60c1">02261</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#aed0cdce82bca641f64dab9390bdf60c1" title="If there's a main menubar given, it will create the 4 maximize mode buttons there (undock...">KMdiMainFrm::setSysButtonsAtMenuPosition</a>() <a name="l02262"></a>02262 { <a name="l02263"></a>02263 <span class="keywordflow">if</span> ( m_pMainMenuBar == 0L ) <a name="l02264"></a>02264 return ; <a name="l02265"></a>02265 <span class="keywordflow">if</span> ( m_pMainMenuBar->parentWidget() == 0L ) <a name="l02266"></a>02266 <span class="keywordflow">return</span> ; <a name="l02267"></a>02267 <a name="l02268"></a>02268 <span class="keywordtype">int</span> menuW = m_pMainMenuBar->parentWidget() ->width(); <a name="l02269"></a>02269 <span class="keywordtype">int</span> h; <a name="l02270"></a>02270 <span class="keywordtype">int</span> y; <a name="l02271"></a>02271 <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::Win95Look ) <a name="l02272"></a>02272 h = 16; <a name="l02273"></a>02273 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDE1Look ) <a name="l02274"></a>02274 h = 20; <a name="l02275"></a>02275 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDELook ) <a name="l02276"></a>02276 h = 16; <a name="l02277"></a>02277 <span class="keywordflow">else</span> <a name="l02278"></a>02278 h = 14; <a name="l02279"></a>02279 y = m_pMainMenuBar->height() / 2 - h / 2; <a name="l02280"></a>02280 <a name="l02281"></a>02281 <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDELaptopLook ) <a name="l02282"></a>02282 { <a name="l02283"></a>02283 <span class="keywordtype">int</span> w = 27; <a name="l02284"></a>02284 m_pUndock->setGeometry( ( menuW - ( w * 3 ) - 5 ), y, w, h ); <a name="l02285"></a>02285 m_pMinimize->setGeometry( ( menuW - ( w * 2 ) - 5 ), y, w, h ); <a name="l02286"></a>02286 m_pRestore->setGeometry( ( menuW - w - 5 ), y, w, h ); <a name="l02287"></a>02287 } <a name="l02288"></a>02288 <span class="keywordflow">else</span> <a name="l02289"></a>02289 { <a name="l02290"></a>02290 m_pUndock->setGeometry( ( menuW - ( h * 4 ) - 5 ), y, h, h ); <a name="l02291"></a>02291 m_pMinimize->setGeometry( ( menuW - ( h * 3 ) - 5 ), y, h, h ); <a name="l02292"></a>02292 m_pRestore->setGeometry( ( menuW - ( h * 2 ) - 5 ), y, h, h ); <a name="l02293"></a>02293 m_pClose->setGeometry( ( menuW - h - 5 ), y, h, h ); <a name="l02294"></a>02294 } <a name="l02295"></a>02295 } <a name="l02296"></a>02296 <a name="l02298"></a><a class="code" href="classKMdiMainFrm.html#ae5aec7cf5ea6930921140969e85e5b69">02298</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ae5aec7cf5ea6930921140969e85e5b69" title="Activates the next open view.">KMdiMainFrm::activateNextWin</a>() <a name="l02299"></a>02299 { <a name="l02300"></a>02300 KMdiIterator<KMdiChildView*>* it = createIterator(); <a name="l02301"></a>02301 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* aWin = activeWindow(); <a name="l02302"></a>02302 <span class="keywordflow">for</span> ( it->first(); !it->isDone(); it->next() ) <a name="l02303"></a>02303 { <a name="l02304"></a>02304 <span class="keywordflow">if</span> ( it->currentItem() == aWin ) <a name="l02305"></a>02305 { <a name="l02306"></a>02306 it->next(); <a name="l02307"></a>02307 <span class="keywordflow">if</span> ( !it->currentItem() ) <a name="l02308"></a>02308 { <a name="l02309"></a>02309 it->first(); <a name="l02310"></a>02310 } <a name="l02311"></a>02311 <span class="keywordflow">if</span> ( it->currentItem() ) <a name="l02312"></a>02312 { <a name="l02313"></a>02313 activateView( it->currentItem() ); <a name="l02314"></a>02314 } <a name="l02315"></a>02315 <span class="keywordflow">break</span>; <a name="l02316"></a>02316 } <a name="l02317"></a>02317 } <a name="l02318"></a>02318 <span class="keyword">delete</span> it; <a name="l02319"></a>02319 } <a name="l02320"></a>02320 <a name="l02322"></a><a class="code" href="classKMdiMainFrm.html#a5d565c49d1e7d3473b7ef787ca8af8ca">02322</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a5d565c49d1e7d3473b7ef787ca8af8ca" title="Activates the previous open view.">KMdiMainFrm::activatePrevWin</a>() <a name="l02323"></a>02323 { <a name="l02324"></a>02324 KMdiIterator<KMdiChildView*>* it = createIterator(); <a name="l02325"></a>02325 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* aWin = activeWindow(); <a name="l02326"></a>02326 <span class="keywordflow">for</span> ( it->first(); !it->isDone(); it->next() ) <a name="l02327"></a>02327 { <a name="l02328"></a>02328 <span class="keywordflow">if</span> ( it->currentItem() == aWin ) <a name="l02329"></a>02329 { <a name="l02330"></a>02330 it->prev(); <a name="l02331"></a>02331 <span class="keywordflow">if</span> ( !it->currentItem() ) <a name="l02332"></a>02332 { <a name="l02333"></a>02333 it->last(); <a name="l02334"></a>02334 } <a name="l02335"></a>02335 <span class="keywordflow">if</span> ( it->currentItem() ) <a name="l02336"></a>02336 { <a name="l02337"></a>02337 activateView( it->currentItem() ); <a name="l02338"></a>02338 } <a name="l02339"></a>02339 <span class="keywordflow">break</span>; <a name="l02340"></a>02340 } <a name="l02341"></a>02341 } <a name="l02342"></a>02342 <span class="keyword">delete</span> it; <a name="l02343"></a>02343 } <a name="l02344"></a>02344 <a name="l02346"></a><a class="code" href="classKMdiMainFrm.html#a68be9feab1ee2c93dbb36033a0390c21">02346</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a68be9feab1ee2c93dbb36033a0390c21" title="Activates the view first viewed concerning to the access time.">KMdiMainFrm::activateFirstWin</a>() <a name="l02347"></a>02347 { <a name="l02348"></a>02348 m_bSwitching= <span class="keyword">true</span>; <span class="comment">// flag that we are currently switching between windows</span> <a name="l02349"></a>02349 KMdiIterator<KMdiChildView*>* it = createIterator(); <a name="l02350"></a>02350 <a class="codeRef" href="qmap.html">QMap<QDateTime, KMdiChildView*></a> m; <a name="l02351"></a>02351 <span class="keywordflow">for</span> ( it->first(); !it->isDone(); it->next() ) <a name="l02352"></a>02352 { <a name="l02353"></a>02353 m.<a class="codeRef" href="qmap.html#insert">insert</a>( it->currentItem() ->getTimeStamp(), it->currentItem() ); <a name="l02354"></a>02354 } <a name="l02355"></a>02355 <a name="l02356"></a>02356 <span class="keywordflow">if</span> ( !activeWindow() ) <a name="l02357"></a>02357 <span class="keywordflow">return</span> ; <a name="l02358"></a>02358 <a name="l02359"></a>02359 <a class="codeRef" href="qdatetime.html">QDateTime</a> current = activeWindow() ->getTimeStamp(); <a name="l02360"></a>02360 <a class="codeRef" href="qmap.html">QMap<QDateTime, KMdiChildView*>::iterator</a> pos( m.<a class="codeRef" href="qmap.html#find">find</a>( current ) ); <a name="l02361"></a>02361 <a class="codeRef" href="qmap.html">QMap<QDateTime, KMdiChildView*>::iterator</a> newPos = pos; <a name="l02362"></a>02362 <span class="keywordflow">if</span> ( pos != m.<a class="codeRef" href="qmap.html#end">end</a>() ) <a name="l02363"></a>02363 { <a name="l02364"></a>02364 ++newPos; <a name="l02365"></a>02365 } <a name="l02366"></a>02366 <span class="keywordflow">if</span> ( newPos != m.<a class="codeRef" href="qmap.html#end">end</a>() ) <a name="l02367"></a>02367 { <span class="comment">// look ahead</span> <a name="l02368"></a>02368 ++pos; <a name="l02369"></a>02369 } <a name="l02370"></a>02370 <span class="keywordflow">else</span> <a name="l02371"></a>02371 { <a name="l02372"></a>02372 pos = m.<a class="codeRef" href="qmap.html#begin">begin</a>(); <a name="l02373"></a>02373 } <a name="l02374"></a>02374 activateView( pos.data() ); <a name="l02375"></a>02375 <span class="keyword">delete</span> it; <a name="l02376"></a>02376 } <a name="l02377"></a>02377 <a name="l02379"></a><a class="code" href="classKMdiMainFrm.html#a5b4ee32a32453498dfa662f8969a1c0c">02379</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a5b4ee32a32453498dfa662f8969a1c0c" title="Activates the view last viewed concerning to the access time.">KMdiMainFrm::activateLastWin</a>() <a name="l02380"></a>02380 { <a name="l02381"></a>02381 m_bSwitching= <span class="keyword">true</span>; <span class="comment">// flag that we are currently switching between windows</span> <a name="l02382"></a>02382 KMdiIterator<KMdiChildView*>* it = createIterator(); <a name="l02383"></a>02383 <a class="codeRef" href="qmap.html">QMap<QDateTime, KMdiChildView*></a> m; <a name="l02384"></a>02384 <span class="keywordflow">for</span> ( it->first(); !it->isDone(); it->next() ) <a name="l02385"></a>02385 { <a name="l02386"></a>02386 m.<a class="codeRef" href="qmap.html#insert">insert</a>( it->currentItem() ->getTimeStamp(), it->currentItem() ); <a name="l02387"></a>02387 } <a name="l02388"></a>02388 <a name="l02389"></a>02389 <span class="keywordflow">if</span> ( !activeWindow() ) <a name="l02390"></a>02390 <span class="keywordflow">return</span> ; <a name="l02391"></a>02391 <a name="l02392"></a>02392 <a class="codeRef" href="qdatetime.html">QDateTime</a> current = activeWindow() ->getTimeStamp(); <a name="l02393"></a>02393 <a class="codeRef" href="qmap.html">QMap<QDateTime, KMdiChildView*>::iterator</a> pos( m.<a class="codeRef" href="qmap.html#find">find</a>( current ) ); <a name="l02394"></a>02394 <span class="keywordflow">if</span> ( pos != m.<a class="codeRef" href="qmap.html#begin">begin</a>() ) <a name="l02395"></a>02395 { <a name="l02396"></a>02396 --pos; <a name="l02397"></a>02397 } <a name="l02398"></a>02398 <span class="keywordflow">else</span> <a name="l02399"></a>02399 { <a name="l02400"></a>02400 pos = m.<a class="codeRef" href="qmap.html#end">end</a>(); <a name="l02401"></a>02401 --pos; <a name="l02402"></a>02402 } <a name="l02403"></a>02403 activateView( pos.data() ); <a name="l02404"></a>02404 <span class="keyword">delete</span> it; <a name="l02405"></a>02405 } <a name="l02406"></a>02406 <a name="l02408"></a><a class="code" href="classKMdiMainFrm.html#a71008f9cc9304e0ac10404ec6ae3d541">02408</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a71008f9cc9304e0ac10404ec6ae3d541" title="Activates the view with the tab page index (TabPage mode only)">KMdiMainFrm::activateView</a>( <span class="keywordtype">int</span> index ) <a name="l02409"></a>02409 { <a name="l02410"></a>02410 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * pView = m_pDocumentViews->first(); <a name="l02411"></a>02411 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0; pView && ( i < index ); i++ ) <a name="l02412"></a>02412 { <a name="l02413"></a>02413 pView = m_pDocumentViews->next(); <a name="l02414"></a>02414 } <a name="l02415"></a>02415 <span class="keywordflow">if</span> ( pView ) <a name="l02416"></a>02416 { <a name="l02417"></a>02417 pView-><a class="code" href="classKMdiChildView.html#a41d61200c3004a24ff4c75c5f75a74d7" title="This method does the same as focusInEvent().">activate</a>(); <a name="l02418"></a>02418 } <a name="l02419"></a>02419 } <a name="l02420"></a>02420 <a name="l02422"></a><a class="code" href="classKMdiMainFrm.html#a2aa023554e79651f3b23aad6703dc1c4">02422</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a2aa023554e79651f3b23aad6703dc1c4" title="If in Childframe mode, we can switch between maximized or restored shown MDI views.">KMdiMainFrm::setEnableMaximizedChildFrmMode</a>( <span class="keywordtype">bool</span> enableMaxChildFrameMode ) <a name="l02423"></a>02423 { <a name="l02424"></a>02424 <span class="keywordflow">if</span> ( enableMaxChildFrameMode ) <a name="l02425"></a>02425 { <a name="l02426"></a>02426 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Turning on maximized child frame mode"</span> << endl; <a name="l02427"></a>02427 m_bMaximizedChildFrmMode = <span class="keyword">true</span>; <a name="l02428"></a>02428 <a name="l02429"></a>02429 <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* pCurrentChild = m_pMdi->topChild(); <a name="l02430"></a>02430 <a name="l02431"></a>02431 <span class="comment">//If we have no child or there is no menubar, we do nothing</span> <a name="l02432"></a>02432 <span class="keywordflow">if</span> ( !pCurrentChild || !m_pMainMenuBar ) <a name="l02433"></a>02433 return ; <a name="l02434"></a>02434 <a name="l02435"></a>02435 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pUndock, SIGNAL( clicked() ), pCurrentChild, SLOT( undockPressed() ) ); <a name="l02436"></a>02436 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMinimize, SIGNAL( clicked() ), pCurrentChild, SLOT( minimizePressed() ) ); <a name="l02437"></a>02437 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pRestore, SIGNAL( clicked() ), pCurrentChild, SLOT( maximizePressed() ) ); <a name="l02438"></a>02438 m_pMinimize->show(); <a name="l02439"></a>02439 m_pUndock->show(); <a name="l02440"></a>02440 m_pRestore->show(); <a name="l02441"></a>02441 <a name="l02442"></a>02442 <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDELaptopLook ) <a name="l02443"></a>02443 { <a name="l02444"></a>02444 m_pMainMenuBar->insertItem( <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2laptop_closebutton_menu ), m_pMdi->topChild(), SLOT( closePressed() ), 0, -1, 0 ); <a name="l02445"></a>02445 } <a name="l02446"></a>02446 <span class="keywordflow">else</span> <a name="l02447"></a>02447 { <a name="l02448"></a>02448 m_pMainMenuBar->insertItem( *pCurrentChild-><a class="code" href="classKMdiChildFrm.html#ac1c8354a76dde03b5aa52df2c689669f" title="Returns the child frame icon.">icon</a>(), pCurrentChild-><a class="code" href="classKMdiChildFrm.html#ad7cf5ffa04f91a42199e22c9e39bc97d" title="Returns the system menu.">systemMenu</a>(), -1, 0 ); <a name="l02449"></a>02449 <span class="keywordflow">if</span> ( m_pClose ) <a name="l02450"></a>02450 { <a name="l02451"></a>02451 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pClose, SIGNAL( clicked() ), pCurrentChild, SLOT( closePressed() ) ); <a name="l02452"></a>02452 m_pClose->show(); <a name="l02453"></a>02453 } <a name="l02454"></a>02454 <span class="keywordflow">else</span> <a name="l02455"></a>02455 kdDebug(760) << k_funcinfo << <span class="stringliteral">"no close button. things won't behave correctly"</span> << endl; <a name="l02456"></a>02456 } <a name="l02457"></a>02457 } <a name="l02458"></a>02458 <span class="keywordflow">else</span> <a name="l02459"></a>02459 { <a name="l02460"></a>02460 <span class="keywordflow">if</span> ( !m_bMaximizedChildFrmMode ) <a name="l02461"></a>02461 return ; <span class="comment">// already set, nothing to do</span> <a name="l02462"></a>02462 <a name="l02463"></a>02463 kdDebug(760) << k_funcinfo << <span class="stringliteral">"Turning off maximized child frame mode"</span> << endl; <a name="l02464"></a>02464 m_bMaximizedChildFrmMode = <span class="keyword">false</span>; <a name="l02465"></a>02465 <a name="l02466"></a>02466 <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* pFrmChild = m_pMdi->topChild(); <a name="l02467"></a>02467 <span class="keywordflow">if</span> ( pFrmChild && pFrmChild->m_pClient && pFrmChild-><a class="code" href="classKMdiChildFrm.html#ab775a728239dff0fb0a267f9e2768164" title="Returns the current state of the window.">state</a>() == KMdiChildFrm::Maximized ) <a name="l02468"></a>02468 { <a name="l02469"></a>02469 pFrmChild->m_pClient-><a class="code" href="classKMdiChildView.html#a3b21b5acdcfe24b542ec677660c89c2d" title="Restores this window to its normal size.">restore</a>(); <a name="l02470"></a>02470 switchOffMaximizeModeForMenu( pFrmChild ); <a name="l02471"></a>02471 } <a name="l02472"></a>02472 } <a name="l02473"></a>02473 } <a name="l02474"></a>02474 <a name="l02476"></a><a class="code" href="classKMdiMainFrm.html#ad95cc504e820ba4a006174be4af56cba">02476</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ad95cc504e820ba4a006174be4af56cba" title="Turns the system buttons for maximize mode (SDI mode) off, and disconnects them.">KMdiMainFrm::switchOffMaximizeModeForMenu</a>( <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* oldChild ) <a name="l02477"></a>02477 { <a name="l02478"></a>02478 <span class="comment">// if there is no menubar given, those system buttons aren't possible</span> <a name="l02479"></a>02479 <span class="keywordflow">if</span> ( !m_pMainMenuBar ) <a name="l02480"></a>02480 return ; <a name="l02481"></a>02481 <a name="l02482"></a>02482 m_pMainMenuBar->removeItem( m_pMainMenuBar->idAt( 0 ) ); <a name="l02483"></a>02483 <a name="l02484"></a>02484 <span class="keywordflow">if</span> ( oldChild ) <a name="l02485"></a>02485 { <a name="l02486"></a>02486 Q_ASSERT( m_pClose ); <a name="l02487"></a>02487 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pUndock, SIGNAL( clicked() ), oldChild, SLOT( undockPressed() ) ); <a name="l02488"></a>02488 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pMinimize, SIGNAL( clicked() ), oldChild, SLOT( minimizePressed() ) ); <a name="l02489"></a>02489 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pRestore, SIGNAL( clicked() ), oldChild, SLOT( maximizePressed() ) ); <a name="l02490"></a>02490 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pClose, SIGNAL( clicked() ), oldChild, SLOT( closePressed() ) ); <a name="l02491"></a>02491 } <a name="l02492"></a>02492 m_pUndock->hide(); <a name="l02493"></a>02493 m_pMinimize->hide(); <a name="l02494"></a>02494 m_pRestore->hide(); <a name="l02495"></a>02495 m_pClose->hide(); <a name="l02496"></a>02496 } <a name="l02497"></a>02497 <a name="l02499"></a><a class="code" href="classKMdiMainFrm.html#ac0f1935a40aea3791a9675b097224627">02499</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ac0f1935a40aea3791a9675b097224627" title="Reconnects the system buttons form maximize mode (SDI mode) with the new child frame.">KMdiMainFrm::updateSysButtonConnections</a>( <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* oldChild, <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a>* newChild ) <a name="l02500"></a>02500 { <a name="l02501"></a>02501 <span class="comment">//qDebug("updateSysButtonConnections");</span> <a name="l02502"></a>02502 <span class="comment">// if there is no menubar given, those system buttons aren't possible</span> <a name="l02503"></a>02503 <span class="keywordflow">if</span> ( !m_pMainMenuBar ) <a name="l02504"></a>02504 return ; <a name="l02505"></a>02505 <a name="l02506"></a>02506 <span class="keywordflow">if</span> ( newChild ) <a name="l02507"></a>02507 { <a name="l02508"></a>02508 <span class="keywordflow">if</span> ( frameDecorOfAttachedViews() == KMdi::KDELaptopLook ) <a name="l02509"></a>02509 m_pMainMenuBar->insertItem( <a class="codeRef" href="qpixmap.html">QPixmap</a>( kde2laptop_closebutton_menu ), newChild, SLOT( closePressed() ), 0, -1, 0 ); <a name="l02510"></a>02510 <span class="keywordflow">else</span> <a name="l02511"></a>02511 m_pMainMenuBar->insertItem( *newChild-><a class="code" href="classKMdiChildFrm.html#ac1c8354a76dde03b5aa52df2c689669f" title="Returns the child frame icon.">icon</a>(), newChild-><a class="code" href="classKMdiChildFrm.html#ad7cf5ffa04f91a42199e22c9e39bc97d" title="Returns the system menu.">systemMenu</a>(), -1, 0 ); <a name="l02512"></a>02512 } <a name="l02513"></a>02513 <a name="l02514"></a>02514 <span class="keywordflow">if</span> ( oldChild ) <a name="l02515"></a>02515 { <a name="l02516"></a>02516 m_pMainMenuBar->removeItem( m_pMainMenuBar->idAt( 1 ) ); <a name="l02517"></a>02517 Q_ASSERT( m_pClose ); <a name="l02518"></a>02518 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pUndock, SIGNAL( clicked() ), oldChild, SLOT( undockPressed() ) ); <a name="l02519"></a>02519 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pMinimize, SIGNAL( clicked() ), oldChild, SLOT( minimizePressed() ) ); <a name="l02520"></a>02520 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pRestore, SIGNAL( clicked() ), oldChild, SLOT( maximizePressed() ) ); <a name="l02521"></a>02521 <a class="codeRef" href="qobject.html#disconnect">QObject::disconnect</a>( m_pClose, SIGNAL( clicked() ), oldChild, SLOT( closePressed() ) ); <a name="l02522"></a>02522 } <a name="l02523"></a>02523 <span class="keywordflow">if</span> ( newChild ) <a name="l02524"></a>02524 { <a name="l02525"></a>02525 Q_ASSERT( m_pClose ); <a name="l02526"></a>02526 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pUndock, SIGNAL( clicked() ), newChild, SLOT( undockPressed() ) ); <a name="l02527"></a>02527 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pMinimize, SIGNAL( clicked() ), newChild, SLOT( minimizePressed() ) ); <a name="l02528"></a>02528 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pRestore, SIGNAL( clicked() ), newChild, SLOT( maximizePressed() ) ); <a name="l02529"></a>02529 <a class="codeRef" href="qobject.html#connect">QObject::connect</a>( m_pClose, SIGNAL( clicked() ), newChild, SLOT( closePressed() ) ); <a name="l02530"></a>02530 } <a name="l02531"></a>02531 } <a name="l02532"></a>02532 <a name="l02534"></a><a class="code" href="classKMdiMainFrm.html#a3d3107362757b19ce41ebf5d82c1d7ee">02534</a> <span class="keywordtype">bool</span> <a class="code" href="classKMdiMainFrm.html#a3d3107362757b19ce41ebf5d82c1d7ee" title="Shows the view taskbar.">KMdiMainFrm::isViewTaskBarOn</a>() <a name="l02535"></a>02535 { <a name="l02536"></a>02536 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l02537"></a>02537 <span class="keywordflow">return</span> m_pTaskBar->isSwitchedOn(); <a name="l02538"></a>02538 <span class="keywordflow">else</span> <a name="l02539"></a>02539 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l02540"></a>02540 } <a name="l02541"></a>02541 <a name="l02543"></a><a class="code" href="classKMdiMainFrm.html#a188d2d329f315dde859a73b9a78cabba">02543</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a188d2d329f315dde859a73b9a78cabba" title="Shows the view taskbar.">KMdiMainFrm::showViewTaskBar</a>() <a name="l02544"></a>02544 { <a name="l02545"></a>02545 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l02546"></a>02546 m_pTaskBar->switchOn( <span class="keyword">true</span> ); <a name="l02547"></a>02547 } <a name="l02548"></a>02548 <a name="l02550"></a><a class="code" href="classKMdiMainFrm.html#a0af300e24e6085df14345a26f54eb032">02550</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a0af300e24e6085df14345a26f54eb032" title="Hides the view taskbar.">KMdiMainFrm::hideViewTaskBar</a>() <a name="l02551"></a>02551 { <a name="l02552"></a>02552 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l02553"></a>02553 m_pTaskBar->switchOn( <span class="keyword">false</span> ); <a name="l02554"></a>02554 } <a name="l02555"></a>02555 <a name="l02556"></a>02556 <span class="comment">//=============== fillWindowMenu ===============//</span> <a name="l02557"></a><a class="code" href="classKMdiMainFrm.html#ae77aff293ffa3cbf2cfb42f3e1ce559f">02557</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ae77aff293ffa3cbf2cfb42f3e1ce559f" title="Update of the window menu contents.">KMdiMainFrm::fillWindowMenu</a>() <a name="l02558"></a>02558 { <a name="l02559"></a>02559 <span class="keywordtype">bool</span> tabPageMode = <span class="keyword">false</span>; <a name="l02560"></a>02560 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::TabPageMode ) <a name="l02561"></a>02561 tabPageMode = <span class="keyword">true</span>; <a name="l02562"></a>02562 <a name="l02563"></a>02563 <span class="keywordtype">bool</span> IDEAlMode = <span class="keyword">false</span>; <a name="l02564"></a>02564 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::IDEAlMode ) <a name="l02565"></a>02565 IDEAlMode = <span class="keyword">true</span>; <a name="l02566"></a>02566 <a name="l02567"></a>02567 <span class="keywordtype">bool</span> noViewOpened = <span class="keyword">false</span>; <a name="l02568"></a>02568 <span class="keywordflow">if</span> ( m_pDocumentViews->isEmpty() ) <a name="l02569"></a>02569 noViewOpened = <span class="keyword">true</span>; <a name="l02570"></a>02570 <a name="l02571"></a>02571 <span class="comment">// construct the menu and its submenus</span> <a name="l02572"></a>02572 <span class="keywordflow">if</span> ( !m_bClearingOfWindowMenuBlocked ) <a name="l02573"></a>02573 m_pWindowMenu->clear(); <a name="l02574"></a>02574 <a name="l02575"></a>02575 d->closeWindowAction->plug(m_pWindowMenu); <a name="l02576"></a>02576 <a name="l02577"></a>02577 <span class="keywordtype">int</span> closeAllId = m_pWindowMenu->insertItem( i18n( <span class="stringliteral">"Close &All"</span> ), <span class="keyword">this</span>, SLOT( closeAllViews() ) ); <a name="l02578"></a>02578 <span class="keywordflow">if</span> ( noViewOpened ) <a name="l02579"></a>02579 { <a name="l02580"></a>02580 d->closeWindowAction->setEnabled(<span class="keyword">false</span>); <a name="l02581"></a>02581 m_pWindowMenu->setItemEnabled( closeAllId, <span class="keyword">false</span> ); <a name="l02582"></a>02582 } <a name="l02583"></a>02583 <a name="l02584"></a>02584 <span class="keywordflow">if</span> ( !tabPageMode && !IDEAlMode ) <a name="l02585"></a>02585 { <a name="l02586"></a>02586 <span class="keywordtype">int</span> iconifyId = m_pWindowMenu->insertItem( i18n( <span class="stringliteral">"&Minimize All"</span> ), <span class="keyword">this</span>, SLOT( iconifyAllViews() ) ); <a name="l02587"></a>02587 <span class="keywordflow">if</span> ( noViewOpened ) <a name="l02588"></a>02588 m_pWindowMenu->setItemEnabled( iconifyId, <span class="keyword">false</span> ); <a name="l02589"></a>02589 } <a name="l02590"></a>02590 <a name="l02591"></a>02591 m_pWindowMenu->insertSeparator(); <a name="l02592"></a>02592 m_pWindowMenu->insertItem( i18n( <span class="stringliteral">"&MDI Mode"</span> ), m_pMdiModeMenu ); <a name="l02593"></a>02593 m_pMdiModeMenu->clear(); <a name="l02594"></a>02594 m_pMdiModeMenu->insertItem( i18n( <span class="stringliteral">"&Toplevel Mode"</span> ), <span class="keyword">this</span>, SLOT( switchToToplevelMode() ) ); <a name="l02595"></a>02595 m_pMdiModeMenu->insertItem( i18n( <span class="stringliteral">"C&hildframe Mode"</span> ), <span class="keyword">this</span>, SLOT( switchToChildframeMode() ) ); <a name="l02596"></a>02596 m_pMdiModeMenu->insertItem( i18n( <span class="stringliteral">"Ta&b Page Mode"</span> ), <span class="keyword">this</span>, SLOT( switchToTabPageMode() ) ); <a name="l02597"></a>02597 m_pMdiModeMenu->insertItem( i18n( <span class="stringliteral">"I&DEAl Mode"</span> ), <span class="keyword">this</span>, SLOT( switchToIDEAlMode() ) ); <a name="l02598"></a>02598 <span class="keywordflow">switch</span> ( m_mdiMode ) <a name="l02599"></a>02599 { <a name="l02600"></a>02600 <span class="keywordflow">case</span> KMdi::ToplevelMode: <a name="l02601"></a>02601 m_pMdiModeMenu->setItemChecked( m_pMdiModeMenu->idAt( 0 ), true ); <a name="l02602"></a>02602 <span class="keywordflow">break</span>; <a name="l02603"></a>02603 <span class="keywordflow">case</span> KMdi::ChildframeMode: <a name="l02604"></a>02604 m_pMdiModeMenu->setItemChecked( m_pMdiModeMenu->idAt( 1 ), true ); <a name="l02605"></a>02605 <span class="keywordflow">break</span>; <a name="l02606"></a>02606 <span class="keywordflow">case</span> KMdi::TabPageMode: <a name="l02607"></a>02607 m_pMdiModeMenu->setItemChecked( m_pMdiModeMenu->idAt( 2 ), true ); <a name="l02608"></a>02608 <span class="keywordflow">break</span>; <a name="l02609"></a>02609 <span class="keywordflow">case</span> KMdi::IDEAlMode: <a name="l02610"></a>02610 m_pMdiModeMenu->setItemChecked( m_pMdiModeMenu->idAt( 3 ), true ); <a name="l02611"></a>02611 <span class="keywordflow">break</span>; <a name="l02612"></a>02612 <span class="keywordflow">default</span>: <a name="l02613"></a>02613 <span class="keywordflow">break</span>; <a name="l02614"></a>02614 } <a name="l02615"></a>02615 <a name="l02616"></a>02616 m_pWindowMenu->insertSeparator(); <a name="l02617"></a>02617 <span class="keywordflow">if</span> ( !tabPageMode && !IDEAlMode ) <a name="l02618"></a>02618 { <a name="l02619"></a>02619 <span class="keywordtype">int</span> placMenuId = m_pWindowMenu->insertItem( i18n( <span class="stringliteral">"&Tile"</span> ), m_pPlacingMenu ); <a name="l02620"></a>02620 m_pPlacingMenu->clear(); <a name="l02621"></a>02621 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Ca&scade Windows"</span> ), m_pMdi, SLOT( cascadeWindows() ) ); <a name="l02622"></a>02622 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Cascade &Maximized"</span> ), m_pMdi, SLOT( cascadeMaximized() ) ); <a name="l02623"></a>02623 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Expand &Vertically"</span> ), m_pMdi, SLOT( expandVertical() ) ); <a name="l02624"></a>02624 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Expand &Horizontally"</span> ), m_pMdi, SLOT( expandHorizontal() ) ); <a name="l02625"></a>02625 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Tile &Non-Overlapped"</span> ), m_pMdi, SLOT( tileAnodine() ) ); <a name="l02626"></a>02626 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Tile Overla&pped"</span> ), m_pMdi, SLOT( tilePragma() ) ); <a name="l02627"></a>02627 m_pPlacingMenu->insertItem( i18n( <span class="stringliteral">"Tile V&ertically"</span> ), m_pMdi, SLOT( tileVertically() ) ); <a name="l02628"></a>02628 <span class="keywordflow">if</span> ( m_mdiMode == KMdi::ToplevelMode ) <a name="l02629"></a>02629 { <a name="l02630"></a>02630 m_pWindowMenu->setItemEnabled( placMenuId, <span class="keyword">false</span> ); <a name="l02631"></a>02631 } <a name="l02632"></a>02632 m_pWindowMenu->insertSeparator(); <a name="l02633"></a>02633 <span class="keywordtype">int</span> dockUndockId = m_pWindowMenu->insertItem( i18n( <span class="stringliteral">"&Dock/Undock"</span> ), m_pDockMenu ); <a name="l02634"></a>02634 m_pDockMenu->clear(); <a name="l02635"></a>02635 m_pWindowMenu->insertSeparator(); <a name="l02636"></a>02636 <span class="keywordflow">if</span> ( noViewOpened ) <a name="l02637"></a>02637 { <a name="l02638"></a>02638 m_pWindowMenu->setItemEnabled( placMenuId, <span class="keyword">false</span> ); <a name="l02639"></a>02639 m_pWindowMenu->setItemEnabled( dockUndockId, <span class="keyword">false</span> ); <a name="l02640"></a>02640 } <a name="l02641"></a>02641 } <a name="l02642"></a>02642 <span class="keywordtype">int</span> entryCount = m_pWindowMenu->count(); <a name="l02643"></a>02643 <a name="l02644"></a>02644 <span class="comment">// for all child frame windows: give an ID to every window and connect them in the end with windowMenuItemActivated()</span> <a name="l02645"></a>02645 <span class="keywordtype">int</span> i = 100; <a name="l02646"></a>02646 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = 0L; <a name="l02647"></a>02647 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l02648"></a>02648 <a class="codeRef" href="qvaluelist.html">QValueList<QDateTime></a> timeStamps; <a name="l02649"></a>02649 <span class="keywordflow">for</span> ( ; it.<a class="codeRef" href="qptrlistiterator.html#current">current</a>(); ++it ) <a name="l02650"></a>02650 { <a name="l02651"></a>02651 pView = it.<a class="codeRef" href="qptrlistiterator.html#current">current</a>(); <a name="l02652"></a>02652 <a class="codeRef" href="qdatetime.html">QDateTime</a> timeStamp( pView-><a class="code" href="classKMdiChildView.html#abc12e58a23d7b5aae87acf7b50450166" title="Recall a previously remembered time, i.e.">getTimeStamp</a>() ); <a name="l02653"></a>02653 <a name="l02654"></a>02654 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l02655"></a>02655 { <a name="l02656"></a>02656 <span class="keywordflow">continue</span>; <a name="l02657"></a>02657 } <a name="l02658"></a>02658 <a name="l02659"></a>02659 <a class="codeRef" href="qstring.html">QString</a> item; <a name="l02660"></a>02660 <span class="comment">// set titles of minimized windows in brackets</span> <a name="l02661"></a>02661 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aa1e9a385eb97176fc126346d8a4889d5" title="Tells if the window is minimized when attached to the Mdi manager, or if it is VISIBLE when 'floating...">isMinimized</a>() ) <a name="l02662"></a>02662 { <a name="l02663"></a>02663 item += <span class="stringliteral">"("</span>; <a name="l02664"></a>02664 item += pView-><a class="code" href="classKMdiChildView.html#adc5ca28f73af36d1739cee950af1fb5c" title="Returns the caption of the child window (different from the caption on the button in the taskbar)...">caption</a>(); <a name="l02665"></a>02665 item += <span class="stringliteral">")"</span>; <a name="l02666"></a>02666 } <a name="l02667"></a>02667 <span class="keywordflow">else</span> <a name="l02668"></a>02668 { <a name="l02669"></a>02669 item += <span class="stringliteral">" "</span>; <a name="l02670"></a>02670 item += pView-><a class="code" href="classKMdiChildView.html#adc5ca28f73af36d1739cee950af1fb5c" title="Returns the caption of the child window (different from the caption on the button in the taskbar)...">caption</a>(); <a name="l02671"></a>02671 } <a name="l02672"></a>02672 <a name="l02673"></a>02673 <span class="comment">// insert the window entry sorted by access time</span> <a name="l02674"></a>02674 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> indx; <a name="l02675"></a>02675 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> windowItemCount = m_pWindowMenu->count() - entryCount; <a name="l02676"></a>02676 <span class="keywordtype">bool</span> inserted = <span class="keyword">false</span>; <a name="l02677"></a>02677 <a class="codeRef" href="qstring.html">QString</a> tmpString; <a name="l02678"></a>02678 <a class="codeRef" href="qvaluelist.html">QValueList<QDateTime>::iterator</a> timeStampIterator = timeStamps.<a class="codeRef" href="qvaluelist.html#begin">begin</a>(); <a name="l02679"></a>02679 <span class="keywordflow">for</span> ( indx = 0; indx <= windowItemCount; indx++, ++timeStampIterator ) <a name="l02680"></a>02680 { <a name="l02681"></a>02681 <span class="keywordtype">bool</span> putHere = <span class="keyword">false</span>; <a name="l02682"></a>02682 <span class="keywordflow">if</span> ( ( *timeStampIterator ) < timeStamp ) <a name="l02683"></a>02683 { <a name="l02684"></a>02684 putHere = <span class="keyword">true</span>; <a name="l02685"></a>02685 timeStamps.<a class="codeRef" href="qvaluelist.html#insert">insert</a>( timeStampIterator, timeStamp ); <a name="l02686"></a>02686 } <a name="l02687"></a>02687 <span class="keywordflow">if</span> ( putHere ) <a name="l02688"></a>02688 { <a name="l02689"></a>02689 m_pWindowMenu->insertItem( item, pView, SLOT( slot_clickedInWindowMenu() ), 0, -1, indx + entryCount ); <a name="l02690"></a>02690 <span class="keywordflow">if</span> ( pView == m_pCurrentWindow ) <a name="l02691"></a>02691 { <a name="l02692"></a>02692 m_pWindowMenu->setItemChecked( m_pWindowMenu->idAt( indx + entryCount ), true ); <a name="l02693"></a>02693 } <a name="l02694"></a>02694 pView-><a class="code" href="classKMdiChildView.html#a8f0fcbccce9e03b50419e28807cd9f35" title="Internally used for setting an ID for the 'Window' menu entry.">setWindowMenuID</a>( i ); <a name="l02695"></a>02695 <span class="keywordflow">if</span> ( !tabPageMode ) <a name="l02696"></a>02696 { <a name="l02697"></a>02697 m_pDockMenu->insertItem( item, pView, SLOT( slot_clickedInDockMenu() ), 0, -1, indx ); <a name="l02698"></a>02698 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l02699"></a>02699 { <a name="l02700"></a>02700 m_pDockMenu->setItemChecked( m_pDockMenu->idAt( indx ), true ); <a name="l02701"></a>02701 } <a name="l02702"></a>02702 } <a name="l02703"></a>02703 inserted = <span class="keyword">true</span>; <a name="l02704"></a>02704 <span class="keywordflow">break</span>; <a name="l02705"></a>02705 indx = windowItemCount + 1; <span class="comment">// break the loop</span> <a name="l02706"></a>02706 } <a name="l02707"></a>02707 } <a name="l02708"></a>02708 <span class="keywordflow">if</span> ( !inserted ) <a name="l02709"></a>02709 { <span class="comment">// append it</span> <a name="l02710"></a>02710 m_pWindowMenu->insertItem( item, pView, SLOT( slot_clickedInWindowMenu() ), 0, -1, windowItemCount + entryCount ); <a name="l02711"></a>02711 <span class="keywordflow">if</span> ( pView == m_pCurrentWindow ) <a name="l02712"></a>02712 { <a name="l02713"></a>02713 m_pWindowMenu->setItemChecked( m_pWindowMenu->idAt( windowItemCount + entryCount ), true ); <a name="l02714"></a>02714 } <a name="l02715"></a>02715 pView-><a class="code" href="classKMdiChildView.html#a8f0fcbccce9e03b50419e28807cd9f35" title="Internally used for setting an ID for the 'Window' menu entry.">setWindowMenuID</a>( i ); <a name="l02716"></a>02716 <span class="keywordflow">if</span> ( !tabPageMode ) <a name="l02717"></a>02717 { <a name="l02718"></a>02718 m_pDockMenu->insertItem( item, pView, SLOT( slot_clickedInDockMenu() ), 0, -1, windowItemCount ); <a name="l02719"></a>02719 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l02720"></a>02720 { <a name="l02721"></a>02721 m_pDockMenu->setItemChecked( m_pDockMenu->idAt( windowItemCount ), true ); <a name="l02722"></a>02722 } <a name="l02723"></a>02723 } <a name="l02724"></a>02724 } <a name="l02725"></a>02725 i++; <a name="l02726"></a>02726 } <a name="l02727"></a>02727 } <a name="l02728"></a>02728 <a name="l02729"></a>02729 <span class="comment">//================ windowMenuItemActivated ===============//</span> <a name="l02730"></a>02730 <a name="l02731"></a><a class="code" href="classKMdiMainFrm.html#a11e2db118271fcc594a2d4bb02a0c15e">02731</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a11e2db118271fcc594a2d4bb02a0c15e" title="Usually called when the user clicks an MDI view item in the "Window" menu.">KMdiMainFrm::windowMenuItemActivated</a>( <span class="keywordtype">int</span> <span class="keywordtype">id</span> ) <a name="l02732"></a>02732 { <a name="l02733"></a>02733 <span class="keywordflow">if</span> ( <span class="keywordtype">id</span> < 100 ) <a name="l02734"></a>02734 return ; <a name="l02735"></a>02735 <span class="keywordtype">id</span> -= 100; <a name="l02736"></a>02736 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pView = m_pDocumentViews->at( <span class="keywordtype">id</span> ); <a name="l02737"></a>02737 <span class="keywordflow">if</span> ( !pView ) <a name="l02738"></a>02738 return ; <a name="l02739"></a>02739 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aa1e9a385eb97176fc126346d8a4889d5" title="Tells if the window is minimized when attached to the Mdi manager, or if it is VISIBLE when 'floating...">isMinimized</a>() ) <a name="l02740"></a>02740 pView-><a class="code" href="classKMdiChildView.html#a3b79ed01a8d357cf01cb90b4f0fe23b7" title="Minimizes this window when it is attached to the Mdi manager.">minimize</a>(); <a name="l02741"></a>02741 <span class="keywordflow">if</span> ( m_mdiMode != KMdi::TabPageMode ) <a name="l02742"></a>02742 { <a name="l02743"></a>02743 <a class="code" href="classKMdiChildFrm.html" title="Internal class.">KMdiChildFrm</a> * pTopChild = m_pMdi->topChild(); <a name="l02744"></a>02744 <span class="keywordflow">if</span> ( pTopChild ) <a name="l02745"></a>02745 { <a name="l02746"></a>02746 <span class="keywordflow">if</span> ( ( pView == pTopChild->m_pClient ) && pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l02747"></a>02747 { <a name="l02748"></a>02748 return ; <a name="l02749"></a>02749 } <a name="l02750"></a>02750 } <a name="l02751"></a>02751 } <a name="l02752"></a>02752 activateView( pView ); <a name="l02753"></a>02753 } <a name="l02754"></a>02754 <a name="l02755"></a>02755 <span class="comment">//================ dockMenuItemActivated ===============//</span> <a name="l02756"></a>02756 <a name="l02757"></a><a class="code" href="classKMdiMainFrm.html#abc8bc07f375ebca7f15d060fe7adc198">02757</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#abc8bc07f375ebca7f15d060fe7adc198" title="Usually called when the user clicks an MDI view item in the sub-popup menu "Docking" of the "Window" ...">KMdiMainFrm::dockMenuItemActivated</a>( <span class="keywordtype">int</span> <span class="keywordtype">id</span> ) <a name="l02758"></a>02758 { <a name="l02759"></a>02759 <span class="keywordflow">if</span> ( <span class="keywordtype">id</span> < 100 ) <a name="l02760"></a>02760 return ; <a name="l02761"></a>02761 <span class="keywordtype">id</span> -= 100; <a name="l02762"></a>02762 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> *pView = m_pDocumentViews->at( <span class="keywordtype">id</span> ); <a name="l02763"></a>02763 <span class="keywordflow">if</span> ( !pView ) <a name="l02764"></a>02764 return ; <a name="l02765"></a>02765 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aa1e9a385eb97176fc126346d8a4889d5" title="Tells if the window is minimized when attached to the Mdi manager, or if it is VISIBLE when 'floating...">isMinimized</a>() ) <a name="l02766"></a>02766 pView-><a class="code" href="classKMdiChildView.html#a3b79ed01a8d357cf01cb90b4f0fe23b7" title="Minimizes this window when it is attached to the Mdi manager.">minimize</a>(); <a name="l02767"></a>02767 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l02768"></a>02768 { <a name="l02769"></a>02769 detachWindow( pView, <span class="keyword">true</span> ); <a name="l02770"></a>02770 } <a name="l02771"></a>02771 <span class="keywordflow">else</span> <a name="l02772"></a>02772 { <span class="comment">// is detached</span> <a name="l02773"></a>02773 attachWindow( pView, <span class="keyword">true</span> ); <a name="l02774"></a>02774 } <a name="l02775"></a>02775 } <a name="l02776"></a>02776 <a name="l02777"></a>02777 <span class="comment">//================ popupWindowMenu ===============//</span> <a name="l02778"></a>02778 <a name="l02779"></a><a class="code" href="classKMdiMainFrm.html#ac51753876ccf3048b8c76ed31d6e58dd">02779</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ac51753876ccf3048b8c76ed31d6e58dd" title="Popups the "Window" menu.">KMdiMainFrm::popupWindowMenu</a>( <a class="codeRef" href="qpoint.html">QPoint</a> p ) <a name="l02780"></a>02780 { <a name="l02781"></a>02781 <span class="keywordflow">if</span> ( !isFakingSDIApplication() ) <a name="l02782"></a>02782 { <a name="l02783"></a>02783 m_pWindowMenu->popup( p ); <a name="l02784"></a>02784 } <a name="l02785"></a>02785 } <a name="l02786"></a>02786 <a name="l02787"></a>02787 <span class="comment">//================ dragEndTimeOut ===============//</span> <a name="l02788"></a><a class="code" href="classKMdiMainFrm.html#aa436fae51143e74b2f954ac75d3eaee1">02788</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#aa436fae51143e74b2f954ac75d3eaee1" title="The timer for main widget moving has elapsed -> send drag end to all concerned views.">KMdiMainFrm::dragEndTimeOut</a>() <a name="l02789"></a>02789 { <a name="l02790"></a>02790 <span class="comment">// send drag end to all concerned views.</span> <a name="l02791"></a>02791 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * pView; <a name="l02792"></a>02792 <span class="keywordflow">for</span> ( m_pDocumentViews->first(); ( pView = m_pDocumentViews->current() ) != 0L; m_pDocumentViews->next() ) <a name="l02793"></a>02793 { <a name="l02794"></a>02794 <a class="code" href="classKMdiChildFrmDragEndEvent.html" title="a QCustomEvent for end of dragging This special event will be useful, to inform view about child fram...">KMdiChildFrmDragEndEvent</a> dragEndEvent( 0L ); <a name="l02795"></a>02795 <a class="codeRef" href="qapplication.html#sendEvent">QApplication::sendEvent</a>( pView, &dragEndEvent ); <a name="l02796"></a>02796 } <a name="l02797"></a>02797 } <a name="l02798"></a>02798 <a name="l02799"></a>02799 <span class="comment">//================ setFrameDecorOfAttachedViews ===============//</span> <a name="l02800"></a>02800 <a name="l02801"></a><a class="code" href="classKMdiMainFrm.html#ae238a8787e4e826c351133a960185947">02801</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#ae238a8787e4e826c351133a960185947" title="Sets the decoration of the window frame of docked (attached) MDI views.">KMdiMainFrm::setFrameDecorOfAttachedViews</a>( <span class="keywordtype">int</span> frameDecor ) <a name="l02802"></a>02802 { <a name="l02803"></a>02803 <span class="keywordflow">switch</span> ( frameDecor ) <a name="l02804"></a>02804 { <a name="l02805"></a>02805 <span class="keywordflow">case</span> 0: <a name="l02806"></a>02806 m_frameDecoration = KMdi::Win95Look; <a name="l02807"></a>02807 <span class="keywordflow">break</span>; <a name="l02808"></a>02808 <span class="keywordflow">case</span> 1: <a name="l02809"></a>02809 m_frameDecoration = KMdi::KDE1Look; <a name="l02810"></a>02810 <span class="keywordflow">break</span>; <a name="l02811"></a>02811 <span class="keywordflow">case</span> 2: <a name="l02812"></a>02812 m_frameDecoration = KMdi::KDELook; <a name="l02813"></a>02813 <span class="keywordflow">break</span>; <a name="l02814"></a>02814 <span class="keywordflow">case</span> 3: <a name="l02815"></a>02815 m_frameDecoration = KMdi::KDELaptopLook; <a name="l02816"></a>02816 <span class="keywordflow">break</span>; <a name="l02817"></a>02817 <span class="keywordflow">default</span>: <a name="l02818"></a>02818 qDebug( <span class="stringliteral">"unknown MDI decoration"</span> ); <a name="l02819"></a>02819 <span class="keywordflow">break</span>; <a name="l02820"></a>02820 } <a name="l02821"></a>02821 setMenuForSDIModeSysButtons( m_pMainMenuBar ); <a name="l02822"></a>02822 <a class="codeRef" href="qptrlistiterator.html">QPtrListIterator<KMdiChildView></a> it( *m_pDocumentViews ); <a name="l02823"></a>02823 <span class="keywordflow">for</span> ( ; it.<a class="codeRef" href="qptrlistiterator.html#current">current</a>(); ++it ) <a name="l02824"></a>02824 { <a name="l02825"></a>02825 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a>* pView = it.<a class="codeRef" href="qptrlistiterator.html#current">current</a>(); <a name="l02826"></a>02826 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#a534402891b4ef8226235531ca2a19d70" title="Returns if this is added as MDI tool-view.">isToolView</a>() ) <a name="l02827"></a>02827 <span class="keywordflow">continue</span>; <a name="l02828"></a>02828 <span class="keywordflow">if</span> ( pView-><a class="code" href="classKMdiChildView.html#aef62e77b1cbbd807ed91765711e4b259" title="Returns true if the MDI view is a child window within the MDI mainframe widget or false if the MDI vi...">isAttached</a>() ) <a name="l02829"></a>02829 pView-><a class="code" href="classKMdiChildView.html#a6099527f11467b75d9b9c3205dc95db3" title="Returns the KMdiChildFrm parent widget (or 0 if the window is not attached)">mdiParent</a>() -><a class="code" href="classKMdiChildFrm.html#ac4e146efa8304e429889a106d7a87fc1" title="sets new raise behavior and pixmaps of the buttons depending on the current decoration style...">redecorateButtons</a>(); <a name="l02830"></a>02830 } <a name="l02831"></a>02831 } <a name="l02832"></a>02832 <a name="l02833"></a><a class="code" href="classKMdiMainFrm.html#a02146b8a6e6907468eec5acd7c149227">02833</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a02146b8a6e6907468eec5acd7c149227" title="An SDI application user interface is faked:">KMdiMainFrm::fakeSDIApplication</a>() <a name="l02834"></a>02834 { <a name="l02835"></a>02835 m_bSDIApplication = <span class="keyword">true</span>; <a name="l02836"></a>02836 <span class="keywordflow">if</span> ( m_pTaskBar ) <a name="l02837"></a>02837 m_pTaskBar->close(); <a name="l02838"></a>02838 m_pTaskBar = 0L; <a name="l02839"></a>02839 } <a name="l02840"></a>02840 <a name="l02841"></a><a class="code" href="classKMdiMainFrm.html#afe8fcd284794bf3e4635c4dafbf6045e">02841</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#afe8fcd284794bf3e4635c4dafbf6045e" title="internally used to handle click on view close button (TabPage mode, only)">KMdiMainFrm::closeViewButtonPressed</a>() <a name="l02842"></a>02842 { <a name="l02843"></a>02843 <a class="code" href="classKMdiChildView.html" title="Base class for all your special view windows.">KMdiChildView</a> * pView = activeWindow(); <a name="l02844"></a>02844 <span class="keywordflow">if</span> ( pView ) <a name="l02845"></a>02845 { <a name="l02846"></a>02846 pView-><a class="codeRef" href="qwidget.html#close">close</a>(); <a name="l02847"></a>02847 } <a name="l02848"></a>02848 } <a name="l02849"></a>02849 <a name="l02850"></a>02850 <span class="keywordtype">void</span> KMdiMainFrm::setManagedDockPositionModeEnabled( <span class="keywordtype">bool</span> enabled ) <a name="l02851"></a>02851 { <a name="l02852"></a>02852 m_managedDockPositionMode = enabled; <a name="l02853"></a>02853 } <a name="l02854"></a>02854 <a name="l02855"></a>02855 <span class="keywordtype">void</span> KMdiMainFrm::setActiveToolDock( KMdiDockContainer* td ) <a name="l02856"></a>02856 { <a name="l02857"></a>02857 <span class="keywordflow">if</span> ( td == d->activeDockPriority[ 0 ] ) <a name="l02858"></a>02858 return ; <a name="l02859"></a>02859 <span class="keywordflow">if</span> ( d->activeDockPriority[ 0 ] == 0 ) <a name="l02860"></a>02860 { <a name="l02861"></a>02861 d->activeDockPriority[ 0 ] = td; <a name="l02862"></a>02862 <span class="comment">// d->focusList=new KMdiFocusList(this);</span> <a name="l02863"></a>02863 <span class="comment">// if (m_pMdi) d->focusList->addWidgetTree(m_pMdi);</span> <a name="l02864"></a>02864 <span class="comment">// if (m_documentTabWidget) d->focusList->addWidgetTree(m_documentTabWidget);</span> <a name="l02865"></a>02865 return ; <a name="l02866"></a>02866 } <a name="l02867"></a>02867 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> dst = 3, src = 2;src >= 0;dst--, src-- ) <a name="l02868"></a>02868 { <a name="l02869"></a>02869 <span class="keywordflow">if</span> ( d->activeDockPriority[ src ] == td ) <a name="l02870"></a>02870 src--; <a name="l02871"></a>02871 <span class="keywordflow">if</span> ( src < 0 ) <a name="l02872"></a>02872 <span class="keywordflow">break</span>; <a name="l02873"></a>02873 d->activeDockPriority[ dst ] = d->activeDockPriority[ src ]; <a name="l02874"></a>02874 } <a name="l02875"></a>02875 d->activeDockPriority[ 0 ] = td; <a name="l02876"></a>02876 } <a name="l02877"></a>02877 <a name="l02878"></a>02878 <span class="keywordtype">void</span> KMdiMainFrm::removeFromActiveDockList( KMdiDockContainer* td ) <a name="l02879"></a>02879 { <a name="l02880"></a>02880 <span class="keywordflow">for</span> ( <span class="keywordtype">int</span> i = 0;i < 4;i++ ) <a name="l02881"></a>02881 { <a name="l02882"></a>02882 <span class="keywordflow">if</span> ( d->activeDockPriority[ i ] == td ) <a name="l02883"></a>02883 { <a name="l02884"></a>02884 <span class="keywordflow">for</span> ( ;i < 3;i++ ) <a name="l02885"></a>02885 d->activeDockPriority[ i ] = d->activeDockPriority[ i + 1 ]; <a name="l02886"></a>02886 d->activeDockPriority[ 3 ] = 0; <a name="l02887"></a>02887 <span class="keywordflow">break</span>; <a name="l02888"></a>02888 } <a name="l02889"></a>02889 } <a name="l02890"></a>02890 <span class="comment">/*</span> <a name="l02891"></a>02891 <span class="comment"> if (d->activeDockPriority[0]==0) {</span> <a name="l02892"></a>02892 <span class="comment"> if (d->focusList) d->focusList->restore();</span> <a name="l02893"></a>02893 <span class="comment"> delete d->focusList;</span> <a name="l02894"></a>02894 <span class="comment"> d->focusList=0;</span> <a name="l02895"></a>02895 <span class="comment"> }</span> <a name="l02896"></a>02896 <span class="comment"> */</span> <a name="l02897"></a>02897 } <a name="l02898"></a>02898 <a name="l02899"></a>02899 <span class="keywordtype">void</span> KMdiMainFrm::prevToolViewInDock() <a name="l02900"></a>02900 { <a name="l02901"></a>02901 KMdiDockContainer * td = d->activeDockPriority[ 0 ]; <a name="l02902"></a>02902 <span class="keywordflow">if</span> ( !td ) <a name="l02903"></a>02903 return ; <a name="l02904"></a>02904 td->prevToolView(); <a name="l02905"></a>02905 } <a name="l02906"></a>02906 <a name="l02907"></a>02907 <span class="keywordtype">void</span> KMdiMainFrm::nextToolViewInDock() <a name="l02908"></a>02908 { <a name="l02909"></a>02909 KMdiDockContainer * td = d->activeDockPriority[ 0 ]; <a name="l02910"></a>02910 <span class="keywordflow">if</span> ( !td ) <a name="l02911"></a>02911 return ; <a name="l02912"></a>02912 td->nextToolView(); <a name="l02913"></a>02913 } <a name="l02914"></a>02914 <a name="l02915"></a><a class="code" href="classKMdiMainFrm.html#adb0e4d1d666239e71177afa53c4eb7e8">02915</a> KMdi::TabWidgetVisibility <a class="code" href="classKMdiMainFrm.html#adb0e4d1d666239e71177afa53c4eb7e8" title="Get tabwidget visibility.">KMdiMainFrm::tabWidgetVisibility</a>() <a name="l02916"></a>02916 { <a name="l02917"></a>02917 <span class="keywordflow">if</span> ( m_documentTabWidget ) <a name="l02918"></a>02918 <span class="keywordflow">return</span> m_documentTabWidget->tabWidgetVisibility(); <a name="l02919"></a>02919 <a name="l02920"></a>02920 <span class="keywordflow">return</span> KMdi::NeverShowTabs; <a name="l02921"></a>02921 } <a name="l02922"></a>02922 <a name="l02923"></a><a class="code" href="classKMdiMainFrm.html#a05fc1811c70c771c681443092fc16799">02923</a> <span class="keywordtype">void</span> <a class="code" href="classKMdiMainFrm.html#a05fc1811c70c771c681443092fc16799" title="Set tabwidget visibility.">KMdiMainFrm::setTabWidgetVisibility</a>( KMdi::TabWidgetVisibility visibility ) <a name="l02924"></a>02924 { <a name="l02925"></a>02925 <span class="keywordflow">if</span> ( m_documentTabWidget ) <a name="l02926"></a>02926 m_documentTabWidget->setTabWidgetVisibility( visibility ); <a name="l02927"></a>02927 } <a name="l02928"></a>02928 <a name="l02929"></a><a class="code" href="classKMdiMainFrm.html#a4e9495811f622ec81c605dd61843cc91">02929</a> KTabWidget * <a class="code" href="classKMdiMainFrm.html#a4e9495811f622ec81c605dd61843cc91" title="Returns the tabwidget used in IDEAl and Tabbed modes.">KMdiMainFrm::tabWidget</a>()<span class="keyword"> const</span> <a name="l02930"></a>02930 <span class="keyword"></span>{ <a name="l02931"></a>02931 <span class="keywordflow">return</span> m_documentTabWidget; <a name="l02932"></a>02932 } <a name="l02933"></a>02933 <a name="l02934"></a>02934 <span class="preprocessor">#include "kmdimainfrm.moc"</span> <a name="l02935"></a>02935 <a name="l02936"></a>02936 <span class="comment">// vim: ts=2 sw=2 et</span> <a name="l02937"></a>02937 <span class="comment">// kate: space-indent off; tab-width 4; replace-tabs off; indent-mode csands;</span> </pre></div></div> </div> </div></div> </td> </tr> <tr> <td valign="top" id="leftmenu" width="25%"> <a name="navigation"></a> <div class="menu_box"><h2>kmdi</h2> <div class="nav_list"> <ul><li><a href="index.html">Main Page</a></li><li><a href="namespaces.html">Namespace List</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="namespacemembers.html">Namespace Members</a></li><li><a href="functions.html">Class Members</a></li><li><a href="pages.html">Related Pages</a></li></ul> <!-- <h2>Class Picker</h2> <div style="text-align: center;"> <form name="guideform"> <select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value"> <option value="annotated.html">-- Choose --</option> <option value="classKMdiChildArea.html">kmdichildarea</option>, <option value="classKMdiChildFrm.html">kmdichildfrm</option>, <option value="classKMdiChildFrmCaption.html">kmdichildfrmcaption</option>, <option value="classKMdiChildFrmDragBeginEvent.html">kmdichildfrmdragbeginevent</option>, <option value="classKMdiChildFrmDragEndEvent.html">kmdichildfrmdragendevent</option>, <option value="classKMdiChildFrmMoveEvent.html">kmdichildfrmmoveevent</option>, <option value="classKMdiChildFrmResizeBeginEvent.html">kmdichildfrmresizebeginevent</option>, <option value="classKMdiChildFrmResizeEndEvent.html">kmdichildfrmresizeendevent</option>, <option value="classKMdiChildView.html">kmdichildview</option>, <option value="classKMdiDocumentViewTabWidget.html">kmdidocumentviewtabwidget</option>, <option value="classKMdiMainFrm.html">kmdimainfrm</option>, <option value="classKMDIPrivate_1_1KMDIGUIClient.html">kmdiprivate::kmdiguiclient</option>, <option value="classKMDIPrivate_1_1ToggleToolViewAction.html">kmdiprivate::toggletoolviewaction</option>, <option value="classKMdiTaskBar.html">kmditaskbar</option>, <option value="classKMdiTaskBarButton.html">kmditaskbarbutton</option>, <option value="classKMdiViewCloseEvent.html">kmdiviewcloseevent</option>, <option value="classKMdiWin32IconButton.html">kmdiwin32iconbutton</option>, </select> </form> </div> --> </div></div> <div class="menu_box"><h2>API Dox</h2> <div class="nav_list"> <ul> <li><a href="../../arts/html/index.html">arts</a></li><li><a href="../../dcop/html/index.html">dcop</a></li><li><a href="../../dnssd/html/index.html">dnssd</a></li><li><a href="../../interfaces/html/index.html">interfaces</a></li><li> <a href="../../interfaces/kimproxy/interface/html/index.html">interface</a></li><li> <a href="../../interfaces/kimproxy/library/html/index.html">library</a></li><li> <a href="../../interfaces/kspeech/html/index.html">kspeech</a></li><li> <a href="../../interfaces/ktexteditor/html/index.html">ktexteditor</a></li><li><a href="../../kabc/html/index.html">kabc</a></li><li><a href="../../kate/html/index.html">kate</a></li><li><a href="../../kcmshell/html/index.html">kcmshell</a></li><li><a href="../../kdecore/html/index.html">kdecore</a></li><li><a href="../../kded/html/index.html">kded</a></li><li><a href="../../kdefx/html/index.html">kdefx</a></li><li><a href="../../kdeprint/html/index.html">kdeprint</a></li><li><a href="../../kdesu/html/index.html">kdesu</a></li><li><a href="../../kdeui/html/index.html">kdeui</a></li><li><a href="../../kdoctools/html/index.html">kdoctools</a></li><li><a href="../../khtml/html/index.html">khtml</a></li><li><a href="../../kimgio/html/index.html">kimgio</a></li><li><a href="../../kinit/html/index.html">kinit</a></li><li><a href="../../kio/html/index.html">kio</a></li><li> <a href="../../kio/bookmarks/html/index.html">bookmarks</a></li><li> <a href="../../kio/httpfilter/html/index.html">httpfilter</a></li><li> <a href="../../kio/kfile/html/index.html">kfile</a></li><li> <a href="../../kio/kio/html/index.html">kio</a></li><li> <a href="../../kio/kioexec/html/index.html">kioexec</a></li><li> <a href="../../kio/kpasswdserver/html/index.html">kpasswdserver</a></li><li> <a href="../../kio/kssl/html/index.html">kssl</a></li><li><a href="../../kioslave/html/index.html">kioslave</a></li><li> <a href="../../kioslave/http/html/index.html">http</a></li><li><a href="../../kjs/html/index.html">kjs</a></li><li><a href="../../kmdi/html/index.html">kmdi</a></li><li> <a href="../../kmdi/kmdi/html/index.html">kmdi</a></li><li><a href="../../knewstuff/html/index.html">knewstuff</a></li><li><a href="../../kparts/html/index.html">kparts</a></li><li><a href="../../kresources/html/index.html">kresources</a></li><li><a href="../../kspell2/html/index.html">kspell2</a></li><li><a href="../../kunittest/html/index.html">kunittest</a></li><li><a href="../../kutils/html/index.html">kutils</a></li><li><a href="../../kwallet/html/index.html">kwallet</a></li><li><a href="../../libkmid/html/index.html">libkmid</a></li><li><a href="../../libkscreensaver/html/index.html">libkscreensaver</a></li> </ul></div></div> </td> </tr> </table> <span class="doNotDisplay"> <a href="http://www.kde.org/" accesskey="8">KDE Home</a> | <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> | <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a> </span> <div style="height: 8px"></div> <div id="footer"> <div id="footer_left"> Maintained by <a href="mailto:groot@kde.org">Adriaan de Groot</a> and <a href="mailto:winter@kde.org">Allen Winter</a>. <br/> KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> | <a href="http://www.kde.org/contact/impressum.php">Legal</a> </div> <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div> </div> <!-- WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL BE BLOCKED INSTANTLY AND PERMANENTLY! <a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a> WARNING END --> </body> </html>