kmditoolviewaccessor.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef NO_KDE
00023 # include <kdebug.h>
00024 #endif
00025 #include "kmditoolviewaccessor_p.h"
00026 #include "kmdiguiclient.h"
00027 #include "kmdimainfrm.h"
00028
00029 #include "kmditoolviewaccessor.h"
00030 #include "kmditoolviewaccessor_p.h"
00031
00032 KMdiToolViewAccessor::KMdiToolViewAccessor( KMdiMainFrm *parent, QWidget *widgetToWrap, const QString& tabToolTip, const QString& tabCaption)
00033 : QObject(parent)
00034 {
00035 mdiMainFrm=parent;
00036 d=new KMdiToolViewAccessorPrivate();
00037 if (widgetToWrap->inherits("KDockWidget")) {
00038 d->widgetContainer=dynamic_cast<KDockWidget*>(widgetToWrap);
00039 d->widget=d->widgetContainer->getWidget();
00040 } else {
00041 d->widget=widgetToWrap;
00042 QString finalTabCaption;
00043 if (tabCaption == 0) {
00044 finalTabCaption = widgetToWrap->caption();
00045 if (finalTabCaption.isEmpty() && !widgetToWrap->icon()) {
00046 finalTabCaption = widgetToWrap->name();
00047 }
00048 }
00049 else {
00050 finalTabCaption = tabCaption;
00051 }
00052 d->widgetContainer= parent->createDockWidget( widgetToWrap->name(),
00053 (widgetToWrap->icon()?(*(widgetToWrap->icon())):QPixmap()),
00054 0L,
00055 widgetToWrap->caption(),
00056 finalTabCaption);
00057 d->widgetContainer->setWidget(widgetToWrap);
00058 if (tabToolTip!=0) {
00059 d->widgetContainer->setToolTipString(tabToolTip);
00060 }
00061 }
00062
00063 if (mdiMainFrm->m_mdiGUIClient)
00064 mdiMainFrm->m_mdiGUIClient->addToolView(this);
00065 else kdDebug(760)<<"mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
00066
00067 d->widget->installEventFilter(this);
00068 }
00069
00070 KMdiToolViewAccessor::KMdiToolViewAccessor( KMdiMainFrm *parent) {
00071 mdiMainFrm=parent;
00072 d=new KMdiToolViewAccessorPrivate();
00073 }
00074
00075 KMdiToolViewAccessor::~KMdiToolViewAccessor() {
00076 if (mdiMainFrm->m_pToolViews)
00077 mdiMainFrm->m_pToolViews->remove(d->widget);
00078 delete d;
00079
00080 }
00081
00082 QWidget *KMdiToolViewAccessor::wrapperWidget() {
00083 if (!d->widgetContainer) {
00084 d->widgetContainer=mdiMainFrm->createDockWidget( "KMdiToolViewAccessor::null",QPixmap());
00085 connect(d->widgetContainer,SIGNAL(widgetSet(QWidget*)),this,SLOT(setWidgetToWrap(QWidget*)));
00086 }
00087 return d->widgetContainer;
00088 }
00089
00090 QWidget *KMdiToolViewAccessor::wrappedWidget() {
00091 return d->widget;
00092 }
00093
00094
00095 void KMdiToolViewAccessor::setWidgetToWrap(QWidget *widgetToWrap, const QString& tabToolTip, const QString& tabCaption)
00096 {
00097 Q_ASSERT(!(d->widget));
00098 Q_ASSERT(!widgetToWrap->inherits("KDockWidget"));
00099 disconnect(d->widgetContainer,SIGNAL(widgetSet(QWidget*)),this,SLOT(setWidgetToWrap(QWidget*)));
00100 delete d->widget;
00101 d->widget=widgetToWrap;
00102 KDockWidget *tmp=d->widgetContainer;
00103
00104 QString finalTabCaption;
00105 if (tabCaption == 0) {
00106 finalTabCaption = widgetToWrap->caption();
00107 if (finalTabCaption.isEmpty() && !widgetToWrap->icon()) {
00108 finalTabCaption = widgetToWrap->name();
00109 }
00110 }
00111 else {
00112 finalTabCaption = tabCaption;
00113 }
00114
00115 if (!tmp) {
00116 tmp = mdiMainFrm->createDockWidget( widgetToWrap->name(),
00117 widgetToWrap->icon()?(*(widgetToWrap->icon())):QPixmap(),
00118 0L,
00119 widgetToWrap->caption(),
00120 finalTabCaption );
00121 d->widgetContainer= tmp;
00122 if (tabToolTip!=0) {
00123 d->widgetContainer->setToolTipString(tabToolTip);
00124 }
00125 }
00126 else {
00127 tmp->setCaption(widgetToWrap->caption());
00128 tmp->setTabPageLabel(finalTabCaption);
00129 tmp->setPixmap(widgetToWrap->icon()?(*(widgetToWrap->icon())):QPixmap());
00130 tmp->setName(widgetToWrap->name());
00131 if (tabToolTip!=0) {
00132 d->widgetContainer->setToolTipString(tabToolTip);
00133 }
00134 }
00135 tmp->setWidget(widgetToWrap);
00136 mdiMainFrm->m_pToolViews->insert(widgetToWrap,this);
00137 if (mdiMainFrm->m_mdiGUIClient)
00138 mdiMainFrm->m_mdiGUIClient->addToolView(this);
00139 else kdDebug(760)<<"mdiMainFrm->m_mdiGUIClient == 0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"<<endl;
00140
00141 d->widget->installEventFilter(this);
00142 }
00143
00144
00145 bool KMdiToolViewAccessor::eventFilter(QObject *o, QEvent *e) {
00146 if (e->type()==QEvent::IconChange) {
00147 d->widgetContainer->setPixmap(d->widget->icon()?(*d->widget->icon()):QPixmap());
00148 }
00149 return false;
00150 }
00151
00152 void KMdiToolViewAccessor::placeAndShow(KDockWidget::DockPosition pos, QWidget* pTargetWnd ,int percent)
00153 {
00154 place(pos,pTargetWnd,percent);
00155 show();
00156 }
00157 void KMdiToolViewAccessor::place(KDockWidget::DockPosition pos, QWidget* pTargetWnd ,int percent)
00158 {
00159 Q_ASSERT(d->widgetContainer);
00160 if (!d->widgetContainer) return;
00161 if (pos == KDockWidget::DockNone) {
00162 d->widgetContainer->setEnableDocking(KDockWidget::DockNone);
00163 d->widgetContainer->reparent(mdiMainFrm, Qt::WType_TopLevel | Qt::WType_Dialog, QPoint(0,0), true);
00164 }
00165 else {
00166
00167 KDockWidget* pCover = d->widgetContainer;
00168
00169 KDockWidget* pTargetDock = 0L;
00170 if (pTargetWnd->inherits("KDockWidget") || pTargetWnd->inherits("KDockWidget_Compat::KDockWidget")) {
00171 pTargetDock = (KDockWidget*) pTargetWnd;
00172 }
00173
00174
00175 bool DockToOurself = false;
00176 if (mdiMainFrm->m_pDockbaseAreaOfDocumentViews) {
00177 if (pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews->getWidget()) {
00178 DockToOurself = true;
00179 pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
00180 }
00181 else if (pTargetWnd == mdiMainFrm->m_pDockbaseAreaOfDocumentViews) {
00182 DockToOurself = true;
00183 pTargetDock = mdiMainFrm->m_pDockbaseAreaOfDocumentViews;
00184 }
00185 }
00186
00187
00188 if (!DockToOurself) if(pTargetWnd != 0L) {
00189 pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd);
00190 if (!pTargetDock) {
00191 if (pTargetWnd->parentWidget()) {
00192 pTargetDock = mdiMainFrm->dockManager->findWidgetParentDock( pTargetWnd->parentWidget());
00193 }
00194 }
00195 }
00196 if (!pTargetDock || pTargetWnd == mdiMainFrm->getMainDockWidget()) {
00197 if (mdiMainFrm->m_managedDockPositionMode && (mdiMainFrm->m_pMdi || mdiMainFrm->m_documentTabWidget)) {
00198 KDockWidget *dw1=pTargetDock->findNearestDockWidget(pos);
00199 if (dw1)
00200 pCover->manualDock(dw1,KDockWidget::DockCenter,percent);
00201 else
00202 pCover->manualDock ( pTargetDock, pos, 20 );
00203 return;
00204 }
00205 }
00206 pCover->manualDock( pTargetDock, pos, percent);
00207
00208 }
00209 }
00210
00211 void KMdiToolViewAccessor::hide() {
00212 Q_ASSERT(d->widgetContainer);
00213 if (!d->widgetContainer) return;
00214 d->widgetContainer->undock();
00215 }
00216
00217 void KMdiToolViewAccessor::show() {
00218 Q_ASSERT(d->widgetContainer);
00219 if (!d->widgetContainer) return;
00220 d->widgetContainer->makeDockVisible();
00221 }
00222
00223
00224 #ifndef NO_INCLUDE_MOCFILES
00225 #include "kmditoolviewaccessor.moc"
00226 #endif
This file is part of the documentation for kmdi Library Version 3.2.3.